【问题标题】:mysql.connector.errors.ProgrammingError: 1064 (42000); CREATE TABLEmysql.connector.errors.ProgrammingError: 1064 (42000);创建表
【发布时间】:2021-06-22 03:10:24
【问题描述】:

我正在尝试为数据库创建一些表,但是出现以下错误。如果我删除了演员表的 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 的 MySQL 引用是 here。仔细检查这些陈述。

标签: mysql create-table mysql-error-1064


【解决方案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)
    );

【讨论】:

  • 还有更多。 FOREIGN KEY列名需要用括号括起来,使用show作为表名也有问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
相关资源
最近更新 更多