Могу ли я избежать sql_mode в моем запросе? - PullRequest
1 голос
/ 26 апреля 2011

Я вижу, что у меня есть этот код в конце таблицы, которую я хочу вставить в мою базу данных:

/*!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 */;?Это так важно?Пытался узнать об этом, но на самом деле я не понимаю, что он делает.

1 Ответ

2 голосов
/ 26 апреля 2011

Вероятно, есть SET @OLD_SQL_MODE = @@sql_mode; SET SQL_MODE='something' над определением таблицы. Видимо, вы забыли включить это в скопированный SQL.

Ваш инструмент экспорта хочет, чтобы ALTER TABLE выполнялся в определенном режиме SQL, и устанавливает его перед ALTER TABLE. Чтобы позже восстановить его до значения, которое было раньше, оно сохраняет текущее значение в переменной с именем @OLD_SQL_MODE. Цель этой строки - сбросить SQL_MODE на прежнее значение.

Таким образом, вам нужно иметь оба, SET выше и SET ниже вашего определения таблицы или ни одного из них.

...