Windows MySQL v5 arroja un error, pero Linux y otras versiones solo generan una advertencia. Esto necesita ser arreglado. WTF?
También vea un intento de arreglar esto como el error # 19498 en el MySQL Bugtracker:
Bryce Nesbitt el 4 de abril de 2008 4:36 pm:
En MS Windows, la regla "no DEFAULT" es un error, mientras que en otras plataformas a menudo es una advertencia. Si bien no es un error, es posible quedar atrapado por esto si escribe código en una plataforma indulgente y luego lo ejecuta en una plataforma estricta:
Personalmente, veo esto como un error. La búsqueda de "la columna BLOB / TEXT no puede tener un valor predeterminado" arroja unos 2.940 resultados en Google. La mayoría de ellos son informes de incompatibilidades al intentar instalar scripts de DB que funcionaron en un sistema pero no en otros.
Me encuentro con el mismo problema ahora en una aplicación web que estoy modificando para uno de mis clientes, originalmente implementado en Linux MySQL v5.0.83-log. Estoy ejecutando Windows MySQL v5.1.41. Incluso tratando de usar la última versión de phpMyAdmin para extraer la base de datos, no informa un valor predeterminado para la columna de texto en cuestión. Sin embargo, cuando intento ejecutar una inserción en Windows (que funciona bien en la implementación de Linux) recibo un error de no predeterminado en la columna ABC. Intento recrear la tabla localmente con el valor predeterminado obvio (basado en una selección de valores únicos para esa columna) y termino recibiendo la columna BLOB / TEXT tan útil que no puede tener un valor predeterminado .
Nuevamente, no mantener la compatibilidad básica entre plataformas es inaceptable y es un error.
Cómo deshabilitar el modo estricto en MySQL 5 (Windows):
Edite /my.ini y busque la línea
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Reemplácelo con
sql_mode='MYSQL40'
Reinicie el servicio MySQL (suponiendo que es mysql5)
net stop mysql5
net start mysql5
Si tiene acceso root / admin, es posible que pueda ejecutar
mysql_query("SET @@global.sql_mode='MYSQL40'");