Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 查看Rails迁移输出的方法_Ruby On Rails_Postgresql_Activerecord_Migration - Fatal编程技术网

Ruby on rails 查看Rails迁移输出的方法

Ruby on rails 查看Rails迁移输出的方法,ruby-on-rails,postgresql,activerecord,migration,Ruby On Rails,Postgresql,Activerecord,Migration,有没有一种简单的方法可以查看rails迁移生成的实际SQL 在我的本地开发机器上,更改列类型的迁移在生产服务器上部分失败 我的postgreSQL版本在本地版和生产版之间有所不同(生产版7个,本地版8个)因此,我希望通过查看本地成功迁移时生成的SQL,我可以编写一个SQL语句,在生产环境中运行,以解决问题。查看日志文件:log/development.log locally vs log/production.log on your server。我做了一些挖掘,找到了另一种实现方法。。。(这种

有没有一种简单的方法可以查看rails迁移生成的实际SQL

在我的本地开发机器上,更改列类型的迁移在生产服务器上部分失败


我的postgreSQL版本在本地版和生产版之间有所不同(生产版7个,本地版8个)因此,我希望通过查看本地成功迁移时生成的SQL,我可以编写一个SQL语句,在生产环境中运行,以解决问题。

查看日志文件:log/development.log locally vs log/production.log on your server。

我做了一些挖掘,找到了另一种实现方法。。。(这种方式只提供SQL,因此我更容易阅读)

如果您将这一行放入配置文件中,Postgresql将记录所有执行的查询:(配置文件的“记录内容”部分注释了一个示例)

然后我回滚并在本地重新运行迁移,以找到我正在寻找的SQL


此方法还为您提供了一种SQL格式,您可以轻松地将其粘贴到PGAdmin的查询生成器中,并对其进行处理。

您可以在迁移的
change
up
down
方法的顶部将记录器设置为STDOUT。例如:

class SomMigration < ActiveRecord::Migration
  def change
    ActiveRecord::Base.logger = Logger.new(STDOUT)

    # ...
  end
end
class-sommigation

或者,请参阅将SQL日志添加到所有rake任务的相关信息

谢谢Francois!你的建议很好,但我有一些麻烦,因为我的日志文件很大,有点难以解析。。。然而,您让我想起了我不久前读到的关于PostgreSQL自己的日志文件的内容,我最终找到了一个解决方案,它满足了我的需求+谢谢你。我很惊讶没有一种rails原生的方法来实现这一点。
class SomMigration < ActiveRecord::Migration
  def change
    ActiveRecord::Base.logger = Logger.new(STDOUT)

    # ...
  end
end