Когда я запускаю свой код локально и подключаюсь к базе данных gcloud sql через прокси, все работает.Таблицы удаляются и создаются.Когда я внедряю его в gcloud, я получаю (pymysql.err.InternalError) (1051, «Неизвестная таблица 'ticketing.user_role'») [SQL DROP TABLE user_role].Если я подключусь к базе данных на консоли gcloud, база данных плюс все таблицы будут там.
После развертывания кода в gcloud он не может удалить таблицы?Или есть какая-то конфигурация, которую мне нужно сделать в gcloud?Или что мешает ему уронить стол?- Спасибо
Единственное различие между локальным и развернутым - при создании базы данных.
'unix_socket': '/tmp/{}'.format(app.config['GCLOUD_SQL_INSTANCE'])
'unix_socket': '/cloudsql/{}'.format(app.config['GCLOUD_SQL_INSTANCE'])
Вот код для удаления / создания таблиц
def init_db():
import models
Base.metadata.drop_all(bind=engine)
Base.metadata.create_all(bind=engine)
Если я закомментирую эти строки, он будет работать правильно.Я могу зарегистрироваться / войти в веб-приложение с помощью flask-security.
Вот код для user_role.Используется для защиты колб.
user_role = Table(
'user_role',
Base.metadata,
Column('user_id', Integer, ForeignKey('user.id')),
Column('role_id', Integer, ForeignKey('role.id')))
require.txt
flask==1.1.1
flask-security==3.0.0
flask-sqlalchemy==2.4.0
sqlalchemy-utils==0.34.2
bcrypt==3.1.7
PyMySQL==0.9..3
cryptography==2.7
Трассировка стека
sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1051, "Unknown table 'ticketing.user_role'")
at raise_mysql_exception (/env/lib/python3.7/site-packages/pymysql/err.py:109)
at check_error (/env/lib/python3.7/site-packages/pymysql/protocol.py:220)
at _read_packet (/env/lib/python3.7/site-packages/pymysql/connections.py:684)
at read (/env/lib/python3.7/site-packages/pymysql/connections.py:1075)
at _read_query_result (/env/lib/python3.7/site-packages/pymysql/connections.py:732)
at query (/env/lib/python3.7/site-packages/pymysql/connections.py:517)
at _query (/env/lib/python3.7/site-packages/pymysql/cursors.py:328)
at execute (/env/lib/python3.7/site-packages/pymysql/cursors.py:170)
at do_execute (/env/lib/python3.7/site-packages/sqlalchemy/engine/default.py:552)
at _execute_context (/env/lib/python3.7/site-packages/sqlalchemy/engine/base.py:1249)
at reraise (/env/lib/python3.7/site-packages/sqlalchemy/util/compat.py:152)
at raise_from_cause (/env/lib/python3.7/site-packages/sqlalchemy/util/compat.py:398)
at _handle_dbapi_exception (/env/lib/python3.7/site-packages/sqlalchemy/engine/base.py:1473)
at _execute_context (/env/lib/python3.7/site-packages/sqlalchemy/engine/base.py:1253)
at _execute_ddl (/env/lib/python3.7/site-packages/sqlalchemy/engine/base.py:1050)
at _execute_on_connection (/env/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py:72)
at execute (/env/lib/python3.7/site-packages/sqlalchemy/engine/base.py:988)
at visit_table (/env/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py:1002)
at traverse_single (/env/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py:132)
at visit_metadata (/env/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py:949)
at traverse_single (/env/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py:132)
at _run_visitor (/env/lib/python3.7/site-packages/sqlalchemy/engine/base.py:1615)
at _run_visitor (/env/lib/python3.7/site-packages/sqlalchemy/engine/base.py:2046)
at drop_all (/env/lib/python3.7/site-packages/sqlalchemy/sql/schema.py:4320)
at init_db (/srv/database.py:38)
at <module> (/srv/main.py:77)
at import_app (/env/lib/python3.7/site-packages/gunicorn/util.py:350)
at load_wsgiapp (/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py:41)
at load (/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py:52)
at wsgi (/env/lib/python3.7/site-packages/gunicorn/app/base.py:67)
at load_wsgi (/env/lib/python3.7/site-packages/gunicorn/workers/base.py:138)
at init_process (/env/lib/python3.7/site-packages/gunicorn/workers/base.py:129)
at init_process (/env/lib/python3.7/site-packages/gunicorn/workers/gthread.py:104)
at spawn_worker (/env/lib/python3.7/site-packages/gunicorn/arbiter.py:583)