Liquibase/PostgreSQL: как правильно сохранить регистр таблиц?

Я использую Liquibase 3.1.1 для создания таблиц в PostgreSQL 9.1. Например:

<changeSet id="1" author="bob">
    <createTable tableName="BATCHES">
        <!-- .. -- >
    </createTable>
</changeSet>

Однако таблица создается с именем в нижнем регистре:

# select * from "BATCHES";
ERROR:  relation "BATCHES" does not exist

Есть ли способ заставить Liquibase генерировать DDL, который сохраняет регистр имен таблиц (и столбцов и т. д.), которые я указываю в журнале изменений?


person user3364825    schedule 24.03.2014    source источник
comment
Как насчет того, чтобы везде использовать строчные буквы?   -  person Mike Christensen    schedule 24.03.2014
comment
Не делай этого. Как только вы это сделаете, вам нужно везде использовать идентификаторы в кавычках, чего вы на самом деле не хотите.   -  person a_horse_with_no_name    schedule 24.03.2014
comment
@Mike - я также использую H2, и у меня уже есть экземпляры БД для этого приложения с именами таблиц в верхнем регистре.   -  person user3364825    schedule 24.03.2014
comment
Тогда я бы изменил все ваши имена таблиц. Вы идете по опасной дороге здесь. Это только вызовет проблемы в конце.   -  person Mike Christensen    schedule 24.03.2014
comment
Если вы никогда не цитируете свои объекты, вам не нужно беспокоиться о нижнем или верхнем регистре. Идентификаторы без кавычек нечувствительны к регистру. В H2 так же, как и в Postgres (или Oracle, или HSQLDB, или DB2)   -  person a_horse_with_no_name    schedule 25.03.2014


Ответы (1)


Вы можете использовать атрибут objectQuotingStrategy="QUOTE_ALL_OBJECTS" в атрибуте changeSet или в корневом элементе databaseChangeLog, чтобы переопределить логику по умолчанию "цитировать только те объекты, которые должны быть"

person Nathan Voxland    schedule 24.03.2014
comment
Это не относится к содержимому createView, не так ли? - person Peter; 06.06.2019