gpt4 book ai didi

mysql - Django迁移错误:'name'字段没有默认值

转载 作者:行者123 更新时间:2023-12-02 04:25:24 24 4
gpt4 key购买 nike

我有一个Django应用程序,最近已从1.4.5升级到1.11.16。它运行在旧版本的debian linux上,该版本已重新安装,现在为9.6。最初,数据库是mysql(默认的debian安装),现在是mariadb(也是默认的安装)。

由于项目很小,因此基本上没有数据库优化,几乎所有内容都使用默认设置运行。在重新安装和升级之前,数据库已转储并稍后加载。最初它使用的是myisam表类型,但现在默认为innodb。

每当我尝试使用最简单的设置创建新表(Django模型)时,e。 G。:

class Sth(models.Model):
car = models.CharField(max_length=128)

我面临以下警告:
/home/user/.virtualenvs/prj/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py:101: Warning: Field 'name' doesn't have a default value

返回self.cursor.execute(query,args)

。这是什么意思,为什么会出现?如果设置了严格模式,则甚至会变成错误。

该问题的解决方案是什么?了解debian系统的变化(mysql-> mariadb)和django升级(1.4.5-> 1.11.16)我应该怎么看?

我还尝试将当前表更改为innodb,并将默认mariadb类型更改为myisam,但这无济于事。

在运行迁移时,来自mysql日志的sql查询:
CREATE TABLE `infokom_sth` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `car` varchar(128) NULL)
INSERT INTO `django_migrations` (`app`, `name`, `applied`) VALUES ('infokom', '0004_sth', '2019-03-05 22:25:54.360285')
INSERT INTO `django_content_type` (`app_label`, `model`) VALUES ('infokom', 'sth')
INSERT INTO `auth_permission` (`name`, `content_type_id`, `codename`) VALUES ('Can add sth', 27, 'add_sth'), ('Can change sth', 27, 'change_sth'), ('Can delete sth', 27, 'delete_sth')

最佳答案

Django运行查询INSERT INTO django_content_type (app_label, model) VALUES ('infokom', 'sth')时出现错误,因为它未指定name列。

在早期版本的Django中,表name上有一列django_content_type,但它在1.4到1.10之间被删除了。

迁移未删除多余的列,因此您必须手动删除django_content_type.name

我在1.10上遇到了同样的错误,然后删除了django_content_type.name,然后迁移对我来说很好。

关于mysql - Django迁移错误:'name'字段没有默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55007406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com