MySQL で SQLAlchemy を自動インクリメントできない
P粉899950720
P粉899950720 2024-03-21 19:08:36
0
1
345

私は MySQL 8.0 と SQLAlchemy を使用しています。 ID 列が増えませんが、その理由がわかりません。

SQLAlchemy モデル:

リーリー

クラックコード:

リーリー

私が受け取った最初のエラーは次のとおりです:

リーリー

この回答に基づいて、id 列にインデックス パラメーターを追加し、my.ini ファイルを編集して STRICT_TRANS_TABLES モードを終了しました。新しいエラーは次のとおりです:

リーリー

このトピックで見つけたすべての回答は AUTO_INCRMENT を参照していますが、SQLAlchemy ドキュメントには、これが整数の主キーであり false として指定されていないため、ここではこれがデフォルトであるべきであると記載されています。念のため autoincrement=True を追加してみましたが、移行しようとすると、alembic から変更が検出されなかったことが通知されます。

P粉899950720
P粉899950720

全員に返信(1)
P粉621033928

コメントから質問まで:

いいえ、まさにこれが仕組みです。具体的には、次のようなモデルの場合です。 リーリー

alembic リビジョン --autogenerate を生成します リーリー

(明示的に

autoincrement= を指定せずに) ただし、alembic アップグレード ヘッド が SQLAlchemy に実際にテーブルを作成させるとき、SQLAlchemy によって発行される リーリー ###いいえ。上に示したように、Alembic はテーブルが最初に作成されるときに

AUTO_INCRMENT

を正しく処理します。検出されないのは、既存のテーブルを持つ ORM モデルの列が autoincrement=False から autoincrement=True (またはその逆) に変更されたことです。 コミット メッセージ

ここ

: に示されているように、これは既知の動作です。 "バックエンド間で移植できないため、このフラグ p> は列の「自動インクリメント」ステータスの変更をサポートしていないことに注意してください。"

MySQL は ALTER_TABLE によるカラムの AUTO_INCRMENT 属性の変更をサポートしているため、「空」の upgrade

メソッドを変更することで変更できます。 リーリー ###に### リーリー ###レンダリング### リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート