diff options
| -rw-r--r-- | nova/db/sqlalchemy/session.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/nova/db/sqlalchemy/session.py b/nova/db/sqlalchemy/session.py index 6c349e0c2..a1257e151 100644 --- a/nova/db/sqlalchemy/session.py +++ b/nova/db/sqlalchemy/session.py @@ -67,6 +67,14 @@ def add_regexp_listener(dbapi_con, con_record): dbapi_con.create_function('regexp', 2, regexp) +def enforce_foreign_keys_listener(dbapi_conn, connection_rec): + """Tell SQLite to enforce foreign keys. + + Requires SQLite version >= 3.6.19. + """ + dbapi_conn.execute("PRAGMA foreign_keys = ON") + + def greenthread_yield(dbapi_con, con_record): """ Ensure other greenthreads get a chance to execute by forcing a context @@ -142,6 +150,8 @@ def get_engine(): sqlalchemy.event.listen(_ENGINE, 'connect', synchronous_switch_listener) sqlalchemy.event.listen(_ENGINE, 'connect', add_regexp_listener) + sqlalchemy.event.listen(_ENGINE, 'connect', + enforce_foreign_keys_listener) if (FLAGS.sql_connection_trace and _ENGINE.dialect.dbapi.__name__ == 'MySQLdb'): |
