Django:用于开发的 sqlite,用于生产的 mysql? [关闭]
Posted
技术标签:
【中文标题】Django:用于开发的 sqlite,用于生产的 mysql? [关闭]【英文标题】:Django: sqlite for dev, mysql for prod? [closed] 【发布时间】:2011-01-19 08:20:53 【问题描述】:快速提问:在开发 Django 项目时使用 sqlite 并在生产服务器上使用 mysql 是否是个好主意?
【问题讨论】:
【参考方案1】:刚从 sqlite 开始犯了这个重大错误,当我尝试使用 mysql 在生产服务器上部署时,事情并没有像我预期的那样顺利。我尝试使用各种开关进行转储数据/加载数据,但不知何故不断地抛出一个接一个的错误。帮自己一个大忙,在生产和开发中使用相同的数据库。
【讨论】:
【参考方案2】:在所有环境中使用相同的数据库。
尽管 ORM 试图抽象出数据库之间的差异,但总会有某些特性基于数据库而表现不同。数据库可移植性完全是一个神话。
另外,针对您永远在生产中使用的代码路径进行测试和开发似乎很疯狂,不是吗?
【讨论】:
“数据库可移植性是一个完整的神话”谢谢!【参考方案3】:我支持之前的所有答案,并添加了一些明确的原因:
当您尝试存储超过该字段宽度的字符串时,MySQL 发出警告异常 - 您不会在 SQLite 中获取它们,因此不仅您的字符串在开发和生产之间会有所不同,而且程序行为也会有所不同 两个后端中的错误是不同的 - 我记得有一次我尝试使用 SQLite 进行开发,使用 MySQL 进行生产,但结果发现我在 MySQL 后端中发现了一个 SQLite 中不存在的错误。所以我为它提交了一张票并切换到 MySQL 进行测试:-)你甚至可以尝试在速度方面与 SQLite 竞争,看看我对其他问题的回答:
Increase speed for MySQL table creation in Django?
【讨论】:
+1 - 出色的贡献。【参考方案4】:我强烈建议在生产和开发中使用相同的数据库后端,以及介于两者之间的所有阶段。 Django 会抽象数据库的东西,但是拥有不同的环境会让您面临可怕的国际化、配置问题和令人讨厌的微小不一致,这些甚至在您将其发布之前都不会出现。
就个人而言,我会坚持使用 mysql,但我从来没有使用过 postgres :)
【讨论】:
很高兴我还没有走那条路。也许我会看看 postgres,因为我可以在 cygwin 中安装它。事实证明,让 mysql 在那里工作比它的价值更多。 为什么要打扰cygwin,mysql和postgres都有本机win32包? :) 我知道这有点晚了,但是在 Django 中使用 XAMPP 一直是一个梦想——对我来说混合得很好。我在使用 MySQLdb 时遇到了一些问题,但我四处搜索并找到了已编译的库。干杯,所有! :-)【参考方案5】:简而言之,不;除非你想不必要地加倍开发时间。
【讨论】:
【参考方案6】:您为什么要这样做?
SQLite 尚不支持存储过程。 SQLite 是typeless。运行 MySQL 时可能会遇到很多类型转换问题。 SQLite 还不支持 RIGHT 连接。【讨论】:
这些都不会影响我对 Django 的任何需求;虽然你是对的。以上是关于Django:用于开发的 sqlite,用于生产的 mysql? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk 需要 SQLite 3.8.3 或更高版本才能用于 Django 应用程序