Windows MySQL v5 vyvolá chybu, ale Linux a další verze pouze zobrazí varování. To je potřeba opravit. WTF?
Podívejte se také na pokus to opravit jako chybu #19498 v MySQL Bugtracker:
Bryce Nesbitt, 4. dubna 2008 16:36:
Na MS Windows je pravidlo "no DEFAULT" chybou, zatímco na jiných platformách je to často varování. I když to není chyba, je možné se tím dostat do pasti, pokud napíšete kód na mírné platformě a později jej spustíte na striktní platformě:
Osobně to vnímám jako bug. Hledání „sloupec BLOB/TEXT nemůže mít výchozí hodnotu“ vrátí přibližně 2 940 výsledků na Googlu. Většina z nich jsou zprávy o nekompatibilitě při pokusu o instalaci DB skriptů, které fungovaly na jednom systému, ale ne na jiném.
Nyní narážím na stejný problém na webové aplikaci, kterou upravuji pro jednoho ze svých klientů, původně nasazené na Linux MySQL v5.0.83-log. Používám Windows MySQL v5.1.41. I když se pokusíte použít nejnovější verzi phpMyAdmin k extrahování databáze, nehlásí výchozí hodnotu pro příslušný textový sloupec. Přesto, když se pokusím spustit vložku ve Windows (která funguje dobře na nasazení Linuxu), zobrazí se mi chyba žádné výchozí nastavení ve sloupci ABC. Snažím se znovu vytvořit tabulku lokálně se zřejmým výchozím nastavením (na základě výběru jedinečných hodnot pro tento sloupec) a nakonec obdržím velmi užitečný Sloupec BLOB/TEXT nemůže mít výchozí hodnotu .
Opět platí, že neudržování základní kompatibility napříč platformami je nepřijatelné a je to chyba.
Jak zakázat přísný režim v MySQL 5 (Windows):
-
Upravte /my.ini a vyhledejte řádek
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
-
Nahraďte jej za
sql_mode='MYSQL40'
-
Restartujte službu MySQL (za předpokladu, že jde o mysql5)
net stop mysql5 net start mysql5
Pokud máte přístup root/admin, možná budete moci spustit
mysql_query("SET @@global.sql_mode='MYSQL40'");