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
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
assert_raises_message(
sa.exc.FlushError,
r"Instance \<T1 at .+?\> 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
)