How to simulate "Mysql2::Error: MySQL client is not connected"

How to simulate "Mysql2::Error: MySQL client is not connected"

任何人都可以建议在 Rails 应用程序的上下文中强制 上述异常发生的方法吗?

我遇到了它出现的特殊情况(涉及计划的数据库维护),我需要能够在本地触发它,以便我可以测试我的应用程序是否正确处理它。

我想我可以对数据库本身做一些事情,或者我可以调用 ActiveRecord 连接的一些方法来触发这个,但我还没弄明白。

您可能会收到此错误,因为在进行 SQL 查询时 MySQL 连接在维护期间被终止。 (这里是这个场景的测试用例https://github.com/brianmario/mysql2/blob/a8c96fbe277723e53985983415f9875e759e1d47/spec/mysql2/client_spec.rb#L597

要在本地重现此内容,您可以在 rails 中 运行 一个长 运行ning SQL 查询。例如

ActiveRecord::Base.connection.execute("select sleep(100)")

虽然那是 运行ning,但通过 运行ning

找到并终止 rails SQL 连接
 SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST WHERE `db` = '<your-database-name>';
 kill <id>; -- Run for each id listed in the previous query.