1. ERROR 1067 (42000): Invalid default value for 'date_time'.
这个是SQL Mode中指定了NO_ZERO_DATE导致的,不允许Null作为日期的默认值。 解决这个问题只要修改SQL Mode就OK了
SET @@session.sql_mode = REPLACE((SELECT @@session.sql_mode), ',NO_ZERO_DATE', '')
但是这样只会修改本次连接的SQL Mode,如果需要修改全局的,则只需要修改@@session为@@global
SET @@global.sql_mode = REPLACE((SELECT @@global.sql_mode), ',NO_ZERO_DATE', '')
但是这些都只是临时修改,数据库重启后就又恢复原值了。如果要永久修改,则需要修改my.cnf配置文件。每个平台的配置文件地址都不一样。使用以下命令来查找默认配置文件地址:
mysqld --verbose --help | grep -A 1 "Default options"
然后修改my.cnf文件添加下面的配置,修改为你想要的SQL Mode,然后重启MySQL服务。
[mysqld]
sql_mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
如果不知道默认的SQL Mode,可以查询得到再修改。
SELECT @@global.sql_mode
2. ERROR java.lang.IllegalStateException: please check your GROUP_CONCAT_MAX_LENGTH in mysql
这个是MySQL中group_concat_max_len默认长度只有1024,容易超出,设置起来和上面一样。
对于32位系统,最大值为4294967295。对于64位系统,最大值为18446744073709551615。
当前连接设置
SET @@session.group_concat_max_len = 4294967295;
全局级设置
SET @@global.group_concat_max_len = 4294967295;
永久修改,一样的修改my.cnf文件
[mysqld]
group_concat_max_len=4294967295
3. 总结
MySQL的环境变量分为Session级,Global级和配置文件级别,需要根据情况选择适合自己的改法。