Fallstricke bei der Installation der komprimierten Version von MySQL 5.7.17 unter Windows

Fallstricke bei der Installation der komprimierten Version von MySQL 5.7.17 unter Windows

Laden Sie zuerst die neueste komprimierte MySQL 5.7.17 Community-Version für Windows 64-Bit herunter:

Offizielle Download-Adresse: http://dev.mysql.com/downloads/mysql/

Entpacken Sie es anschließend in das Installationsverzeichnis (zum Beispiel C:\Prog\MySQL\). Kopieren Sie anschließend my-default.ini nach my.ini und ändern Sie my.ini wie folgt:

[mysql]
Standardzeichensatz = utf8mb4

[mysqld]
basedir = C:\Prog\MySQL
Datenverzeichnis = C:\Prog\MySQL\data
Port = 3306
max_verbindungen=200
Zeichensatzserver = utf8mb4
Sortierserver = utf8mb4_general_ci
Standard-Speicher-Engine = INNODB
Join-Puffergröße = 128 M
Sortierpuffergröße = 2 M
read_rnd_buffer_size = 2M 
sql_mode=KEIN_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Öffnen Sie anschließend cmd als „Administrator“ – „Administrator“ ist dabei ganz wichtig –, gehen Sie in das Installationsverzeichnis und installieren Sie den MySQL-Dienst:

C:\Prog\MySQL\bin>mysqld installieren
Dienst erfolgreich installiert.

Starten Sie dann den MySQL-Dienst:

net start mysql

Zuerst dachte ich, es wäre so einfach, aber es stellte sich heraus, dass es sich um einen Fehler handelte:

Wird es über die „Dienste“ des Windows-Systems gestartet, lautet die Eingabeaufforderung:

Das Problem war wirklich frustrierend. Nach langem Suchen stellte sich heraus, dass es Folgendes war:

Wenn Sie MySQL mit dem Noinstall-Paket installiert haben, müssen Sie möglicherweise das Datenverzeichnis initialisieren:

  • Windows-Distributionen vor MySQL 5.7.7 enthalten ein Datenverzeichnis mit einer Reihe vorinitialisierter Konten in der MySQL-Datenbank.
  • Ab 5.7.7 enthalten Windows-Installationsvorgänge, die mit dem Noinstall-Paket durchgeführt werden, kein Datenverzeichnis. Um das Datenverzeichnis zu initialisieren, befolgen Sie die Anweisungen in Abschnitt 2.10.1.1, „Manuelles Initialisieren des Datenverzeichnisses mit mysqld“.

Weitere Einzelheiten entnehmen Sie bitte diesen beiden Links:

2.3.5.4 Initialisieren des Datenverzeichnisses

2.10.1.1 Manuelles Initialisieren des Datenverzeichnisses mit mysqld

Nachdem wir nun den Grund gefunden haben, initialisieren wir das Datenverzeichnis manuell:

mysqld --defaults-file=C:\Prog\MySQL\my.ini --initialize-insecure 

Dann der Reihe nach:

net start mysql
mysql -u root -p

Das bekannte mysql> sollte erscheinen.

Ich hoffe, dies hilft Leuten, die auf ähnliche Probleme stoßen. Der Grund dafür ist, dass die komprimierte Paketversion 5.7.7 und höher so geändert wurde, dass eine manuelle Initialisierung des Datenverzeichnisses erforderlich ist.

Es gibt keine allgemeingültige Technik. Sie müssen die Lücken auf dem Weg schließen.

Meine Umgebung:

  • Windows 10 64-Bit
  • MySQL Community Server 5.7.17 für Windows (x86, 64-Bit), ZIP-Archiv

(Trennlinie, das obige MySQL 5.7.17 ist installiert.)

Schließlich habe ich ein SQLAlchemy zum Testen von MySQL erstellt:

"""SQLAlchemy-Vorgang MySQL-Test"""

von sqlalchemy importiere create_engine, Tabelle, Spalte, Ganzzahl, Metadaten
von sqlalchemy.dialects.mysql importiere CHAR
aus sqlalchemy.sql importiere Auswahl

ENGINE = create_engine('mysql+pymysql://root:@127.0.0.1:3306/test?charset=utf8mb4')

CONN = ENGINE.verbinden()

