0
我嘗試使用下面的SQL添加一些表格,數據庫,問題是它創建的第一個表,而是拋出一個錯誤:MySQL的外鍵和表不與錯誤號創建105
[Err] 1005 - Can't create table 'BigBlockStudios_woodcraft.sbb_categories' (errno: 150)
當我嘗試運行它。
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `sbb_catalog`
-- ----------------------------
DROP TABLE IF EXISTS `sbb_catalog`;
CREATE TABLE `sbb_catalog` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`sku` varchar(50) NOT NULL,
`category` int(8) NOT NULL,
`type` int(8) NOT NULL,
`make` int(8) NOT NULL,
`model` int(8) NOT NULL,
`year` int(8) NOT NULL,
PRIMARY KEY (`id`),
INDEX (`category`,`type`,`make`,`model`,`year`),
FOREIGN KEY (`category`) REFERENCES sbb_categories(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY (`type`) REFERENCES sbb_type(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY (`make`) REFERENCES sbb_make(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY (`model`) REFERENCES sbb_model(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY (`year`) REFERENCES sbb_year(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- ----------------------------
-- Table structure for `sbb_categories`
-- ----------------------------
DROP TABLE IF EXISTS `sbb_categories`;
CREATE TABLE `sbb_categories` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`category` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
-- ----------------------------
-- Table structure for `sbb_makes`
-- ----------------------------
DROP TABLE IF EXISTS `sbb_makes`;
CREATE TABLE `sbb_makes` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`make` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
-- ----------------------------
-- Table structure for `sbb_models`
-- ----------------------------
DROP TABLE IF EXISTS `sbb_models`;
CREATE TABLE `sbb_models` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`model` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
-- ----------------------------
-- Table structure for `sbb_vehicle_types`
-- ----------------------------
DROP TABLE IF EXISTS `sbb_vehicle_types`;
CREATE TABLE `sbb_vehicle_types` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`type` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
-- ----------------------------
-- Table structure for `sbb_years`
-- ----------------------------
DROP TABLE IF EXISTS `sbb_years`;
CREATE TABLE `sbb_years` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`year` decimal(4,0) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
我第一次嘗試創建與關係構建InnoDB表[努力學習一些誼]
我在做什麼錯在這裏?
也許使類別無符號? – 2014-11-23 21:33:12
你有幾個unsigned缺少,你引用一個缺少的表(sbb_type),表的順序是錯誤的,你正在創建外鍵到尚未創建的表,還引用表名稱在他們的單數http: //sqlfiddle.com/#!2/689104 – Mihai 2014-11-23 21:35:11
SQL Fiddle在第一個表上產生一個錯誤,因爲沒有定義外鍵引用表。當使用'drop table if exists'時可能會遇到所有問題,並且您有現有的表結構錯誤。 – 2014-11-23 21:35:55