1

我已经用头撞了两天了,终于寻求帮助。

我用最少的数据创建了两个测试表以保持简单,所以至少我有一些工作要做,并且想要创建第三个表,我可以用它来将数据拉入我的网站(我希望创建查询以后可以从不同的表中提取数据,但现在必须这样做)。

这是我为第一个 TABLE 导出的信息:

CREATE TABLE `about` (
`about_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`about_title` varchar(50) NOT NULL,
`about_description` text NOT NULL,
`creator_id` smallint(5) unsigned NOT NULL,
`about_image` varchar(150) NOT NULL,
PRIMARY KEY (`about_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

INSERT INTO `about` (`about_id`, `about_title`, `about_description`, `creator_id`, `about_image`) VALUES
(1, 'Exciter', 'This is an awesome album', 1, 'images/depeche_mode_exciter.jpg'),
(2, 'Autobahn', 'This is a great album', 2, 'images/kraftwerk_autobahn.jpg');

这是我为第二个 TABLE 导出的信息:

CREATE TABLE `creator` (
`creator_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`creator_name` varchar(50) NOT NULL,
PRIMARY KEY (`creator_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

INSERT INTO `creator` (`creator_id`, `creator_name`) VALUES
(1, 'Depeche Mode'),
(2, 'Kraftwerk');

这是我尝试用来创建一个新表的最新版本,它将 creator_id 转换为 Depeche 模式或艺术家在任何 creator_id 行上的任何内容:

CREATE TABLE `about_creator` (
`about_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`about_title` varchar(50) NOT NULL,
`about_description` text NOT NULL,
`about_image` varchar(150) NOT NULL,
`creator_id` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`about_id`)
FOREIGN KEY (`creator_id`) REFERENCES `creator` (`creator_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

现在说真的,它肯定不会变得更容易,但是每次我尝试它时,我都会收到以下错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOREIGN KEY (`creator_id`) REFERENCES `creator` (`creator_id`) ) ENGINE=InnoDB ' at line 8

我正在从在 MAMP 2.0 版中运行的 phpMyAdmin 3.5.4 访问 PHP 5.4.4 版

非常感谢任何帮助。

4

1 回答 1

1

您的定义后缺少逗号PRIMARY KEY

CREATE TABLE `about_creator` (
`about_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`about_title` varchar(50) NOT NULL,
`about_description` text NOT NULL,
`about_image` varchar(150) NOT NULL,
`creator_id` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`about_id`),
FOREIGN KEY (`creator_id`) REFERENCES `creator` (`creator_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

sqlfiddle上查看。

于 2012-11-19T23:10:55.410 回答