Windows MySQL v5 выдает ошибку, но Linux и другие версии вызывают только предупреждение. Это должно быть исправлено. WTF?
Также посмотрите на попытку исправить это как ошибку # 19498 в MySQL Bugtracker:
Брайс Несбитт от 4 апреля 2008 г. 16:36: в
MS Windows правило «no DEFAULT» - это ошибка, а на других платформах это часто предупреждение. Хотя это и не ошибка, это возможно, если вы напишите код на мягкой платформе, а затем запустите его на строгой платформе:
Лично я считаю это ошибкой. Поиск по запросу «столбец BLOB / TEXT не может иметь значения по умолчанию» возвращает примерно 2 940 результатов в Google. Большинство из них являются сообщениями о несовместимости при попытке установить сценарии БД, которые работали в одной системе, но не в других.
Сейчас я сталкиваюсь с той же проблемой в веб-приложении, которое я изменяю для одного из моих клиентов, изначально развернутого в Linux MySQL v5.0.83-log. Я использую Windows MySQL v5.1.41. Даже пытаясь использовать последнюю версию phpMyAdmin для извлечения базы данных, она не сообщает о значении по умолчанию для рассматриваемого текстового столбца. Тем не менее, когда я пытаюсь запустить вставку в Windows (которая отлично работает при развертывании Linux), я получаю сообщение об ошибке по умолчанию в столбце ABC. Я пытаюсь воссоздать таблицу локально с очевидным значением по умолчанию (на основе выбора уникальных значений для этого столбца) и в итоге получаю очень полезный столбец BLOB / TEXT, который не может иметь значение по умолчанию .
Опять же, несоблюдение базовой совместимости на разных платформах недопустимо и является ошибкой.
Как отключить строгий режим в MySQL 5 (Windows):
Отредактируйте /my.ini и найдите строку
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Замени это
sql_mode='MYSQL40'
Перезапустите службу MySQL (при условии, что это mysql5)
net stop mysql5
net start mysql5
Если у вас есть права root / admin, вы можете выполнить
mysql_query("SET @@global.sql_mode='MYSQL40'");