Windows MySQL v5 хвърля грешка, но Linux и други версии повдигат само предупреждение. Това трябва да се поправи. WTF?
Вижте също опит за коригиране на това като грешка #19498 в MySQL Bugtracker:
Bryce Nesbitt на 4 април 2008 г., 16:36:
В MS Windows правилото "без ПРАВО" е грешка, докато на други платформи често е предупреждение. Въпреки че не е грешка, е възможно да попаднете в капан от това, ако пишете код на снизходителна платформа и по-късно го стартирате на строга платформа:
Лично аз гледам на това като на грешка. Търсенето на „колона BLOB/TEXT не може да има стойност по подразбиране“ връща около 2940 резултата в Google. Повечето от тях са доклади за несъвместимост при опит за инсталиране на DB скриптове, които работят на една система, но не и на други.
Сблъсквам се със същия проблем сега в уеб приложение, което променям за един от моите клиенти, първоначално разположено на 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'");