在 MySqL 配置中,local_infile 已启用,我可以通过以下方式验证:SHOW VARIABLES --> local_infile ON。
但是当我执行以下命令时:
ActiveRecord::Base.connection.disconnect!
ActiveRecord::Base.verify_active_connections!
ActiveRecord::Base.connection.execute("LOAD DATA LOCAL INFILE 'blalalla' INTO TABLE blababla")
我收到类似的信息: ActiveRecord::StatementInvalid: Mysql::Error: The used command is not allowed with this MySQL version: LOAD DATA LOCAL INFILE '/tmp/tmp_stores.csv' INTO TABLE tmp_sztores
这个话题几乎完全覆盖(只是补丁,没有解释),至少有一个存在的问题:4652330
重新连接后无法在 Rails 中执行“LOAD DATA LOCAL INFILE”Mysql 查询
我的问题是:为什么当我调用 verify_active_connections! 时会发生这种情况,因此只有在连接关闭然后重新连接/重新连接时才会发生?为什么最初在建立连接上初始化连接池时它会起作用?
我已经检查了与方法 verify_active_connections 相关的代码!它委托给 MyslAdapter#reconnect!它调用相同的“连接”方法......
我不明白为什么重新连接后应该显式设置 local_infile 标志,否则它不起作用。
谢谢!!!