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.

sexta-feira, 29 de abril de 2016

Trocar a Url de update do ClickOnce *

Você publica seu programa para ser baixado em uma certa URL. E está tudo certo, faz outros deploys, os clientes baixam felizes. Então você resolve mudar a pasta que está usando para fazer o update, por quaisquer motivos. E o ClickOnce dá erro no update, porque baixou de urls diferentes, e recomenda que você desinstale o programa original, baixe o novo e instale de novo.

Existem diversos passo-a-passo na web de como fazer isso, incluindo mageui, alterações direto na configuração do projeto do programa, etc. A ideia é fazer um deploy intermediário, que estaria na pasta antiga, mas apontaria o update para a nova pasta. Não funciona, o clickonce ainda reclama da nova url.

O que funcionou de verdade foi colocar um url rewrite no web.config da pasta de publish original. Quando o programa bate nessa pasta, ela passa a devolver o conteúdo da outra pasta. Na outra pasta, o programa será baixado com a nova url de update. Este seria o código a adicionar no web.config da pasta antiga, dentro de <system.webServer>:

        <rewrite>

            <rules>
                <clear />
                <rule name="Redirect New Path" stopProcessing="true">
              
                    <match url="^(.*)$" />
                    <action type="Rewrite" url="/[aqui você coloca a nova pasta]/{R:1}" redirectType="Temporary" appendQueryString="true" />
               
                </rule>
            </rules>

        </rewrite>




* ClickOnce é uma ferramenta do Visual Studio para fazer deploys / updates nos programas que você cria lá

terça-feira, 8 de março de 2016

Erro ao iniciar o MySQL Workbench

Tive um erro tentando iniciar o MySQL Workbench. Erro de windows mesmo. Abri a janela de detalhes e tentei ver quais informações poderiam ser úteis para buscar. Me pareceram estas:

Fault Module Name:    KERNELBASE.dll
Error Code:                    e0434352

Busquei e comecei a achar as mais diversas coisas. Uma pessoa disse que teve que trocar de windows pra funcionar. Então lembrei que tínhamos acabado de desinstalar o Visual Studio da máquina, fazia alguns dias. E pensei que talvez isso tivesse levado algo do Workbench junto.

Entrei na página do Workbench pra reinstalar. Baixei. Na instalação, o programa detectou que faltavam um pré-requisito: Microsoft Visual C++ 2013 Redistributable Package (x86 or x64). Fui pra página de pré-requisitos. Baixei o C++. Instalei.

Ia continuar a instalação do Workbench. Mas parei, pensei e fui testar se o que estava instalado funcionava. E não é que o bichinho tinha voltado?

Postando porque pode ser que a pessoa ache um bilhão de soluções mirabolantes, do tipo reinstalar o windows, e não precisa de tudo isso.