Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用django和VirtualEnvrapper上的postactivate挂钩迁移数据库_Python_Django_Database_Postgresql - Fatal编程技术网

Python 无法使用django和VirtualEnvrapper上的postactivate挂钩迁移数据库

Python 无法使用django和VirtualEnvrapper上的postactivate挂钩迁移数据库,python,django,database,postgresql,Python,Django,Database,Postgresql,我是新的网站创建,并期待着创建一个网站使用django和mysql。我一直在遵循以下教程:(注意:我从一开始就遵循教程,而不仅仅是从那时开始)。当我尝试使用python3 manage.py migrate迁移数据库时,我的问题几乎出现在该页面的底部。这是我得到的错误: 回溯(最近一次调用上次):文件 “/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/backends/base/base.py”, 第1

我是新的网站创建,并期待着创建一个网站使用django和mysql。我一直在遵循以下教程:(注意:我从一开始就遵循教程,而不仅仅是从那时开始)。当我尝试使用
python3 manage.py migrate
迁移数据库时,我的问题几乎出现在该页面的底部。这是我得到的错误:

回溯(最近一次调用上次):文件 “/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/backends/base/base.py”, 第199行,确保连接 self.connect()文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/backends/base/base.py”, 第171行,连接中 self.connection=self.get_new_connection(conn_params)文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/backends/postgresql/base.py”, 第176行,在get_new_连接中 connection=Database.connect(**conn_参数)文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/psycopg2/init.py”, 第164行,连接中 conn=\u connect(dsn,连接工厂=连接工厂,异步=异步)psycopg2.OperationalError:致命:角色 “'sohaib_taskbuster'”不存在

上述异常是以下异常的直接原因:

回溯(最近一次调用last):文件“manage.py”,第22行,在 从命令行(sys.argv)文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/core/management/init.py”中执行, 第367行,从命令行执行命令 utility.execute()文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/core/management/init.py”, 第359行,执行中 self.fetch_命令(子命令)。从_argv(self.argv)文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/core/management/base.py”运行_“, 第294行,来自argv的运行中 self.execute(*args,**cmd_options)文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/core/management/base.py”, 执行中的第345行 output=self.handle(*args,**options)文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/core/management/commands/migrate.py”, 第83行,在手柄中 executor=MigrationExecutor(连接、self.migration\u进程\u回调)文件 “/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/migrations/executor.py”, 第20行,在init self.loader=MigrationLoader(self.connection)文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/migrations/loader.py”, 第52行,在init self.build_graph()文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/migrations/loader.py”, 第203行,内置图 self.applicated_migrations=recorder.applicated_migrations()文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/migrations/recorder.py”, 第65行,在应用程序迁移中 self.sure_schema()文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/migrations/recorder.py”, 第52行,在模式中 if self.Migration.meta.db_表中的self.connection.introspection.table_名称(self.connection.cursor()):
文件 “/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/backends/base/base.py”, 第231行,在光标中 cursor=self.make_debug_cursor(self._cursor())文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/backends/base/base.py”, 第204行,输入光标 self.sure_connection()文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/backends/base/base.py”, 第199行,确保连接 self.connect()文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/utils.py”, 第94行,在退出中 重新播放(dj_exc_类型、dj_exc_值、回溯)文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/utils/six.py”, 第685行,在reraise中 用“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/backends/base/base.py”文件提升值, 第199行,确保连接 self.connect()文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/backends/base/base.py”, 第171行,连接中 self.connection=self.get_new_connection(conn_params)文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/django/db/backends/postgresql/base.py”, 第176行,在get_new_连接中 connection=Database.connect(**conn_参数)文件“/Users/sohaiba/.virtualenvs/env1/lib/python3.5/site packages/psycopg2/init.py”, 第164行,连接中 conn=\u connect(dsn,connection\u factory=connection\u factory,async=async)django.db.utils.OperationalError:致命:角色 “'sohaib_taskbuster'”不存在

(注意角色中双引号内的单引号,用户名应仅为sohaib_taskbuster)现在,在我的设置中,我已设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': get_env_variable('DATABASE_NAME'),
        'USER': get_env_variable('DATABASE_USER'),
        'PASSWORD': get_env_variable('DATABASE_PASSWORD'),
        'HOST':'',
        'PORT':'',
    }
}
其中get_env_变量为:

def get_env_variable(var_name):
    try:
        return os.environ[var_name]
    except KeyError:
        error_msg = "Set the %s environment variable" % var_name
        raise ImproperlyConfigured(error_msg)
也就是说,它应该使用postactivate钩子来提取数据库的相关信息。这是我的postactivate挂钩的外观:

export DJANGO_SETTINGS_MODULE="taskbuster.settings.development"
export DATABASE_NAME=‘taskbuster_db’
export DATABASE_USER=‘sohaib_taskbuster’
export DATABASE_PASSWORD=‘********’
使用此方法会引发上述错误,但如果我在设置中使用以下选项:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'taskbuster_db',
        'USER': 'sohaib_taskbuster',
        'PASSWORD': '**********',
        'HOST':'',
        'PORT':'',
    }
}

然后迁移工作正常。我不知道为什么会这样。有没有办法解决这个问题?(如果有什么不同,我使用的是postgresql)

检查
数据库用户
变量上的单引号,它们看起来与第二个数据库配置中的常规单引号大不相同。试着用正确的引号。我肯定它们是正确的引号。我认为它们看起来不同的唯一原因是因为不同的字体。邮报