AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / 问题

Perguntas[database](coding)

Martin Hope
Anthonyx82
Asked: 2025-04-24 19:30:07 +0800 CST

REMAP_DATAFILE não funciona durante a importação do Data Pump no Oracle 19c

  • 6

Estou tentando importar um dump completo do banco de dados impdppara um ambiente diferente do Oracle 19c (Standard Edition 2), mas o REMAP_DATAFILEparâmetro parece não estar funcionando.

Meu objetivo é importar um dump de um banco de dados de origem chamado db_source para um destino chamado db_target , redirecionando todos os arquivos de dados para um caminho de pasta diferente ( /opt/oracle/oradata/oradata/DB_TARGET/pdb_target/), já que a estrutura do sistema de arquivos difere entre os ambientes.

Isso é o que tenho no meu .pararquivo:

REMAP_DATAFILE=/opt/oracle/oradata/oradata/DB_SOURCE/:/opt/oracle/oradata/oradata/DB_TARGET/pdb_target/

No entanto, continuo recebendo erros como:

ORA-39083: Object type TABLESPACE:"DATOSLOB" failed to create with error:
ORA-01119: error in creating database file '/opt/oracle/oradata/oradata/DB_SOURCE/DATOSLOB_01'
ORA-27038: created file already exists

Confirmei que estou conectado ao PDB correto ( pdb_target) usando SHOW CON_NAME;.

Também gerei uma visualização SQL usando SQLFILE=preview.sqle notei que os caminhos do arquivo de dados não estão sendo remapeados , eles ainda apontam para /opt/oracle/oradata/oradata/DB_SOURCE/.

Encontrei alguém enfrentando o mesmo problema aqui (ainda sem solução): https://forums.oracle.com/ords/apexds/post/data-pump-datafile-remapping-does-not-work-5729

Como posso REMAP_DATAFILEtrabalhar corretamente no Oracle 19c? Há algum requisito adicional ou bug conhecido?

database
  • 1 respostas
  • 32 Views
Martin Hope
Amgad Deyaa
Asked: 2025-04-14 17:40:47 +0800 CST

Por que recebo um erro ao criar registros de um mapa com um campo PK no GORM? Esse é um caso de uso válido?

  • 5

Tenho aprendido GORM com a documentação oficial e estou tendo alguma confusão ao tentar criar registros de um mapa usando a função Create().

A documentação oficial mostra este exemplo de criação de registros a partir de um mapa:

// Single insert
db.Model(&User{}).Create(map[string]interface{}{
  "Name": "jinzhu", "Age": 18,
})

// Batch insert
db.Model(&User{}).Create([]map[string]interface{}{
  {"Name": "jinzhu_1", "Age": 18},
  {"Name": "jinzhu_2", "Age": 20},
})

Mas aqui está a questão: isso funciona bem se não houver uma chave primária (PK) definida para a tabela. No entanto, se eu definir um campo PK (como user_id), recebo um erro. Pelo que entendi, toda tabela precisa ter uma chave primária para normalização, então por que esse método funciona sem uma PK?

Existe algum caso de uso válido para criar registros a partir de um mapa se a tabela tiver uma PK? O GORM lida com PKs automaticamente neste caso? Ou há algo que não entendi e ele realmente não funciona com PKs?

Também estou me perguntando se o exemplo na documentação está realmente bem escrito ou se precisa de uma correção para lidar com tabelas com chaves primárias. Devo usar structs em vez de mapas ao trabalhar com tabelas que têm uma chave primária?

database
  • 1 respostas
  • 31 Views
Martin Hope
TeknoSenpai
Asked: 2025-03-22 17:08:20 +0800 CST

Erro na inserção com valores padrão no Exposed

  • 6

Sempre que tento criar e inserir um novo usuário na tabela Usuários (com o User.newmétodo DAO ou o Users.insertmétodo ), um campo de enumeração accountstatus que é descrito como não nulo, com um valor padrão, faz com que a inserção falhe a partir de null value in column "accountstatus" violates not-null constraint.

