Windows で MySQL 5.7.17 圧縮バージョンをインストールするときに遭遇する落とし穴

Windows で MySQL 5.7.17 圧縮バージョンをインストールするときに遭遇する落とし穴

まず、Windows 64 ビット用の最新の MySQL 5.7.17 コミュニティ圧縮バージョンをダウンロードします。

公式ダウンロードアドレス: http://dev.mysql.com/downloads/mysql/

次に、インストール ディレクトリ (C:\Prog\MySQL\ など) に解凍します。次に、my-default.ini を my.ini にコピーし、my.ini を次のように変更します。

[mysql]
デフォルトの文字セット=utf8mb4

[mysqld]
ベースディレクトリ = C:\Prog\MySQL
データディレクトリ = C:\Prog\MySQL\data
ポート = 3306
最大接続数=200
文字セットサーバー=utf8mb4
照合サーバー=utf8mb4_general_ci
デフォルトのストレージエンジン=INNODB
結合バッファサイズ = 128M
ソートバッファサイズ = 2M
読み取りバッファサイズ = 2M 
sql_mode=NO_ENGINE_SUBSTITUTION、STRICT_TRANS_TABLES

次に、「管理者」として cmd を開きます - 「管理者」は非常に重要です。インストール ディレクトリに入り、MySQL サービスをインストールします。

C:\Prog\MySQL\bin>mysqld インストール
サービスが正常にインストールされました。

次に、MySQL サービスを開始します。

ネットスタートMySQL

最初はとても簡単だと思ったのですが、間違いであることが判明しました。

Windows システムの「サービス」を通じて起動された場合、プロンプトは次のようになります。

この問題は本当にイライラさせられました。長い間調べた結果、次のことがわかりました。

Noinstall パッケージを使用して MySQL をインストールした場合は、データ ディレクトリを初期化する必要がある場合があります。

  • MySQL 5.7.7 より前の Windows ディストリビューションには、MySQL データベース内に事前初期化されたアカウントのセットを含むデータ ディレクトリが含まれています。
  • 5.7.7 以降、Noinstall パッケージを使用して実行される Windows インストール操作には、データ ディレクトリは含まれません。データ ディレクトリを初期化するには、セクション 2.10.1.1「mysqld を使用してデータ ディレクトリを手動で初期化する」の手順に従ってください。

詳細については、次の 2 つのリンクを参照してください。

2.3.5.4 データディレクトリの初期化

2.10.1.1 mysqld を使用してデータディレクトリを手動で初期化する

理由がわかったので、データ ディレクトリを手動で初期化してみましょう。

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

次に、順番に:

ネットスタートMySQL
mysql -u ルート -p

見慣れたmysql>が表示されます。

これが同様の問題に遭遇した人々の役に立つことを願っています。その理由は、圧縮パッケージ バージョン 5.7.7 以降では、データ ディレクトリの初期化を手動で行う必要があるように変更されたためです。

すべての人に当てはまるテクニックは存在せず、途中で穴を埋めていく必要があります。

私の環境:

  • Windows 10 64ビット
  • MySQL Community Server 5.7.17 for Windows (x86、64 ビット)、ZIP アーカイブ

(区切り線、上記MySQL 5.7.17がインストールされています。)

最後に、MySQL をテストするための SQLAlchemy を作成しました。

「SQLAlchemy 操作 MySQL テスト」

sqlalchemy から create_engine、テーブル、列、整数、メタデータをインポートします
sqlalchemy.dialects.mysqlからCHARをインポート
sqlalchemy.sqlからインポートを選択

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

CONN = ENGINE.connect()

USERINFO = テーブル('userinfo',
  メタデータ()、
  列('id'、整数、主キー=True、自動増分=True)、
  列('name'、CHAR(24、文字セット='utf8mb4'))、
  mysql_charset = 'utf8mb4')

USER = select([USERINFO])

結果 = CONN.execute(USER)

結果の行:
 print(行名)

結果.close()
CONN.close()

結果が出力されるとアラームが発生することがわかります。

警告: (1366、「行 480 の列 'VARIABLE_VALUE' の文字列値 '\xD6\xD0\xB9\xFA\xB1\xEA...' が正しくありません」)

