##バージョン
Flask==1.0.2 Flask-Bcrypt==0.7.1 Flask-Migrate==2.1.1
##つまづいている点
現在、Python,Flaskを使ったwebアプリを開発しており、Herokuにデプロイすることができたのですが、DBのカラム追加や削除をFlask-migrationを用いてどのようにしてHeroku上のDBに反映させれば良いのか可能であればご教示いただきたいと考えております。
##試したこと
まずはローカル環境で新しいマイグレーションファイルを作る。
$flask db revision -m "Add new column" Generating /Users/blog/migrations/versions/2572ee835554_add_new_column.py ... done
今回、userテーブルにtestカラムを追加する。
"""Add new column Revision ID: 2572ee835554 Revises: 49042ad93512 Create Date: 2019-06-30 08:46:08.225023 """ from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision = '2572ee835554' down_revision = '49042ad93512' branch_labels = None depends_on = None def upgrade(): op.add_column('users', sa.Column('test', sa.String(length=140),nullable=True)) def downgrade(): op.drop_column('users', 'test')
flask db upgradeを実行する。
(mynewflaskenv)noMacBook-puro:blog $ flask db upgrade INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade cf042b55174e -> 49042ad93512, change to text INFO [alembic.runtime.migration] Running upgrade 49042ad93512 -> 2572ee835554, Add new column
herokuにデプロイした後、
heroku run flask db upgrade --app appname
を実行すると下記のエラーが表示され、heroku上でdbのマイグレーションを実行できず、カラム追加が反映されない。
cursor.execute(statement, parameters) 2019-06-30T00:05:43.392654+00:00 app[web.1]: sqlalchemy.exc.ProgrammingError: (psycopg2.errors.DuplicateTable) relation "users" already exists 2019-06-30T00:05:43.392669+00:00 app[web.1]: [SQL: '\nCREATE TABLE users (\n\tid SERIAL NOT NULL, \n\tprofile_image VARCHAR(128) NOT NULL
cursor.execute(statement, parameters) 2019-06-30T00:05:46.004413+00:00 app[web.1]: sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedColumn) column users.test does not exist 2019-06-30T00:05:46.004415+00:00 app[web.1]: LINE 1: ...users.info AS users_info, users.url AS users_url, users.test...
あなたの回答
tips
プレビュー