Feature #6377
openWt::Dbo::createTables if table already exists
0%
Description
Hello,
I think it may be safer to use "CREATE TABLE IF NOT EXISTS" when calling Wt::Dbo::Session::createTables().
Or maybe add a boolean for this?
It would be easier to automatically add the new tables in the schema.
What do you think?
Updated by Wim Dumon almost 6 years ago
- Status changed from New to Feedback
Hey Emeric,
Wt::Dbo doesn't support DB migration, and our strategy to cope with that is quite naive: try to create the schema and throw an exception if it fails.
createTables() throwing exceptions in its 'normal' use case (i.e. the database exists and is correct) is a bit weird, and atypical for how Wt handles exceptions. There's no portable syntax that I know of to test if a table exists before creating it, and also 'create tables if not exist' is not portable across sql servers. Ideally, I think createTables should do nothing if the database is not completely empty, but again I'm not sure if we can easily test for that.
With respect to adding new tables: Session has a method tableCreationSql(). You could e.g. save the output of this call to a file on startup, so that you can copy-paste the relevant fragments to the database. More often than not, DB migration will involve more than only the creation of a new table, so manual intervention will be required.
Best regards,
Wim.