何が起こっているのか?すべての文字セット設定を n 回確認すれば問題はないはずです...

数え切れないほどの思考と実験を経て、何を発見しましたか?何を見つけましたか? '% charac%'; のような変数を表示する限り、アラームが表示されることがわかりました。

この警告を見てみましょう:

まさにそれじゃないですか?これはMySQLのバグでしょうか? !ああ、神様!

よし! MySQL 5.6.35に戻ります!

警報が消えました!

次に、データベースを再構築し、テーブルを作成して、プログラムをテストします。

これは問題なく、最終的に MySQL 5.6.35 に戻りました。

静かに Python を書いてください。誰も喧嘩しませんし、フロントエンド開発者のような喧嘩もありません。何年も平和で、Python も平和です。

最後に、Visual Studio Code を高く評価したいと思います。

要約する

上記はこの記事の全内容です。私の経験が、同じ問題に遭遇した友人の役に立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることもできます。

以下もご興味があるかもしれません:
  • Mysql 5.7.19 無料インストール バージョンで遭遇した落とし穴 (コレクション)
  • MySQLで論理SQLを置き換える際の落とし穴を回避する方法の詳細な説明
  • MySQL 5.7 にアップグレードした後に開発者が注意しなければならない落とし穴

<<:  JavaScript におけるイベント委譲メカニズムと深いコピーと浅いコピーの簡単な分析

>>:  Centos7にnginxをインストールする方法

推薦する

Alibaba Cloud Ubuntu 16.04でpptpdサービスを構築する方法

1. PPTP VPNを構築するには、ポート1723とGREプロトコルを開く必要があります。 1. ...

MySQL GTID の総合概要

目次01 GTIDの紹介02 GTIDの仕組み03 GTIDの利点と欠点04 テスト環境構築05 テ...

MySQL レプリケーションの利点と原則を詳しく説明します

レプリケーションとは、マスター データベースの DDL および DML 操作をバイナリ ログを介して...

Vue2で配列の変更を検出できない理由と解決策

目次回避策Vue2.0 で 2 つの配列の変更を監視できないのはなぜですか?ソースコード分析ヴュー3...

Firefox ブラウザでバックグラウンド ミュージックを再生するための究極のソリューション (Chrome マルチブラウザ対応)

FirefoxでBGMを再生するための推奨コードがテストに合格しました空のコントロールパネルを開いて...

MYSQLの主キー制約とユニーク制約の違いについて簡単に説明します。

目次主キー制約ユニーク制約主キー制約PRIMARY KRY 主キーは一意です。テーブルには主キーを ...

win10環境でDockerをインストールする実装

1. Docker公式サイトにアクセスするまず、Dockerの公式ウェブサイトにアクセスして、最新の...

Vue の大容量ファイルアップロードとブレークポイント再開アップロードの実装

目次ファイルアップロードのための2つのソリューションファイルストリーム(フォームデータ)に基づくクラ...

アニメーションの再生と一時停止を制御するための CSS のヒント (非常に実用的)

今日は、CSS を使用してアニメーションの再生と一時停止を制御する非常に簡単なトリックを紹介します。...

TypescriptとAxiosに基づくインターフェースリクエスト管理の詳細な説明

目次アイデア傍受を要求するレスポンスインターセプションhttpClient.tsを使用してリクエスト...

CocosCreator 入門チュートリアル: TS で初めてのゲームを作る

目次前提TypeScript と JavaScriptコードエディタの選択TypeScriptを学ぶ...

CSSはヒントボックス、バブルボックス、三角形を作成します

場合によっては、ページにプロンプ​​ト ボックスやバブル ボックスが必要になることがあります。CSS...

MySql における特殊演算子の使用の概要

序文MySQL には次の 4 種類の演算子があります。算術演算子比較演算子論理演算子ビット演算子これ...

Reactソースコードにおけるビット演算について詳しく説明します

目次序文いくつかの一般的なビット操作ビットAND (&)ビットOR (|)ビット否定(~)マ...

VUE 入門 イベント処理の学習

目次1. 関数バインディング2. パラメータと$eventを使用する3. 1つのイベントに複数の関数...