-
Интересно, как вы решаете такую проблему.
Спроектировали вы базу данных, таблицы, поля, написали приложение, которое работает с этими данными. Но всего предусмотреть невозможно, и жизнь вносит свои коррективы: нужно добавлять поля в имеющиеся таблицы.
Я работаю с Sqlite, и там при попытке открыть таблицу со старыми полями в приложении, которое требует новых полей, возникает ошибка.
Как решить?
-
не открывать таблицу со старыми полями в приложении, которое требует новых полей
-
Я работаю с Sqlite, и там при попытке открыть таблицу со старыми полями в приложении, которое требует новых полей, возникает ошибка. > Как решить?
В приложении проверять наличие "новых" полей, если отсутствуют, то программно создавать
-
+1. У меня уже 100 патчей на базы насобиралось. Проверяем периодически, что бы обновления от старой базы до новой все поднимались. Используем FB. Полёт нормальный.
-
В свое время записывали "версию структуры базы данных" в некое полей некой таблицы, потом поняли, что это от лукавого и перестали. Программа всегда должна работать с последней версией структуры, а кто не обновляется - тот сам себе проблемы на ровном месте устраивает.
-
а просто не надо ддл делать сбоку и руками. нужно программе новое поле - пусть новая версия сама его и создает.
-
изначально сделал инфо таблицу с разными нужными данными, в том числе и версией базы. и если версия в базе меньше чем в программе, то она ее апдейтит до текущей, поля добавляет, индексы, тригеры, процедуры, все изменения в общем. да, апдейты сделаны на проверках несуществующих полей и т.д., а не "с предыдущей версии" т.е. в принципе неважно с какой версии подымать базу с 40-й или первой. все различия в прогу только добавляются.
-
Я написал так, что старые записи читают по старой структуре, а новые по новой. Главное образец структуры не стереть, а то запись не откроется. Вот и нет проблем ;)
|