windos7安装mysql卡死_Windows下安装MySQL 5.7.17压缩版中遇到的坑

首先下载最新的MySQL 5.7.17 Community 压缩版 for Windows 64-bit:

1f8ee852a80ebe76e873aaae6be8079f.png

然后解压到安装目录(如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

刚开始以为就这么简单,可是幺蛾子的却报错了:

ace967644be7bda339f9022ef2d770b9.png

如果是通过Windows系统的“服务”启动,则提示:

2160a0de016fd511076e5249c2091611.png

问题出得实在是心塞不已,查了许久,原来是:

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”.

具体可参考这两个链接:

原因找到了,那我们来手动Initialize Data Directory一下啊:

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

b0819e28f2fdf958cd1e8280716c9936.png

然后依次:

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次,应该没啥问题了......

2e838516ded95ce66c50da7ed802c23a.png

无数次思考、试验中,发现了啥?发现了啥?发现只要show variables like '%charac%';一下,就会出来一个告警!

再来看看这个这个Warning:

228b747ddfeb1bf1eca53a73d17fa994.png

不正是它吗?MySQL的Bug莫不是?!OMG!

好吧!重回MySQL 5.6.35!

5dd74eaa99e5ddc93c1c402bad2ff457.png

告警不见了!

接着重新建库、建表,测试程序:

9eb30c9b6bc353e8a9fd65c2e6a66508.png

这下OK了,最终还是兜了一圈回到了MySQL 5.6.35。

安静地写Python,没人吵,也不像前端撕来撕去的——岁月静好、Python静好。

最后赞一下Visual Studio Code:

eadb5f5a51394d6e0ac27d80a3619b94.png

总结

以上就是这篇文章的全部内容了,希望自己的一些经验能帮到同样遇到这些问题的朋友们,如果有疑问大家也可以留言交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值