使用Psycopg时Django报invalid dsn错误:charset连接选项无效
解决Django+Psycopg连接时的"invalid connection option 'charset'"错误
错误原因
这个错误是因为你在数据库配置中使用了PostgreSQL不支持的charset参数——charset是MySQL的专属连接参数,PostgreSQL对应的编码配置参数是client_encoding。
解决步骤
- 打开项目的
settings.py文件,定位到DATABASES配置块。 - 找到配置里包含
charset的部分,将其替换为client_encoding:
错误示例配置:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'your_db_name', 'USER': 'your_db_user', 'PASSWORD': 'your_db_password', 'HOST': 'localhost', 'PORT': '5432', 'OPTIONS': { 'charset': 'utf8mb4', # 此处为问题根源 }, } }
修正后的配置:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'your_db_name', 'USER': 'your_db_user', 'PASSWORD': 'your_db_password', 'HOST': 'localhost', 'PORT': '5432', 'OPTIONS': { 'client_encoding': 'utf8mb4', # 替换为PostgreSQL支持的参数 }, } }
补充说明
- 更换数据库引擎为
postgresql_psycopg2无效的原因:在Django 1.11及以上版本中,django.db.backends.postgresql已经默认使用Psycopg2作为驱动,两者功能完全等价。 - 若需通过PostgreSQL命令行参数设置编码,也可采用以下写法:
'OPTIONS': { 'options': '-c client_encoding=utf8mb4', }
内容的提问来源于stack exchange,提问作者Abhishek Ratnam
相关产品推荐
相关产品推荐