Aqui está o código para a definição da tabela e o DAO do usuário:

 object Users : UUIDTable() {
     val email = varchar("email", 255).uniqueIndex()
     val role = enumeration<Role>("role")
     val registrationDate =
         datetime("registrationDate").default(Clock.System.now().toLocalDateTime(TimeZone.currentSystemDefault()))
     val disabledDate = datetime("disabledDate").nullable()
     val accountStatus = enumeration<AccountStatus>("accountStatus").default(AccountStatus.ACTIVE)
 
     enum class Role {
         PROFESSOR, STUDENT
     }
 
     enum class AccountStatus {
         ACTIVE, DISABLED
     }
 }

 class User(id: EntityID<UUID>) : UUIDEntity(id), UserData {
     companion object : UUIDEntityClass<User>(Users)
 
     override var email by Users.email
     override var role by Users.role
     override val registrationDate by Users.registrationDate
     override var disabledDate by Users.disabledDate
     override var accountStatus by Users.accountStatus
     val sessions by Session referrersOn Sessions.userId
 }

Aqui está o código que gera a exceção:

 // ...
 transaction {
     User.new {
         email = email /* logic omitted */
         role = role /* logic omitted */
     }
 }
database
  • 1 respostas
  • 35 Views
Martin Hope
fblundun
Asked: 2025-02-25 21:44:51 +0800 CST

Como espero que o Elasticsearch termine de clonar um índice?

  • 6

Estou fazendo a reindexação do Elasticsearch como um processo de várias etapas usando a biblioteca de cliente JavaScript:

  • Clonar índice chamado "antigo" para um novo índice chamado "novo"
  • Excluir índice "antigo"
  • Reindexar do índice "novo" de volta para o "antigo"
  • Excluir o "novo" índice

Preciso esperar a conclusão do 1º passo antes de executar os próximos passos. Existe um endpoint do Elasticsearch que eu possa consultar para descobrir quando o clone estiver concluído?

database
  • 2 respostas
  • 23 Views
Martin Hope
Sanyokk
Asked: 2025-01-18 22:19:34 +0800 CST

ERRO: inserir ou atualizar na tabela "promos" viola a restrição de chave estrangeira "fk_businesses_promos" [duplicado]

  • 5
Esta pergunta já tem respostas aqui :
Erro GORM ao inserir ou atualizar na tabela viola restrição de chave estrangeira (2 respostas)
Fechado há 11 horas .

Estou tentando construir uma API REST usando Go e especificamente GORM.

Minhas entidades se parecem com isto:

type Business struct {
    ID        string    `json:"id" gorm:"primaryKey;not null;type:uuid;default:gen_random_uuid()"`
    CreatedAt time.Time `json:"-"`
    UpdatedAt time.Time `json:"-"`

    Email    string `json:"email" gorm:"uniqueIndex;not null;"`
    Password []byte `json:"-"`
    Name     string `json:"name"`

    Promos []Promo `json:"promos" gorm:"foreignKey:CompanyID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"`
}
type Promo struct {
    PromoID   string    `json:"id" gorm:"primaryKey;not null;type:uuid;default:gen_random_uuid()"`
    CompanyID string    `json:"company_id" gorm:"not null;foreignKey:ID"`
    CreatedAt time.Time `json:"-"`
    UpdatedAt time.Time `json:"-"`

    Target      Target        `json:"target" gorm:"foreignKey:TargetID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;not null"`
    Active      bool          `json:"-" gorm:"default:true"`
    ActiveFrom  time.Time     `json:"active_from"`
    ActiveUntil time.Time     `json:"active_until"`
    Description string        `json:"description" gorm:"not null"`
    ImageURL    string        `json:"image_url"`
    MaxCount    int           `json:"max_count" gorm:"not null"`
    Mode        string        `json:"mode" gorm:"not null"`
    PromoCommon string        `json:"promo_common"`
    PromoUnique []PromoUnique `json:"promo_unique" gorm:"foreignKey:PromoUniqueID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"`
}

type PromoUnique struct {
    PromoUniqueID string `json:"-" gorm:"primaryKey;not null;type:uuid;default:gen_random_uuid()"`
    Body          string `json:"-" gorm:"not null"`
    Activated     bool   `json:"-" gorm:"default:false"`
}

