我在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)
目前没有回答
相关问题 更多 >
编程相关推荐