在服务器中执行SQL脚本ERROR mysql

问题描述 投票:0回答:1

我已经创建了一个 EER 并想要转发它,但我不断收到此错误。这是错误按摩器 sql 的脚本

Executing SQL script in server
ERROR: Error 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 '
  CONSTRAINT `fk_artwork_artist`
    FOREIGN KEY (`artist_id`)
    REFERENCE...' at line 10
SQL Code:
        CREATE TABLE IF NOT EXISTS `a_work`.`artwork` (
          `artwork_id` INT NOT NULL,
          `title` VARCHAR(45) NOT NULL,
          `year` YEAR(4) NOT NULL,
          `period` VARCHAR(25) NOT NULL,
          `type` VARCHAR(20) NOT NULL,
          `file` MEDIUMBLOB NOT NULL,
          `artist_id` INT NOT NULL,
          PRIMARY KEY (`artwork_id`),
          INDEX `fk_artwork_artist_idx` (`artist_id` ASC) VISIBLE,
          CONSTRAINT `fk_artwork_artist`
            FOREIGN KEY (`artist_id`)
            REFERENCES `a_work`.`artist` (`artist_id`)
            ON DELETE NO ACTION
            ON UPDATE NO ACTION)
        ENGINE = InnoDB

SQL script execution finished: statements: 11 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch

我已经尝试了一切chatgpt阅读mysql附带的文档

mysql
1个回答
0
投票

尝试使用下面的查询来创建一个表。它看起来应该与您想要的类似。

create table if not exists a_work.artwork (
    artwork_id int primary key,
    title varchar(45) not null,
    year year not null,
    period varchar(25) not null,
    type varchar(20) not null,
    file mediumblob not null,
    artist_id int not null references a_work.artist (artist_id)
);

您应该在最后创建索引,因为创建索引需要更深入的理解。

这取自 MySQL 参考

索引对于小表或报表查询处理大部分或全部行的大表的查询不太重要。当查询需要访问大部分行时,按顺序读取比通过索引更快。顺序读取最大限度地减少磁盘查找,即使查询不需要所有行。有关详细信息,请参阅第 10.2.1.23 节“避免全表扫描”。

© www.soinside.com 2019 - 2024. All rights reserved.