type Target struct {
    TargetID   string                `json:"-" gorm:"primaryKey;not null;type:uuid;default:gen_random_uuid()"`
    AgeFrom    int                   `json:"age_from"`
    AgeUntil   int                   `json:"age_until"`
    Country    countries.CountryCode `json:"country"`
    Categories []Category            `json:"categories" gorm:"foreignKey:CategoryID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"`
}

type Category struct {
    CategoryID string `json:"id" gorm:"primaryKey;not null;type:uuid;default:gen_random_uuid()"`
    TargetID   string `json:"-" gorm:"not null"`
    Name       string `json:"name" gorm:"not null"`
}

O código do meu serviço se parece com isso:

func (s *promoService) Create(ctx context.Context, promoDTO dto.PromoCreate) (*entity.Promo, error) {

    activeFrom, _ := time.Parse("2006-01-02", promoDTO.ActiveFrom)
    activeUntil, _ := time.Parse("2006-01-02", promoDTO.ActiveUntil)
    var categories []entity.Category
    var promoUniques []entity.PromoUnique
    for _, category := range promoDTO.Target.Categories {
        categories = append(categories, entity.Category{
            Name: category,
        })
    }
    for _, promoUnique := range promoDTO.PromoUnique {
        promoUniques = append(promoUniques, entity.PromoUnique{
            Body: promoUnique,
        })
    }

    company, _ := s.businessStorage.GetByID(ctx, promoDTO.CompanyID)

    promo := entity.Promo{
        Target: entity.Target{
            AgeFrom:    promoDTO.Target.AgeFrom,
            AgeUntil:   promoDTO.Target.AgeUntil,
            Country:    countries.ByName(strings.ToUpper(promoDTO.Target.Country)),
            Categories: categories,
        },
        CompanyID:   company.ID,
        Active:      true,
        ActiveFrom:  activeFrom,
        ActiveUntil: activeUntil,
        Description: promoDTO.Description,
        ImageURL:    promoDTO.ImageURL,
        MaxCount:    promoDTO.MaxCount,
        Mode:        promoDTO.Mode,
        PromoCommon: promoDTO.PromoCommon,
        PromoUnique: promoUniques,
    }

    company.Promos = append(company.Promos, promo)
    _, err := s.businessStorage.Update(ctx, company)
    if err != nil {
        return nil, err
    }

    return s.promoStorage.Create(ctx, promo)
}

Meu armazenamento se parece com isso:

// Create is a method to create a new Promo in database.
func (s *promoStorage) Create(ctx context.Context, promo entity.Promo) (*entity.Promo, error) {
    err := s.db.Model(&promo).WithContext(ctx).Create(&promo).Error
    return &promo, err
}

Mas quando tento alcançar um ponto final recebo este erro:

/opt/internal/adapters/database/postgres/promo.go:22 ERROR: insert or update on table "promos" violates foreign key constraint "fk_businesses_promos" (SQLSTATE 23503)       

O que devo fazer? Pesquisei algumas outras perguntas no stackoverflow com o mesmo problema, mas nenhuma me ajudou.

database
  • 2 respostas
  • 48 Views
Martin Hope
ashish
Asked: 2025-01-10 01:53:18 +0800 CST

O Postgres oferece suporte a 'ON DELETE CASCADE' com chave estrangeira composta?

  • 6

É assim que minhas mesas se parecem

CREATE TABLE T1(
id uuid not null,
order_time timestamptz NOT NULL,
PRIMARY KEY (id, order_time),
)

CREATE TABLE T2(
id uuid not null PRIMARY KEY,
t1_id uuid not null,
t1_order_time timestamptz not null,
FOREIGN KEY (t1_id, t1_order_time) REFERENCES T1 (id, order_time) ON DELETE CASCADE
)

Pretendo particionar a Tabela T1 com base no ID e no tempo do pedido, portanto, ela tem uma chave primária composta com base no ID e no tempo do pedido.

Se eu tentar remover T1, o postgres, como esperado, dá o erro “não é possível remover a tabela devido à restrição. Dica: use DROP ... CASCADE para remover os objetos dependentes também”.

Agora, se eu fizer 'drop table T1 cascade', ele descarta T1 e apenas exclui as restrições de chave estrangeira de T2. Nenhuma linha correspondente é excluída de T1

