修改模型后如何更新已部署的 django-app 的数据库(postgresql)?
How to update database (postgresql) of a deployed django-app, after modifying a model?
我已部署的 Django 应用程序出现问题。
它工作正常,但我不得不对某些型号的 Charfield 进行小修改(增强 max_length)。我进行了迁移,在本地版本中一切正常。
然后我毫无问题地提交了更改,网络版本的提到的字段现在可以接受更多字符,正如预期的那样,但是每当我单击保存按钮时,都会出现服务器错误。
我假设我必须为网络版本做某种 migration/DB 更新,但我似乎没有找到如何做。
(我正在使用 Django 1.11、postgresql 9.6 和 DigitalOcean)。
编辑
我刚刚意识到 'minor modification' 还包括模型中的字段删除。
简答
你必须运行
python manage.py migrate
也在服务器上。在执行此操作之前,请确保您在本地拥有的所有迁移脚本也存在于服务器上。
说明
更改模型后,您可能在本地运行
python manage.py makemigrations
这会创建迁移脚本,这些脚本将运行相应地形成数据库模式。希望您已将这些新创建的脚本与更改后的模型一起提交给 Git。 (如果没有,您现在仍然可以这样做。)
在 运行ning makemigrations
之后(无论是在提交之前还是之后,这都不重要),您可能已经在本地 运行
python manage.py migrate
这会将迁移脚本应用到尚未应用的数据库。 (已经应用的信息存储在数据库本身中。)
您可能(并且希望)没有将本地数据库签入 Git,因此当您将跟踪的更改推送到远程存储库并将它们拉到您的服务器(或者新的Git 修订已完成),尚未对服务器数据库进行更改。所以你必须在服务器上重复最后一个本地步骤(migrate
)。
进一步阅读
有关详细信息,请参阅 the Django 1.11 documentation w.r.t. migrations. (You can e.g. limit migration creation or migration application to a single Django app, instead of the whole Django project.) To get the grip of these things, I can recomment the free Django Girls tutorial。
我已部署的 Django 应用程序出现问题。
它工作正常,但我不得不对某些型号的 Charfield 进行小修改(增强 max_length)。我进行了迁移,在本地版本中一切正常。
然后我毫无问题地提交了更改,网络版本的提到的字段现在可以接受更多字符,正如预期的那样,但是每当我单击保存按钮时,都会出现服务器错误。
我假设我必须为网络版本做某种 migration/DB 更新,但我似乎没有找到如何做。
(我正在使用 Django 1.11、postgresql 9.6 和 DigitalOcean)。
编辑
我刚刚意识到 'minor modification' 还包括模型中的字段删除。
简答
你必须运行
python manage.py migrate
也在服务器上。在执行此操作之前,请确保您在本地拥有的所有迁移脚本也存在于服务器上。
说明
更改模型后,您可能在本地运行
python manage.py makemigrations
这会创建迁移脚本,这些脚本将运行相应地形成数据库模式。希望您已将这些新创建的脚本与更改后的模型一起提交给 Git。 (如果没有,您现在仍然可以这样做。)
在 运行ning makemigrations
之后(无论是在提交之前还是之后,这都不重要),您可能已经在本地 运行
python manage.py migrate
这会将迁移脚本应用到尚未应用的数据库。 (已经应用的信息存储在数据库本身中。)
您可能(并且希望)没有将本地数据库签入 Git,因此当您将跟踪的更改推送到远程存储库并将它们拉到您的服务器(或者新的Git 修订已完成),尚未对服务器数据库进行更改。所以你必须在服务器上重复最后一个本地步骤(migrate
)。
进一步阅读
有关详细信息,请参阅 the Django 1.11 documentation w.r.t. migrations. (You can e.g. limit migration creation or migration application to a single Django app, instead of the whole Django project.) To get the grip of these things, I can recomment the free Django Girls tutorial。