我有这个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 邮件中执行此操作时,我收到一个错误,它在带有 ON DELETE NO ACTION ON UPDATE NO ACTION 的行上说 - 它不是一个有效的输入,它不应该在这一行上。
您可以跳过指定"删除无操作">和"更新无操作">,因为如果您不想对这些事件执行任何操作,则根本不需要指定。
如果未为 ONDELETE 事件或 ON UPDATE 事件指定,则默认值为 NO ACTION,因此您可以省略相同的内容并进行检查。
您是否在这两者之间使用了 Tab 或任何其他字符?作为另一种可能性,我想它是作为一个命令读取并且无法理解它。将两者放在单独的行上,然后再次检查。
我认为尾随逗号会导致错误,请尝试将其删除:
UNIQUE KEY `TITLE_UNIQUE` (`title`), <-- remove comma
ON DELETE NO ACTION ON UPDATE NO ACTION