欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Windows下安装MySQL 5.7.17压缩版中遇到的坑

程序员文章站 2023-11-29 14:40:16
首先下载最新的mysql 5.7.17 community 压缩版 for windows 64-bit: 官方下载地址: 然后解压到安装目录(如c:\prog\m...

首先下载最新的mysql 5.7.17 community 压缩版 for windows 64-bit:

官方下载地址:

Windows下安装MySQL 5.7.17压缩版中遇到的坑

然后解压到安装目录(如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下安装MySQL 5.7.17压缩版中遇到的坑

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

Windows下安装MySQL 5.7.17压缩版中遇到的坑

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

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

Windows下安装MySQL 5.7.17压缩版中遇到的坑

然后依次:

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

 Windows下安装MySQL 5.7.17压缩版中遇到的坑

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

再来看看这个这个warning:

Windows下安装MySQL 5.7.17压缩版中遇到的坑 

不正是它吗?mysql的bug莫不是?!omg!

好吧!重回mysql 5.6.35!

Windows下安装MySQL 5.7.17压缩版中遇到的坑 

告警不见了!

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

Windows下安装MySQL 5.7.17压缩版中遇到的坑 

这下ok了,最终还是兜了一圈回到了mysql 5.6.35。

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

最后赞一下visual studio code:

Windows下安装MySQL 5.7.17压缩版中遇到的坑

总结

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