天道酬勤,学无止境

How heroku run python manage.py migrate?

I deployed a simple Django app in Heroku

Steps:

- git push heroku master

- heroku run python manage.py makemigrations ( or + app_name)

it seem to affect:

  0002_main.py:
- Create model Comment
- Remove field status from match
- Remove field quantity from slot
- Add field avatar to account
- Add field slots to match
- Alter field verification_code on account
- Alter field verification_code on slot
- Add field match_object to comment
- Add field user to comment
- Alter index_together for comment (1 constraint(s))

then I run

- heroku run python manage.py migrate

but i received:

  Running migrations:
  No migrations to apply.
  Your models have changes that are not yet reflected in a migration, and so won't be applied.
  Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.

评论

Make sure you have committed migrations file. then run

heroku run python manage.py migrate

You can specify the app name in the following way:

heroku run python manage.py migrate -a <app-name>

Please see this documentation.

Your migration files should be committed to your source control, and never run makemigrations on heroku.

With committed migration files, this problem becomes non existant.

The Heroku filesystem is read-only as per the documentation.

This means that when you disconnect from the dyno the files created by the makemigrations command will be destroyed.

To solve your issue you can:

  1. Commit your migration files to Github(or your source control system) and then run the migrate command on the Heroku shell - recommended
  2. Create the migration files and then run the migration on the heroku bash shell. - NOT RECOMMENDED on production

Either

heroku run python manage.py migrate

or

heroku run python3 manage.py migrate

If needed to specify app name:

