微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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',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:

总结

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