首頁  >  問答  >  主體

如何調整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 天前646

全部回覆(1)我來回復

  • P粉652495194

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

    PowerShell在幕後使用.Net連接類別來完成這個操作,而這些物件需要一個連接字串。連接字串通常允許包含連接的逾時時間。特定的超時時間設定取決於你使用的特定驅動程序,而且很不幸在Connectionstrings.com上沒有很好的文檔說明,但下面是一個示例:

    Connect Timeout=600

    否則,你可能可以為連接物件本身設定一個逾時屬性...但是我們需要查看PowerShell連接的程式碼才能知道具體是什麼樣的。

    也有可能PowerShell程式碼將其轉交給了ODBC資料來源,其中連接字串只是類似DSN=MyDataSource的內容。在這種情況下,你需要查看資料來源的配置。

    回覆
    0
  • 取消回覆