情景
-
假设你有一个项目 A
-
你之前部署了项目 A,里面包含了两个数据库的表 table1 和 table2,他们都顺利部署
-
然后你相加一些功能,于是又创建了一张表 table3
-
于是再部署的时候发现 table3 即使执行了 makemigrations 和 migrate 命令也无法创建成功,但是在 django 的 admin 界面却能够看到 table3,就像下面这样:
-
这里的 userinfo 就是我说的 table3,在 admin 界面能看到,但是你就是无法操作
-
报错的信息如下:
ProgrammingError at /admin/nnsh_backend_new/userinfo/
relation "nnsh_backend_new_userinfo" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "nnsh_backend_new_userinfo...
^
Request Method: GET
Request URL: http://nus-nnsh-backend-new-1fec143342b2.herokuapp.com/admin/nnsh_backend_new/userinfo/
Django Version: 4.0.1
Exception Type: ProgrammingError
Exception Value:
relation "nnsh_backend_new_userinfo" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "nnsh_backend_new_userinfo...
^
Exception Location: /app/.heroku/python/lib/python3.9/site-packages/django/db/backends/utils.py, line 85, in _execute
Python Executable: /app/.heroku/python/bin/python
Python Version: 3.9.16
Python Path:
['.',
'/app/.heroku/python/bin',
'/app',
'/app/.heroku/python/lib/python39.zip',
'/app/.heroku/python/lib/python3.9',
'/app/.heroku/python/lib/python3.9/lib-dynload',
'/app/.heroku/python/lib/python3.9/site-packages']
Server time: Sun, 16 Jul 2023 09:51:46 +0000
原因
操作
在你的本地terminal:
手动
heroku run python manage.py makemigrations YOUR_PROJECT_NAME
heroku run python manage.py migrate
- 这里的
YOUR_PROJECT_NAME
注意不是上面的 YOUR_APP_NAME
;这个是你本地项目文件夹的名称
自动
release: python manage.py makemigrations YOUR_PROJECT_NAME && python manage.py migrate
- 然后重新
git push
你的 heroku 项目,就会完成迁移的