首页 文章

与postgres的Django 1.8迁移错误

提问于
浏览
0

我是Django的新手,我正在尝试使用Django(1.8)在Postgre中创建表

以下是我的模型类

class Student(models.Model):
        name = models.CharField(max_length = 50)
        degree = models.CharField(max_length = 50)
        numofsubs = models.IntegerField()
        namesofsubs= models.CharField(max_length = 50)
        details = models.CharField(max_length = 50)

class Meta:

      db_table = "student"

views.py

def addStudent(request):
    student = Student(name = request.name, degree = request.degree ,
     numofsubs = request.numofsubs , nameofsubs = request.nameofparams , details = request.details)
    student.save()
    print 'data saved'

在我尝试运行python manage.py migrate之后发生这些更改后,我得到 django.db.utils.ProgrammingError: permission denied for relation django_migrations

以下是堆栈跟踪

Traceback(最近一次调用最后一次):文件“manage.py”,第10行,在execute_from_command_line(sys.argv)文件中“/usr/lib/ckan/default/local/lib/python2.7/site-packages/django /core/management/init.py“,第338行,在execute_from_command_line utility.execute()文件中”/usr/lib/ckan/default/local/lib/python2.7/site-packages/django/core/management/init执行self.fetch_command(子命令).run_from_argv(self.argv)文件“.us” /base.py“,第390行,在run_from_argv中自执行(* args,** cmd_options)文件”/usr/lib/ckan/default/local/lib/python2.7/site-packages/django/core/management /base.py“,第441行,执行输出= self.handle(* args,** options)文件”/usr/lib/ckan/default/local/lib/python2.7/site-packages/django/core /management/commands/migrate.py“,第93行,在句柄 Actuator 中= MigrationExecutor(connection,self.migration_progress_callback)文件”/usr/lib/ckan/default/local/lib/python2.7/site-package s / django / db / migrations / executor.py“,第19行,在init self.loader = MigrationLoader(self.connection)文件”/usr/lib/ckan/default/local/lib/python2.7/site-packages /django/db/migrations/loader.py“,第47行,在init self.build_graph()文件中”/usr/lib/ckan/default/local/lib/python2.7/site-packages/django/db/migrations /loader.py“,第180行,在build_graph中self.applied_migrations = recorder.applied_migrations()文件”/usr/lib/ckan/default/local/lib/python2.7/site-packages/django/db/migrations/recorder .py“,第60行,在applied_migrations中返回set(tuple(x)for x in self.migration_qs.values_list(”app“,”name“))文件”/ usr / lib / ckan / default / local / lib / python2 .7 / site-packages / django / db / models / query.py“,第162行,in iter self._fetch_all()文件”/usr/lib/ckan/default/local/lib/python2.7/site-packages /django/db/models/query.py“,第965行,在_fetch_all self._result_cache = list(self.iterator())文件”/usr/lib/ckan/default/local/lib/python2.7/site- package / django / db / models / query.py“,第1220行,其中在compiler.results_iter()中的行的erator:文件“/usr/lib/ckan/default/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py”,第783行,in result_iter results = self.execute_sql(MULTI)文件“/usr/lib/ckan/default/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py”,第829行,在execute_sql中cursor.execute(sql,params)文件“/usr/lib/ckan/default/local/lib/python2.7/site-packages/django/db/backends/utils.py”,第79行,执行返回super( CursorDebugWrapper,self).execute(sql,params)文件“/usr/lib/ckan/default/local/lib/python2.7/site-packages/django/db/backends/utils.py”,第64行,执行返回self.cursor.execute(sql,params)文件“/usr/lib/ckan/default/local/lib/python2.7/site-packages/django/db/utils.py”,第97行,在第六个出口 . reraise(dj_exc_type,dj_exc_value,traceback)文件“/usr/lib/ckan/default/local/lib/python2.7/site-packages/django/db/backends/utils.py”,第64行,在execute return self中 . cursor.execute(sql,params)django.db.utils.Programm ingError:关系django_migrations的权限被拒绝

我的 settings.py 有以下内容用于数据库连接

DATABASES = {
    'default': {
       # 'ENGINE': 'django.db.backends.sqlite3',
       # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'abc',
        'USER': 'xyz',
        'PASSWORD': 'xxxxx',
        'HOST': 'localhost',
        'PORT': 5432,
    }
}

请指导我的应用程序有什么问题 .

谢谢

2 回答

  • 0

    可能是您需要允许您的用户使用以下内容:

    GRANT ALL ON DATABASE abc TO xyz;
    
  • 1

    我不建议做一个GRANT ALL . 但是,正如Bear Brown指出的那样,这听起来像是权限,所以请确保您至少拥有相关模式的USAGE和表的SELECT权限 . 首先连接到abc数据库,然后在public上授予select权限:

    GRANT SELECT ON ALL TABLES IN SCHEMA public TO xyz
    

相关问题