sexta-feira, 3 de junho de 2016

GUIDs no MySql com NHibernate


Não faça isso!

Outro dia estava mexendo com GUIDs com NHibernate e Mysql e publiquei o seguinte post:

Procurei de diversas maneiras como colocar Guid em mysql usando NHibernate. NHibernate até aceita, quando vai validar o banco, que você use o binary(16), mas, na hora de gravar, reclama que o valor é muito grande para o campo.

Continuei procurando e diversas pessoas recomendam que se use varchar(36) (32 caracteres alfanuméricos + 4 traços). Procurando "nhibernate mysql guid as binary" encontrei este link do stackoverflow:
http://stackoverflow.com/questions/1295007/problem-with-nhibernate-mysql-and-guids

Colocando "old guids=true;" no final da connection string é o NHibernate consegue salvar o valor na base (se o último caracter não for ";", lembre de colocar um ";" antes).



Hoje descobri que o programa passou a interpretar qualquer coisa com 32 caracteres de 0 a F como guid e reclamar. O jeito que encontrei foi recriar a base de dados.

Então... NÃO FAÇA ISSO! Use varchar(38) e seja feliz.

Nenhum comentário:

Postar um comentário