微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql.connector.errors.ProgrammingError: 1064 (42000);创建表

如何解决mysql.connector.errors.ProgrammingError: 1064 (42000);创建表

我正在尝试为数据库创建一些表,但是出现以下错误。如果我删除 actor 表的 middle_namelast_name 字段,则会创建该表,但会为下一个表引发相同的错误

语法错误到底在哪里?

MysqL.connector.errors.ProgrammingError: 1064 (42000): You have an error in your sql Syntax; 
check the manual that corresponds to your MysqL server version for the right Syntax 
to use near 'middle_name VARCHAR(20)
        last_name VARCHAR(20) NOT NULL
        PRIMARY K' at line 3
tables = ["""
    CREATE TABLE IF NOT EXISTS tag (
        name VARCHAR(20) NOT NULL PRIMARY KEY
    );
""","""
    CREATE TABLE IF NOT EXISTS genre (
        name VARCHAR(20) NOT NULL PRIMARY KEY
    );
""","""
    CREATE TABLE IF NOT EXISTS actor (
        first_name VARCHAR(20) NOT NULL
        middle_name VARCHAR(20)
        last_name VARCHAR(20) NOT NULL
        PRIMARY KEY(first_name,last_name)
    );
""","""
    CREATE TABLE IF NOT EXISTS show_tag (
        id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
        tag_name VARCHAR(20) NOT NULL
        show_title VARCHAR(20) NOT NULL
        FOREIGN KEY tag_name REFERENCES tag(name)
        FOREIGN KEY show_title REFERENCES show(title)
    );
""","""
    CREATE TABLE IF NOT EXISTS show_genre (
        id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
        genre_name VARCHAR(20) NOT NULL
        show_title VARCHAR(20) NOT NULL
        FOREIGN KEY genre_name REFERENCES genre(name)
        FOREIGN KEY show_title REFERENCES show(title)
    );
""","""
    CREATE TABLE IF NOT EXISTS show_actor (
        id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
        actor_fn VARCHAR(20) NOT NULL
        actor_ln VARCHAR(20) NOT NULL
        show_title VARCHAR(20) NOT NULL
        FOREIGN KEY (actor_fn,actor_ln) REFERENCES actor(fn,ln)
        FOREIGN KEY (show_title) REFERENCES show(title)
    );
""","""
    CREATE TABLE IF NOT EXISTS show (
        title VARCHAR(20) NOT NULL PRIMARY KEY
        view_rating VARCHAR(8)
        release_date DATE
        summary TEXT
        score DECIMAL(2,1)
    );
"""]

解决方法

您需要在所有字段定义之间使用逗号:

    CREATE TABLE IF NOT EXISTS actor (
        first_name VARCHAR(20) NOT NULL,middle_name VARCHAR(20),last_name VARCHAR(20) NOT NULL
        PRIMARY KEY(first_name,last_name)
    );

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。