summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/db/sqlalchemy/session.py10
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'):