Windows MySQL v5 membuat kesalahan tetapi Linux dan versi lain hanya memunculkan peringatan. Ini perlu diperbaiki. WTF?
Lihat juga upaya untuk memperbaikinya sebagai bug # 19498 di Bugtracker MySQL:
Bryce Nesbitt pada 4 April 2008 4:36 pm:
Pada MS Windows aturan "no DEFAULT" adalah kesalahan, sedangkan pada platform lain sering kali peringatan. Meskipun bukan bug, Anda mungkin terjebak oleh hal ini jika Anda menulis kode pada platform yang lunak, dan kemudian menjalankannya pada platform yang ketat:
Secara pribadi, saya melihat ini sebagai bug. Mencari "BLOB / TEXT kolom tidak dapat memiliki nilai default" mengembalikan sekitar 2.940 hasil di Google. Kebanyakan dari mereka adalah laporan yang tidak kompatibel ketika mencoba menginstal skrip DB yang bekerja pada satu sistem tetapi tidak pada yang lain.
Saya mengalami masalah yang sama sekarang di webapp saya memodifikasi untuk salah satu klien saya, awalnya digunakan di Linux MySQL v5.0.83-log. Saya menjalankan Windows MySQL v5.1.41. Bahkan mencoba menggunakan versi terbaru dari phpMyAdmin untuk mengekstrak database, itu tidak melaporkan default untuk kolom teks yang dimaksud. Namun, ketika saya mencoba menjalankan insert pada Windows (yang berfungsi dengan baik pada penyebaran Linux) saya menerima kesalahan yang tidak ada default pada kolom ABC. Saya mencoba membuat ulang tabel secara lokal dengan default yang jelas (berdasarkan pada pemilihan nilai unik untuk kolom itu) dan akhirnya menerima kolom BLOB / TEXT yang sangat berguna tidak dapat memiliki nilai default .
Sekali lagi, tidak mempertahankan kompatibilitas dasar lintas platform tidak dapat diterima dan merupakan bug.
Cara menonaktifkan mode ketat di MySQL 5 (Windows):
Edit /my.ini dan cari baris
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Ganti dengan
sql_mode='MYSQL40'
Mulai ulang layanan MySQL (dengan asumsi itu adalah mysql5)
net stop mysql5
net start mysql5
Jika Anda memiliki akses root / admin, Anda mungkin dapat menjalankannya
mysql_query("SET @@global.sql_mode='MYSQL40'");