Se você estiver atualizando o MySQL de 5.5 para 5.6, poderá encontrar alguns problemas ao tentar inserir e atualizar dados. Por exemplo, tentar inserir uma string vazia em um valor decimal pode ter funcionado para você no 5.5, mas agora joga isso no 5.6:
Incorrect decimal value: '' for column 'my_decimal_column' at row 1
O MySQL 5.6 alterou algumas de suas configurações padrão e uma dessas alterações é como a rigidez de tipo é tratada por padrão. Se você estiver enfrentando esse problema, a solução mais permanente é alterar o sql_mode
em sua configuração do MySQL.
Esta é a configuração padrão para MySQL 5.6
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Remover STRICT_TRANS_TABLES
do arquivo de configuração e reiniciar o MySQL irá forçá-lo a se comportar como 5.5 e seus problemas de rigidez serão resolvidos.
Encontrando sua configuração
A localização do arquivo de configuração depende do seu sistema operacional e de onde você instalou o MySQL. Por exemplo, em minha máquina Mac OS X, usei um utilitário chamado Homebrew para instalar o MySQL e minhas configurações estão localizadas em /usr/local/opt/mysql/my.cnf
. Pesquisar o local da configuração do MySQL deve ser o suficiente para descobrir onde sua respectiva configuração ficará.
Nota
Se você deve remover esta configuração é uma questão diferente :). Depois de resolver seus problemas, é uma boa ideia reativar STRICT_TRANS_TABLES
para que você não encontre isso novamente no futuro ou quando atualizar o MySQL no futuro.