gpt4 book ai didi

mysql - 如何在 Rails rake 任务中将参数传递给 mysql 查询?

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

我正在使用 Rails rake 任务将所有表的编码从 latin1 更改为 utf8mb4

我想要:

  1. 获取所有编码不是 utf8mb4 的表
  2. 更改每个表的字符集。

我可以抓取所有带有错误编码的表格

results = ActiveRecord::Base.connection.execute <<-STRING
SHOW TABLE STATUS WHERE collation <> 'utf8mb4'
STRING

我不知道如何将每个表的表名称传递给mysql查询,以便可以更改表编码。

results.each do |table|
ActiveRecord::Base.connection.execute <<-STRING
ALTER TABLE #{table.table_name} CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
STRING
end

最佳答案

每个结果都是一个数组:

results.first.class
=> Array

SHOW TABLE STATUS 返回的第一个值是表名称。所以你应该能够使用类似的东西:

results.each do |table|
ActiveRecord::Base.connection.execute <<-STRING
ALTER TABLE #{table[0]} CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
STRING
end

关于mysql - 如何在 Rails rake 任务中将参数传递给 mysql 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50032298/

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