簡體   English   中英

如何在Rails Rake任務中將參數傳遞給mysql查詢?

[英]How do you pass a parameter to mysql query in a rails rake task?

我正在使用rails rake任務將所有表的編碼從latin1更改為utf8mb4

我想要:

  1. 抓取所有編碼不是utf8mb4的表
  2. 更改每個表的字符集。

我可以抓住所有錯誤的表

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM