解决MySQL多版本冲突:Python连错数据库?教你彻底重装MySQL 8.0
明明代码运行成功,Navicat里却看不到表?因为你电脑上偷偷藏了两个MySQL!这篇超级简单的方法,带你彻底清理干净,重装一个统一的MySQL 8.0。
一、遇到什么问题?
很多新手会碰到这个怪事:
-
运行Python代码,显示“表创建成功”,毫无报错。
-
打开Navicat(数据库可视化工具),刷新好几遍,就是找不到刚才建的表。
-
在Python里用
SHOW TABLES查看,表又确实存在。
原因很简单:你的电脑里有两个MySQL在打架!
一个老版本(比如5.5)和一个新版本(比如9.3)。
Python连到了老版本,表都建在老库里;Navicat连到了新版本,所以你自然看不到。
二、解决办法:全部删干净,只装一个MySQL 8.0
既然两个已经乱套了,最直接的办法就是全部卸载,重新安装一个统一的MySQL 8.0。
下面按顺序操作,跟着做就行。
第一步:备份你还有用的数据(如果有)
如果老数据库里还有重要数据,先导出备份(没有就跳过)。
第二步:停止所有MySQL服务
-
按键盘
Win + R,输入services.msc,回车。 -
在服务列表里,找到所有名字里带
MySQL的服务。 -
每一个都右键 → 停止,然后再右键 → 属性 → 启动类型选 禁用。
第三步:卸载所有MySQL程序
连接成功后,左侧数据库列表里会出现 python 数据库,点开 → 表,就能看到 user_tb,里面还有刚才插入的“李四”数据。
这样,Python和Navicat就看着同一个数据库了,问题彻底解决!
现在你的Python和Navicat终于能愉快地一起工作了!如果还有问题,欢迎留言交流。
-
打开 控制面板 → 程序和功能。
-
看到任何名字含
MySQL的程序,都右键卸载。 -
比如:
MySQL Server 5.5、MySQL Server 9.3、MySQL Connector ...等,全部卸掉。 -
第四步:手动删除残留文件和文件夹
卸载后,有些文件夹不会被自动删掉,要手动删:
要删的路径 说明 C:\Program Files\MySQL安装目录 C:\Program Files (x86)\MySQL32位安装目录(如果有) C:\ProgramData\MySQL重点:这是隐藏文件夹,直接在地址栏输入这个路径就能进去 C:\my.ini或C:\my.cnf配置文件 小技巧:
C:\ProgramData是隐藏的,你可以在文件夹地址栏直接粘贴C:\ProgramData然后回车,就能进去了。第五步:删除残留的MySQL服务(可选但推荐)
以管理员身份打开命令提示符(右键“开始” → “命令提示符(管理员)”),输入:
-
sc query | findstr /i "mysql"如果看到还有MySQL服务名(比如
MySQL),就删掉它(把下面命令里的服务名改成你看到的): -
sc delete MySQL第六步:重启电脑
一定要重启,否则可能有进程还在内存里。
-
三、安装新的MySQL 8.0
- 去官网https://dev.mysql.com/downloads/mysql/选择 Windows (x86, 64-bit), MSI Installer 版本下载。
-
mysql -u root -p然后输入你刚才设的密码,看到
mysql>提示符就成功了。
再输入: -
SELECT VERSION();显示
8.0.xx就没问题。 -
四、让Python连接这个新的MySQL 8.0
1. 安装Python连接库
在命令提示符里输入:
-
pip install mysql-connector-python2. 写个简单的测试代码
创建一个
test.py文件,内容如下(把密码换成你自己的): -
import mysql.connector conn = mysql.connector.connect( user='root', password='你设置的密码', # 改成你的密码 host='127.0.0.1', port=3306 ) c = conn.cursor() # 创建数据库 c.execute("CREATE DATABASE IF NOT EXISTS python") print("数据库创建成功") # 使用这个数据库 c.execute("USE python") # 创建表 c.execute('''CREATE TABLE IF NOT EXISTS user_tb( user_id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255), gender VARCHAR(255) )''') print("表创建成功") # 插入一条数据 c.execute("INSERT INTO user_tb (name, gender) VALUES ('李四', '女')") conn.commit() print("数据插入成功") # 查询看看 c.execute("SELECT * FROM user_tb") for row in c: print(row) conn.close()运行这个脚本:
-
python test.py如果看到类似输出:
-
数据库创建成功 表创建成功 数据插入成功 (1, '李四', '女')说明Python已经连上新的MySQL 8.0了。
3. 在Navicat里验证
打开Navicat,新建连接:
-
主机:
127.0.0.1或localhost -
端口:
3306 -
用户名:
root -
密码:你设的密码
-
五、常见小问题
问:安装新MySQL时提示3306端口被占用怎么办?
说明你之前没删干净。回去重新执行第二步到第五步,特别是删C:\ProgramData\MySQL文件夹,然后重启再装。问:Python连接报错
Authentication plugin 'caching_sha2_password' not supported
升级驱动:pip install --upgrade mysql-connector-python就行。问:Navicat连接不上,提示认证错误
Navicat版本太老了,可以升级Navicat,或者在MySQL里执行下面命令改一下(临时方案): -
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';六、总结
-
出现“代码成功,界面看不到表”的问题,99%是因为电脑里有多个MySQL。
-
不要尝试修补,直接把所有MySQL统统删干净,重装一个最新稳定版(8.0)。
-
按本文步骤:停止服务 → 卸载程序 → 删残留 → 重启 → 安装8.0 → 配Python → 搞定。
更多推荐


所有评论(0)