Ruby on Rails - Postgres:数组值必须以"{"或维度信息开头

Dan*_*l B 1 ruby database sqlite postgresql ruby-on-rails

对于我的Rails应用程序我从sqlite3切换到Postgres的生产环境.我想把sqlite db中的数据带到postgres db.

我设置了postgres和超级用户.

当我的用户rake db:setup全部顺利到它应该播种数据库的部分.

出现此错误:

rake aborted!
ActiveRecord::StatementInvalid: PG::InvalidTextRepresentation: ERROR:  malformed array literal: "---
- ''
"
DETAIL:  Array value must start with "{" or dimension information.
Run Code Online (Sandbox Code Playgroud)

我的数据库包含数组,这在sqlite上运行良好,即使在迁移和播种到新设置时也是如此.

我猜这个错误是由于语法与postgres db不兼容造成的.如果是这种情况,我可以创建包含正确语法的seeds.rb文件吗?

任何帮助表示赞赏.

版本:

Rails 4.1.8
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
Run Code Online (Sandbox Code Playgroud)

Jor*_*ing 11

看起来数组在插入数据库之前被序列化为YAML(---表示YAML文档的开始).

我猜你的模型有例如serialize :some_field, Array,在SQLite中存储数组是必要的,但是如果你现在使用的是本机Postgres数组列类型会引起问题.如果您的模型中有这样的行,请尝试将其删除.