我是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 回答
可能是您需要允许您的用户使用以下内容:
我不建议做一个GRANT ALL . 但是,正如Bear Brown指出的那样,这听起来像是权限,所以请确保您至少拥有相关模式的USAGE和表的SELECT权限 . 首先连接到abc数据库,然后在public上授予select权限: