DataError:(1406,"数据太长,列#39;名称'第1行和第34行;)

时间:2016-09-09 18:53:37

标签: python mysql django pycharm

我几乎所有其他帖子都读了同样的错误,似乎无法找到合适的解决方案。

在我的models.py文件中,我有:

class LetsSayCups(models.Model):
    name = models.CharField(max_length=65535)

    def __str__(self):
        return str(self.name)

当我尝试将aws mysql数据加载到我的本地mysql服务器时,我收到此错误。我的models.py文件中的另一部分出现了问题,我能够解决它的方法是进入my.cnf.bak文件并更改sql_mode:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

为:

sql_mode=''

它有效!!!直到后来我才发现另一个错误。具体错误是这样的:

...
File "/Users/im_the_user/Desktop/my_company/my_project/load_items.py", line 122, in load_the_items
  existing_cups = Cups.objects.get_or_create(name=cups)
...
django.db.utils.DataError: (1406, "Data too long for column 'name' at row 1")

以上......意味着我在此之前/之后遗漏了一些事情。

更新我的my.cnf.bak文件是不够的,也没有将CharField max_length设为65535.我还能尝试什么?

2 个答案:

答案 0 :(得分:1)

您需要使用TextFieldmax_length的{​​{1}}应设置为255或更低,以避免将数据库存储为CharField的问题。

https://docs.djangoproject.com/en/1.10/ref/databases/#character-fields

答案 1 :(得分:1)

我发现my.cfn.bak只是一个备份文件。我不确定第一个问题是如何工作的,但是当我将文件重命名为my.cfn时,问题就解决了。