ch 2.1.1标题是You Can't Examine an Exact Copy of Production Data Locally
其内容如下:
当您的生产数据库与本地开发数据库不同时,您无法获取生产数据库的精确副本以在本地检查数据。
当然,您可以从生产中生成SQL转储并将其导入到本地数据库中,但那样做 并不意味着您在导出和导入后拥有完整的副本。
是什么意思?
答案 0 :(得分:2)
假设您在生产中正在运行Postgres或MySQL,并且正在开发sqlite。 Django ORM使您能够编写跨三个数据库(大多数情况下)工作的python代码,但每个数据库都支持不同的功能,这些功能使它们彼此略微不兼容(尽管它们都是RDBMS并且使用SQL )。
如果从生产Postgres或MySQL数据库中获取数据库转储并尝试在sqlite上执行它,它可能会加载所有数据,但幕后将会有很多差异(列类型,外键,索引,任何非标准扩展,例如JSON in Postgres,如何计划和执行查询,编码,整理,存储引擎等。即使是相同数据库软件的不同版本也可以采用不同的方式。
例如,sqlite只有five data types:null
,integer
,real
,text
,blob
。将其与MySQL和Postgres中的数十种类型进行比较。
我没有这本书,但我猜他们会说:如果你想完全确定你在开发中编写的代码在生产中的作用是一样的,那么你应该在两种环境中使用相同的数据库软件。