python - 复制项目后,Django 安装选择了错误的迁移路径名

标签 python django postgresql

我试图通过复制现有的工作 Django 项目在我的 Mac 上创建一个新的 Django 项目。

我试图从新项目中删除对旧项目路径的引用,但是在执行 migrate 或 createsuperuser 时出现错误:

psycopg2.OperationalError: invalid connection option "init_command"

这两个项目都使用名为 myvenv 的虚拟环境。原项目使用MySQL数据库。新的使用已经安装在虚拟环境中的Postgresql。

错误的跟踪历史显示,一些路径显示了 yhistory-server 的正确路径名,一些显示了从中复制新项目的旧项目的路径名:veeuserver。我已经完成了我所有的代码,但看不到它从哪里获取 veeuserver 路径名。

Traceback (most recent call last):
File "/Applications/PyCharm.app/Contents/helpers/pycharm/django_manage.py", line 41, in <module>
run_module(manage_file, None, '__main__', True)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/runpy.py", line 182, in run_module
return _run_module_code(code, init_globals, run_name, mod_spec)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/Users/billnoble/Documents/YHistory-Server/manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
utility.execute()
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/core/management/__init__.py", line 345, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/core/management/base.py", line 348, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 52, in execute
return super(Command, self).execute(*args, **options)
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/core/management/base.py", line 399, in execute
output = self.handle(*args, **options)
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 86, in handle
default_username = get_default_username()
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/contrib/auth/management/__init__.py", line 189, in get_default_username
auth_app.User._default_manager.get(username=default_username)
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/db/models/manager.py", line 122, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/db/models/query.py", line 381, in get
num = len(clone)
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/db/models/query.py", line 240, in __len__
self._fetch_all()
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/db/models/query.py", line 1074, in _fetch_all
self._result_cache = list(self.iterator())
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/db/models/query.py", line 52, in __iter__
results = compiler.execute_sql()
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 846, in execute_sql
cursor = self.connection.cursor()
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/db/backends/base/base.py", line 231, in cursor
cursor = self.make_debug_cursor(self._cursor())
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/db/backends/base/base.py", line 204, in _cursor
self.ensure_connection()
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection
self.connect()
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/db/utils.py", line 95, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/utils/six.py", line 685, in reraise
raise value.with_traceback(tb)
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection
self.connect()
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/db/backends/base/base.py", line 171, in connect
self.connection = self.get_new_connection(conn_params)
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/django/db/backends/postgresql/base.py", line 175, in get_new_connection
connection = Database.connect(**conn_params)
File "/Users/billnoble/Documents/VeeUServer/myvenv/lib/python3.4/site-packages/psycopg2/__init__.py", line 164, in connect
conn = _connect(dsn, connection_factory=connection_factory, async=async)
django.db.utils.OperationalError: invalid connection option "init_command"

最佳答案

我在将网站从 MySQL 迁移到 Postgres 时遇到了同样的问题。关键在于 settings.py 文件,特别是在您指定数据库选项的地方。在 MySQL 中,它看起来像这样:

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'OPTIONS': {
        'read_default_file': '/etc/mysql/my.cnf',
        'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
    },
    'NAME': 'mydatabase',
    'USER': 'username',
    'PASSWORD': password,
    'HOST': '127.0.0.1',
    'POST': '',
    }
}

为了让它与 Postgres 一起工作,我不得不将引擎更改为“django.db.backends.postgresql”,删除选项和 POST,并添加端口:“5432”。现在看起来像这样:

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'mydatabase',
    'USER': 'username',
    'PASSWORD': password,
    'HOST': '127.0.0.1',
    'PORT': '5432'
    }
}

关于python - 复制项目后,Django 安装选择了错误的迁移路径名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38932939/

相关文章:

python - 语法错误: keyword can't be an expression in django

postgresql - 从 Heroku 服务器检索文件

python - 无边界 matplotlib 图

python - 如何将字符串转换为格式化字符串?

python 绘制填充颜色的饼图

postgresql - 让 GeoServer 与 AWS RDS 对话?

python - 如何在 PL/Python 函数中获取数据库用户名

python - 如何强制 django 从 shell 重新启动数据库连接?

django - 错误信息 'mkvirtualenv is not recognized as an internal or external command'

django - 如何制作 "workflow"表格