【发布时间】:2014-04-22 04:09:02
【问题描述】:
我在将应用程序的数据库推送到 Heroku 后迁移它时遇到问题。触发错误的部分代码如下:
execute "COPY countries FROM '#{Rails.root}/db/migrate/Countries.txt' DELIMITER ',' CSV HEADER;"
execute "COPY regions FROM '#{Rails.root}/db/migrate/Regions.txt' DELIMITER ',' CSV HEADER;"
execute "COPY cities FROM '#{Rails.root}/db/migrate/Cities.txt' DELIMITER ',' CSV HEADER;"
这是我得到的错误:
PG::InsufficientPrivilege: 错误: 必须是超级用户才能复制到文件或从文件复制 提示:任何人都可以复制到标准输出或从标准输入。 psql 的 \copy 命令也适用于任何人。 : COPY countries FROM '/app/db/migrate/Countries.txt' DELIMITER ',' CSV HEADER; 耙中止! 发生错误,此迁移和所有后续迁移均已取消:
到目前为止,我已经尝试使用“\copy”和“COPY FROM STDIN”作为一些旧问题的建议,但不断收到语法错误。如果有人能指出我正确的方向,那就太好了。
编辑:这是我要参考的问题。 One:
我试过这个:
execute "COPY countries FROM STDIN '#{Rails.root}/db/migrate/Countries.txt' DELIMITER ',' CSV HEADER;"
还有这个:
execute "COPY countries FROM '#{Rails.root}/db/migrate/Countries.txt' STDIN DELIMITER ',' CSV HEADER;"
Two:
我试过这个:
execute \copy countries FROM STDIN '#{Rails.root}/db/migrate/Countries.txt' DELIMITER ',' CSV HEADER
编辑两个:
这是另一个尝试:
execute "COPY countries '#{Rails.root}/db/migrate/Countries.txt' FROM STDIN DELIMITER ',' CSV HEADER;"
execute "COPY regions '#{Rails.root}/db/migrate/Regions.txt' FROM STDIN DELIMITER ',' CSV HEADER;"
execute "COPY cities '#{Rails.root}/db/migrate/Cities.txt' FROM STDIN DELIMITER ',' CSV HEADER;"
我从中得到的错误是:
PG::SyntaxError:错误:“'/app/db/migrate/Countries.txt'”处或附近的语法错误 第 1 行:从 STDIN DE 复制国家/地区 '/app/db/migrate/Countries.txt'... ^ : 复制国家/地区 '/app/db/migrate/Countries.txt' FROM STDIN DELIMITER ',' CSV HEADER; 耙中止! 发生错误,此迁移和所有后续迁移均已取消:
PG::SyntaxError:错误:“'/app/db/migrate/Countries.txt'”处或附近的语法错误 第 1 行:从 STDIN DE...复制国家/地区 '/app/db/migrate/Countries.txt'...
编辑 3:
我无法解决我遇到的问题,但找到了一个更简单的解决方案 - 创建一个本地转储并使用他们的导入工具将其上传到 heroku。可以找到here。
【问题讨论】:
-
请向我们展示您参考的这些其他问题/答案以及您使用的确切代码。
-
好的,用我尝试过的替代方法更新了我的问题。
标签: ruby-on-rails heroku database-migration