Djago错误与PostgreSQL迁移

时间:2017-05-15 20:34:01

标签: django postgresql migration

我试图用PostgreSQL运行我的Django应用程序,因为我的数据库引擎早先使用了sqlite, 这是我的settings.py。我正在通过教程https://djangogirls.gitbooks.io/django-girls-tutorial-extensions/optional_postgresql_installation/

进行安装
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'djangogirls',
        'USER': 'cherzik',
        'PASSWORD': 'ADMIN',
        'HOST': 'localhost',
    }
}

这是错误,请帮忙

d:\py\djangogirls>python manage.py migrate
System check identified some issues:

WARNINGS:
blog.Comment.created_date: (fields.W161) Fixed default value provided.
        HINT: It seems you set a fixed date / time / datetime value as default f
or this field. This may not be what you want. If you want to have the current da
te as default, use `django.utils.timezone.now`
blog.Post.created_date: (fields.W161) Fixed default value provided.
        HINT: It seems you set a fixed date / time / datetime value as default f
or this field. This may not be what you want. If you want to have the current da
te as default, use `django.utils.timezone.now`
Traceback (most recent call last):
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\backends\base\base.py", line 213, in ensure_connection
    self.connect()
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\backends\base\base.py", line 189, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\backends\postgresql\base.py", line 176, in get_new_connection
    connection = Database.connect(**conn_params)
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\psycopg2\__init__.py", line 130, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\core\management\__init__.py", line 363, in execute_from_command_line
    utility.execute()
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\core\management\__init__.py", line 355, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\core\management\base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\core\management\base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\core\management\commands\migrate.py", line 83, in handle
    executor = MigrationExecutor(connection, self.migration_progress_callback)
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\migrations\executor.py", line 20, in __init__
    self.loader = MigrationLoader(self.connection)
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\migrations\loader.py", line 52, in __init__
    self.build_graph()
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\migrations\loader.py", line 209, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\migrations\recorder.py", line 65, in applied_migrations
    self.ensure_schema()
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\migrations\recorder.py", line 52, in ensure_schema
    if self.Migration._meta.db_table in self.connection.introspection.table_name
s(self.connection.cursor()):
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\backends\base\base.py", line 254, in cursor
    return self._cursor()
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\backends\base\base.py", line 229, in _cursor
    self.ensure_connection()
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\backends\base\base.py", line 213, in ensure_connection
    self.connect()
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\utils\six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\backends\base\base.py", line 213, in ensure_connection
    self.connect()
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\backends\base\base.py", line 189, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\django\db\backends\postgresql\base.py", line 176, in get_new_connection
    connection = Database.connect(**conn_params)
  File "C:\Users\Кирюшик\AppData\Local\Programs\Python\Python35\lib\site-package
s\psycopg2\__init__.py", line 130, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError

3 个答案:

答案 0 :(得分:0)

这是我的模型,如果我将created_date替换为timezone.now就像你说的那样反正有错误

from django.db import models
from django.utils import timezone
# Create your models here.

class Post(models.Model):
    author = models.ForeignKey('auth.User')
    title = models.CharField(max_length = 200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now())
    published_date = models.DateTimeField(blank = True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()


    def __str__(self):
        return self.title

    def approved_comments(self):
        return self.comments.filter(approved_comment = True)

class Comment(models.Model):
    post = models.ForeignKey('blog.Post', related_name='comments')
    author = models.CharField(max_length=200)
    text = models.TextField()
    created_date = timezone.now()
    approved_comment = models.BooleanField(default=False)

    def approve(self):
        self.approved_comment = True
        self.save()

    def __str__(self):
        return self.text

答案 1 :(得分:0)

像这样更改created_date字段,

created_date = models.DateField(default=timezone.now)

created_date = models.DateField(default=datetime.date.today)

删除功能的paranthesis。 使用paranthesis,只有在models.py加载时才会调用该函数。 如果我们删除了paranthesis,我们将一个callable传递给模型,每次保存一个新实例时都会调用它。

答案 2 :(得分:0)

在评论和帖子模型中更改您的created_date字段。

created_date = models.DateField(default=timezone.now)