You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XAMPP+Python3.7+MySQL运行init.py出现1146表不存在错误

问题排查方案

一、确认init.py的数据库连接目标是否正确

  • 检查init.py中MySQL连接参数的db(或database)字段,确认是否准确指向papinhio-player,注意库名中的减号无需额外转义,驱动会自动处理特殊字符
  • 如果连接时未指定数据库,需在执行表操作前显式切换库:cursor.execute("USE papinhio-player;")

二、检查init.py的代码执行顺序

  • 确认init.py中是否先执行了针对settings表的读写操作,再执行表创建逻辑?如果顺序倒置,就会触发1146表不存在错误
  • 对比单独运行正常的settings.py,对齐表创建、数据插入的执行顺序

三、multi=True多查询失效问题排查

  • 执行多语句SQL时,必须确保每个语句用分号分隔,且无语法错误
  • 执行后需遍历结果集才能完成所有语句的执行,示例代码:
    cursor.execute(multi_sql_script, multi=True)
    # 遍历处理所有执行结果,否则后续语句可能未执行
    for res in cursor:
        if res.with_rows:
            pass  # 按需处理查询结果
    
  • 检查创建数据库的SQL语句是否正确,推荐加上IF NOT EXISTS避免重复创建报错:CREATE DATABASE IF NOT EXISTS papinhio-player;
  • 确认连接MySQL的用户拥有创建数据库的权限(XAMPP默认root用户具备该权限,若使用自定义用户需核实)

四、事务与自动提交配置检查

  • 若init.py中设置了conn.autocommit(False)开启事务,需在创建表/插入数据后执行conn.commit()完成持久化,否则仅当前连接能看到变更,phpMyAdmin等外部会话无法识别
  • 单独运行的settings.py可能默认开启自动提交,而init.py未配置,导致表结构未被持久化

五、Python MySQL驱动兼容性验证

  • 确认Python3.7使用的MySQL驱动版本兼容,比如mysql-connector-python需选择适配3.7的版本(如8.0.28),避免版本不兼容导致SQL执行异常
  • 重装驱动命令:pip uninstall mysql-connector-python && pip install mysql-connector-python==8.0.28

内容的提问来源于stack exchange,提问作者Chris P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:20:31