1

在 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 标志,否则它不起作用。

谢谢!!!

4

0 回答 0