Ошибка миграции liquibase при логической переменной dropColumn - PullRequest
0 голосов
/ 11 мая 2018

Я использую Liquibase для цепочки изменений базы данных (H2), и недавно я столкнулся с удалением ненужного исключения миграции столбцов: Caused by: org.h2.jdbc.JdbcSQLException: View "ALTER TABLE PUBLIC.CE_SOME_TABLE DROP COLUMN some_column" is invalid: "Column ""SOME_TABLE .SOME_COLUMN"" not found [42122-190]"; SQL statement: ALTER TABLE PUBLIC.CE_SOME_TABLE DROP COLUMN some_column[90109-190]

Я пробовал следующее:

  1. Чтобы проверить, действительно ли моя БД находит такой столбец:

select column_name from information_schema.columns where table_name='ce_some_table';

Это показывает, что такое имя столбца существует вдоль других столбцов в этой таблице

  1. Пытался написать SQL-оператор в жидкости:

<sql>ALTER TABLE ce_some_table DROP COLUMN some_column;</sql>

не делал работу

  1. Пытался переименовать переменную (считал, что метаданные БД были обналичены):

    <renameColumn catalogName="some_catalog" columnDataType="boolean" newColumnName="some_column2" oldColumnName="some_column" remarks="A Boolean" schemaName="public" tableName="CE_SOME_TABLE"/>

А затем отбросить обновленный столбец:

<dropColumn tableName="CE_SOME_TABLE" columnName="some_column2"/>

Также не работали

  1. Попытка удалить другие логические столбцы из других таблиц (имеют +20 других таблиц) - не сработало
  2. Попытался удалить столбцы других типов данных - это работало (но не с логическим значением)

Какие советы я мог бы попробовать дальше?

Я проверил чувствительность к регистру и все совпадает, но, может быть, я не вижу что-то, поскольку это происходит во всех таблицах

Заранее благодарим вас за ваши советы или указание причины

UPDATE: В той же цепочке Set после сброса some_column я изменяю таблицу VIEW, в которой была some_column переменная

1 Ответ

0 голосов
/ 11 мая 2018

Набор изменений состоял из изменения SOME_TABLE путем удаления some_column из него

Затем в том же наборе изменений я изменил таблицу VIEW, в которой было старое значение some_column, поскольку оно больше не было необходимым

Причина, по которой я получил исключение, заключалась в том, что при удалении столбца из таблицы таблица представления все еще удерживала его и не давала ему упасть

Как я это исправил:

Сначалаизменил таблицу представления, удалив some_column переменную

, затем отбросил some_column из SOME_TABLE

...