Я перенес проект из XAMP в VM-> Vagrant-> ubuntu/trusty64-> Установленный (php5-mysql mysql-server mysql -client)Невозможно создать таблицу из-за ограничения внешнего ключа, на ubuntu/trusty64 php5-mysql
Теперь, когда я пытаюсь создать свою БД и таблицы, я получаю следующую ошибку.
ОШИБКА Невозможно создать таблицу properties
иностранное ограничение ключа неправильно сформировано. В ссылочной таблице нет индекса, где столбцы, на которые ссылаются, отображаются в качестве первых столбцов.
Это мой первый скрипт, поэтому я предполагаю, что есть некоторые ошибки, но все это работало нормально, когда я использовал XAMP. Я читал об используемых вами машинах и наборах символов, но я мало знаю об этом или как его редактировать в бродягах. Спасибо за всю помощь. Код ниже.
MySQL
CREATE TABLE `usertypes`(
`id` INT NOT NULL AUTO_INCREMENT,
`type` CHAR(15),
`permissions` CHAR(15),
PRIMARY KEY (`id`)
);
INSERT INTO `usertypes`(`type`,`permissions`) VALUES ("Administrator", '{"Admin":1}'), ("Staff", '{"Staff":1}'), ("Basic", '{"Basic":1}'), ("Pro", '{"Pro":1}'), ("Business", '{"Business":1}');
CREATE TABLE `users` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`username` VARCHAR (25) NOT NULL UNIQUE,
`password` VARCHAR (60) NOT NULL,
`usertype` INT NOT NULL DEFAULT 3,
`email` varchar(40) NOT NULL,
`authentication` varchar(32) NOT NULL,
`active` smallint(1) NOT NULL DEFAULT 0,
`newsletter` INT NOT NULL,
`banned` SMALLINT NOT NULL DEFAULT 0,
`user_since` DATE NOT NULL,
`listings` INT DEFAULT 0,
CONSTRAINT fk_usertype FOREIGN KEY (`usertype`) REFERENCES usertypes(`id`),
UNIQUE KEY `users` (`username`,`email`)
);
CREATE TABLE `personal` (
`id` INT PRIMARY KEY,
`first_name` VARCHAR (15) NULL,
`last_name` VARCHAR (15) NULL,
`mobile_phone` CHAR(10) NULL,
`city` CHAR(25) NULL,
`address` VARCHAR (100) NULL,
`postal_code` VARCHAR(6) NULL,
CONSTRAINT fk_personal FOREIGN KEY (`id`)
REFERENCES users(`id`)
);
/* Create Properties table */
CREATE TABLE `propertytypes`(
`id` INT NOT NULL AUTO_INCREMENT,
`type` CHAR(10),
PRIMARY KEY (`id`)
);
INSERT INTO `propertytypes`(`type`) VALUES ("house"), ("duplex"), ("apartment"), ("townhouse"), ("4 plex"),("6 plex"), ("room"), ("commercial"), ("gathering halls");
CREATE TABLE `utilities`(
`id` INT NOT NULL AUTO_INCREMENT,
`options` CHAR(10),
PRIMARY KEY (`id`)
);
INSERT INTO `utilities`(`options`) VALUES ("None"),("Heat"), ("Electricity"), ("Water"), ("TV"), ("Internet");
CREATE TABLE `features`(
`id` INT NOT NULL AUTO_INCREMENT,
`options` CHAR(10),
PRIMARY KEY (`id`)
);
INSERT INTO `features`(`options`) VALUES ("Coin Laundry"), ("Own Laundry"), ("Jetted Tub/Jacuzzi"), ("Gym"), ("Pool"), ("Security"), ("Balcony"), ("Elevator"), ("Hardwood Floors"), ("Fenced Backyard"), ("Dishwasher"), ("Air Conditioning"), ("Laminate Floors"), ("Fire Pit"), ("Fireplace"), ("Wheelchair Access"), ("Storage Lockers");
CREATE TABLE `properties` (
`id` INT NOT NULL AUTO_INCREMENT,
`owner` INT NOT NULL,
`propertytype` INT NOT NULL,
`address` varchar(255) NOT NULL,
`postalcode` varchar(8) NOT NULL,
`beds` INT(10),
`baths` INT(10),
`sqf` DECIMAL (6,2),
`price` DECIMAL (6,2),
`images` varchar(32),
`listed` smallint(1) DEFAULT 2,
`pets` smallint(1) DEFAULT 2,
`kids` smallint(1) DEFAULT 2,
`adults` smallint(1) DEFAULT 2,
`utilities` INT NOT NULL DEFAULT 0,
`features` INT NOT NULL DEFAULT 0,
`parking` smallint(1) DEFAULT 2,
`smokers` smallint(1) DEFAULT 2,
`deposit` smallint(1) DEFAULT 0,
`description` TEXT NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT fk_users FOREIGN KEY (`owner`)
REFERENCES users(`id`),
CONSTRAINT fk_propertytypes FOREIGN KEY (`propertytype`)
REFERENCES propertytypes(`id`),
CONSTRAINT fk_utilities FOREIGN KEY (`utilities`)
REFERENCES utilities(`options`),
CONSTRAINT fk_features FOREIGN KEY (`features`)
REFERENCES features(`options`)
);
Спасибо, что имеет смысл Я понимаю это, однако вы могли бы рассказать мне, почему это будет работать в моей другой среде, а не в этом? Спасибо – IamCavic
ну дно два FK были столбцами с несогласованными/unindexec столбцами для таблицы, на которую ссылается. Последняя таблица - это * ссылка * таблица. Он ссылается на таблицы * *. См. Нижнюю часть вопроса, где я добавил ссылку и некоторые материалы на странице руководства. – Drew
Что касается вашей другой системы, кто знает. Я ничего об этом не знаю. – Drew