
Integer FK properties with :key => true generate different type than serial PKs (at least on mysql)
Reported by Martin Gamsjaeger (snusnu) | August 23rd, 2009 @ 01:57 AM | in 0.10.0
Standalone script that reproduces the error can be found at http://pastie.org/592033
As a consequence of this bug, dm-constraints fails to auto_migrate! the FK constraints on mysql
Comments and changes to this ticket
-
Martin Gamsjaeger (snusnu) August 23rd, 2009 @ 11:21 AM
namelessjon pointed out that doing the following does the trick
property :post_id, Integer, :key => true, :min => 0
Now the question is, if that should be the default for Integer key properties.
-
Martin Gamsjaeger (snusnu) August 23rd, 2009 @ 11:22 AM
- State changed from unconfirmed to confirmed
-
Jonathan Stott (namelessjon) August 23rd, 2009 @ 11:31 AM
Just to further snusnu's comments, I'm not sure that making Serial keys unsigned by default is such a good idea, due to issues like this. Whilst it does allow for an extra 2 billion items in a table, that is not likely to be an issue for the vast bulk of DataMapper users. And for those that it is, an UNSIGNED or a BIGINT Serial column is easy enough to add.
-
Dan Kubb (dkubb) September 2nd, 2009 @ 11:53 AM
- Assigned user set to Dan Kubb (dkubb)
- State changed from confirmed to resolved
This should be resolved in edge dm-core. The min/max options weren't being copied over properly for Integer properties.
The primary motivation for this change wasn't necessarily the extra space for serial keys -- although that's a nice side effect -- it was the database constraint that prevents negative integers from being inserted. Even if the change resulted in just the constraint, and the limit stayed the same, I would've made the same change.
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »