Windows MySQL v5 видає помилку, але Linux та інші версії викликають лише попередження. Це потрібно виправити. WTF?
Також дивіться спробу виправити це як помилку № 19498 в MySQL Bugtracker:
Брайс Несбітт 4 квітня 2008 р. 16:36:
У MS Windows правило "без DEFAULT" є помилкою, а на інших платформах це часто попередження. Хоча це не помилка, можливо, в цьому потрапити в пастку, якщо ви пишете код на поблажливій платформі, а пізніше запустите його на суворій платформі:
Особисто я вважаю це помилкою. Якщо шукати "BLOB / TEXT стовпець не може мати значення за замовчуванням", у Google з’являється близько 2940 результатів. Більшість з них - це повідомлення про несумісність при спробі встановлення сценаріїв БД, які працювали в одній системі, але не в іншій.
Зараз я зіткнувся з тією ж проблемою на веб-сайті, який я модифікую для одного з своїх клієнтів, спочатку розгорнутого в 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'");