From: Mike Bayer Date: Sun, 5 Jun 2011 00:04:29 +0000 (-0400) Subject: - Modify the text of the message which occurs X-Git-Tag: rel_0_7_1~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d9a2c64a412feb5341eb1b7f27452af30455b7c9;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - Modify the text of the message which occurs when the "identity" key isn't detected on flush, to include the common cause that the Column isn't set up to detect auto-increment correctly; [ticket:2170]. Also in 0.6.8. --- diff --git a/CHANGES b/CHANGES index 72c8c86a12..505df6394f 100644 --- a/CHANGES +++ b/CHANGES @@ -18,6 +18,13 @@ CHANGES create multiple event listeners for subclasses either. [ticket:2180] + - Modify the text of the message which occurs + when the "identity" key isn't detected on + flush, to include the common cause that + the Column isn't set up to detect + auto-increment correctly; [ticket:2170]. + Also in 0.6.8. + - sql - Fixed bug whereby metadata.reflect(bind) would close a Connection passed as a diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index 8f8770a3b9..29353c4b72 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -1085,10 +1085,15 @@ class Session(object): if _none_set.issubset(instance_key[1]) and \ not mapper.allow_partial_pks or \ _none_set.issuperset(instance_key[1]): - raise exc.FlushError('Instance %s has a NULL identity ' - 'key. Check if this flush is occurring at an ' - 'inappropriate time, such as during a load ' - 'operation.' % mapperutil.state_str(state)) + raise exc.FlushError( + "Instance %s has a NULL identity key. If this is an " + "auto-generated value, check that the database table " + "allows generation of new primary key values, and that " + "the mapped Column object is configured to expect these " + "generated values. Ensure also that this flush() is " + "not occurring at an inappropriate time, such as within " + "a load() event." % mapperutil.state_str(state) + ) if state.key is None: state.key = instance_key diff --git a/test/orm/test_unitofwork.py b/test/orm/test_unitofwork.py index 8b2787d12a..10d13ec8a7 100644 --- a/test/orm/test_unitofwork.py +++ b/test/orm/test_unitofwork.py @@ -2469,7 +2469,7 @@ class PartialNullPKTest(fixtures.MappedTest): assert_raises_message( sa.exc.FlushError, r"Instance \ has a NULL " - "identity key. Check if this flush is occurring " - "at an inappropriate time, such as during a load operation.", + "identity key. If this is an auto-generated value, " + "check that the database table allows generation ", s.commit )