我有一个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-它不是一个有效的输入,不应该在这一行。
2条答案
按热度按时间egdjgwm81#
我认为后面的逗号会导致错误,请尝试删除它:
zbdgwd5y2#
您可以跳过指定on delete no action和on update no action,因为如果您不想对这些事件执行任何操作,则根本不需要指定。
如果未为“on delete”事件或“on update”事件指定“no action”,则默认值为“no action”,因此可以忽略相同的操作并选中。
你在这两者之间用过tab或其他字符吗?作为另一种可能性,我猜这是阅读都作为一个命令,并没有理解它。把这两条线分开,再检查一遍。