错误 1005,"无法创建表 - SQLA lchemy to MySQL



尝试从Flask-SQLAlchemy连接到MySQL,但收到

sqlalchemy.exc.InternalError: (pymysql.err.InternalError( (1005, "Can't create table ql12255647.member_courses...键入命令时 db.create_all((

当我使用sqlite:////tmp/test.db时一切都很好,没有错误

需要解决问题。我的代码如下:

member_courses = db.Table('member_courses',
db.Column ('member_id', db.String (80), db.ForeignKey('member.id')),
db.Column ('course_id', db.String (80), db.ForeignKey('course.id')))
class Course(db.Model):
id = db.Column(db.Integer, primary_key=True)
course = db.Column(db.String(80), unique = True)
class Member(db.Model):
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(80), unique = True)
email = db.Column(db.String(80), unique = True)
courses = db.relationship('Course', secondary='member_courses', 
backref='member', 
lazy = 'dynamic')

错误:

sqlalchemy.exc.InternalError: (pymysql.err.InternalError) 
(1005, "Can't create table 'sql12255647.member_courses' (errno: 150)") 
[SQL: 'nCREATE TABLE member_courses (ntmember_id VARCHAR(80), ntcourse_id VARCHAR(80), ntFOREIGN KEY(member_id) REFERENCES member (id), ntFOREIGN KEY(course_id) REFERENCES course (id)n)nn']
(Background on this error at: http://sqlalche.me/e/2j85)

错误代码 1005 表示表创建失败,因为Foreign Key constraint was not correctly formed.要解决此错误,您可能只需要确保外键与主键具有完全相同的类型。

此处接受的答案提供了可以验证的方案的详细概述。

希望这有帮助。

最新更新