首页  >  问答  >  正文

如何调整PowerShell运行的MySQL查询的超时时间,以允许超过30秒的运行时间?

我有一个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

我已经在Google上搜索了MySQL和超时值,但没有找到答案。 所以我的两个问题是:还有哪些名为30秒超时的变量我可以覆盖,或者是否有其他方法来找出查询在我的交互式工具中运行方式与在PS会话中运行方式之间的差异? (注意:我无法将查询加速以在30秒内始终完成)

当我运行我的PS时,我只需要:

Open-MySQLConnection -ConnectionString ...
Invoke-SqlQuery -Query ...
Invoke-SqlQuery -Query "SHOW VARIABLES LIKE '%timeout%'"

(最后一行显示我已成功覆盖了任何名为“timeout”的MySQL变量。)

P粉803444331P粉803444331426 天前647

全部回复(1)我来回复

  • P粉652495194

    P粉6524951942023-09-11 10:54:28

    PowerShell在幕后使用.Net连接类来完成这个操作,而这些对象需要一个连接字符串。连接字符串通常允许包含连接的超时时间。具体的超时时间设置取决于你使用的具体驱动程序,而且很不幸在Connectionstrings.com上没有很好的文档说明,但是下面是一个示例:

    Connect Timeout=600

    否则,你可能可以为连接对象本身设置一个超时属性...但是我们需要查看PowerShell连接的代码才能知道具体是什么样的。

    也有可能PowerShell代码将其转交给了ODBC数据源,其中连接字符串只是类似DSN=MyDataSource的内容。在这种情况下,你需要查看数据源的配置。

    回复
    0
  • 取消回复