对于我的Rails应用程序我从sqlite3切换到Postgres用于生产环境。我想把sqlite db中的数据带到postgres db。
我设置了postgres和超级用户。
当我用户rake db:setup
一切顺利到达应该为db播种的部分时。
出现此错误:
rake aborted!
ActiveRecord::StatementInvalid: PG::InvalidTextRepresentation: ERROR: malformed array literal: "---
- ''
"
DETAIL: Array value must start with "{" or dimension information.
我的数据库包含数组,这在sqlite上工作正常,即使在迁移和播种到新设置时也是如此。
我猜这个错误是由于语法与postgres db不兼容造成的。如果是这种情况,我可以创建包含正确语法的seeds.rb文件吗?
感谢任何帮助。
版本:
Rails 4.1.8
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
答案 0 :(得分:10)
在插入数据库之前,数组似乎被序列化为YAML(---
表示YAML文档的开头)。
我猜你的模特有例如serialize :some_field, Array
,这是在SQLite中存储数组所必需的,但如果您现在使用的是本机Postgres数组列类型,则会导致问题。如果您的模型中有这样的行,请尝试将其删除。
答案 1 :(得分:0)
Jordan的回答是绝对正确的,但在我的情况下,我最终添加了迁移以YAML格式存储数组。
CREATE PROCEDURE