¿Qué hago si el tipo de fecha se convierte automáticamente en el tipo de marca de tiempo durante la creación de la tabla?
Al crear una base de datos, puede establecer el parámetro DBCOMPATIBILITY en el tipo de base de datos compatible. El valor de DBCOMPATIBILITY puede ser ORA, TD y MySQL, indicando las bases de datos Oracle, Teradata y MySQL, respectivamente. Si este parámetro no se especifica durante la creación de la base de datos, se utiliza el valor predeterminado ORA. En el modo de compatibilidad ORA, el tipo de fecha se convierte automáticamente en marca de tiempo (0).
Para evitar esta conversión, establezca la base de datos en el modo de compatibilidad MySQL, que es el único modo que admite el tipo de fecha. No se puede cambiar el modo de compatibilidad de una base de datos existente. Solo se puede especificar durante la creación de la base de datos. GaussDB(DWS) soporta el modo de compatibilidad de MySQL en la versión 8.1.1 y posterior de clúster. Para configurar este modo, ejecute los siguientes comandos:
1 2 3 4 5 6 7 8 9 |
gaussdb=> CREATE DATABASE mydatabase DBCOMPATIBILITY='mysql'; CREATE DATABASE gaussdb=> \c mydatabase Non-SSL connection (SSL connection is recommended when requiring high-security) You are now connected to database "mydatabase" as user "dbadmin". mydatabase=> create table t1(c1 int, c2 date); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using round-robin as the distribution mode by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE |
Si el problema no se puede resolver cambiando la compatibilidad, puede intentar cambiar el tipo de columna. Por ejemplo, inserte datos del tipo de fecha como cadena en una tabla. Por ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
gaussdb=> CREATE TABLE mytable (a date,b int); CREATE TABLE gaussdb=> INSERT INTO mytable VALUES(date '12-08-2023',01); INSERT 0 1 gaussdb=> SELECT * FROM mytable; a | b ---------------------+--- 2023-12-08 00:00:00 | 1 (1 row) gaussdb=> ALTER TABLE mytable MODIFY a VARCHAR(20); ALTER TABLE gaussdb=> INSERT INTO mytable VALUES('2023-12-10',02); INSERT 0 1 gaussdb=> SELECT * FROM mytable; a | b ---------------------+--- 2023-12-08 00:00:00 | 1 2023-12-10 | 2 (2 rows) |
Uso de la base de datos Preguntas frecuentes
- ¿Cómo cambio las columnas de distribución?
- ¿Cómo puedo ver y establecer la codificación de caracteres de la base de datos?
- ¿Qué hago si el tipo de fecha se convierte automáticamente en el tipo de marca de tiempo durante la creación de la tabla?
- ¿Necesito ejecutar VACUUM FULL y ANALYZE en tablas comunes periódicamente?
- ¿Necesito ajustar una clave de distribución después de establecer una clave principal?
- ¿Es GaussDB(DWS) compatible con los procedimientos almacenados de PostgreSQL?
- ¿Qué son las tablas particionadas, las particiones y las claves de partición?
- ¿Cómo puedo exportar la estructura de la tabla?
- ¿Cómo puedo eliminar los datos de la tabla de manera eficiente?
- ¿Cómo puedo ver la información de la tabla extranjera?
- Si no se especifica ninguna columna de distribución, ¿cómo se almacenarán los datos?
- ¿Cómo reemplazo el resultado nulo por 0?
- ¿Cómo puedo comprobar si una tabla está almacenada en filas o en columnas?
- ¿Cómo puedo consultar la información sobre las tablas de almacén de columnas de GaussDB(DWS)?
- ¿Por qué a veces los índices de consulta de GaussDB(DWS) se vuelven inválidos?
- ¿Cómo uso una función definida por el usuario para reescribir la función CRC32()?
- ¿Cuáles son los esquemas que comienzan con pg_toast_temp* o pg_temp*?
- Soluciones a los resultados incoherentes de las consultas a GaussDB(DWS)
- ¿En qué catálogos de sistema no se puede realizar la operación de VACUUM FULL?
- ¿En qué escenarios estaría una declaración "idle in transaction"?
- ¿Cómo implementa GaussDB(DWS) las conversiones de fila a columna y de columna a fila?
- ¿Cuáles son las diferencias entre las restricciones únicas y los índices únicos?
Comentarios
¿Le pareció útil esta página?
Deje algún comentariomore