MariaDB 在创建外键时抛出语法错误

MariaDB throwing syntax error when creating foreign key

我目前正在尝试学习有关数据库的一两件事,所以我已经完成了 W3Schools PHP 和 SQL 课程,现在我开始着手创建自己的小应用,一个论坛,一个简单的。

但是,我 运行 遇到了外键问题。我已经阅读了 MariaDB 关于外键和约束的文档,但我无法说出为什么会出现此错误。原因很可能是我盯着代码看了太多,现在我再也看不到我的错误了。

所以现在我正在寻求帮助,当我在我的 XAMPP PHPMyAdmin 上 运行 宁这篇 SQL 时,我得到以下错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''fk_topics_to_titles'
    FOREIGN KEY (titleID) REFERENCES titles(id)
' at line 8

那是一个语法错误,我已经评论了发生错误的区域,我的完整脚本如下所示:

DROP DATABASE IF EXISTS eForum;

CREATE DATABASE eForum;

CREATE TABLE IF NOT EXISTS eForum.titles(
    id int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    titleName varchar(50) NOT NULL,
    creator varchar(100) NOT NULL,
    createDate TIMESTAMP,
    lastUpdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS eForum.topics(
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
    topicName VARCHAR(50) NOT NULL,
    creator VARCHAR(100) NOT NULL,
    createDate TIMESTAMP,
    lastUpdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    titleID INT UNSIGNED NOT NULL, /*after this is where the error occurs*/
    CONSTRAINT 'fk_topics_to_titles'
        FOREIGN KEY (titleID) REFERENCES titles(id)
        ON DELETE CASCADE
        ON UPDATE RESTRICT
)ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS eForum.threads(
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
    threadName VARCHAR(50) NOT NULL,
    threadText TEXT NOT NULL,
    threadImage VARCHAR(100) NOT NULL DEFAULT 'sloth',
    creator VARCHAR(100) NOT NULL,
    creatorCorp VARCHAR(10) NOT NULL DEFAULT 'Pikachu',
    createDate TIMESTAMP,
    lastUpdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    topicID INT UNSIGNED NOT NULL,
    CONSTRAINT 'fk_threads_to_topics'
        FOREIGN KEY (topicID) REFERENCES topics(id)
        ON DELETE CASCADE
        ON UPDATE RESTRICT
) ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS eForum.posts(
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
    postName VARCHAR(50) NOT NULL,
    postText TEXT NOT NULL,
    postCreator varchar(40) NOT NULL,
    postCorp varchar(30) NOT NULL DEFAULT 'get in corp',
    createDate TIMESTAMP,
    lastUpdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    threadID INT UNSIGNED NOT NULL,
    CONSTRAINT 'fk_posts_to_threads'
        FOREIGN KEY (threadID) REFERENCES threads(id)
        ON DELETE CASCADE
        ON UPDATE RESTRICT
)ENGINE = InnoDB;

我很确定我已经设法从此处的文档复制结构:https://mariadb.com/kb/en/mariadb/foreign-keys/ 据我所知,无论我使用的是 tinyint、shortint 还是常规 int 都没有关系。

请帮帮我,我完全迷路了,我已经解决了所有与此相关的问题 post(这是建议的,但我似乎找不到有类似问题的人

提前致谢

CONSTRAINT 名称周围的反义词,而不是引号。