Feature #6377

Wt::Dbo::createTables if table already exists

Added by Emeric Poupon over 4 years ago. Updated over 4 years ago.

Target version:
Start date:
Due date:
% Done:


Estimated time:



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 over 4 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,


Also available in: Atom PDF