【发布时间】:2017-03-02 10:32:23
【问题描述】:
我在运行包含多个在 db 中创建表的 sql 查询的 sql 文件时遇到问题。 db是DB2,我创建了一个迁移文件,它在其中读取一个sql文件并执行该文件中的sql查询,问题是它只执行一个查询并在该sql文件中只创建一个表,即第一个查询.
知道如何解决这个问题
代码片段如下:
enter code here
class CreateTablesForPoject < ActiveRecord::Migration
def change
begin
user = RailsUser.first
rescue => e
fixed_patches = %w(CREATETABLES.sql)
sql = File.read("db/ddl/#{fixed_patches.first}")
statements = sql.split(/;$/)
statements.each do |statement|
execute(statement)
end
end
end
end
注意:文件读取和查询拆分都很好..它没有任何问题迁移运行并执行所有查询,但是当alter table查询或任何基于pervious table的查询时失败创建失败。我觉得的问题是,在运行一个查询后,数据库连接断开,因此没有创建表,因此基于先前表创建的查询失败。
【问题讨论】:
-
你试过什么调试?例如分配给语句的结果是什么?该拆分语句是否返回了您期望的结果? File.read 语句同上。
-
@margo:文件读取和查询拆分都很好..它没有任何问题迁移运行并执行所有查询,但在alter table查询或任何查询时失败基于以前的表创建失败。我觉得的问题是,在运行一个查询后,数据库连接断开,因此没有创建表,因此基于先前表创建的查询失败
标签: ruby-on-rails ruby ruby-on-rails-4 db2 migration