django - 修改模型后如何更新已部署的 django-app 的数据库(postgresql)?

标签 django git postgresql django-models digital-ocean

我在使用已部署的 Django 应用程序时遇到问题。

它工作正常,但我不得不对某些模型的 Charfield 做一个小修改(增加 max_length)。我进行了迁移,在本地版本中一切正常。

然后我毫无问题地提交了更改,并且提到的 Web 版本字段现在可以接受更多字符,正如预期的那样,但是每当我单击保存按钮时,都会出现服务器错误。

我假设我必须为网络版本做某种迁移/数据库更新,但我似乎没有找到方法。

(我正在使用 Django 1.11、postgresql 9.6 和 DigitalOcean)。

编辑

我刚刚意识到“小修改”还包括模型中的字段删除。

最佳答案

简答

你必须跑

python manage.py migrate

也在服务器上。在执行此操作之前,请确保您在本地拥有的所有迁移脚本也存在于服务器上。

说明

改完模型后,你大概在本地跑

python manage.py makemigrations

这将创建相应地转换数据库架构的迁移脚本。希望您已将这些新创建的脚本连同更改后的模型一起提交给 Git。 (如果没有,您现在仍然可以这样做。)

在运行 makemigrations 之后(无论是在提交之前还是之后,这都不重要),您可能已经在本地运行了

python manage.py migrate

这会将迁移脚本应用到尚未应用的数据库。 (已经应用的信息存储在数据库本身中。)

您可能(并且希望)没有将本地数据库 checkin Git,因此当您将跟踪的更改推送到远程存储库并将它们 pull 到您的服务器上时(或者新的 Git 修订版到达那里),服务器数据库的更改尚未发生。因此,您必须在服务器上重复最后一个本地步骤 (migrate)。

进一步阅读

有关详细信息,请参阅 the Django 1.11 documentation w.r.t. migrations . (例如,您可以将迁移创建或迁移应用程序限制为单个 Django 应用程序,而不是整个 Django 项目。)为了掌握这些东西,我可以推荐免费的 Django Girls tutorial .

关于django - 修改模型后如何更新已部署的 django-app 的数据库(postgresql)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47479865/

相关文章:

python - 提高 Django 中的 INSERT 性能以处理大量大量数据的记录

django - Sorl-thumbnail 错误的 url

python - 为什么聊天应用程序必须是异步的?

postgresql - 如何使用 pgAdmin 添加几何列

android - 从 Python-Django 启动 Android 模拟器

git - 将多个 gitignore 文件包含在一个文件中

vi 丢失的 Git 提交消息

c - 每次提交文件时,都会出现以下错误

postgresql - 将 osm 文件导入 postgres 数据库时出错

database - 用户 "postgres"的密码验证失败