簡體   English   中英

帶有MySQL的Django:DatabaseError(1406,“第1行的列'名稱'的數據太長了”)

[英]Django with MySQL: DatabaseError (1406, “Data too long for column 'name' at row 1”)

我有一個Django webapp,目前正在使用SQLite進行測試,但現在想要部署和使用MySQL,我收到了這個錯誤。

我在使用python manage.py syncdb時遇到此錯誤:

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): no
DatabaseError: (1406, "Data too long for column 'name' at row 4")

並且在嘗試使用以下代碼創建Store對象(其中一個模型)時:

store_leicester = Store.objects.create(
    name='Hugo Boss UK Store Leicester Square',
    country='United Kingdom',
    district='London',
    catalog=catalog ...
)

錯誤:

DatabaseError at /populate/
(1406, "Data too long for column 'name' at row 1")

例如,商店模型是:

class Store(models.Model):
    """
    Class for a Store.
    """

    name = models.TextField(max_length=128)

    country = models.TextField(max_length=64)
    district = models.TextField(max_length=64)

    catalog = models.OneToOneField('ShopCatalog', related_name='shop', null=True)
    chain = models.ForeignKey('StoreChain', related_name="shops", null=True)

現在很自然地,這些10-15個字符的文本不超過128個字符的限制,所以還有其他的東西在繼續。 從syncdb上出現錯誤的事實開始。

我正在使用我自己創建的兩個使用模型的Django包,但我認為這不是問題所在。

架構上的默認排序規則是latin-1但我嘗試切換到utf-8但仍然完全相同的錯誤。

謝謝

當您使用syncdb ,Django還會將模型的詳細名稱存儲在其內部的django_content_type表中。 該表的限制為(自Django 1.2起)100個字符。 擁有詳細名稱超過100個字符的模型將導致您遇到的問題。

檢查您的應用是否包含任何其他具有長名稱/ verbose_name模型,並嘗試縮短它們。 這應該解決問題。 Store似乎沒有多長時間,但也許有一個你沒有提到的不同模型。)

順便說一句,你沒有看到SQLite的原因是,如果我沒記錯,SQLite不會對char字段強制執行長度限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM