我正在使用rails rake任务将所有表格的编码从latin1
更改为utf8mb4
。
我想:
我可以使用
抓取所有包含错误的表格results = ActiveRecord::Base.connection.execute <<-STRING
SHOW TABLE STATUS WHERE collation <> 'utf8mb4'
STRING
我坚持如何将每个表的table name
传递给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
答案 0 :(得分:0)
每个结果都是一个数组:
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