database
  • 1 respostas
  • 25 Views
Martin Hope
SwAsKk
Asked: 2024-12-20 02:30:57 +0800 CST

Como faço para restaurar parcialmente os dados do pg_data_dump?

  • 7

Tenho um problema. Tenho uma funcionalidade de backup no meu aplicativo. Aqui está como eu faço dumps:

schema_command = (
            f'PGPASSWORD={os.environ["POSTGRES_PASSWORD"]} '
            f'pg_dump -U {os.environ["POSTGRES_USER"]} '
            f'--schema-only -h {os.environ["DB_HOST"]} {os.environ["DB_NAME"]} > {schema_backup_file}'
        )
        subprocess.run(schema_command, shell=True, check=True)

        data_command = (
            f'PGPASSWORD={os.environ["POSTGRES_PASSWORD"]} '
            f'pg_dump -U {os.environ["POSTGRES_USER"]} '
            f'--data-only -h {os.environ["DB_HOST"]} {os.environ["DB_NAME"]} > {data_backup_file}'
        )
        subprocess.run(data_command, shell=True, check=True)

Também tenho uma funcionalidade de restauração:

schema_restore_command = (
            f'PGPASSWORD={os.environ["POSTGRES_PASSWORD"]} '
            f'psql -U {os.environ["POSTGRES_USER"]} '
            f'-h {os.environ["DB_HOST"]} -d {os.environ["DB_NAME"]} < {schema_backup_file}'
        )
        print(schema_restore_command)
        subprocess.run(schema_restore_command, shell=True, check=True)

        data_restore_command = (
            f'PGPASSWORD={os.environ["POSTGRES_PASSWORD"]} '
            f'psql -U {os.environ["POSTGRES_USER"]} '
            f'-h {os.environ["DB_HOST"]} -d {os.environ["DB_NAME"]} < {data_backup_file}'
        )
        print(data_restore_command)
        subprocess.run(data_restore_command, shell=True, check=True)

O problema é que preciso restaurar parcialmente os dados do dump. Por exemplo - eu acidentalmente deletei algumas linhas do banco de dados, mas minha tabela ainda está cheia de conteúdo. Não funciona. Funciona apenas quando a tabela está completamente vazia.

Eu tentei o sinalizador --inserts ao criar um despejo de dados. Tentei limpar meu banco de dados antes de restaurar, funcionou, mas não é assim que deveria funcionar de acordo com minha descrição de tarefa.

database
  • 1 respostas
  • 25 Views
Martin Hope
guts_thakur
Asked: 2024-12-13 00:51:34 +0800 CST

Utilizando o erro `no such table` do SQLite em Go?

  • 5

Ao trabalhar com o banco de dados sqlite em Go. Durante o teste, obtive o erro: no such table: table_name. Bem, eu sei de onde o erro está vindo.

Mas eu quero saber se há uma maneira de usar essa mensagem de erro no Go, para fazer algum trabalho com ela (como criar essa tabela no meu código). Eu estava tentando fazer algo assim:

_, err := getState(dbconn) // This the function that retrieves the table that does not exists
if err != nil {
    if err == err.New("no such table: table_name") {
        // do the work
    }
}
database
  • 1 respostas
  • 36 Views
Martin Hope
Zuhaib Shah
Asked: 2024-12-07 11:08:33 +0800 CST

Como otimizar o desempenho do cluster GridDB para ingestão de dados de séries temporais em larga escala?

  • 6

Estou usando o GridDB em uma configuração de cluster baseada em Docker para gerenciar dados de séries temporais em larga escala. O caso de uso envolve ingerir milhões de registros por dia, ao mesmo tempo em que garante desempenho de consulta eficiente para análises em tempo real.

Eu puxei a imagem GridDB https://hub.docker.com/r/griddb/griddb do Docker Hub e configurei um cluster com 3 nós. No entanto, estou encontrando os seguintes desafios:

  1. Alta latência de gravação: a latência de gravação aumenta significativamente durante os períodos de pico de ingestão.
  2. Desempenho da consulta: consultas complexas com múltiplas condições (por exemplo, intervalos de tempo, agregações) são mais lentas do que o esperado.
  3. Uso de memória: o uso de memória aumenta irregularmente entre os nós, às vezes causando falhas nos nós.

