Por alguna razón, ni siquiera puedo seleccionar dates inválidas en mi tabla. ¿Cómo fuerzo la selección? Acabo de recibir:
select * from table >> Mysql2::Error: Invalid date: 1900-00-00
No estoy tratando de insert, solo select. ¿Puedo establecer permitir dates no válidas en la consulta de selección?
mysql --version mysql Ver 14.14 Distrib 5.1.61, for debian-linux-gnu (i686) using readline 6.1 mysql> select @@global.sql_mode; +-------------------+ | @@global.sql_mode | +-------------------+ | |
Esto es lo que hago para ignorar las dates inválidas:
SET SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
mysql -u root -p
sql-modes
actuales usando SELECT @@GLOBAL.sql_mode;
sql-modes
utilizando SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES';
ALLOW_INVALID_DATES
y elimina tanto NO_ZERO_DATE, NO_ZERO_IN_DATE
/etc/init.d/mysql start
Enlace de solución
– Desde la command-line which mysqld
– Debería get algo como /usr/sbin/mysqld
que es la location del file binary
– Ordene la ruta para los files de configuration /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
/usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
– Tu respuesta de bash debería verse así: las Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
– Mire los files en order sucesivo para ver dónde hacer cambios (si no existe un file, no se está haciendo reference a él).
– Busca tu modo actual. Abra una terminal e inicie session en la database mysql -u database_user -p -e "select @@sql_mode"
– Modifique los modos SQL que desea cambiar agregando el siguiente código al file de configuration.
[mysqld]
sql-mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES"
– Guarde el file de configuration y reinicie el service mysql