gpt4 book ai didi

mysql - 通过事件记录迁移将 rename_column 和 change_column 合二为一

转载 作者:行者123 更新时间:2023-11-29 13:00:50 25 4
gpt4 key购买 nike

我必须重命名表a 的列中的一列并更改其数据类型。我目前正在做以下事情:

class RenameIdFromA < ActiveRecord::Migration
def change
rename_column :a, :a_id, :id
change_column :a, :id, :string, :limit => 50
end
end

有没有办法一次性完成?类似的东西

    rename_and_change_column :a, :a_id, :id, :string, :limit => 50

因为,它可以在 MySQL 中通过以下查询一次性完成:

ALTER TABLE `a` CHANGE `a_id` `id` varchar(50) DEFAULT 0 NOT NULL

最佳答案

您可以使用 execute 按原样运行 SQL,然后如果有人使用您支持的其他数据库引擎,则回退到默认方法。

class RenameIdFromA < ActiveRecord::Migration
def change
if ActiveRecord::Base.connection.adapter_name =~ /mysql/i
execute "ALTER TABLE `a` CHANGE `a_id` `id` varchar(50) DEFAULT 0 NOT NULL"
else
rename_column :a, :a_id, :id
change_column :a, :id, :string, :limit => 50
end
end
end

关于mysql - 通过事件记录迁移将 rename_column 和 change_column 合二为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23362657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com