O que devo fazer se o tipo de data for convertido automaticamente para o tipo de carimbo de data/hora durante a criação da tabela?
Ao criar um banco de dados, você pode definir o parâmetro DBCOMPATIBILITY para o tipo de banco de dados compatível. O valor de DBCOMPATIBILITY pode ser ORA, TD e MySQL, indicando os bancos de dados Oracle, Teradata e MySQL, respectivamente. Se este parâmetro não for especificado durante a criação do banco de dados, o valor padrão ORA será usado. No modo de compatibilidade ORA, o tipo de data é automaticamente convertido em carimbo de data/hora(0). O tipo de data só é suportado no modo de compatibilidade do MySQL.
Para resolver o problema, você precisa alterar o modo de compatibilidade para o MySQL. O modo de compatibilidade de um banco de dados existente não pode ser alterado. Ele só pode ser especificado durante a criação do banco de dados. O GaussDB(DWS) suporta o modo de compatibilidade do MySQL no cluster versão 8.1.1 e posterior. Para configurar esse modo, execute os seguintes 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 |
Se o problema não puder ser resolvido alterando a compatibilidade, você pode tentar alterar o tipo de coluna. Por exemplo, insira dados do tipo data como cadeias em uma tabela. Exemplo:
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 do banco de dados Perguntas frequentes
- Como alterar as colunas de distribuição?
- Como exibir e definir a codificação de caracteres do banco de dados?
- O que devo fazer se o tipo de data for convertido automaticamente para o tipo de carimbo de data/hora durante a criação da tabela?
- Preciso executar VACUUM FULL e ANALYZE em tabelas comuns periodicamente?
- É necessário definir uma chave de distribuição após definir uma chave primária?
- O GaussDB(DWS) é compatível com os procedimentos armazenados do PostgreSQL?
- Quais são tabelas particionadas, partições e chaves de partição?
- Como exportar a estrutura da tabela?
- Como excluir dados da tabela de forma eficiente?
- Como exibir informações de tabela estrangeira?
- Se nenhuma coluna de distribuição for especificada, como os dados serão armazenados?
- Como substituir o resultado nulo por 0?
- Como verificar se uma tabela é armazenada em linha ou em coluna?
- Como consultar as informações sobre tabelas de armazenamento de colunas do GaussDB(DWS)?
- Por que às vezes os índices de consulta do GaussDB(DWS) se tornam inválidos?
- Como usar uma função definida pelo usuário para reescrever a função CRC32()?
- Quais são os esquemas começando com pg_toast_temp* ou pg_temp*?
- Soluções para resultados de consultas inconsistentes do GaussDB(DWS)
- Em quais catálogos do sistema a operação VACUUM FULL não pode ser executada?
- Em quais cenários uma instrução fica "idle in transaction"?
- Como o GaussDB(DWS) implementa a conversão de linha para coluna e de coluna para linha?
- Quais são as diferenças entre restrições únicas e índices únicos?
- What Are the Differences Between Functions and Stored Procedures?
Feedback
Esta página foi útil?
Deixar um comentáriomore