heroku run python3 manage.py migrate -a <app-name>

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Django Heroku错误“您的模型所做的更改尚未反映在迁移中”(Django Heroku Error “Your models have changes that are not yet reflected in a migration”)
    问题 我最近在我的应用程序(UserProfile)中添加了一个模型,当我将更改推送到Heroku时,我想我不小心运行了heroku run python manage.py makemigrations 。 现在,当我尝试运行heroku run python manage.py migrate ,出现以下错误 (leaguemaster) benjamins-mbp-2:leaguemaster Ben$ heroku run python manage.py migrate Running `python manage.py migrate` attached to terminal... up, run.1357 Operations to perform: Synchronize unmigrated apps: allauth Apply all migrations: auth, admin, socialaccount, sites, accounts, account, contenttypes, sessions, leagueapp Synchronizing apps without migrations: Creating tables... Installing custom SQL... Installing indexes... Running
  • Django makemigrations和在heroku服务器上迁移不会创建表(django makemigrations and migrate on heroku server don't create tables)
    问题 Python版本2.7 Django版本1.9.7 我已经在heroku上创建了Django应用。 我无法让heroku服务器正确migrate 。 过去,我已经在本地完成所有makemigrations ,然后将其推送到服务器。 过去一直有效。 现在我以为我会选择全部在服务器端进行迁移,因为我根本不在本地运行此应用程序。 我刚刚在models.py为应用程序“ main”创建了一个新模型: from __future__ import unicode_literals from django.db import models class InstagramPhotos(models.Model): imageId = models.IntegerField() userId = models.IntegerField() likes = models.IntegerField() captionText = models.CharField(max_length=200) image = models.ImageField() 将更改推送到服务器后,我运行了此命令,并显示以下输出: heroku run python manage.py makemigrations main 在⬢glacial-beach-50253上运行python manage.py
  • django syncdb 通过后 Heroku 上的“没有这样的表”错误(“no such table” error on Heroku after django syncdb passed)
    问题 我正在尝试将我的 Django 应用程序部署到 Heroku。 迁移在我的本地 Git 中。 当我尝试: git push heroku master heroku run python manage.py syncdb 它应用迁移并提示我创建超级用户,我成功地做到了。 现在该应用程序已启动并正在运行,但是当我尝试登录 Django 管理员时,它会抛出: OperationalError no such table: user_user 当我尝试 heroku run python manage.py makemigrations heroku run python manage.py migrate heroku run python manage.py createsuperuser 它应用所有迁移,但无法创建超级用户抛出: django.db.utils.OperationalError: no such table: user_user 无论哪种方式,我都无法在 Heroku 上设置和迁移数据库。 我的数据库设置是: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } 我的用户模型是:
  • 在 Heroku 部署期间运行 ./manage.py migrate(Running ./manage.py migrate during Heroku deployment)
    问题 我正在开发一个 Django 应用程序,我希望在 Heroku 上部署时运行我的数据库迁移。 到目前为止,我们只是将以下命令放入 Procfile 中: python manage.py migrate 部署迁移时确实会运行,但它们似乎为每个 dyno 运行一次(并且我们使用了多个 dyno)。 因此,数据迁移(与纯模式迁移相反)会运行多次,并且数据会被复制。 部署后运行heroku run python manage.py migrate并不令人满意,因为我们希望数据库始终与代码同步。 在 Heroku 中执行此操作的正确方法是什么? 谢谢。 回答1 这是我的Procfile ,它完全按照您的描述工作: release: python manage.py migrate web: run-program waitress-serve --port=$PORT settings.wsgi:application 请参阅有关定义发布过程的 Heroku 文档:https://devcenter.heroku.com/articles/release-phase#defining-a-release-command 发布命令在创建发布后立即运行,但在发布部署到应用程序的 dyno 结构之前。 这意味着它将在创建新版本的事件之后运行:
  • 如何在Django中重置数据库? 我收到命令“重置”未找到错误(How to reset db in Django? I get a command 'reset' not found error)
    问题 在此处遵循Django by Example教程:http://lightbird.net/dbe/todo_list.html 该教程说: “这改变了我们的表布局,我们必须要求Django重置并重新创建表: manage.py reset todo; manage.py syncdb manage.py reset todo; manage.py syncdb “ 但是,当我运行manage.py reset todo ,出现错误: $ python manage.py reset todo - Unknown command: 'reset' 这是因为我使用的是sqlite3而不是Postgresql吗? 有人可以告诉我重置数据库的命令是什么吗? 命令: python manage.py sqlclear todo返回错误: $ python manage.py sqlclear todo CommandError: App with label todo could not be found. Are you sure your INSTALLED_APPS setting is correct? 所以我在settings.py的INSTALLED_APPS中添加了“ todo”,然后再次运行python manage.py sqlclear todo ,导致此错误:
  • Django 迁移在 heroku 中失败(Django migrations fail in heroku)
    问题 我正在尝试将 Django (1.8) 应用程序部署到 Heroku,运行时 Python 3.4.2。 该应用程序成功运行(除了未创建表的事实),但是在尝试运行 syncdb 时出现以下错误: Running `python manage.py syncdb` attached to terminal... up, run.5851 /app/.heroku/python/lib/python3.4/site-packages/django/core/management /commands/syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9 warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning) Traceback (most recent call last): File "/app/.heroku/python/lib/python3.4/site-packages/django/db/migrations/loader.py", line 157, in check_key return list(self
  • django makemigrations and migrate on heroku server don't create tables
    Python Version 2.7 Django Version 1.9.7 I have created a Django app on heroku. I can't get the heroku server to migrate properly. In the past I have done all the makemigrations locally and then pushed them to the server. It has worked in the past. Now I thought I would choose to do the migrations all on the server side, since I am not running this app locally at all. I just created one new model inside the models.py for app 'main': from __future__ import unicode_literals from django.db import models class InstagramPhotos(models.Model): imageId = models.IntegerField() userId = models
  • Django Heroku Error “Your models have changes that are not yet reflected in a migration”
    I recently added a model to my app (UserProfile) and when I pushed the changes to Heroku, I think I accidentally ran heroku run python manage.py makemigrations. Now when I try to run heroku run python manage.py migrate I get the error below (leaguemaster) benjamins-mbp-2:leaguemaster Ben$ heroku run python manage.py migrate Running `python manage.py migrate` attached to terminal... up, run.1357 Operations to perform: Synchronize unmigrated apps: allauth Apply all migrations: auth, admin, socialaccount, sites, accounts, account, contenttypes, sessions, leagueapp Synchronizing apps without
  • Heroku 创建了表,但是当我迁移时,他说没有创建(Heroku created table but when I'll migrate, he says that doesn't created)
    问题 我在 Heroku 中创建了 syncdb(Python/Django 应用程序),他创建了表 south_migrationhistory, (venv-project)username@username:~/projectapp$ heroku run python manage.py syncdb Running `python manage.py syncdb` attached to terminal... up, run.5529 Syncing... Creating tables ... Creating table auth_permission Creating table auth_group_permissions Creating table auth_group Creating table auth_user_groups Creating table auth_user_user_permissions Creating table auth_user Creating table django_content_type Creating table django_session Creating table django_site Creating table django_admin_log Creating table south
  • Error when running migrations: sqlalchemy.exc.CompileError: Postgresql ENUM type requires a name
    I'm running into this error when I attempt to run upgrade for the first time. It seems to be failing on the gender_types enum, even though I have given it a name attribute. Is there a fix for this? Is there some way to see what SQL is getting generated? This is my models.py and this is the error I get when I run flask.ext.migrate.upgrade. class User(UserMixin, db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) first = db.Column(db.String(64)) last = db.Column(db.String(64)) dob = db.Column(db.Date) street_addr1 = db.Column(db.String(64)) street_addr2 = db.Column(db
  • 运行迁移时出错:sqlalchemy.exc.CompileError: Postgresql ENUM type requires a name(Error when running migrations: sqlalchemy.exc.CompileError: Postgresql ENUM type requires a name)
    问题 当我第一次尝试运行升级时,我遇到了这个错误。 尽管我给了它一个 name 属性,但它似乎在 gender_types 枚举上失败了。 有没有办法解决这个问题? 有什么方法可以查看生成的 SQL 吗? 这是我的models.py,这是我运行flask.ext.migrate.upgrade 时得到的错误。 class User(UserMixin, db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) first = db.Column(db.String(64)) last = db.Column(db.String(64)) dob = db.Column(db.Date) street_addr1 = db.Column(db.String(64)) street_addr2 = db.Column(db.String(64)) city = db.Column(db.String(64)) state = db.Column(db.String(2)) zip = db.Column(db.String(9)) gender = db.Column(db.Enum('M', 'F', name='gender_types')) home_box = db
  • 如何将现有的 django 应用程序/项目部署/迁移到 Heroku 上的生产服务器?(How to deploy / migrate an existing django app / project to a production server on Heroku?)
    问题 我有一个基本的 django 应用程序 (Newsdiffs),它在localhost:8000上运行得很好,使用python website/manage.py runserver但我想将它迁移到 Heroku,但我不知道下一步是什么。 我认为让它在本地运行会转化为在 Heroku 上运行它,但我意识到python website/manage.py runserver正在启动开发设置,我不知道如何告诉它使用主要设置。 我的 Procfile 中的所有内容是: 网络:python 网站/manage.py runserver 在本地,这工作正常,尽管它在 http://127.0.0.1:8000/ 启动它,这可能不是我想要的 Heroku。 那么如何确定在哪里设置主机名和端口呢? 我在应用程序中的任何地方都没有看到。 回答1 两天前我刚刚为自己画了这个清单。 在遵循 Heroku 的 Python 帮助页面中描述的步骤之后,它被组合在一起。 它绝不是确定的或完美的,它会改变,但它是一个有效的踪迹,因为我能够将网站放到网上。 仍然存在一些问题,需要彻底检查,例如,出于安全原因,上传文件的media/目录的位置应该/可以位于您的项目之外(现在它可以工作,但我注意到如果 dyno 休眠,则无法到达文件/稍后由模板显示)。 staticfiles/目录也是如此
  • 将现有站点更新为新的Django 1.5用户模型后,django_admin_log上出现完整性错误(Integrity error on django_admin_log after updating existing site to new Django 1.5 user model)
    问题 显然,将我的新用户表添加到站点后,django_admin_log仍然对auth_user表具有FK。 有什么办法解决这个问题? 我没有在分期或本地看到此问题,所以一定发生了一些奇怪的事情。 追溯(最近一次呼叫过去) : 在get_response response = callback(request(request,* callback_args,** callback_kwargs)中,文件“ /app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py”,第115行呼叫self._nr_instance,args,kwargs中的文件“ /app/.heroku/python/lib/python2.7/site-packages/newrelic-1.10.0.28/newrelic/api/object_wrapper.py”,第220行) 文件“ /app/.heroku/python/lib/python2.7/site-packages/newrelic-1.10.0.28/newrelic/hooks/framework_django.py”,行475,在包装返回中包装(* args,** kwargs) 包装器中的文件“ /app/.heroku/python
  • Deploy static assets to heroku from local machine - can't open file 'manage.py': [Errno 2] No such file or directory
    I am trying deploy my assets files to heroku and I get this output in my command line interface: (nrb_dev) ➜ neurorehabilitation_projects git:(master) ✗ heroku run python manage.py collectstatic Running python manage.py collectstatic on neurorehabilitation.... up, run.5168 python: can't open file 'manage.py': [Errno 2] No such file or directory (nrb_dev) ➜ neurorehabilitation_projects git:(master) ✗ It's strange for me, due to I am currently in the directory/folder in which the manage.py file is located With the order to get an application early deployment, I've choose disable the environment
  • Heroku created table but when I'll migrate, he says that doesn't created
    I made syncdb (Python/Django application) in Heroku and he created table south_migrationhistory, (venv-project)username@username:~/projectapp$ heroku run python manage.py syncdb Running `python manage.py syncdb` attached to terminal... up, run.5529 Syncing... Creating tables ... Creating table auth_permission Creating table auth_group_permissions Creating table auth_group Creating table auth_user_groups Creating table auth_user_user_permissions Creating table auth_user Creating table django_content_type Creating table django_session Creating table django_site Creating table django_admin_log
  • Heroku 上的 Django - / 关系“...”处的编程错误不存在(Django on Heroku - ProgrammingError at / relation “…” does not exist)
    问题 我收到这个错误。 我知道您通常会收到此错误,因为数据库未正确迁移。 当我运行heroku local web ,当我转到localhost:5000时该网站工作正常。 但是,在我使用git push heroku master将应用程序部署到 heroku 后,错误出现了。 换句话说,它适用于我的本地环境。 但是部署到heroku后它不起作用。 我在 heroku 中安装了 Heroku-Postgres 作为附加组件。 什么可能导致这种情况? 回答1 在 bash heroku 中执行迁移和迁移。 在本地项目文件夹中打开终端并给出以下命令: heroku run bash ~$ ./manage.py makemigrations ~$ ./manage.py migrate ~$ exit 回答2 在对模型进行更改然后将此更改部署到 heroku 后,我遇到了同样的错误。 我设法解决此问题的唯一方法是执行以下操作: 在heroku中重置数据库从本地损坏的应用程序的迁移文件夹中删除迁移文件(但保留目录和__init__.py文件) 运行python manage.py makemigrations和python manage.py migrate 。 这将使用干净的迁移文件重新填充迁移文件夹。 将更改推送到 master(确保.gitignore文件中没有迁移目录。
  • 通过 CircleCI 将 Django 应用程序部署到 Heroku:如何迁移数据库?(Deploying Django app to Heroku via CircleCI: How to migrate database?)
    问题 通过 CircleCI 将 Django 应用程序部署到 Heroku 时,如何自动运行python manage.py makemigrations和python manage.py migrate 。 似乎所有命令都在 CircleCI 本地运行,但不在生产中部署的应用程序上运行。 有办法吗? 回答1 python manage.py makemigrations应该在本地运行,您可以将迁移文件与代码一起提交。 关于迁移,打开您的Procfile并添加以下行: release: python manage.py migrate 。 这将告诉 Heroku 在部署新版本的代码之前进行迁移。
  • 将Django应用程序部署到Heroku时Collectstatic错误(Collectstatic error while deploying Django app to Heroku)
    问题 我正在尝试将Django应用程序部署到Heroku,它开始构建,下载和安装所有内容,但这就是收集静态文件时得到的 $ python manage.py collectstatic --noinput remote: Traceback (most recent call last): remote: File "manage.py", line 10, in <module> remote: execute_from_command_line(sys.argv) remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line remote: utility.execute() remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute remote: self.fetch_command(subcommand).run_from_argv(self.argv) remote: File "
  • 即使在运行迁移后,Django 编程错误列也不存在(Django Programming error column does not exist even after running migrations)
    问题 我运行python manage.py makemigrations并得到:未检测到任何更改然后, python manage.py migrate并得到:No migrations to apply。 然后,我尝试将更改推送到生产: git push heroku master Everything up-to-date 然后,在生产中,我重复命令: heroku run python manage.py migrate No migrations to apply。 以防万一,我在生产中运行makemigrations : heroku run python manage.py makemigrations No changes detected 为什么然后我得到一个 ProgrammingError at .... column .... does not exist “未检测到更改”表示数据库与代码一致。 我该如何调试?¡ 回答1 Django 迁移记录在“django_migrations”表下的数据库中。 这就是 Django 如何知道哪些迁移已经应用,哪些还需要应用。 查看数据库中的 django_migrations 表。 应用迁移时可能出现问题。 因此,删除表中具有与“不存在”的列相关的迁移文件名的行。 然后,尝试重新运行迁移。 回答2 我遇到了同样的问题
  • Django migrations fail in heroku
    I'm trying to deploy a Django (1.8) app to Heroku, runtime Python 3.4.2. The app runs succesfully (except the fact that tables are not created), but when trying run the syncdb I get the following error: Running `python manage.py syncdb` attached to terminal... up, run.5851 /app/.heroku/python/lib/python3.4/site-packages/django/core/management /commands/syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9 warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning) Traceback (most recent call last): File "/app/.heroku/python/lib