Heroku Postgres上的Flask迁移失败,出现编程错误

Heroku Postgres上的Flask迁移失败,出现编程错误,flask,heroku,flask-sqlalchemy,heroku-postgres,flask-migrate,Flask,Heroku,Flask Sqlalchemy,Heroku Postgres,Flask Migrate,我在更新Heroku Postgres的模式时遇到一些问题。我已经在Heroku Dyno上部署了一个工作应用程序,之前有一个Postgres DB在工作。我对数据库模式做了一些更改(添加了新列),并将迁移更改提交到本地迁移文件夹。在我的本地主机上,升级的数据库工作正常。但是,在将应用程序部署到Heroku时,我得到一个sqlalchemy.exc.ProgrammingError:(psycopg2.errors.UndefinedColumn)列不存在错误 我尝试了以下命令 heroku运行

我在更新Heroku Postgres的模式时遇到一些问题。我已经在Heroku Dyno上部署了一个工作应用程序,之前有一个Postgres DB在工作。我对数据库模式做了一些更改(添加了新列),并将迁移更改提交到本地迁移文件夹。在我的本地主机上,升级的数据库工作正常。但是,在将应用程序部署到Heroku时,我得到一个
sqlalchemy.exc.ProgrammingError:(psycopg2.errors.UndefinedColumn)列不存在
错误

我尝试了以下命令
heroku运行-mydyno flask数据库历史记录
,它显示正确的迁移历史记录
heroku run-a mydyno flask db migrate
它显示了以下内容-

INFO  [alembic.autogenerate.compare] Detected added table 'phishing_email'
INFO  [alembic.autogenerate.compare] Detected added index 'ix_phishing_email_created_at' on '['created_at']'
INFO  [alembic.autogenerate.compare] Detected added index 'ix_phishing_email_receiver_address' on '['receiver_address']'
INFO  [alembic.autogenerate.compare] Detected added index 'ix_phishing_email_sender_address' on '['sender_address']'
INFO  [alembic.ddl.postgresql] Detected sequence named 'user_user_id_seq' as owned by integer column 'user(user_id)', assuming SERIAL and omitting                                                                                             
INFO  [alembic.ddl.postgresql] Detected sequence named 'email_address_email_id_seq' as owned by integer column 'email_address(email_id)', assuming SERIAL and omitting                                                                          
INFO  [alembic.autogenerate.compare] Detected added column 'email_address.active'                                       
INFO  [alembic.autogenerate.compare] Detected added column 'email_address.email_password'                               
INFO  [alembic.autogenerate.compare] Detected added column 'email_address.last_mailbox_size'                            
INFO  [alembic.autogenerate.compare] Detected added column 'email_address.last_updated'                                 
INFO  [alembic.autogenerate.compare] Detected added column 'email_address.phishing_mail_detected'                       
INFO  [alembic.autogenerate.compare] Detected added column 'user.is_active'                                             
INFO  [alembic.autogenerate.compare] Detected added column 'user.is_admin'                                              
INFO  [alembic.autogenerate.compare] Detected added column 'user.last_logged_in'                                          Generating /app/migrations/versions/4e74c3c15c25_.py ...  done                        
在日志显示之后,当我执行
heroku run-a mydyno flask db升级时,迁移过程似乎检测到了新添加的表和列

INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.                                                          
INFO  [alembic.runtime.migration] Will assume transactional DDL.
所以看起来一切都很顺利,但是在
heroku-a mydyno logs-tail中部署我的应用程序时,日志显示了一个错误-

2020-11-13T15:21:01.291956+00:00 app[web.1]: sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedColumn) column user.last_logged_in does not exist                                                                                       
2020-11-13T15:21:01.291956+00:00 app[web.1]: LINE 1: ...r_password, "user".created_at AS user_created_at, "user".las... 2020-11-13T15:21:01.291956+00:00 app[web.1]: ^                                                                          
2020-11-13T15:21:01.291957+00:00 app[web.1]:                                                                            
2020-11-13T15:21:01.291958+00:00 app[web.1]: [SQL: SELECT "user".user_id AS user_user_id, "user".username AS user_username, "user".password AS user_password, "user".created_at AS user_created_at, "user".last_logged_in AS user_last_logged_in, "user".is_admin AS user_is_admin, "user".is_active AS user_is_active                                                  
2020-11-13T15:21:01.291958+00:00 app[web.1]: FROM "user"]
这表示该列不存在。我做错什么了吗?或者是否有适当的程序将本地数据库更改升级到Heroku Postgres?我已确保截断Heroku Postgres上的所有表

在此部署之前,应用程序数据库以前一直在工作,但为了更清楚起见,我的Flask配置对象包含
SQLALCHEMY\u database\u URI=os.environ.get('database\u URL')
,该对象在Heroku应用程序的我的配置变量中设置为环境变量

任何帮助都将不胜感激,谢谢


编辑:运行
heroku run-a mydno flask db history
显示所有迁移都存在,
heroku run-a mydyno flask db current
显示正确的修订号,但架构仍然没有更新。

我最终使用CLI删除所有表,并使用
pg_dump-h[host]-U[user][db]>。/dump.out
导出我的本地数据库

将转储文件中的所有用户更改为my Heroku数据库用户

psql-h[heroku主机]-U[postgres用户][db名称]


我很确定这不是正确的方法(因为它会删除alembic_版本),但这对我来说很有效。

我也有类似的问题。我将
sslmode=require
添加到我的
数据库\u URL

#config.py
basedir=os.path.abspath(os.path.dirname(_文件__))
加载dotenv(os.path.join(basedir,.env'))
类配置(对象):
SQLALCHEMY\u DATABASE\u URI=os.environ.get('DATABASE\u URL?sslmode=require')或\
'sqlite://'+os.path.join(basedir'app.db')
``