【问题标题】:How do I migrate MySQL to PostgreSQL in Rails如何在 Rails 中将 MySQL 迁移到 PostgreSQL
【发布时间】:2019-04-11 05:28:39
【问题描述】:

我尝试将我的数据库从 MySQL 迁移到 PostgreSQL。 每当我迁移时,我都会遇到这个错误,我是 PostgreSQL 的新手,我希望有人有一个想法

【问题讨论】:

  • 你是说sqlite还是mysql?您说并标记了 sqlite;但是像“ENGINE=InnoDB”这样的东西建议使用 MySQL。 ...虽然数据类型看起来像 sqlite...你是从 sqlite 到 mysql(不是 postgres)吗?
  • 对不起,我的意思是 mysql2 到 postgresql.. 我会编辑它

标签: mysql ruby-on-rails ruby postgresql


【解决方案1】:

您的:options 用于您的create_table 调用是特定于MySQL 的,因此您可以删除它们:

create_table :versions do |t|
  #...
end

您可能还想更改其他几项内容:

  1. 没有:limitt.string 等效于使用PostgreSQL 的t.text。如果您假设 MySQL 对 varchar 列(如果有的话)的默认大小限制将被应用,您可能想要添加一个 :limit。或者,您可以将其更改为 t.text,以更明确地表明您想要一个任意大小的列。
  2. PostgreSQL 中没有t.text:limit 选项,因此您应该删除它以避免混淆。
  3. 根据您的object 列的实际情况,您可能希望将其迁移到jsonb。例如,如果您在模型中使用 serialize :object,那么最好不要像 jsonb 那样将其序列化为 YAML,就像 serialize 那样。
  4. 带有:limitt.string(即数据库中的varchar(n))实际上比没有:limitt.string 稍贵(实际上只是t.text 的名称不同)。如果您对limit: 191 没有严格的需求,那么您可能想要放弃它并让item_type 没有严格的大小限制。您不必删除 :limit,但它对 PostgreSQL 没有多大用处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-04
    • 2023-03-09
    • 2012-02-29
    • 2011-05-13
    • 1970-01-01
    • 2013-09-18
    • 2011-06-13
    • 2018-02-05
    相关资源
    最近更新 更多