我有一个MySQL SELECT查询,当我在SQLyog(我使用的GUI)中运行它时,需要几分钟的时间。当我尝试通过PowerShell(使用SimplySQL)运行相同的查询时,它总是在30秒时失败。我不确定是哪个超时变量限制了我,或者即使在我的PS环境中有其他东西有30秒的覆盖。我已经将这些覆盖放在Linux MySQL服务器上的my.cnf文件中,并重新启动了MySQL。没有喜悦:
net_read_timeout=600
mysqlx_read_timeout=600
mysqlx_connect_timeout=600
我在谷歌上搜索了MySQL和超时值,都无济于事。所以我的两个问题是:我可以覆盖的其他30秒超时变量的名称是什么,或者是否有其他方法来确定查询在交互式工具中运行的方式与在它在PS会话中是如何运行的(注意:我不能将查询速度提高到总是在30秒内完成)
当我运行我的PS时,我简单地:
Open-MySQLConnection -ConnectionString ...
Invoke-SqlQuery -Query ...
Invoke-SqlQuery -Query "SHOW VARIABLES LIKE '%timeout%'"
(that最后一行显示我已经成功地覆盖了名称中带有“timeout”的所有MySQL变量。)
2条答案
按热度按时间vq8itlhq1#
PowerShell在后台使用.Net连接类,这些对象需要一个connection string。连接字符串中通常允许的一项是连接超时。根据您使用的具体驱动程序,这看起来会有所不同,不幸的是,在www.example.com上没有很好的文档Connectionstrings.com,但这里有一个示例:
否则,您可能可以为连接对象本身设置一个超时属性…但我们需要查看连接的PowerShell代码才能知道它是什么样子的。
也有可能PowerShell代码对此进行了跳转,而是引用ODBC数据源,其中连接字符串只是类似
DSN=MyDataSource
的内容。在这种情况下,您需要查看数据源配置。kg7wmglp2#
我尝试修改SQL查询行,但结果是我需要的参数在Open-MySQLConnection行上。我需要添加
-ConnectionTimeout 28800
和一切都与世界的权利。https://www.powershellgallery.com/packages/SimplySql/1.9.1/Content/Providers%5CMySql%5Cconfig.ps1