Erro: ERROR: could not open extension control file "/<caminho de instalação do PostgreSQL>/extension/uuid-ossp.control": No such file or directory |
Correção: dnf install postgresql-contrib |
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 e sua base de dados já está sendo utilizada, existem dois cenários possíveis. 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. |
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. 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 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'; |
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. |
|
|
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. 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 1: Alteracao do campo para tipo varchar
select 'alter table ' || table_name || ' alter column ' || column_name || ' type varchar;'
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;'
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();'
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();'
from information_schema.columns
where column_name like '%msuidt'
and table_catalog = 'tmprd'; |
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. |
|
|