【发布时间】:2019-03-14 06:30:12
【问题描述】:
我在这里遇到了一个奇怪的人。
我在 docker 容器中使用 django。当系统尝试保存一些记录时(大多数情况下它可以工作!)它们最终不会进入数据库。
当我在调试器中查看进程时,django 对象被保存,它从数据库中获取一个 ID,在 django 世界中一切似乎都很好。
但该记录从未出现在数据库中!更奇怪的是:如果我查看表格的元选项,我会发现应该创建的每条记录 AutoIncrement 增加了。所以看起来数据库知道这些记录,但并不那么保存它们......
我在我的 Windows 机器上尝试过,服务器运行 UNIX,两者都有同样的问题。
我正在使用django==2.0.9 和mysqlclient==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