私は MySQL 8.0 と SQLAlchemy を使用しています。 ID 列が増えませんが、その理由がわかりません。
SQLAlchemy モデル:
リーリークラックコード:
リーリー私が受け取った最初のエラーは次のとおりです:
リーリー この回答に基づいて、id 列にインデックス パラメーターを追加し、my.ini ファイルを編集して STRICT_TRANS_TABLES
モードを終了しました。新しいエラーは次のとおりです:
このトピックで見つけたすべての回答は AUTO_INCRMENT
を参照していますが、SQLAlchemy ドキュメントには、これが整数の主キーであり false として指定されていないため、ここではこれがデフォルトであるべきであると記載されています。念のため autoincrement=True
を追加してみましたが、移行しようとすると、alembic から変更が検出されなかったことが通知されます。
P粉6210339282024-03-22 13:25:49
コメントから質問まで:
いいえ、まさにこれが仕組みです。具体的には、次のようなモデルの場合です。 リーリー
alembic リビジョン --autogenerate は
を生成します
リーリー
autoincrement= を指定せずに) ただし、
alembic アップグレード ヘッド が SQLAlchemy に実際にテーブルを作成させるとき、SQLAlchemy によって発行される
リーリー
###いいえ。上に示したように、Alembic はテーブルが最初に作成されるときに
を正しく処理します。検出されないのは、既存のテーブルを持つ ORM モデルの列が autoincrement=False
から autoincrement=True
(またはその逆) に変更されたことです。
コミット メッセージ
: に示されているように、これは既知の動作です。 "バックエンド間で移植できないため、このフラグ p> は列の「自動インクリメント」ステータスの変更をサポートしていないことに注意してください。"
MySQL は ALTER_TABLE によるカラムの AUTO_INCRMENT 属性の変更をサポートしているため、「空」の upgrade
メソッドを変更することで変更できます。 リーリー ###に### リーリー ###レンダリング### リーリー