【问题标题】:Rails: copy data from production MySQL into development SQLite3Rails:将数据从生产 MySQL 复制到开发 SQLite3
【发布时间】:2012-01-15 06:26:55
【问题描述】:

我在将数据从生产 MySQL 服务器复制到开发 SQLite3 文件时遇到问题(这样我就可以在开发机器上使用真实数据)。我在网上找到了大量关于如何从 MySQL 转换为 SQLite3 的资源,其中大部分是带有精心设计的 sed 过滤器的 bash 脚本,但没有一个有效(最常见的问题是导入时的语法问题)。

不管怎样,然后我偶然发现了YamlDB,我想“为什么,当然!让 Rails 为我进行转换!”好吧,这也不起作用,因为所有 NULL 字段(在 YAML 文件中表示为 !!null)最终都被导入 SQLite3 数据库,完全作为“--- !!null”而不是实际的 NULL。我似乎是唯一遇到这个问题的人,因为 GitHub 问题队列中没有提到它。

我什至尝试了使用 syck 代替 psych 的解决方法(在 this SO question 中找到),但没有任何区别。

所以我的问题是:是否有人知道从一个 rails 数据库导出数据以导入另一个的简单方法,而不管数据库类型如何? “简单”是指控制台上的一些命令,或者其他什么。

【问题讨论】:

  • 我真的,真的不建议使用两个不同的数据库后端进行生产和开发。正如 rails 应该是与数据库无关的,当涉及到数据完整性时,您仍然可以获得非常不同的行为。当使用支持许多不同类型的约束(MySQL)和具有非常不同的约束/数据类型支持(SQLite3)的东西时,尤其如此。
  • 我以前听说过这个建议,所以有一段时间,我在我的开发机器上运行了 MySQL。但我真的不喜欢在我的 MacBook 上启动 MySQL 服务器的开销,所以我回到 SQLite3 进行开发。你说得很好,仍然。但是数据复制只会是单向的(生产 -> 开发),然后在开发黑客期间用作“播放”数据......
  • 我更担心的是您可能会在测试期间看到不同的行为。例如,由于不同的数据类型/约束,您可能会在开发/测试中没有出现在生产中的崩溃。当我必须进行 SQL Server 开发并启动 Windows VM/SQL Server 时,我真的不喜欢它——但我发现的错误数量总是超过资源消耗。 (如果消耗资源的东西是windows,那真的是在说些什么:P)。
  • 另外,不知道是否有帮助,但请查看:mysqltuner.pl/mysqltuner.pl。可能会帮助您将占用空间最小化到可以接受的程度。
  • 好吧,Trey,你可能只是说服我在我的 MacBook 上重新安装 MySQL!你提供了一些好点——有些我已经知道了,但是再听一遍就足以让我更多地思考我在做什么。您的意见非常有价值。

标签: ruby-on-rails-3


【解决方案1】:

查看水龙头@http://github.com/ricardochimal/taps

它将您的 MySQL 数据库转储到本地 sqlite 数据库中,并且使用起来相对简单。

来自 cmets:如果您收到声明 schema parsing returned no columns, table probably doesn't exist 的错误,那么您需要指定 sqlite3 数据库的绝对路径而不是相对路径

【讨论】:

  • 这看起来很有希望,除了它,似乎也讨厌我。在完成从服务器拉取之后,无论我尝试什么,它总是以schema parsing returned no columns, table probably doesn't exist 崩溃。哦,好吧,搜索还在继续……
  • 要解决“模式解析返回无列”错误,请指定 sqlite3 db 的绝对路径而不是相对路径...
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 2014-09-18
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-08
相关资源
最近更新 更多