私は作業ブログシステムを持っています。コメントシステムに追加したい。ID、タイトル、本文を含む投稿モデルで移行を完了しました。
ここで、コメントを追加して、Comment という名前の新しいモデルを作成します。移行を実行すると:
INFO [alembic.runtime.migration] コンテキスト impl MySQLImpl.
INFO [alembic.runtime.migration] 非トランザクション DDL を想定します。
情報 [alembic.env] スキーマの変更は検出されませんでした。
from run import db
class Post(db.Model):
__tablename__ = 'blog.post'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String, nullable=False)
body = db.Column(db.Text, nullable=False)
comments = db.relationship('Comment', backref='blog.post')
from run import db
class Comment(db.Model):
__tablename__ = 'blog.comment'
id = db.Column(db.Integer, primary_key=True)
body = db.Column(db.Text, nullable=False)
post_id = db.Column(db.Integer, db.ForeignKey('blog.post.id'), nullable=False)
私のコードの何が問題なのかわかりません。ドキュメントから関係を取得して編集します。以前は、db にコメント テーブルがありません。
編集 1: 以下のように run 内でコメントを呼び出します: from model.comment import Comment
その後、移行を作成できますが、移行は以下のようなエラーが発生しました:
sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1005、「テーブルを作成できませんblog_db
。blog.comment
(errno: 150 "外部キー制約の形式が正しくありません")」) [SQL: '\nCREATE TABLE blog.comment
(\n\ tid INTEGER NOT NULL AUTO_INCREMENT、\n\tname VARCHAR(255) NOT NULL、\n\tbody TEXT NOT NULL、\n\tcreated DATETIME DEFAULT now()、\n\tstatus INTEGER NOT NULL、\n\tpost_id INTEGER NOT NULL , \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(post_id) REFERENCES blog.post (id)\n)\n\n'] (このエラーの背景: http://sqlalche.me/e /2j85 )