2

我看到我想在我的数据库中插入的表末尾有这段代码:

/*!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 */;吗?有那么重要吗?试图了解这一点,但实际上我不明白它的作用。

4

1 回答 1

3

可能SET @OLD_SQL_MODE = @@sql_mode; SET SQL_MODE='something'在表格上方有一个定义。显然,您忘记将其包含在复制的 SQL 中。

您的导出工具希望以某种 SQL 模式执行 ALTER TABLE,并将其设置在 ALTER TABLE 之前。为了稍后将其重置为之前的值,它将当前值存储在名为@OLD_SQL_MODE 的变量中。该行的目的是将 SQL_MODE 重置为之前的状态。

因此,您需要同时拥有表定义上方的 SET 和下方的 SET,或者两者都没有。

于 2011-04-26T10:32:45.410 回答