flaskでpostメソッドを実施すると外部キー制約周りでエラーが発生する
flaskでAPIを作成しており、POSTメソッドを実装してみたところ、下記のようなエラーが発生しましたが、解決できず困っています。
- エラー内容
sqlalchemy.exc.IntegrityError: (_mysql_exceptions.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`mydb`.`page`, CONSTRAINT `page_ibfk_1` FOREIGN KEY (`belong_id`) REFERENCES `belong` (`id`))') [SQL: 'INSERT INTO page (id, title, belong_id, created_at, updated_at) VALUES (%s, %s, %s, %s, %s)'] [parameters: (0, 'test', '', datetime.datetime(2019, 1, 2, 6, 16, 56, 752822), datetime.datetime(2019, 1, 2, 6, 16, 56, 752822))] (Background on this error at: http://sqlalche.me/e/gkpj) 127.0.0.1 - - [02/Jan/2019 06:16:56] "POST /pages?title=test HTTP/1.1" 500 -
- flask POSTメソッド実装部分
@app.route('/pages',methods=['POST']) def post_page(): title = request.args.get('title','') belong_id = request.args.get('belong_id','') page_repository = PageRepository(access_point) page = page_repository.post(title,belong_id)
- 実行内容
curl -X POST -H "Content-Type: application/json" http://0.0.0.0:8080/pages?belong_id=1&title=test
- o/rマッパー部分抜粋
class Relation(Base): __tablename__ = 'relation' id = Column('id', Integer, primary_key=True) code_link = Column('code_link', Text) memo = Column('memo', Text) class Belong(Base): __tablename__ = 'belong' id = Column('id', Integer, primary_key=True) relation_order = Column('relation_order', Integer, ForeignKey('relation.id', onupdate="CASCASE", ondelete="CASCASE")) page = relationship('Page') Base.metadata.create_all(engine) class Page(Base): __tablename__ = 'page' id = Column('id', Integer, primary_key=True) title = Column('title', String(200)) belong_id = Column('belong_id', Integer, ForeignKey('belong.id', onupdate="CASCASE", ondelete="CASCASE")) created_at = Column(DateTime) updated_at = Column(DateTime)
relationテーブル、belongテーブルにはそれぞれ1レコード(id=1)データがそれぞれ既に入っています。
また、最初に入れていたデータがおかしいのかと思い、一度テーブルを削除、作り直しをしてデータを入れ直してもみましたが、同じエラーが発生しています。
恐れ入りますが何かご教授いただけますと幸いです。
よろしくお願いいたします。