I propose this patch

Le vendredi 12 juillet 2013 14:08:21 UTC+2, Olivier Johner a écrit :
>
> It's ok for the foreign key but when you archive records in another 
> database, all fields comes in "big int" and raise a value error for string 
> fields
>
> ValueError: invalid literal for long() with base 10: 'v6 box spearmint'
>
>
> Le dimanche 16 juin 2013 10:28:26 UTC+2, Massimo Di Pierro a écrit :
>>
>> This should now be fixed in trunk. Please check it.
>>
>> On Thursday, 6 June 2013 08:19:35 UTC-5, Lamps902 wrote:
>>>
>>> To clarify, due to the SQL Foreign Key constraint (which is retained 
>>> when archive tables are created through auth.enable_record_versioning), 
>>> some of the archive database's tables still retain an association with the 
>>> auth_user table's id field. However, the rows with the ids on which the new 
>>> tables depend may not necessarily be transferred from the application's 
>>> primary database to the archive database. Is there a way to use the DAL to 
>>> remove the Foreign Key constraint? Thanks.
>>>
>>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


diff --git a/gluon/dal.py b/gluon/dal.py
index af20494..7671cd7 100644
--- a/gluon/dal.py
+++ b/gluon/dal.py
@@ -8307,8 +8307,11 @@ class Table(object):
         field_type = self if same_db else 'bigint'
         clones = []
         for field in self:
+            fk = False
+            if field.type.find('reference') != -1:
+                fk = True if not same_db else False
             clones.append(field.clone(
-                    unique=False, type=field.type if same_db else 'bigint'))
+                    unique=False, type=field.type if (same_db or not fk) else 
'bigint'))
         archive_db.define_table(
             archive_name, Field(current_record,field_type), *clones)
         self._before_update.append(

Reply via email to