我看到我在表格末尾有这个代码,我想在我的数据库中插入:
/*!40000 ALTER TABLE `to_import` ENABLE KEYS */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
当我尝试在phpMyAdmin上执行查询时,我得到#1231 - Variable 'sql_mode' can't be set to the value of 'NULL'
而我不明白为什么。
那么,我可以删除/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
吗?这么重要吗?试图了解这一点,但实际上我不明白它的作用。
答案 0 :(得分:2)
可能在表定义之上有SET @OLD_SQL_MODE = @@sql_mode; SET SQL_MODE='something'
。显然你忘了在复制的SQL中包含它。
您的导出工具希望ALTER TABLE以某种SQL模式执行,并在ALTER TABLE之前设置它。要稍后将其重置为之前的值,它会将当前值存储在名为@OLD_SQL_MODE的变量中。 该行的目的是将SQL_MODE重置为之前的状态。
因此,您需要同时拥有上面的SET和表定义下面的SET,或者不需要它们。