1451,“无法删除或更新父行:外键约束失败”

2024-09-28 01:25:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在flask应用程序中遇到这个错误,当时我试图从数据库中删除一个名称。我知道它这样做是因为我试图删除的用户是表中的外键

如何修复此外键约束失败

sqlalchemy.exc.IntegrityError: (MySQLdb._exceptions.IntegrityError) (1451, 'Cannot delete or update a parent row: a foreign key constraint fails (`dreamteam_db`.`employees`, CONSTRAINT `employees_ibfk_2` FOREIGN KEY (`designation_id`) REFERENCES `designations` (`id`))')
[SQL: DELETE FROM designations WHERE designations.id = %s]
[parameters: (5,)]
(Background on this error at: http://sqlalche.me/e/13/gkpj)

这是我的flask app db型号

from flask_login import UserMixin
from werkzeug.security import generate_password_hash, check_password_hash

from app import db, login_manager


class Employee(UserMixin, db.Model):
    """
    Create an Employee table
    """

    # Ensures table will be named in plural and not in singular
    # as is the name of the model
    __tablename__ = 'employees'

    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(60), index=True, unique=True)
    username = db.Column(db.String(60), index=True, unique=True)
    first_name = db.Column(db.String(60), index=True)
    last_name = db.Column(db.String(60), index=True)
    password_hash = db.Column(db.String(128))
    department_id = db.Column(db.Integer, db.ForeignKey('departments.id'))
    designation_id = db.Column(db.Integer, db.ForeignKey('designations.id'))
    is_admin = db.Column(db.Boolean, default=False)

class Department(db.Model):
    """
    Create a Department table
    """

    __tablename__ = 'departments'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(60), unique=True)
    description = db.Column(db.String(200))
    employees = db.relationship('Employee', backref='department',
                                lazy='dynamic')

    def __repr__(self):
        return '<Department: {}>'.format(self.name)

class Designation(db.Model):
    """
    Create a Designation table
    """

    __tablename__ = 'designations'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(60), unique=True)
    description = db.Column(db.String(200))
    employees = db.relationship('Employee', backref='designation',
                                lazy='dynamic')

    def __repr__(self):
        return '<Designation: {}>'.format(self.name)

Tags: keynameselfidtruedbstringindex

热门问题