Heim  >  Artikel  >  Datenbank  >  Was soll ich tun, wenn das Programm keine Verbindung zu MySQL herstellen kann?

Was soll ich tun, wenn das Programm keine Verbindung zu MySQL herstellen kann?

藏色散人
藏色散人Original
2020-11-04 10:32:205516Durchsuche

Die Lösung für das Problem, dass das Programm keine Verbindung zu MySQL herstellen kann: 1. Stellen Sie fest, ob der MySQL-Dienst normal ist, und ermitteln Sie den Betrieb und die Wartung, um das Netzwerkproblem zu bestätigen. 3. Erhöhen Sie den Wert „max_allowed_packet“. „net_read_timeout“-Wert; 4. Erhöhen Sie den „connect_timeout“-Wert usw.

Was soll ich tun, wenn das Programm keine Verbindung zu MySQL herstellen kann?

Empfehlung: „MySQL-Video-Tutorial

Zusammenfassung der Probleme, wenn das Programm keine Verbindung zu MySQL herstellen kann

Wenn das Programm keine Verbindung zu MySQL herstellen kann, gibt es im Allgemeinen vier Arten von Fehlerberichten:

1:Can't connect to MySQL server
2:Lost connection to MySQL server
3:Sorry, due to line fault, temporarily unable to browse, we are dealing with.
4:MySQL server has gone away

Eins: Es kann keine Verbindung zum MySQL-Server hergestellt werden

Mögliche Gründe:

1, der MySQL-Server ist nicht gestartet

2, das Netzwerk ist blockiert (iptables, selinux, Netzwerkinstabilität)

Entsprechende Lösungen:

1, DBA stellt zunächst fest, dass der MySQL-Dienst normal ist. Gehen Sie zu Betrieb und Wartung, um das Netzwerkproblem zu bestätigen.

Es gibt vier Situationen kann einen solchen Fehler verursachen:

1. Die Ergebnismenge der Abfrage ist zu groß.

3 Wenn der Client eine Datenbankverbindung initiiert wird gemeldet, weil die Einstellungszeit für connect_timeout zu kurz ist. Wenn der Fehler aus diesem Grund verursacht wird, können Sie mit SHOW GLOBAL STATUS LIKE 'Aborted_connects' sehen, ob dieser Wert gestiegen ist.

4 Die Abfrage hat einen Blob-Typ, der überschritten wird die Grenze des max_allowed_packet-Parameters

Entsprechende Lösungen für diese vier Situationen:

1, ob ein Problem mit dem Betriebs- und Wartungsüberwachungsnetzwerk vorliegt

2, erhöhen Sie den net_read_timeout-Wert

3, erhöhen Sie den connect_timeout-Wert

4 , Erhöhen Sie den max_allowed_packet-Wert.

Drei: Aufgrund eines Leitungsfehlers ist das Durchsuchen vorübergehend nicht möglich.

Dieser Fehler liegt nicht vor. Ich habe im Internet keine ähnlichen Informationen zu nativen MySQL-Fehlern gefunden Es gibt drei Situationen, in denen dieser Fehler auftritt:

1. Es liegt ein Problem mit dem Netzwerk vor.

2. Es sind zu viele Datenbankverbindungen vorhanden.

3. Das Passwort ist falsch Der Server ist verschwunden

Die folgenden 12 Situationen können diesen Fehler verursachen:

1. Der Standardwert für „wait_timeout“ beträgt 8 Stunden. Das Client-Konto hat keine Berechtigung, eine Verbindung zum MySQL-Server herzustellen

4. Die TCP/IP-Verbindung des Clients läuft ab, z. B. bei Verwendung von mysql_options(..., MYSQL_OPT_READ_TIMEOUT,...) oder mysql_options(..., MYSQL_OPT_WRITE_TIMEOUT, ...) Funktion

5, wenn der Client die automatische Wiederverbindung deaktiviert

6, ist die Abfrageanweisung falsch

7, die Abfrageanweisung ist zu lang und überschreitet das Limit von max_allowed_packet

8, eine Es gibt zu viele Zeilen aktualisiert durch Einfüge- oder Ersetzungsanweisungen

9, Auflösung des Domänennamens fehlgeschlagen

10, die Firewall hat Port 3306 blockiert

11, ein Thread verzweigt mehrere untergeordnete Prozesse und wenn mehrere untergeordnete Prozesse eine Verbindung gemeinsam nutzen, wird ein Fehler gemeldet

12, MySQL-Server hat sich aufgehängt

Es gibt viele Gründe für den Fehler, dass der MySQL-Server verschwunden ist. Wir können dieses Problem unter drei Aspekten lösen:

1, Betrieb und Wartung

a, Bestätigen der Firewall-Regeln

b , Es gibt keine Anomalie im DNS-Server. Konfigurieren Sie die Parameter für die Verbindung zu MySQL in php.ini. Der Standardwert ist 60s. mysqli.reconnect a. Bestimmen Sie die Anzahl der MySQL-Dienste und -Verbindungen. Ausnahme

b, legen Sie einen angemessenen Wait_Timeout-Wert fest

c, legen Sie einen angemessenen max_allowed_packet-Wert auf der Serverseite fest

d, bestätigen Sie, dass die Kontoberechtigungen korrekt sind

3, Entwicklung

a, es wird empfohlen, mysqli anstelle von mysql

b zu verwenden, so wenig wie möglich. Bei langen Verbindungen

c kann mysqli.ping() die Verbindung automatisch wiederherstellen, nachdem die Verbindung getrennt wurde automatische Wiederverbindung seit mysql5.0.3

d. Teilen Sie keine Datenbankverbindung

Schauen wir uns am Beispiel von gamiss die Parameter an, die sich auf max_allowed_packet und timeout beziehen:

>show variables like 'max_allowed_packet';
+--------------------+------------+
| Variable_name | Value |
+--------------------+------------+
| max_allowed_packet | 1073741824 |
+--------------------+------------+
>show variables like '%timeout%';
+-----------------------------+----------+
| Variable_name | Value |
+-----------------------------+----------+
| connect_timeout | 60 |
| delayed_insert_timeout | 300 |
| have_statement_timeout | YES |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 120 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 86400 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 120 |
| net_write_timeout | 120 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 3600 |
| thread_pool_idle_timeout | 60 |
| wait_timeout | 86400 |
+-----------------------------+----------+

Schauen wir uns diese an Timeout-Parameter im Zusammenhang mit dem Fehler beim Herstellen einer Verbindung zur Datenbank:

connect_timeout: Warten Sie beim Erhalten des Links auf den Handshake. Die Timeout-Zeit beträgt normalerweise 10 Sekunden. Um eine Überlastung der Verbindung aufgrund eines schlechten Netzwerks zu vermeiden, kann dieser Wert erhöht werden Entsprechend ist die Online-Konfiguration 60s Der Client sendet Daten, der Standardwert beträgt 60 Sekunden, online beträgt er 120 Sekunden von max_allowed_packet ist 1M (1048576), der Maximalwert ist 1G (1073741824), unser aktueller Online-Wert ist bereits die Obergrenze.

Aus der obigen Konfiguration ist ersichtlich, dass die Einstellungen dieser Parameter relativ groß sind Das Programm zum Herstellen einer Verbindung zur Datenbank sollte unter normalen Umständen nichts mit der Parameterkonfiguration der Datenbank selbst zu tun haben. Wir müssen dieses Problem aus anderen Richtungen lösen.

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn das Programm keine Verbindung zu MySQL herstellen kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn