明明代码运行成功,Navicat里却看不到表?因为你电脑上偷偷藏了两个MySQL!这篇超级简单的方法,带你彻底清理干净,重装一个统一的MySQL 8.0。

一、遇到什么问题?

很多新手会碰到这个怪事:

  • 运行Python代码,显示“表创建成功”,毫无报错。

  • 打开Navicat(数据库可视化工具),刷新好几遍,就是找不到刚才建的表。

  • 在Python里用SHOW TABLES查看,表又确实存在。

原因很简单:你的电脑里有两个MySQL在打架!
一个老版本(比如5.5)和一个新版本(比如9.3)。
Python连到了老版本,表都建在老库里;Navicat连到了新版本,所以你自然看不到。


二、解决办法:全部删干净,只装一个MySQL 8.0

既然两个已经乱套了,最直接的办法就是全部卸载,重新安装一个统一的MySQL 8.0。
下面按顺序操作,跟着做就行。

第一步:备份你还有用的数据(如果有)

如果老数据库里还有重要数据,先导出备份(没有就跳过)。

第二步:停止所有MySQL服务

  1. 按键盘 Win + R,输入 services.msc,回车。

  2. 在服务列表里,找到所有名字里带 MySQL 的服务。

  3. 每一个都右键 → 停止,然后再右键 → 属性 → 启动类型选 禁用

第三步:卸载所有MySQL程序

连接成功后,左侧数据库列表里会出现 python 数据库,点开 → 表,就能看到 user_tb,里面还有刚才插入的“李四”数据。

这样,Python和Navicat就看着同一个数据库了,问题彻底解决!

现在你的Python和Navicat终于能愉快地一起工作了!如果还有问题,欢迎留言交流。

  • 打开 控制面板 → 程序和功能

  • 看到任何名字含 MySQL 的程序,都右键卸载。

  • 比如:MySQL Server 5.5MySQL Server 9.3MySQL 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-python

    2. 写个简单的测试代码

    创建一个 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 → 搞定。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