Render部署Flask+SQLAlchemy应用PostgreSQL数据访问故障排查
Flask+SQLAlchemy应用迁移至Render平台后数据库操作报错问题
我开发的Flask+SQLAlchemy应用在本地及Heroku平台运行正常,迁移到Render平台后,除注册、登录等涉及PostgreSQL数据库的操作外,其余功能均正常。本地与Render使用的Python版本都是3.9.13,PostgreSQL版本都是14,数据库表结构和数据也完全一致。
执行登录或注册操作时会触发错误,日志信息如下:
Feb 4 08:29:57 PM [2023-02-04 17:29:57,653] ERROR in app: Exception on /login [POST] Feb 4 08:29:57 PM Traceback (most recent call last): Feb 4 08:29:57 PM File "/opt/render/project/src/.venv/lib/python3.9/site-packages/flask/app.py", line 2073, in wsgi_app Feb 4 08:29:57 PM response = self.full_dispatch_request() Feb 4 08:29:57 PM File "/opt/render/project/src/.venv/lib/python3.9/site-packages/flask/app.py", line 1518, in full_dispatch_request Feb 4 08:29:57 PM rv = self.handle_user_exception(e) Feb 4 08:29:57 PM File "/opt/render/project/src/.venv/lib/python3.9/site-packages/flask/app.py", line 1516, in full_dispatch_request Feb 4 08:29:57 PM rv = self.dispatch_request() Feb 4 08:29:57 PM File "/opt/render/project/src/.venv/lib/python3.9/site-packages/flask/app.py", line 1502, in dispatch_request Feb 4 08:29:57 PM return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args) Feb 4 08:29:57 PM File "/opt/render/project/src/app/views/profile_views.py", line 20, in login Feb 4 08:29:57 PM company = Company.query.filter_by(company_name=company_name).first() Feb 4 08:29:57 PM File "/opt/render/project/src/.venv/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2810, in first Feb 4 08:29:57 PM return self.limit(1)._iter().first() Feb 4 08:29:57 PM File "/opt/render/project/src/.venv/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2894, in _iter Feb 4 08:29:57 PM result = self.session.execute( Feb 4 08:29:57 PM File "/opt/render/project/src/.venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1691, in execute Feb 4 08:29:57 PM conn = self._connection_for_bind(bind) Feb 4 08:29:57 PM File "/opt/render/project/src/.venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1532, in _connection_for_bind Feb 4 08:29:57 PM return self._transaction._connection_for_bind( Feb 4 08:29:57 PM File "/opt/render/project/src/.venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 721, in _connection_for_bind Feb 4 08:29:57 PM self._assert_active() Feb 4 08:29:57 PM File "/opt/render/project/src/.venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active Feb 4 08:29:57 PM raise sa_exc.PendingRollbackError( Feb 4 08:29:57 PM sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (psycopg2.errors.InFailedSqlTransaction) current transaction is aborted, commands ignored until end of transaction block Feb 4 08:29:57 PM Feb 4 08:29:57 PM [SQL: INSERT INTO companies (company_name, password_hash, yandex_disk_token, wb_api_token, wb_api_token2) VALUES (%(company_name)s, %(password_hash)s, %(yandex_disk_token)s, %(wb_api_token)s, %(wb_api_token2)s) RETURNING companies.id] Feb 4 08:29:57 PM [parameters: {'company_name': 'qwe', 'password_hash': 'pbkdf2:sha256:260000$6PWa3LW6YqHOYreb$f09919e59d32770e729ad8baf98a65ffd635db390539e4a89f9a19bbfd04e6ca', 'yandex_disk_token': 0, 'wb_api_token': 0, 'wb_api_token2': 0}] Feb 4 08:29:57 PM (Background on this error at: https://sqlalche.me/e/14/2j85) (Background on this error at: https://sqlalche.me/e/14/7s2a) Feb 4 08:29:57 PM False Feb 4 08:29:57 PM 127.0.0.1 - - [04/Feb/2023:17:29:57 +0000] "POST /login HTTP/1.1" 500 290 "https://costavog.onrender.com/login?next=%2F" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
有没有开发者遇到过类似问题?
项目代码仓库:costavog
站点登录页:costavog.onrender.com/login
内容的提问来源于stack exchange,提问作者Константин Прудников
相关产品推荐
相关产品推荐

