新手问题 Carrierwave 多文件上传问题 - PG::SyntaxError: ERROR: syntax error at or near "array"

somejump · 2015年05月02日 · 最后由 somejump 回复于 2015年05月02日 · 3086 次阅读

数据库使用的是 postgreSQL 在按着 carrierwave 给出的官方文档操作时出现了问题

rails g migration add_avatars_to_users avatars:array #我写的是add_subimages_to_images subimages:array ,改成:json也试过,不行
rake db:migrate #上一部并没有出问题,但是这步出问题了

以下是又长又多的 log,我稍微删减了一下:

== 20150502083130 AddSubimagesToImages: migrating =============================
-- add_column(:images, :subimage, :array)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::SyntaxError: ERROR:  syntax error at or near "array"
LINE 1: ALTER TABLE "images" ADD COLUMN "subimage" array
                                                   ^
.........
ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR:  syntax error at or near "array"
LINE 1: ALTER TABLE "images" ADD COLUMN "subimage" array
                                                   ^
: ALTER TABLE "images" ADD COLUMN "subimage" array
...........
PG::SyntaxError: ERROR:  syntax error at or near "array"
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

是不是 pg 不支持那种方法呢?可是我又不能换数据库呀,做了好久的项目.......

求大神解答,谢谢!

不知道为什么,rails 自己生成的 migration 代码有错误 应该改成这样:

class AddSubimagesToImages < ActiveRecord::Migration
  def change
    add_column :images, :subimages, :string, array: true, default: '{}'
  end
end

即可

可否给出官方文档网址?

#2 楼 @somejump add_subimages_to_images,这个的文档有么?

#3 楼 @chenge ?这个是我自己写的两个 model,image 是一个图片集合,subimage 是集合中的元素,就是改了

add_avatars_to_users

的两个名称而已

用 string 可以吧。我这边是这样的,可以多文件的。

#5 楼 @chenge 我在想替代方案,大概是建立一个新建评论类似的模板去新建 subimage,这样 string 就可以了,但是终究比 array 麻烦。难道不用 array 用 string 也可以多文件么?那文档可得更新一下了

是否你写错了 migration?

你是怎么写的?

#7 楼 @chenge 我的 migration 是它自动生成的,确实不太一样

class AddSubimagesToImages < ActiveRecord::Migration
  def change
    add_column :images, :subimages, :array
  end
end

我看网上是:

add_column :users, :emails, :string, array: true, default: '{}'

估计是这里的问题。

#9 楼 @chenge 谢谢!照做果然解决了

class AddSubimagesToImages < ActiveRecord::Migration
  def change
    add_column :images, :subimages, :string, array: true, default: '{}'
  end
end

z@z-270E5J-2570EJ:~/mo1.0$ rake db:migrate
== 20150502112546 AddSubimagesToImages: migrating =============================
-- add_column(:images, :subimages, :string, {:array=>true, :default=>"{}"})
   -> 0.2366s
== 20150502112546 AddSubimagesToImages: migrated (0.2368s) ====================

需要 登录 后方可回复, 如果你还没有账号请 注册新账号