Django中settings.py配置MySQL数据库Schema报错原因咨询
Django MySQL数据库配置错误原因解析
问题场景
在Django的settings.py中配置MySQL数据库连接时,为设置Schema添加了如下配置:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'options': '-c search_path=xxx', }, 'NAME': 'xxx', 'USER': 'xxx', 'PASSWORD': 'xxx', 'HOST':'localhost', 'PORT':'3306', } }
触发了错误:
connection = Database.connect(**conn_params) TypeError: Connection.__init__() got an unexpected keyword argument 'options'
错误原因
- 参数概念混淆:
search_path是PostgreSQL用于指定Schema搜索路径的专属参数,MySQL中不存在这个概念。MySQL里的“Schema”本质就是数据库本身,直接通过NAME配置项指定数据库名即可,无需额外设置类似search_path的参数。 - 非法连接参数:Django的MySQL数据库后端会把
OPTIONS内的配置直接传递给底层MySQL客户端驱动(如mysqlclient),但options并不是该驱动初始化连接时支持的合法参数,因此底层连接函数会抛出“收到意外关键字参数”的错误。
内容的提问来源于stack exchange,提问作者Mohammed Baashar
相关产品推荐
相关产品推荐

