Tengo tabla como se muestra a continuación. Con el fin de solucionar un defecto ahora restricción de la columna de MySQL utilicé la punta, como se muestra hereMySQL columna de indicación de fecha y hora valor predeterminado AHORA valor ERROR 1067
CREATE TABLE IF NOT EXISTS mytable (
id INT NOT NULL AUTO_INCREMENT ,
create_date TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00' ,
update_date TIMESTAMP NULL DEFAULT NOW() ON UPDATE NOW() ,
PRIMARY KEY (`parti_id`))
ENGINE = InnoDB;
Mi sql_mode no incluye NO_ZERO_DATE
como se ha señalado here mi producción:
mysql> SELECT @@sql_mode;
+------------+
| @@sql_mode |
+------------+
| |
+------------+
1 row in set (0.00 sec)
Todavía está dando el error como se muestra a continuación:
ERROR 1067 (42000) at line xx in file: '/myschema.sql': Invalid default value for 'create_date'
Yo uso MySQL 5.1.37 en Ubuntu
¿Cómo puedo solucionarlo? Gracias.
Esto no es un error, es una característica: "Para una columna TIMESTAMP en una tabla, puede asignar la fecha y hora actual como el valor por defecto y el valor de actualización automática Es posible que la marca de tiempo actual sea el valor predeterminado para inicializar la columna, para el valor de actualización automática o para ambos. No es posible que la marca de tiempo actual sea el valor predeterminado para una columna y el valor de actualización automática para otra columna. " –
El debate sobre si esto es un 'error' o no se mantiene, ya que esto es realmente molesto. ¿Por qué no puedo tener dos columnas timestamp con un valor predeterminado de now() con la segunda columna de actualización automática? La respuesta es que MySQL no hace eso. Realmente no lo llamo una característica. –
Randy gracias por su respuesta. Estoy al tanto del enlace que me proporcionó. Solo busco una solución. Sin embargo, parece que todos los trucos que se muestran en Internet simplemente no funcionan. –