Erro: Bloco de código |
---|
ERROR: could not open extension control file "/<caminho de instalação do PostgreSQL>/extension/uuid-ossp.control": No such file or directory |
Correção: Bloco de código |
---|
title | Realize a instalação do pacote postgresql-contrib em seu sistema operacional |
---|
| dnf install postgresql-contrib |
Bloco de código |
---|
title | Instale a extensão UUID-OSSP no PostgreSQL. Este comando deve ser executado dentro do banco de dados: |
---|
| CREATE OR REPLACE extension IF NOT EXISTS "uuid-ossp"; |
Se você estiver em uma nova instalação (base zerada, sem dados inseridos), é possível apenas recriar o banco de dados. Faça isto apenas se a base não estiver sendo utilizada e estiver sem dados inseridos. Após, certifique-se de reiniciar o DBAccess. Se você estiver em uma jornada de migração ou se sua base de dados já está sendo utilizada, existem dois cenários possíveis. Nota |
---|
Em ambos os casos, será necessário reiniciar o DBAccess após as modificações. Qualquer manutenção e alteração direta no banco de dados requer que o serviço do DBAccess seja reiniciado. |
Expandir |
---|
title | Minha base de dados original era SQL Server e ainda tenho acesso à ela |
---|
| Expandir |
---|
title | Base de origem SQL Server |
---|
| Os comandos a seguir devem ser feitos na base de origem SQL Server. Cada bloco de comando trará, como resultado, um script pronto para ser executado em PostgreSQL. Execute o resultado de cada bloco na ordem descrita. Nota |
---|
Certifique-se de que a extensão uuid-ossp está instalada em seu banco de dados de destino antes de executar estes comandos. Caso contrário, o erro não será corrigido. |
Bloco de código |
---|
| -- Bloco 1: Alteracao do campo para tipo varchar
select 'alter table ' + object_NAME(c.object_id) + ' alter column ' + c.name + ' type varchar;'
FROM sys.all_columns c
INNER JOIN sys.types t ON t.system_type_id = c.system_type_id
where Object_Schema_name(c.object_id) <> 'sys'
and t.name = 'uniqueidentifier';
-- Bloco 2: Remocao do default
select 'alter table ' + object_NAME(c.object_id) + ' alter column ' + c.name + ' drop default;'
FROM sys.all_columns c
INNER JOIN sys.types t ON t.system_type_id = c.system_type_id
where Object_Schema_name(c.object_id) <> 'sys'
and t.name = 'uniqueidentifier';
-- Bloco 3: Definicao do tipo do campo
select 'alter table ' + object_NAME(c.object_id) + ' alter column ' + c.name + ' type uuid using uuid_generate_v4();'
FROM sys.all_columns c
INNER JOIN sys.types t ON t.system_type_id = c.system_type_id
where Object_Schema_name(c.object_id) <> 'sys'
and t.name = 'uniqueidentifier';
-- Bloco 4: Definicao do padrao do campo
select 'alter table ' + object_NAME(c.object_id) + ' alter column ' + c.name + ' set default uuid_generate_v4();'
FROM sys.all_columns c
INNER JOIN sys.types t ON t.system_type_id = c.system_type_id
where Object_Schema_name(c.object_id) <> 'sys'
and t.name = 'uniqueidentifier'; |
Informações |
---|
Os comandos gerados por cada bloco realizam, respectivamente: - Alteração do tipo das colunas para varchar
- Removeção do valor padrão da coluna
- Definição do datatype da coluna como UUID
- Definição do valor padrão da coluna com a função de conversão utilizada pelo DBAccess.
Consulte aqui a documentação do PostgreSQL sobre o gerador de UUID. Caso tenha interesse, verifique também a documentação sobre os Campos UUID no DBAccess. |
|
|
Expandir |
---|
title | Minha base de origem não está disponível/não era SQL Server |
---|
| Os comandos a seguir devem ser feitos na sua base de dados PostgreSQL. Cada bloco de comando trará, como resultado, um script pronto para ser executado. Execute o resultado de cada bloco na ordem descrita em sua base de dados. Nota |
---|
Certifique-se de que a extensão uuid-ossp está instalada em seu banco de dados de destino antes de executar estes comandos. Caso contrário, o erro não será corrigido. Os comandos utilizam o padrão de nomenclatura da base de dados como tmprd. Caso você tenha outro nome para sua base de dados, certifique-se de alterar o valor table_catalog = '<nome de sua base de dados>' em todos os blocos. |
Bloco de código |
---|
| -- Bloco 1: Alteracao do campo para tipo varchar
select 'alter table ' || table_name || ' alter column ' || column_name || ' type varchar;' as "bloco_1"
from information_schema.columns
where column_name like '%msuidt'
and table_catalog = 'tmprd';
-- Bloco 2: Remocao do default
select 'alter table ' || table_name || ' alter column ' || column_name || ' drop default;' as "bloco_2"
from information_schema.columns
where column_name like '%msuidt'
and table_catalog = 'tmprd';
-- Bloco 3: Definicao do tipo do campo
select 'alter table ' || table_name || ' alter column ' || column_name || ' type uuid using uuid_generate_v4();' as "bloco_3"
from information_schema.columns
where column_name like '%msuidt'
and table_catalog = 'tmprd';
-- Bloco 4: Definicao do padrao do campo
select 'alter table ' || table_name || ' alter column ' || column_name || ' set default uuid_generate_v4();' as "bloco_4"
from information_schema.columns
where column_name like '%msuidt'
and table_catalog = 'tmprd'; |
Informações |
---|
Os comandos gerados por cada bloco realizam, respectivamente: - Alteração do tipo das colunas para varchar
- Removeção do valor padrão da coluna
- Definição do datatype da coluna como UUID
- Definição do valor padrão da coluna com a função de conversão utilizada pelo DBAccess.
Consulte aqui a documentação do PostgreSQL sobre o gerador de UUID. Caso tenha interesse, verifique também a documentação sobre os Campos UUID no DBAccess. |
|
|