我想之前,我是通过说列不为空来错误地设置我的数据库,并且没有默认值。 (我认为,从未注意过)。
现在更新到mysql 5.6之后,我的很多专栏都说它不是null而且没有默认值,当我尝试插入类似
的内容时将值1 2 3(但不是4)输入第1列2 3
它失败并给我一个错误,因为第4列未设置为null,也没有默认值。在mysql中有一个设置可以绕过它吗?
我从5.5迁移到5.6
on cent os 6,php 5.4
只是混淆了数据库以前工作的原因,而不再是,我所做的只是导出数据库并再次导入。
答案 0 :(得分:1)
找到答案: http://dev.mysql.com/doc/refman/5.6/en/upgrading-from-previous-series.html
从MySQL 5.6.13开始,服务器应用适当的sql_mode检查以在插入或更新时生成警告或错误。
如果使用基于语句的日志记录(binlog_format = STATEMENT),导致复制的不兼容性是,如果从属服务器升级,则非升级主服务器将执行上述示例而不会出现错误,而INSERT将在从服务器上失败并且复制将停止。
要解决此问题,请停止主服务器上的所有新语句,并等待从服务器赶上。然后升级奴隶,然后是主人。或者,如果您无法停止新语句,请暂时更改为主服务器上的基于行的日志记录(binlog_format = ROW),并等待所有从服务器处理所有生成的二进制日志,直到此更改为止。然后升级从站,然后升级主站,并将主站更改回基于语句的日志记录。
经过进一步调查,关闭mysql严格模式在my.cnf文件中工作。
答案 1 :(得分:0)
CTRL + ALT + T(终端)
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo /etc/init.d/apache2 reload
sudo apt-get install phpMySql