Назад | Перейти на главную страницу

Как сделать дамп схемы сопоставимыми между Windows и Linux

У меня работают две системы, одна на Linux, а другая на Windows. Из окна Linux я запустил pg_dump для обеих систем и сбросил схему.

Команда pg_dump:

pg_dump -h HOST -U USER -s -f /tmp/out.sql DB_NAME

После того, как я удалил все комментарии «-», я сравнил файлы вместе.

Отличный фрагмент вывода, linux по сравнению с windows:

-    ADD CONSTRAINT sys_c004775 FOREIGN KEY (ruleid) REFERENCES rule(ruleid);
+    ADD CONSTRAINT sys_c004775 FOREIGN KEY (ruleid) REFERENCES "rule"(ruleid);

Дамп linux не цитирует никаких сущностей, в отличие от окон. Это функция какой-то кодировки или просто разница между Windows и Linux? Есть ли в pg_dump возможность сделать вывод более согласованным?

Как ни странно, но обе строки правильные и будут работать в любой PostgreSQL-базе данных на любой ОС. «правило» - не зарезервированное слово, но это объектный тип в PostgreSQL. Это может быть причиной того, что какая-то версия pg_dump трактует это имя иначе. Если вам действительно нужны имена без кавычек, просто используйте другое имя, имя без каких-либо конфликтов с типами объектов.