回答

收藏

django测试应用程序错误-创建测试数据库时出错:创建数据库的权限被拒绝

技术问答 技术问答 112 人阅读 | 0 人回复 | 2023-09-13

当我尝试使用命令测试任何应用程序时(当我尝试使用使用此命令的结构来部署myproject时,我注意到了该应用程序):
2 r7 D5 t& ~  z3 bpython manage.py test appname
% |- W' m6 ~$ P我收到此错误:
; r' {3 _1 S# O, K' v3 w* a' s  xCreating test database for alias 'default'...
  p2 B! z: x/ PGot an error creating the test database: permission denied to create database' t# s# P" L( \. H, N+ s# p
Type 'yes' if you would like to try deleting the test database 'test_finance', or 'no' to cancel
0 |. b8 V. B- ~. U6 C) M8 M, W4 Lsyncdb命令似乎起作用。我在settings.py中的数据库设置:
5 M' O& u; f  z: d3 q. |DATABASES = {
, }5 ?+ ?1 r* n# C! y    'default': {
5 Z- F3 h, s* I9 ]! a        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
# c# l' N1 A6 ^- k5 p' u" ^        'NAME': 'finance',                      # Or path to database file if using sqlite3.
2 T8 y9 w4 A. F        'USER': 'django',                      # Not used with sqlite3.
# I" e  n" ^/ ^5 Y        'PASSWORD': 'mydb123',                  # Not used with sqlite3.# |' W. W/ s% p
        'HOST': '127.0.0.1',                      # Set to empty string for localhost. Not used with sqlite3.6 V  n* f% ^3 ^
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.3 W6 T: q+ |$ z, p
    }
% p8 J) ?) ~/ F}" u2 l( a( q- T0 }2 ?+ U0 }3 m3 T6 H
               
0 L1 t8 j. y2 X! r- @解决方案:" R. s% l/ c, T1 I# ^
                $ W. R. @% f+ \. v

& r0 ~5 u' S8 `* d$ N* {+ u. q, J" b/ S* U
                Django运行测试套件时,在您的情况下,它将创建一个新数据库test_finance。具有用户名的postgres用户django没有创建数据库的权限,因此出现错误消息。
+ V; w* m( a. `) j  @; d0 K. m- |当您运行migrate或时syncdb,Django不会尝试创建finance数据库,因此不会出现任何错误。
& L/ l% ^+ T" {/ p/ p您可以通过以超级用户身份在postgres
" Z  w0 ]. Q& J( h4 g/ S5 B' Zshell中运行以下命令来向django用户添加createdb权限(此堆栈溢出答案的提示)。
: J. d( T  C& ~4 C=> ALTER USER django CREATEDB;7 F# ]6 u% `9 @7 U
注意:ALTER USER <u>
! j5 ?8 w$ f1 @5 _CREATEDB;命令中使用的用户名需要与Django设置文件中的数据库用户匹配。在这种情况下,原始张贴者将用户作为django上述答案。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则