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

Vue-cli erstellt ein Projekt und analysiert die Projektstruktur

Inhaltsverzeichnis 1. Geben Sie ein Verzeichnis e...

Erklärung des HTML-Codes der Webseite: geordnete Liste und ungeordnete Liste

In diesem Abschnitt lernen wir Listenelemente in ...

MySQL-Anweisungsanordnung und zusammenfassende Einführung

SQL-Anweisungen (Structured Query Language), also...

So verwenden Sie „Explain“, um den SQL-Ausführungsplan in MySql abzufragen

Der Befehl „Explain“ ist die primäre Möglichkeit,...

Tutorial zur Installation von MySQL8 unter Linux CentOS7

1. Installation der RPM-Version Überprüfen Sie, o...

JavaScript implementiert die umfassendste Codeanalyse einer einfachen Lupe (ES5)

In diesem Artikel wird der spezifische Code von J...

So überwachen Sie MySQL mit Zabbix

Dokumentation zur Zabbix-Bereitstellung Nach der ...

uniapp implementiert Datums- und Zeitauswahl

In diesem Artikelbeispiel wird der spezifische Co...

Zusammenfassung der drei Phasen der Entwicklung eines visuellen Designers

Viele Leute haben dieses Buch gelesen: „Entwickel...

So stellen Sie per SSH eine Verbindung zum Docker-Server her

Als ich zum ersten Mal mit Docker in Berührung ka...

Das WeChat-Applet realisiert eine Links-Rechts-Verknüpfung

In diesem Artikel wird der spezifische Code für d...