XAMPP+Python3.7+MySQL运行init.py出现1146表不存在错误
问题排查方案
一、确认init.py的数据库连接目标是否正确
- 检查init.py中MySQL连接参数的
db(或database)字段,确认是否准确指向papinhio-player,注意库名中的减号无需额外转义,驱动会自动处理特殊字符 - 如果连接时未指定数据库,需在执行表操作前显式切换库:
cursor.execute("USEpapinhio-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 EXISTSpapinhio-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
相关产品推荐
相关产品推荐

