Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / фантомный констрэйнт / 7 сообщений из 7, страница 1 из 1
02.02.2021, 23:16
    #40041001
sstatistic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фантомный констрэйнт
Доброй ночи.

Есть таблица1:

Код: sql
1.
t1



Есть таблица2:

Код: sql
1.
t2




У t2 есть внешний ключ

Код: sql
1.
...ADD CONSTRAINT fk_t2 FOREIGN KEY (t1_id) REFERENCES t1(id) ON DELETE CASCADE;
...
Рейтинг: 0 / 0
02.02.2021, 23:17
    #40041002
sstatistic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фантомный констрэйнт
При попытке перенести БД с помощью дампа при восстановлении ошибка:

Код: sql
1.
DETAIL:  Ключ (t1_id)=(114565488) отсутствует в таблице "t1".



и констрэйнт не создается.
...
Рейтинг: 0 / 0
02.02.2021, 23:19
    #40041003
sstatistic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фантомный констрэйнт
Запросом проверил, действиетельно в рабочей БД Ключ (t1_id)=(114565488) отсутствует в таблице "t1".

при этом в t2 он имеется.


И реиндекс и вакуум фулл таблицы t2 проходят без ошибок.






Как такое может быть?

И как перенести эту БД дампом?
...
Рейтинг: 0 / 0
02.02.2021, 23:21
    #40041004
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фантомный констрэйнт
sstatistic,

авторИ как перенести эту БД дампом?
удалить (t1_id)=(114565488) из t2

авторКак такое может быть?
есть больше одного метода как от superuser сломать валидность fk ))



--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
03.02.2021, 00:29
    #40041011
sstatistic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фантомный констрэйнт
Maxim Boguk
sstatistic,

авторИ как перенести эту БД дампом?

удалить (t1_id)=(114565488) из t2

авторКак такое может быть?
есть больше одного метода как от superuser сломать валидность fk ))



--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru



Удалил.

Перенслось.

Спасибо )







Ну а на счет больше одного, на ум только приходит отключение по питанию... а какие еще варианты могут быть?
...
Рейтинг: 0 / 0
03.02.2021, 00:37
    #40041012
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фантомный констрэйнт
sstatistic

Ну а на счет больше одного, на ум только приходит отключение по питанию... а какие еще варианты могут быть?


1)set session_replication_role to replica;
документацияSince foreign keys are implemented as triggers, setting this parameter to replica also disables all foreign key checks, which can leave data in an inconsistent state if improperly used.


2)alter table t2 DISABLE TRIGGER ALL;
документацияOne can disable or enable a single trigger specified by name, or all triggers on the table, or only user triggers (this option excludes internally generated constraint triggers such as those that are used to implement foreign key constraints or deferrable uniqueness and exclusion constraints).


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
03.02.2021, 01:01
    #40041019
sstatistic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фантомный констрэйнт
Maxim Boguk
sstatistic

Ну а на счет больше одного, на ум только приходит отключение по питанию... а какие еще варианты могут быть?


1)set session_replication_role to replica;
документацияSince foreign keys are implemented as triggers, setting this parameter to replica also disables all foreign key checks, which can leave data in an inconsistent state if improperly used.


2)alter table t2 DISABLE TRIGGER ALL;
документацияOne can disable or enable a single trigger specified by name, or all triggers on the table, or only user triggers (this option excludes internally generated constraint triggers such as those that are used to implement foreign key constraints or deferrable uniqueness and exclusion constraints).


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru


Вот это да!!!

Про реплику вообще не мог даже подумать!!!
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / фантомный констрэйнт / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]