Configuração atual:

• Configuração do cluster: • 3 nós em execução em contêineres Docker. • Usando configurações padrão de gs_cluster.json e gs_node.json. • Modelo de dados: • Dados de séries temporais armazenados em contêineres com chaves de linha como carimbos de data/hora. • Colunas indexadas para parâmetros de consulta comuns. • Taxa de ingestão: ~50.000 registros/segundo usando o GridDB Java SDK.

Passos dados até agora:

  1. StoreMemoryLimit e notificationInterval ajustados em gs_node.json para gerenciar memória e desempenho de gravação.
  2. Dados particionados em vários contêineres para reduzir a contenção durante gravações.
  3. Experimentou diferentes tamanhos de lote para ingestão para encontrar uma configuração ideal.

Questões:

  1. Otimização de gravação: Quais são as melhores práticas para melhorar a ingestão de dados de séries temporais no GridDB? Devo ajustar parâmetros específicos como dataAffinity ou checkpointInterval para melhor desempenho?

  2. Gerenciamento de memória: como posso otimizar o uso de memória no cluster para evitar picos e possíveis falhas de nós?

  3. Desempenho da consulta: Existem técnicas avançadas de indexação ou particionamento que podem melhorar o desempenho da consulta para consultas de intervalo de tempo e agregadas?

  4. Monitoramento e depuração: há alguma ferramenta ou técnica recomendada para monitorar o desempenho do cluster GridDB e identificar gargalos de forma eficaz?

Referências:

• Documentação do GridDB: https://docs.griddb.net/

Quaisquer sugestões ou orientações sobre como resolver esses problemas seriam muito apreciadas.

database
  • 1 respostas
  • 12 Views
Martin Hope
msa4004
Asked: 2024-11-27 19:04:13 +0800 CST

Estou tendo algum erro com meu procedimento de teste de armazenamento do DB2

  • 5

Sou novo em store procedure e estou tentando criar um store procedure simples para ler da tabela. Estou usando IBM DB2 SQL.

--#SET MAXERRORS 0                                  
--#SET TERMINATOR ~                                 
SET CURRENT SQLID = 'SIWRO1'~                       
CREATE OR REPLACE PROCEDURE DWR000A.SELECT_PSID_RIZ(
  IN P_CONN INT                                     
 ,IN P_PLNN INT                                     
)                                                   
LANGUAGE SQL                                        
RESULT SETS 1                                       
READS SQL DATA                                      
BEGIN                                               
  DECLARE C1 CURSOR FOR                             
  SELECT PSID,                                      
         JOBINFO                                    
  FROM DWR000A.TEST                               
  WHERE CONN = P_CONN                               
  AND PLNN = P_PLNN;                                
  OPEN C1;                                          
END         
 ~                 
--#SET TERMINATOR ;
COMMIT;                                                 

Estou recebendo o erro abaixo ao executá-lo.

SQLERROR ON   CREATE    COMMAND, PREPARE   FUNCTION                      
RESULT OF SQL STATEMENT:                                                
DSNT408I SQLCODE = -4743, ERROR:  ATTEMPT TO USE A FUNCTION WHEN THE APPLICATION COMPATIBILITY SETTING IS SET FOR A PREVIOUS LEVEL                                                 
DSNT418I SQLSTATE   = 56038 SQLSTATE RETURN CODE                        
DSNT415I SQLERRP    = DSNHSM5R SQL PROCEDURE DETECTING ERROR            
DSNT416I SQLERRD    = 50  0  0  -1  1  2721 SQL DIAGNOSTIC INFORMATION  
DSNT416I SQLERRD    = X'00000032'  X'00000000'  X'00000000'  X'FFFFFFFF'
         INFORMATION                                                    

Não consigo descobrir o que estou fazendo errado ou como consertar. Agradeço alguns conselhos de especialistas. Obrigado

Atualização 28/11/2024 consegui contornar o erro fazendo 1 função que é criar. Obrigado

database
  • 1 respostas
  • 28 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve