运行Peewee连接MySQL时出现pymysql.err.OperationalError 1105错误如何解决?
错误产生原因
该错误是你连接的MySQL实例本身的限制,和你编写的Peewee连接代码没有直接关系:
- 通常出现在云托管MySQL服务、基于Vitess的分布式MySQL集群场景下,服务商/集群管理者为了避免随意的表结构变更影响稳定性,默认开启了直接DDL操作禁止策略
- 少数情况是你使用的数据库账户未被授予CREATE/ALTER/DROP等DDL相关权限,实例的权限校验策略会直接返回该错误
解决方案
你可以根据自己的使用场景选择对应处理方式:
- 如果使用的是云厂商托管的MySQL(如阿里云RDS、腾讯云CDB、PlanetScale),优先到对应服务的控制台查找表结构变更入口,通过官方提供的工单/变更流程执行DDL操作,部分服务商也支持临时开启「允许直接DDL」的开关,开启后即可在代码中执行结构变更操作
- 如果是自行维护的MySQL集群/本地数据库,联系数据库管理员调整对应账号的权限,授予DDL操作权限,或者关闭集群层面的
direct DDL disabled限制配置 - 如果仅执行你给出的
db.connect()连接代码就触发该错误,说明实例在连接建立阶段就会校验账号权限,直接找管理员调整账号权限策略即可 - 如果是后续调用Peewee的
create_tables()、drop_tables()等操作时报错,确认权限/实例限制放开后再执行即可
内容的提问来源于stack exchange,提问作者doublesquare
相关产品推荐
相关产品推荐

