sql_mode...foreign_key_checks...unique_checks...sql_notes不能为null

#问题重现

数据库服务中source命令执行******.sql脚本时报错

##报错内容

Query OK, 2 rows affected (0.04 sec)
Records: 2  Duplicates: 0  Warnings: 0

ERROR 1231 (42000): Variable 'sql_mode' can't be set to the value of 'NULL'
ERROR 1231 (42000): Variable 'foreign_key_checks' can't be set to the value of 'NULL'
ERROR 1231 (42000): Variable 'unique_checks' can't be set to the value of 'NULL'
ERROR 1231 (42000): Variable 'sql_notes' can't be set to the value of 'NULL'

##原因:

****.sql脚本中包含如下内容:
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

##解决方法

删除脚本中上面内容

/*!...*/含义:
	MYSQL中为了保持兼容,比如从mysqldump 导出的SQL语句能被其它数据库直接使用,它把一些特有的仅在MYSQL上的语句放在 /*! ... */ 中,这样这些语句如果在其它数据库中是不会被执行,但在MYSQL中它会执行

eg:
CREATE /*!32302 TEMPORARY */ TABLE t (a INT);
这意味着,如果你的版本号为3.23.02或更高,MySQL服务器将使用TEMPORARY关键字。

##注意
导出数据库尽量不要使用工具导出,使用mysqldump命令

你可能感兴趣的:(java,数据库,mysql,异常)