【问题标题】:DataError: (1406, "Data too long for column 'name' at row 1")DataError:(1406,“第 1 行的列 'name' 的数据太长”)
【发布时间】:2017-01-17 23:42:09
【问题描述】:

我已经阅读了几乎所有其他具有相同错误的帖子,但似乎找不到合适的解决方案。

在我的 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 也不够。我还能尝试什么?

【问题讨论】:

  • 使用 TextField 代替 CharField

标签: python mysql django pycharm


【解决方案1】:

您需要使用TextFieldCharFieldmax_length 应设置为 255 或更少,以避免将其存储为 VARCHAR 的 DB 出现问题。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-10
      • 2021-05-09
      • 2021-09-02
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 2020-01-07
      • 2020-03-04
      相关资源
      最近更新 更多