Mysql 需要不可移植SQL的Rails迁移

Mysql 需要不可移植SQL的Rails迁移,mysql,ruby-on-rails,sqlite,ruby-on-rails-4,Mysql,Ruby On Rails,Sqlite,Ruby On Rails 4,我有一个表,它最初是用一列的默认值定义的。我需要更改或删除默认设置 似乎(通过它的沉默)表明,ActiveRecord::Migration并未包装此更改以实现可移植性 似乎说所需的SQL在MySQL和SQLite(我的两个DBs)之间是不可移植的 如果我误读了其中任何一个,那么纠正我就足够了。否则: 在ActiveRecord::Migration#up例程中,如何编写对底层数据库敏感的execute调用?例如,我可以查看config/database.yml中的活动值吗 当前表def

我有一个表,它最初是用一列的默认值定义的。我需要更改或删除默认设置

  • 似乎(通过它的沉默)表明,
    ActiveRecord::Migration
    并未包装此更改以实现可移植性
  • 似乎说所需的SQL在MySQL和SQLite(我的两个DBs)之间是不可移植的
如果我误读了其中任何一个,那么纠正我就足够了。否则:

  • ActiveRecord::Migration#up
    例程中,如何编写对底层数据库敏感的
    execute
    调用?例如,我可以查看
    config/database.yml
    中的活动值吗
当前表defn(来自
db/schema.rb
)为:


谢谢,布拉德·沃思:;你是对的,这实际上是一场骗局

ActiveRecord::Migration#change _列成功了。具体来说,我的迁移脚本是:

class DeslashifyUrlComponentsInApi < ActiveRecord::Migration
  def up
    change_column :apis, :resource_root, :string, default: "v1", null: false
  end
  def down
    change_column :apis, :resource_root, :string, default: "/v1", null: false
  end
end
class DeslashfiUrlComponentsInAPI
您的专栏有哪些规格?可能重复
class DeslashifyUrlComponentsInApi < ActiveRecord::Migration
  def up
    change_column :apis, :resource_root, :string, default: "v1", null: false
  end
  def down
    change_column :apis, :resource_root, :string, default: "/v1", null: false
  end
end