[英]How do you pass a parameter to mysql query in a rails rake task?
我正在使用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
每個結果都是一個數組:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.