Saya mempunyai pertanyaan MySQL SELECT yang mengambil masa beberapa minit apabila dijalankan dalam SQLyog (GUI yang saya gunakan). Apabila saya cuba menjalankan pertanyaan yang sama melalui PowerShell (menggunakan SimplySQL) ia sentiasa gagal pada 30 saat. Saya tidak pasti pembolehubah tamat masa yang mengehadkan saya, atau jika terdapat tetapan lain dalam persekitaran PS saya yang mempunyai tamat masa 30 saat. Saya telah menetapkan nilai tamat masa ini dalam fail my.cnf pelayan MySQL Linux dan memulakan semula MySQL. Tetapi tiada kejayaan:
net_read_timeout=600 mysqlx_read_timeout=600 mysqlx_connect_timeout=600
Saya telah mencari MySQL dan nilai tamat masa di Google, tetapi tidak menemui jawapan. Jadi dua soalan saya ialah: apakah pembolehubah lain yang dipanggil tamat masa 30 saat yang boleh saya tolak, atau adakah terdapat cara lain untuk mengetahui perbezaan antara cara pertanyaan dijalankan dalam alat interaktif saya berbanding cara ia berjalan dalam perbezaan sesi PS? (Nota: Saya tidak dapat mempercepatkan pertanyaan untuk sentiasa selesai dalam masa 30 saat)
Apabila saya menjalankan PS saya, saya hanya perlukan:
Open-MySQLConnection -ConnectionString ... Invoke-SqlQuery -Query ... Invoke-SqlQuery -Query "SHOW VARIABLES LIKE '%timeout%'"
(Barisan terakhir menunjukkan bahawa saya telah berjaya mengatasi mana-mana pembolehubah MySQL bernama "tamat masa".)
PowerShell menggunakan kelas sambungan .Net di belakang tabir untuk mencapai ini, dan objek ini memerlukanrentetan sambungan. Rentetan sambungan biasanya dibenarkan mengandungi tamat masa untuk sambungan. Tetapan tamat masa yang tepat bergantung pada pemacu khusus yang anda gunakan, dan malangnya ia tidak didokumenkan dengan baik di Connectionstrings.com, tetapi berikut ialah contoh:
Jika tidak, anda mungkin boleh menetapkan sifat tamat masa pada objek sambungan itu sendiri... tetapi kami perlu melihat kod sambungan PowerShell untuk mengetahui dengan tepat rupanya.
Ada kemungkinan juga kod PowerShell menyerahkannya kepada sumber data ODBC, di mana rentetan sambungan adalah seperti
DSN=MyDataSource
. Dalam kes ini, anda perlu melihat konfigurasi sumber data.