相关疑难解决方法(0)

Mysql错误1452 - 无法添加或更新子行:外键约束失败

我有一个奇怪的问题.我正在尝试将一个外键添加到一个引用另一个表的表中,但由于某种原因它失败了.由于我对MySQL的了解有限,唯一可能怀疑的是在不同的表上有一个外键引用我想要引用的那个.

这是我的表关系的图片,通过phpMyAdmin:Relationships生成

SHOW CREATE TABLE对两个表都进行了查询,sourcecodes_tags是带有外键的表,sourcecodes是引用的表.

CREATE TABLE `sourcecodes` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `user_id` int(11) unsigned NOT NULL,
 `language_id` int(11) unsigned NOT NULL,
 `category_id` int(11) unsigned NOT NULL,
 `title` varchar(40) CHARACTER SET utf8 NOT NULL,
 `description` text CHARACTER SET utf8 NOT NULL,
 `views` int(11) unsigned NOT NULL,
 `downloads` int(11) unsigned NOT NULL,
 `time_posted` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 PRIMARY KEY (`id`),
 KEY `user_id` (`user_id`),
 KEY `language_id` (`language_id`), …
Run Code Online (Sandbox Code Playgroud)

mysql foreign-keys mysql-error-1452

234
推荐指数
9
解决办法
45万
查看次数

SQLAlchemy删除级联完整性错误

我想delete一个order从我的数据库,同时删除所有ordereditems,涉及到它.

with contextlib.closing(DBSession()) as session:
    try:
        returnedOrder = session.query(ORDER).filter_by(ORDERSID=orderID).first()
        session.delete(returnedOrder)
        session.commit()
    except exc.SQLAlchemyError, error:
        session.rollback()
        raise_database_error(error)
    else:
        return '1'
Run Code Online (Sandbox Code Playgroud)

这是相关的classes(一些项目已被删除):

class ORDER(Base):
    __tablename__ = 'ORDERS'

    ORDERSID = Column(Integer, primary_key=True)
    ORDERSCOST = Column(Numeric(19, 4), nullable=False)

    ORDEREDITEM = relationship("ORDEREDITEM")  


class ORDEREDITEM(Base):
    __tablename__ = 'ORDEREDITEMS'
    __table_args__ = (
        Index('AK_ORDERSID_ITEMID', 'ORDERSID', 'ITEMSID', unique=True),
    )

    ORDEREDITEMSID = Column(Integer, primary_key=True)
    ITEMSID = Column(ForeignKey(u'ITEMS.ITEMSID'), nullable=False, index=True)
    ORDERSID = Column(ForeignKey(u'ORDERS.ORDERSID', ondelete=u'CASCADE'), nullable=False)
    ORDEREDITEMSQUANTITY = Column(Integer, nullable=False)

    ORDER = relationship(u'ORDER')
Run Code Online (Sandbox Code Playgroud)

该 …

python mysql sqlalchemy sql-delete

5
推荐指数
1
解决办法
3295
查看次数