Ausnahmeinformationen zur gespeicherten MariaDB-Prozedur: Unerwartetes Ende des Streams, Fehler beim Lesen von 0 Bytes
P粉004287665
2023-08-26 22:16:32
<p>Wir haben eine gespeicherte Prozedur in MariaDB, die auf dem Server einwandfrei läuft, aber wenn wir sie vom Client aus mit JDBC ausführen, können wir die ersten paar Zeilen abrufen, erhalten danach aber immer die folgende Fehlermeldung: </p> ;
<pre class="brush:php;toolbar:false;">unerwartetes Ende des Streams, 0 Bytes von 4 lesen (Socket wurde vom Server geschlossen)</pre>
<p>Table<code>loan_balances2</code> ist nicht zu groß, etwa 600.000 Zeilen. Dies ist eine gespeicherte Prozedur. Sehen Sie etwas Falsches daran? Danke! </p>
<pre class="brush:php;toolbar:false;">CREATE PROCEDURE `get_loan_balances_sample`()
BEGINNEN
Tabelle löschen, falls vorhanden all_loan_ids;
Tabelle löschen, falls vorhanden random_loan_ids;
Erstellen Sie die Tabelle „all_loan_ids“ und wählen Sie eine unterschiedliche „loan_id“ aus „loan_balances2“ aus.
Erstellen Sie die Tabelle random_loan_ids als select * from all_loan_ids order by RAND() limit 50;
SELECT * FROM Loan_balances2
wo „loan_id“ (wählen Sie „Loan_ID“ aus „random_loan_ids“ aus)
ordnen nach Loan_ID, balance_date;
ENDE</pre></p>
通常是net_write_timeout。如果您的应用程序无法以服务器写入速度读取数据,服务器将关闭套接字。net_write_timeout是服务器尝试发送结果集的时间限制,以秒为单位。您可以增加该限制,这是一个会话变量。这也出现在MariaDB JDBC的常见问题解答中。