"""create user and character tables
Revision ID: d9195a797c20
Revises:
Create Date: 2025-11-11 17:11:40.317544
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import mysql
import sqlmodel
# revision identifiers, used by Alembic.
revision: str = 'd9195a797c20'
down_revision: Union[str, Sequence[str], None] = None
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_index(op.f('user_id'), table_name='user_info')
op.drop_constraint(op.f('user_info_ibfk_1'), 'user_info', type_='foreignkey')
op.create_foreign_key(None, 'user_info', 'users', ['user_id'], ['id'])
op.alter_column('users', 'account',
existing_type=mysql.VARCHAR(collation='utf8mb4_unicode_ci', length=50),
type_=sqlmodel.sql.sqltypes.AutoString(length=100),
existing_nullable=False)
op.alter_column('users', 'password',
existing_type=mysql.VARCHAR(collation='utf8mb4_unicode_ci', length=100),
type_=sqlmodel.sql.sqltypes.AutoString(length=255),
existing_nullable=False)
# ### end Alembic commands ###
def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column('users', 'password',
existing_type=sqlmodel.sql.sqltypes.AutoString(length=255),
type_=mysql.VARCHAR(collation='utf8mb4_unicode_ci', length=100),
existing_nullable=False)
op.alter_column('users', 'account',
existing_type=sqlmodel.sql.sqltypes.AutoString(length=100),
type_=mysql.VARCHAR(collation='utf8mb4_unicode_ci', length=50),
existing_nullable=False)
op.drop_constraint(None, 'user_info', type_='foreignkey')
op.create_foreign_key(op.f('user_info_ibfk_1'), 'user_info', 'users', ['user_id'], ['id'], ondelete='CASCADE')
op.create_index(op.f('user_id'), 'user_info', ['user_id'], unique=True)
# ### end Alembic commands ###
PS F:\Programmer\python\MyAi> alembic revision --autogenerate -m "init tables"
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
ERROR [alembic.util.messaging] Target database is not up to date.
FAILED: Target database is not up to date.
PS F:\Programmer\python\MyAi> alembic upgrade head
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> d9195a797c20, create user and character tables
Traceback (most recent call last):
File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "E:\python\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "E:\python\Lib\site-packages\pymysql\cursors.py", line 153, in execute
result = self._query(query)
File "E:\python\Lib\site-packages\pymysql\cursors.py", line 322, in _query
conn.query(q)
~~~~~~~~~~^^^
File "E:\python\Lib\site-packages\pymysql\connections.py", line 575, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "E:\python\Lib\site-packages\pymysql\connections.py", line 826, in _read_query_result
result.read()
~~~~~~~~~~~^^
File "E:\python\Lib\site-packages\pymysql\connections.py", line 1203, in read
first_packet = self.connection._read_packet()
File "E:\python\Lib\site-packages\pymysql\connections.py", line 782, in _read_packet
packet.raise_for_error()
~~~~~~~~~~~~~~~~~~~~~~^^
File "E:\python\Lib\site-packages\pymysql\protocol.py", line 219, in raise_for_error
err.raise_mysql_exception(self._data)
~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
File "E:\python\Lib\site-packages\pymysql\err.py", line 150, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.OperationalError: (1553, "Cannot drop index 'user_id': needed in a foreign key constraint")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "E:\python\Scripts\alembic.exe\__main__.py", line 6, in <module>
sys.exit(main())
~~~~^^
File "E:\python\Lib\site-packages\alembic\config.py", line 1033, in main
CommandLine(prog=prog).main(argv=argv)
~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
File "E:\python\Lib\site-packages\alembic\config.py", line 1023, in main
self.run_cmd(cfg, options)
~~~~~~~~~~~~^^^^^^^^^^^^^^
File "E:\python\Lib\site-packages\alembic\config.py", line 957, in run_cmd
fn(
~~^
config,
^^^^^^^
*[getattr(options, k, None) for k in positional],
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**{k: getattr(options, k, None) for k in kwarg},
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "E:\python\Lib\site-packages\alembic\command.py", line 483, in upgrade
script.run_env()
~~~~~~~~~~~~~~^^
File "E:\python\Lib\site-packages\alembic\script\base.py", line 545, in run_env
util.load_python_file(self.dir, "env.py")
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "E:\python\Lib\site-packages\alembic\util\pyfiles.py", line 116, in load_python_file
module = load_module_py(module_id, path)
File "E:\python\Lib\site-packages\alembic\util\pyfiles.py", line 136, in load_module_py
spec.loader.exec_module(module) # type: ignore
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 1026, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "F:\Programmer\python\MyAi\alembic\env.py", line 63, in <module>
run_migrations_online()
~~~~~~~~~~~~~~~~~~~~~^^
File "F:\Programmer\python\MyAi\alembic\env.py", line 57, in run_migrations_online
context.run_migrations()
~~~~~~~~~~~~~~~~~~~~~~^^
File "<string>", line 8, in run_migrations
File "E:\python\Lib\site-packages\alembic\runtime\environment.py", line 946, in run_migrations
self.get_context().run_migrations(**kw)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "E:\python\Lib\site-packages\alembic\runtime\migration.py", line 627, in run_migrations
step.migration_fn(**kw)
~~~~~~~~~~~~~~~~~^^^^^^
File "F:\Programmer\python\MyAi\alembic\versions\d9195a797c20_create_user_and_character_tables.py", line 24, in upgrade
op.drop_index(op.f('user_id'), table_name='user_info')
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<string>", line 8, in drop_index
File "<string>", line 3, in drop_index
File "E:\python\Lib\site-packages\alembic\operations\ops.py", line 1142, in drop_index
return operations.invoke(op)
~~~~~~~~~~~~~~~~~^^^^
File "E:\python\Lib\site-packages\alembic\operations\base.py", line 441, in invoke
return fn(self, operation)
File "E:\python\Lib\site-packages\alembic\operations\toimpl.py", line 121, in drop_index
operations.impl.drop_index(
~~~~~~~~~~~~~~~~~~~~~~~~~~^
operation.to_index(operations.migration_context),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**kw,
^^^^^
)
^
File "E:\python\Lib\site-packages\alembic\ddl\impl.py", line 464, in drop_index
self._exec(schema.DropIndex(index, **kw))
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\python\Lib\site-packages\alembic\ddl\impl.py", line 246, in _exec
return conn.execute(construct, params)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute
return meth(
self,
distilled_parameters,
execution_options or NO_OPTIONS,
)
File "E:\python\Lib\site-packages\sqlalchemy\sql\ddl.py", line 180, in _execute_on_connection
return connection._execute_ddl(
~~~~~~~~~~~~~~~~~~~~~~~^
self, distilled_params, execution_options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1529, in _execute_ddl
ret = self._execute_context(
dialect,
...<4 lines>...
compiled,
)
File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context
return self._exec_single_context(
~~~~~~~~~~~~~~~~~~~~~~~~~^
dialect, context, statement, parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context
self._handle_dbapi_exception(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
e, str_statement, effective_parameters, cursor, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
~~~~~~~~~~~~~~~~~~~~~~~^
cursor, str_statement, effective_parameters, context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "E:\python\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute
cursor.execute(statement, parameters)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "E:\python\Lib\site-packages\pymysql\cursors.py", line 153, in execute
result = self._query(query)
File "E:\python\Lib\site-packages\pymysql\cursors.py", line 322, in _query
conn.query(q)
~~~~~~~~~~^^^
File "E:\python\Lib\site-packages\pymysql\connections.py", line 575, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "E:\python\Lib\site-packages\pymysql\connections.py", line 826, in _read_query_result
result.read()
~~~~~~~~~~~^^
File "E:\python\Lib\site-packages\pymysql\connections.py", line 1203, in read
first_packet = self.connection._read_packet()
File "E:\python\Lib\site-packages\pymysql\connections.py", line 782, in _read_packet
packet.raise_for_error()
~~~~~~~~~~~~~~~~~~~~~~^^
File "E:\python\Lib\site-packages\pymysql\protocol.py", line 219, in raise_for_error
err.raise_mysql_exception(self._data)
~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
File "E:\python\Lib\site-packages\pymysql\err.py", line 150, in raise_mysql_exception
raise errorclass(errno, errval)
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1553, "Cannot drop index 'user_id': needed in a foreign key constraint")
[SQL:
DROP INDEX user_id ON user_info]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
最新发布