USERINFO = Tabelle('userinfo',
  MetaData(),
  Spalte('id', Integer, Primärschlüssel=True, Autoincrement=True),
  Spalte('Name', CHAR(24, Zeichensatz='utf8mb4')),
  mysql_charset = "utf8mb4")

BENUTZER = auswählen([BENUTZERINFO])

ERGEBNIS = CONN.execute(BENUTZER)

für Zeile in RESULT:
 drucken(Zeile.Name)

ERGEBNIS.schließen()
CONN.schließen()

Es stellt sich heraus, dass bei der Ausgabe der Ergebnisse ein Alarm ertönt:

Warnung: (1366, „Falscher Zeichenfolgenwert: ‚\xD6\xD0\xB9\xFA\xB1\xEA...‘ für Spalte ‚VARIABLE_VALUE‘ in Zeile 480“)

Was ist los? Wenn Sie alle Zeichensatzeinstellungen n-mal überprüfen, sollte es kein Problem geben ...

Was haben Sie nach unzähligen Überlegungen und Experimenten herausgefunden? Was haben Sie gefunden? Ich habe festgestellt, dass ein Alarm erscheint, solange ich Variablen wie „% charac%“ anzeige!

Schauen wir uns diese Warnung einmal an:

Ist es nicht genau das? Ist das ein MySQL-Fehler? ! OMG!

In Ordnung! Zurück zu MySQL 5.6.35!

Der Alarm ist weg!

Bauen Sie anschließend die Datenbank neu auf, erstellen Sie die Tabelle und testen Sie das Programm:

Das ist in Ordnung, und schließlich bin ich zu MySQL 5.6.35 zurückgekehrt.

Schreiben Sie Python in aller Ruhe, niemand streitet, und es gibt keinen Streit wie bei den Front-End-Entwicklern – die Jahre sind friedlich, und Python ist friedlich.

Abschließend möchte ich Visual Studio Code ein Lob aussprechen:

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass einige meiner Erfahrungen Freunden helfen können, die auf dieselben Probleme stoßen. Wenn Sie Fragen haben, können Sie auch eine Nachricht hinterlassen, um zu kommunizieren.

Das könnte Sie auch interessieren:
  • Bei der kostenlosen Installationsversion von MySQL 5.7.19 sind Fallstricke aufgetreten (Sammlung)
  • Detaillierte Erklärung, wie Sie die Fallstricke beim Ersetzen von logischem SQL in MySQL vermeiden können
  • Einige Fallstricke, auf die Entwickler nach dem Upgrade auf MySQL 5.7 achten müssen

<<:  Eine kurze Analyse des Ereignisdelegierungsmechanismus und des tiefen und flachen Kopierens in JavaScript

>>:  So installieren Sie Nginx in CentOS7

Artikel empfehlen

Bild-Tag für HTML-Webseite

Bild-Tag <IMG> einfügen Die farbenfrohen Web...

Detaillierter Prozess der Installation von nginx1.9.1 auf centos8

1.17.9 Wirklich leckerer Nginx-Download-Adresse: ...

MySQL mit Nutzungsanalyse

Verwendung von „haben“ Mit der Having-Klausel kön...

jQuery implementiert Navigationsleisteneffekt mit Erweiterungsanimation

Ich habe eine Navigationsleiste mit einem erweite...

Erläuterung der Lösung zur mobilen H5-Bildgenerierung in JavaScript

Derzeit gibt es viele Betriebsaktivitäten für öff...

Ausführliches Tutorial zur Installation von MySQL 5.6-ZIP-Paketen

Bisher haben wir alle Dateien mit der Endung .msi...

Das WeChat-Applet implementiert einen einfachen Rechner

Der einfache Rechner des WeChat-Applets dient Ihn...

Grafische Erklärung des Funktionsaufrufs der Protodatei in Vue

1. Proto kompilieren Erstellen Sie einen neuen Pr...

Lösung für die Nichterreichbarkeit des Tencent Cloud Server Tomcat-Ports

Ich habe vor Kurzem einen Server mit Tencent Clou...

Detaillierte Erklärung zur Verwendung des Alias-Befehls unter Linux

1. Verwendung von Pseudonymen Mit dem Alias-Befeh...

So installieren und konfigurieren Sie einen FTP-Server in CentOS8.0

Nach der Veröffentlichung von CentOS8.0-1905 habe...

So ändern Sie die Längenbeschränkung von group_concat in MySQL

In MySQL gibt es eine Funktion namens „group_conc...