summaryrefslogtreecommitdiff
path: root/test/engine/test_reflection.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/engine/test_reflection.py')
-rw-r--r--test/engine/test_reflection.py29
1 files changed, 28 insertions, 1 deletions
diff --git a/test/engine/test_reflection.py b/test/engine/test_reflection.py
index 21c050915..ec16fe004 100644
--- a/test/engine/test_reflection.py
+++ b/test/engine/test_reflection.py
@@ -624,7 +624,7 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
finally:
testing.db.execute("drop table book")
- def test_fk_error(self):
+ def test_fk_table_error(self):
metadata = MetaData(testing.db)
Table('slots', metadata,
Column('slot_id', sa.Integer, primary_key=True),
@@ -638,6 +638,33 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
"a foreign key to target column 'pkg_id'",
metadata.create_all)
+ @testing.only_on('mysql')
+ def test_fk_attribute_error(self):
+ """
+ MySQL FKs cannot handle certain attributes... throw a CompileError
+ """
+ meta = MetaData(testing.db)
+ Table('users', meta,
+ Column('id', sa.Integer, primary_key=True),
+ Column('name', sa.String(30)),
+ test_needs_fk=True)
+ Table('addresses', meta,
+ Column('id', sa.Integer, primary_key=True),
+ Column('user_id', sa.Integer, sa.ForeignKey(
+ 'users.id',
+ name = 'addresses_user_id_fkey',
+ match = 'FULL',
+ onupdate='CASCADE',
+ ondelete='CASCADE'
+ )),
+ test_needs_fk=True)
+
+ assert_raises_message(sa.exc.CompileError,
+ "MySQL does not support specifying MATCH, DEFERRABLE, or "
+ "INITIALLY on foreign keys, but a foreign key on table "
+ "'addresses' defines at least one.",
+ meta.create_all)
+
def test_composite_pks(self):
"""test reflection of a composite primary key"""