作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Rails rake 任务将所有表的编码从 latin1
更改为 utf8mb4
。
我想要:
我可以抓取所有带有错误编码的表格
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/
我是一名优秀的程序员,十分优秀!