升級到Django 1.8.3後,我需要從使用django_extensions.db.fields.UUIDField
更改爲新的django.db.models.UUIDField
。Django UUIDField從varchar(36)截斷爲char(32)
問題是,舊的被定義爲帶連字符的varchar(36)
,新的是沒有連字符的char(32)
。 我絕對看到沒有這些連字符的大小好處。
我放棄了,正如我擔心的那樣,列中的數據會被截斷。
當我檢查該字段的定義,它被初始化爲:
def __init__(self, verbose_name=None, **kwargs):
kwargs['max_length'] = 32
super(UUIDField, self).__init__(verbose_name, **kwargs)
這個定義塊MAX_LENGTH的任何覆蓋。
當然,我可以更新每一個UUIDFields我必須刪除連字符,但這是一個很長的過程,因爲我的表是相當大的。 有關信息,這是我必須要運行該類型的查詢:
UPDATE myTable
SET uuid_field = REPLACE(uuid_field, '-', '');
所以我的問題是,你有比運行一個巨大的更新與UUIDFields每個表的每一行任何更好的主意?
我認爲你可以覆蓋'UUIDField'並將最大長度設置爲36. –
不,我不能因爲UUIDField的定義:'kwargs ['max_length'] = 32'。 – Seb