Убедиться, что таблица построена правильно - PullRequest
0 голосов
/ 11 июля 2019

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

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

У меня была идея, что приложение (написанное на Java) будет иметь встроенную структуру таблицы, и когда приложение запускается, просто скопируйте все данные в таблице (если она существует) во временную таблицу, удалите старую таблицуи создайте новую с данными временной таблицы, а затем удалите временную таблицу.Как вы можете заметить, это далеко не новаторский подход.

Еще одна идея, которая у меня возникла, - это использовать команду SHOW COLUMNS, чтобы исправить любые отсутствующие столбцы, параллельные SHOW TABLES LIKE, чтобы проверить, существует ли он, но я чувствую, что переполнение стекабыло бы лучшее решение.Это все, что я могу сделать?

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Существует множество способов решить проблему согласованности версии базы данных и версии приложения. Однако в производственной базе данных такая ситуация недопустима. Я думаю, что самые простые способы являются лучшими. Чтобы обеспечить такое соответствие, достаточно выполнить сценарий, который обновляет базу данных перед выполнением тестирования.

START TRANSACTION;
DROP TABLE ... IF EXISTS;
CREATE TABLE ...

COMMIT;

Помните об ЕСЛИ СУЩЕСТВУЮЩЕМ и о гранте DROP!

Таким сценарием можно легко управлять, поместив его в RCS и контролируя номер версии, необходимый в приложении. Вы также можете сохранить этот номер версии в некоторой таблице в самой базе данных и проверить, когда приложение запускается, совместим ли номер с предполагаемым и не вызывать ли скрипт обновления базы данных.

0 голосов
/ 11 июля 2019

Посмотрите на JPA Hibernate.Есть свойство hbm2ddl.auto.Похоже, опция «update» делает то, что вы хотите.

Для получения более подробной информации Каковы возможные значения конфигурации Hibernate hbm2ddl.auto и что они делают

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...