0
我在运行包含多个在数据库中创建表的sql查询的sql文件时遇到问题。 db是DB2,我创建了一个迁移文件,它在其中读取一个sql文件并执行该文件中的sql查询,问题是它只执行一个查询,并且只在该sql文件中创建一个表,即哪个是第一个查询。使用rails迁移文件运行sql文件
不知道如何解决这个问题
代码sniplet低于:
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查询或基于先前表创建的任何查询失败时失败。我感觉到的问题是,在运行一个查询后,db连接关闭,所以表不会创建,因此基于透明表创建的查询将失败。
你尝试过什么样的调试?例如对报表的分配结果是什么?这个分裂陈述是否会返回你期望的结果? File.read语句的同上。 – margo
@margo:文件读取和查询拆分都没有问题。它没有任何问题 迁移运行并执行所有查询,但当alter table查询或基于前一个表的任何查询创作失败。 我觉得这个问题是,运行一个查询后数据库连接关闭,所以表不会创建,所以查询基于透明表创建失败 – SRDP