Windows下裝置MySQL 5.7.17緊縮版中遇到的坑。本站提示廣大學習愛好者:(Windows下裝置MySQL 5.7.17緊縮版中遇到的坑)文章只能為提供參考,不一定能成為您想要的結果。以下是Windows下裝置MySQL 5.7.17緊縮版中遇到的坑正文
首先下載最新的MySQL 5.7.17 Community 緊縮版 for Windows 64-bit:
官方下載地址:http://dev.mysql.com/downloads/mysql/
然後解壓到裝置目錄(如C:\Prog\MySQL\)。接上去復制my-default.ini為my.ini,修正my.ini如下:
[mysql] default-character-set=utf8mb4 [mysqld] basedir = C:\Prog\MySQL datadir = C:\Prog\MySQL\data port = 3306 max_connections=200 character-set-server=utf8mb4 collation-server=utf8mb4_general_ci default-storage-engine=INNODB join_buffer_size = 128M sort_buffer_size = 2M read_rnd_buffer_size = 2M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
之後用“管理員身份”翻開cmd——“管理員身份”這很重要,進入裝置目錄裝置MySQL服務:
C:\Prog\MySQL\bin>mysqld install Service successfully installed.
然後啟動MySQL服務:
net start mysql
剛開端以為就這麼復雜,可是幺蛾子的卻報錯了:
假如是經過Windows零碎的“服務”啟動,則提示:
問題出得真實是心塞不已,查了許久,原來是:
If you installed MySQL using the Noinstall package, you may need to initialize the data directory:
Windows distributions prior to MySQL 5.7.7 include a data directory with a set of preinitialized accounts in the mysql database. As of 5.7.7, Windows installation operations performed using the Noinstall package do not include a data directory. To initialize the data directory, use the instructions at Section 2.10.1.1, “Initializing the Data Directory Manually Using mysqld”.詳細可參考這兩個鏈接:
2.3.5.4 Initializing the Data Directory
2.10.1.1 Initializing the Data Directory Manually Using mysqld
緣由找到了,那我們來手動Initialize Data Directory一下啊:
mysqld --defaults-file=C:\Prog\MySQL\my.ini --initialize-insecure
然後順次:
net start mysql mysql -u root -p
熟習的mysql>應該就出來了。
希望對遇到相似坑的人有所協助,究其緣由就是5.7.7及當前的緊縮包版本,更改為需求手動Initialize Data Directory了。
技無一招鮮,坑要一路填。
我的環境:
Windows 10 64-bit MySQL Community Server 5.7.17 for Windows (x86, 64-bit), ZIP Archive(聯系線,以上MySQL 5.7.17就算裝置終了了。)
最先手賤,搞個SQLAlchemy測試MySQL:
"""SQLAlchemy操作MySQL測試""" from sqlalchemy import create_engine, Table, Column, Integer, MetaData from sqlalchemy.dialects.mysql import CHAR from sqlalchemy.sql import select ENGINE = create_engine('mysql+pymysql://root:@127.0.0.1:3306/test?charset=utf8mb4') CONN = ENGINE.connect() USERINFO = Table('userinfo', MetaData(), Column('id', Integer, primary_key=True, autoincrement=True), Column('name', CHAR(24, charset='utf8mb4')), mysql_charset='utf8mb4') USER = select([USERINFO]) RESULT = CONN.execute(USER) for row in RESULT: print(row.name) RESULT.close() CONN.close()
後果發現輸入後果的同時有個報警:
Warning: (1366, "Incorrect string value: '\xD6\xD0\xB9\xFA\xB1\xEA...' for column 'VARIABLE_VALUE' at row 480")
這是怎樣回事呢?要說各種字符集設置都反省n次,應該沒啥問題了......
有數次考慮、實驗中,發現了啥?發現了啥?發現只需show variables like '%charac%';一下,就會出來一個告警!
再來看看這個這個Warning:
不正是它嗎?MySQL的Bug莫不是?!OMG!
好吧!重回MySQL 5.6.35!
告警不見了!
接著重新建庫、建表,測試順序:
這下OK了,最終還是兜了一圈回到了MySQL 5.6.35。
安靜地寫Python,沒人吵,也不像前端撕來撕去的——歲月靜好、Python靜好。
最後贊一下Visual Studio Code:
總結
以上就是這篇文章的全部內容了,希望自己的一些經歷能幫到異樣遇到這些問題的冤家們,假如有疑問大家也可以留言交流。