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