По моему мнению, проблема в том, что вы можете лениво загружать более одного модуля по одним и тем же маршрутам в одном и том же файле маршрутизации. Я также столкнулся с подобной проблемой и изменил название одного из маршрутов
Можно альтернативно использовать оператор CASE - WHEN TSQL в сочетании с pragma_table_info, чтобы знать, существует ли столбец:
select case(CNT)
WHEN 0 then printf('not found')
WHEN 1 then printf('found')
END
FROM (SELECT COUNT(*) AS CNT FROM pragma_table_info('myTableName') WHERE name='columnToCheck')
У меня есть 99% чистый метод SQL. Идея состоит в том, чтобы версионировать вашу схему. Вы можете сделать это двумя способами:
Используйте команду прагмы 'user_version' ( PRAGMA user_version
), чтобы сохранить добавочный номер для вашей версии схемы базы данных.
Сохраните номер версии в собственной таблице.
Таким образом, когда программа запускается, она может проверить схему базы данных и, при необходимости, выполнить запрос ALTER TABLE
, а затем увеличить сохраненную версию. Это намного лучше, чем попытки различных обновлений «вслепую», особенно если ваша база данных растет и изменяется несколько раз за эти годы.