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

mysqldump-Parameter, die Sie möglicherweise nicht kennen

Im vorherigen Artikel wurde erwähnt, dass die in ...

Mysql-Timeline-Daten, um die ersten drei Daten desselben Tages zu erhalten

Erstellen von Tabellendaten CREATE TABLE `praise_...

Installieren Sie eine virtuelle Python-Umgebung in Ubuntu 18.04

Nur als Referenz für Python-Entwickler, die Ubunt...

JavaScript-Flusskontrolle (Verzweigung)

Inhaltsverzeichnis 1. Prozesskontrolle 2. Sequent...

So bereinigen Sie schnell Milliarden von Daten in einer MySQL-Datenbank

Heute habe ich eine Festplattenalarm-Ausnahme erh...

Lösung für Überlauf: versteckter Fehler in CSS

Ursache des Fehlers Als ich heute ein Karussell s...

Beispiel für die Verwendung einer Keep-Alive-Komponente in Vue

Problembeschreibung (was ist Keep-Alive) Keep-Ali...

In wenigen Schritten zum einfachen Aufbau eines Windows-SSH-Servers

Das hier erwähnte SSH heißt Security Shell. Ich g...

7 Fähigkeiten, die großartige Grafikdesigner beherrschen müssen

1》Seien Sie gut im Webdesign 2》Wissen, wie man Web...

Durchführung der lokalen Migration von Docker-Images

Ich habe vor Kurzem Docker gelernt und stoße dabe...