【问题标题】:django - Records not saved in MySQL database but AutoIncrement gets increaseddjango - 记录未保存在 MySQL 数据库中,但 AutoIncrement 增加
【发布时间】:2019-03-14 06:30:12
【问题描述】:

我在这里遇到了一个奇怪的人。

我在 docker 容器中使用 django。当系统尝试保存一些记录时(大多数情况下它可以工作!)它们最终不会进入数据库。

当我在调试器中查看进程时,django 对象被保存,它从数据库中获取一个 ID,在 django 世界中一切似乎都很好。

但该记录从未出现在数据库中!更奇怪的是:如果我查看表格的元选项,我会发现应该创建的每条记录 AutoIncrement 增加了。所以看起来数据库知道这些记录,但并不那么保存它们......

我在我的 Windows 机器上尝试过,服务器运行 UNIX,两者都有同样的问题。

我正在使用django==2.0.9mysqlclient==1.3.13 连接到MariaDB

当我将表引擎从 InnoDB 切换到 MyISAM 时,它就可以工作了。

django-axes 表会重现这种情况,但我在系统的其他部分也遇到了这个问题。电话通过django-restframework 打给 django。

坦率地说,我不知道从哪里开始寻找问题。

1) 在 Windows 和(服务器的)UNIX 上会出现这种情况,在其他开发人员的 UNIX 上会出现这种情况

2) 我降级了最新的mysqlclient,没有效果

3) Google 什么也没说,或者我没有问正确的问题

4) MySQL 错误日志保持沉默。

5)我也试过最新的MariaDB图片10.3

任何帮助或想法表示赞赏!

谢谢! 罗恩

【问题讨论】:

  • 您如何查看您的数据库?那里可能有一些您不知道的缓存,因此您实际上看不到数据库的实时状态吗?如果你打开一个 Django shell,你能真正检索对象,检查它们是否使用 django ORM 保存? (我问这个是因为你说“在 django 世界里一切似乎都很好”,但我不明白你的意思)
  • 数据库绝对是空的。下次当axes尝试获取或创建时,他总是会创建。
  • 不过,当你启动一个 shell,在那里创建对象并保存它时会发生什么?
  • 通过它工作的外壳......类似于在大多数情况下它工作的事实。

标签: mysql django docker mariadb data-loss


【解决方案1】:

好的,在没有发现我能做些什么的情况下,我将这些显式表的数据库引擎切换为MyISAM,现在它可以工作了。超级诡异。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-02
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 2021-04-21
    相关资源
    最近更新 更多