Python 烧瓶SQLAlchemy外键约束格式不正确
我编写了以下代码:Python 烧瓶SQLAlchemy外键约束格式不正确,python,flask,Python,Flask,我编写了以下代码: class User(db.Model): id = db.Column(db.Integer, primary_key=True) first_name = db.Column(db.String(255), nullable=True) last_name = db.Column(db.String(255), nullable=True) email = db.Column(db.String(255), unique=True, nul
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(255), nullable=True)
last_name = db.Column(db.String(255), nullable=True)
email = db.Column(db.String(255), unique=True, nullable=False)
password_expires_at = db.Column(db.DateTime, nullable=False)
active = db.Column(db.Boolean, nullable=False)
created_at = db.Column(db.DateTime, nullable=False,
default=datetime.utcnow)
updated_at = db.Column(db.DateTime, nullable=False,
default=datetime.utcnow)
session_id = db.Column(db.Integer, db.ForeignKey('session.id'),
nullable=False)
class Session(db.Model):
id = db.Column(db.String(255), primary_key=True)
ip = db.Column(db.String(255), unique=True, nullable=False)
user = db.relationship('User', backref='session')
db.create_all()
运行Flask时,我遇到以下错误:
sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (1005, 'Can\'t create table `bugbot`.`user` (errno: 150 "Foreign key constraint is incorrectly formed")')
[SQL:
CREATE TABLE user (
id INTEGER NOT NULL AUTO_INCREMENT,
first_name VARCHAR(255),
last_name VARCHAR(255),
email VARCHAR(255) NOT NULL,
password_expires_at DATETIME NOT NULL,
active BOOL NOT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
session_id INTEGER NOT NULL,
PRIMARY KEY (id),
UNIQUE (email),
CHECK (active IN (0, 1)),
FOREIGN KEY(session_id) REFERENCES session (id)
)
]
我按照教程学习了这段代码,所以我不知道我做错了什么。有人能帮我吗?您试图约束的列(
User.session\u id
)的类型是Integer
,而它引用的列(session.id
)的类型是String
!这就是它失败的原因,请使这两种类型兼容并再次运行,它应该可以工作。是否定义了表的主键?请包含指向教程的链接。你能试试这个吗:user=db.relationship('user',backref='session',lazy=True)