GNU/Linux >> Tutoriales Linux >  >> Linux

Error de mysql datetime DEFAULT CURRENT_TIMESTAMP

si desea establecer el tiempo predeterminado, debe cambiar a timestamp en su tipo de datos,

el datetime va a mostrar la entrada del usuario de la tabla...

http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html

http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html


Como el DEFAULT CURRENT_TIMESTAMP la pregunta ya está respondida, solo responderé a la discrepancia de mayúsculas y minúsculas en los nombres de las tablas entre Windows y Linux.

En Windows, los sistemas de archivos no distinguen entre mayúsculas y minúsculas de forma predeterminada.
Pero en Linux y otros *NIX como sistemas operativos, distinguen entre mayúsculas y minúsculas de forma predeterminada.

La razón por la que no coincide el comportamiento aquí es el sistema de archivos, ya que cada tabla se crea como un archivo separado y el sistema de archivos maneja la distinción entre mayúsculas y minúsculas por usted.

MySQL tiene un parámetro para anular este comportamiento:

Por ejemplo, en Unix, puede tener dos tablas diferentes llamadas my_table y MY_TABLE , pero en Windows estos dos nombres se consideran idénticos. Para evitar problemas de transferencia de datos derivados del uso de mayúsculas y minúsculas en los nombres de las bases de datos o las tablas, tiene dos opciones:

  • Usa lower_case_table_names=1 en todos los sistemas. La principal desventaja de esto es que cuando usas SHOW TABLES o SHOW DATABASES , no ve los nombres en su letra original.

  • Usa lower_case_table_names=0 en Unix y lower_case_table_names=2 en Windows Esto conserva el uso de mayúsculas y minúsculas en los nombres de las bases de datos y las tablas. La desventaja de esto es que debe asegurarse de que sus declaraciones siempre se refieran a los nombres de sus bases de datos y tablas con las mayúsculas y minúsculas correctas en Windows. Si transfiere sus extractos a Unix, donde el uso de mayúsculas y minúsculas es significativo, no funcionarán si el uso de mayúsculas y minúsculas es incorrecto.

    Excepción: Si está utilizando tablas InnoDB y está tratando de evitar estos problemas de transferencia de datos, debe configurar lower_case_table_names=1 en todas las plataformas para obligar a que los nombres se conviertan a minúsculas.

[...]
Para evitar problemas causados ​​por tales diferencias,es mejor adoptar una convención coherente, como siempre crear y hacer referencia a bases de datos y tablas usando nombres en minúsculas . Se recomienda esta convención para lograr la máxima portabilidad y facilidad de uso.

Este es un extracto del manual de MySQL sobre la distinción entre mayúsculas y minúsculas de los identificadores


El DEFAULT CURRENT_TIMESTAMP soporte para un DATETIME (tipo de datos) se agregó en MySQL 5.6.

En 5.5 y versiones anteriores, esto se aplicaba solo a TIMESTAMP (tipo de datos) columnas.

Es posible usar un BEFORE INSERT desencadenar en 5.5 para asignar un valor predeterminado a una columna.

 DELIMITER $$

 CREATE TRIGGER ...
 BEFORE INSERT ON mytable
 FOR EACH ROW
 BEGIN
    IF NEW.mycol IS NULL THEN
       SET NEW.mycol = NOW();
    END IF;
 END$$

La distinción entre mayúsculas y minúsculas (de consultas contra valores almacenados en columnas) se debe a collation utilizado para la columna. Intercalaciones que terminan en _ci son insensibles a mayúsculas y minúsculas. Por ejemplo latin1_swedish_ci no distingue entre mayúsculas y minúsculas, pero latin1_general_cs distingue entre mayúsculas y minúsculas.

La salida de SHOW CREATE TABLE foo mostrará el juego de caracteres y la intercalación para las columnas de tipo de carácter. Esto se especifica en un nivel por columna. El "predeterminado" especificado en el nivel de la tabla se aplica a las nuevas columnas agregadas a la tabla cuando la definición de la nueva columna no especifica un conjunto de caracteres.

ACTUALIZAR

Kaii señaló que mi respuesta con respecto a la "distinción de mayúsculas y minúsculas" se ocupa de los valores almacenados dentro de las columnas, y si las consultas devolverán un valor de una columna que contiene un valor de "New" se devolverá con un predicado como "t.col = 'new'" .

Ver la respuesta de Kaii sobre identificadores (por ejemplo, los nombres de las tablas) se manejan de manera diferente (por defecto) en Windows que en Linux.


Linux
  1. MySQL:conversión a datos por tabla para InnoDB

  2. Error de demasiadas conexiones en MySQL

  3. La tabla de errores de MySQL 'mysql.servers' no existe

  4. No se puede conectar al servidor MySQL error 111

  5. Recuperar la base de datos mysql:mysql/mysqldump da la tabla <base de datos>. <nombre de la tabla> no existe (1146)

Cómo crear una tabla en MySQL

Cómo exportar una tabla de MySQL a CSV

Cómo optimizar tablas MySQL

Cómo soltar una tabla en MySQL

403 Error prohibido

MySQL nombres de tablas sensibles a mayúsculas y minúsculas en Linux