Как правильно импортировать эту базу данных? - PullRequest
0 голосов
/ 27 марта 2012

Как правильно импортировать эту базу данных?

https://github.com/samanz/cakecart

Каждый раз, когда я импортирую, я получаю эту ошибку:

Error

SQL query:

CREATE TABLE `categories` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 50 ) NULL default NULL ,
`parent_id` INT( 11 ) UNSIGNED default '0',
`order` INT( 3 ) default '0',
`image` VARCHAR( 50 ) NULL default NULL ,
`ids` VARCHAR( 225 ) NULL default NULL ,
`url` VARCHAR( 255 ) NULL default NULL ,
PRIMARY KEY ( `id` ) ,
FOREIGN KEY ( `parent_id` ) REFERENCES categories( `id` ) ,
UNIQUE KEY `url` ( `url` )
);

MySQL said: Documentation
#1005 - Can't create table 'db.categories' (errno: 150) 

Внешний ключ - ошибка 150, но таблиц гораздо больше, чем эта ошибка.

Сначала попробуйте выполнить импорт, а затем ответьте.

Ответы [ 3 ]

2 голосов
/ 27 марта 2012

Это работает:

CREATE TABLE `categories` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 50 ) NULL default NULL ,
`parent_id` INT( 11 ),
`order` INT( 3 ) default '0',
`image` VARCHAR( 50 ) NULL default NULL ,
`ids` VARCHAR( 225 ) NULL default NULL ,
`url` VARCHAR( 255 ) NULL default NULL ,
PRIMARY KEY ( `id` ) ,
FOREIGN KEY ( `parent_id` ) REFERENCES categories( `id` ) ,
UNIQUE KEY `url` ( `url` )
);

Edit: на самом деле вам нужно только удалить unsigned, чтобы это работало. Но я действительно не знаю, почему вы хотите, чтобы оно было по умолчанию 0. Это должно быть значение по умолчанию NULL, которое является значением по умолчанию ..:)

Я считаю, что тип parent_id должен совпадать с идентификатором.

0 голосов
/ 27 марта 2012

Я думаю, что это дает вам ошибку, потому что вы ссылаетесь на несуществующую, еще не созданную таблицу, которая является таблицей, которую вы пытаетесь создать сама.

почему бы вам сначала не создать таблицузатем добавьте ограничение (внешний ключ)?

, но есть возможная ошибка, с которой вы можете столкнуться, выполняя это в той же таблице.что произойдет, если вновь добавленной записи не будет назначен родитель?значение по умолчанию - 0. выдаст ли это ошибку, потому что нет записи с id = 0?

. Я предлагаю вам нормализовать это, создав для этого таблицу отношений.

CREATE TABLE CategoryGroups //or whatever name you find fits.
(
`Cat_id` int(11) NOT NULL,
`Parent_id` int(11),
FOREIGN KEY (`Parent_id`) REFERENCES categories(`id`),
FOREIGN KEY (`Cat_id`) REFERENCES categories(`id`)
)

Рекомендациибыло бы нормализовать все данные и удалить все многие-многие отношения между любыми двумя таблицами путем создания таблиц отношений.

0 голосов
/ 27 марта 2012

Проблема в том, что вы пытаетесь создать таблицу category. В этой таблице вы используете forign-ключ, но эта таблица с включенным forign-ключом еще не создана.

Итак, сначала создайте таблицу, содержащую parent_id .После этого попытайтесь создать таблицу category

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...