mysql层叠配置语法错误

neekobn8  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(343)

我有一个mysql代码,用于创建两个表,这两个表将具有单向的一对多关系(使用hybernate配置):

DROP SCHEMA IF EXISTS `msmail-database`;

CREATE SCHEMA `msmail-database`;

use `msmail-database`;

SET FOREIGN_KEY_CHECKS = 0;

DROP TABLE IF EXISTS `mail`;

CREATE TABLE `mail` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `usertoken` varchar(128) DEFAULT NULL,
  `send_to` varchar(128) DEFAULT NULL,
  `subject` varchar(128) DEFAULT NULL,
  `content` varchar(128) DEFAULT NULL,

  PRIMARY KEY (`id`),

  UNIQUE KEY `TITLE_UNIQUE` (`title`),

  ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `review`;

CREATE TABLE `file` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(256) DEFAULT NULL,
  `path` varchar(256) DEFAULT NULL,
  `mail_id` int(11) DEFAULT NULL,

  PRIMARY KEY (`id`),

  KEY `FK_MAIL_ID_idx` (`mail_id`),

  CONSTRAINT `FK_MAIL` 
  FOREIGN KEY (`mail_id`) 
  REFERENCES `mail` (`id`) 

  ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

SET FOREIGN_KEY_CHECKS = 1;

但是,当我尝试从create table mail执行这个命令时,我得到了一个错误,它在一行上写着on delete no action on update no action-它不是一个有效的输入,不应该在这一行。

egdjgwm8

egdjgwm81#

我认为后面的逗号会导致错误,请尝试删除它:

UNIQUE KEY `TITLE_UNIQUE` (`title`),         <-- remove comma
ON DELETE NO ACTION ON UPDATE NO ACTION
zbdgwd5y

zbdgwd5y2#

您可以跳过指定on delete no action和on update no action,因为如果您不想对这些事件执行任何操作,则根本不需要指定。
如果未为“on delete”事件或“on update”事件指定“no action”,则默认值为“no action”,因此可以忽略相同的操作并选中。
你在这两者之间用过tab或其他字符吗?作为另一种可能性,我猜这是阅读都作为一个命令,并没有理解它。把这两条线分开,再检查一遍。

相关问题