Windows MySQL v5 zgłasza błąd, ale Linux i inne wersje zgłaszają tylko ostrzeżenie. To musi zostać naprawione. WTF?
Zobacz także próbę rozwiązania tego problemu jako błędu # 19498 w narzędziu Bugtracker MySQL:
Bryce Nesbitt 4 kwietnia 2008 16:36:
W MS Windows reguła „brak DOMYŚLNYCH” jest błędem, podczas gdy na innych platformach często jest to ostrzeżenie. Chociaż nie jest to błąd, można go złapać w pułapkę, jeśli napiszesz kod na łagodnej platformie, a później uruchomisz go na ścisłej platformie:
Osobiście uważam to za błąd. Wyszukiwanie „BLOB / TEKST kolumna nie może mieć wartości domyślnej” zwraca około 2940 wyników w Google. Większość z nich to raporty niezgodności podczas próby zainstalowania skryptów DB, które działały w jednym systemie, ale nie w innych.
Mam teraz ten sam problem w aplikacji internetowej, którą modyfikuję dla jednego z moich klientów, pierwotnie wdrożonej na Linux MySQL v5.0.83-log. Korzystam z systemu Windows MySQL 5.1.41. Nawet próbując użyć najnowszej wersji phpMyAdmin do wyodrębnienia bazy danych, nie zgłasza wartości domyślnej dla danej kolumny tekstowej. Jednak gdy próbuję uruchomić wstawkę w systemie Windows (która działa dobrze w przypadku wdrożenia w systemie Linux), pojawia się błąd braku wartości domyślnej w kolumnie ABC. Próbuję odtworzyć lokalnie tabelę z oczywistymi wartościami domyślnymi (w oparciu o wybór unikalnych wartości dla tej kolumny) i ostatecznie otrzymuję bardzo przydatną kolumnę BLOB / TEXT nie może mieć wartości domyślnej .
Ponownie, brak zachowania podstawowej kompatybilności na różnych platformach jest niedopuszczalny i jest błędem.
Jak wyłączyć tryb ścisły w MySQL 5 (Windows):
Edytuj /my.ini i poszukaj linii
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Zamień na
sql_mode='MYSQL40'
Uruchom ponownie usługę MySQL (zakładając, że jest to mysql5)
net stop mysql5
net start mysql5
Jeśli masz uprawnienia roota / administratora, możesz być w stanie wykonać
mysql_query("SET @@global.sql_mode='MYSQL40'");