2016-03-07 4 views
0

Я работаю над базой данных, которая размещается на онлайн-сервере (Linux). Мне пришлось сделать большие изменения в этой базе данных, поэтому я переместил (путем экспорта, затем импортировал) эту базу данных в локальную, созданную мной (Windows Server).Можно ли импортировать мою базу данных на другой сервер?

После работы в эти последние дни в локальной базе данных я решил, что работа уже выполнена, поэтому я экспортировал локальную базу данных и импортировал ее в живую, но я не мог. Это дало мне ошибку, связанную с внешнего ключа:

#1215 - Cannot add foreign key constraint

В таблице phpmyadmin сказал, что был один с некоторыми ошибками была printprices и эти создания таблицы я имею для printprices и другие таблицы, которые могут иметь какое-то отношение к ошибка:

CREATE TABLE `printprices` (
    `STYLE` int(11) NOT NULL DEFAULT '0', 
    `DIFICULTAD` int(11) NOT NULL DEFAULT '0', 
    `NCOLORES` int(11) NOT NULL DEFAULT '0', 
    `PROVEEDOR` int(11) NOT NULL DEFAULT '0', 
    `SIZECM2MAX` int(11) NOT NULL DEFAULT '0', 
    `MINQ` int(11) NOT NULL, 
    `MAXQ` int(11) NOT NULL, 
    `PRECIO` decimal(5,2) DEFAULT '0.00', 
    `PRECIOPRV` decimal(5,2) DEFAULT '0.00', 
    `MINWORK` decimal(5,2) DEFAULT '0.00', 
    `MINWORKPRV` decimal(5,2) DEFAULT '0.00', 
    PRIMARY KEY (`STYLE`,`DIFICULTAD`,`NCOLORES`,`PROVEEDOR`,`SIZECM2MAX`,`MINQ`), 
    KEY `FK_PRINT` (`STYLE`,`DIFICULTAD`,`NCOLORES`,`PROVEEDOR`), 
    CONSTRAINT `FK_PRINT` FOREIGN KEY (`STYLE`, `DIFICULTAD`, `NCOLORES`, `PROVEEDOR`) REFERENCES `print` (`STYLE`, `DIFICULTAD`, `NCOLORES`, `PROVEEDOR`) ON DELETE CASCADE 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 


CREATE TABLE `print` (
    `STYLE` int(11) NOT NULL DEFAULT '0', 
    `DIFICULTAD` int(11) NOT NULL DEFAULT '0', 
    `NCOLORES` int(11) NOT NULL DEFAULT '0', 
    `PROVEEDOR` int(11) NOT NULL DEFAULT '0', 
    `CFC` decimal(5,2) DEFAULT '0.00', 
    PRIMARY KEY (`STYLE`,`DIFICULTAD`,`NCOLORES`,`PROVEEDOR`), 
    KEY `FK_PRINTPROV` (`PROVEEDOR`), 
    KEY `FK_PRINTSTYLE` (`STYLE`), 
    CONSTRAINT `FK_PRINTPROV` FOREIGN KEY (`PROVEEDOR`) REFERENCES `proveedores` (`CODIPRV`) ON DELETE CASCADE, 
    CONSTRAINT `FK_PRINTSTYLE` FOREIGN KEY (`STYLE`) REFERENCES `printstyle` (`CODISTY`) ON DELETE CASCADE 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 


CREATE TABLE `printstyle` (
    `CODISTY` int(11) NOT NULL AUTO_INCREMENT, 
    `STYLE` varchar(30) DEFAULT NULL, 
    PRIMARY KEY (`CODISTY`) 
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=latin1 


CREATE TABLE `proveedores` (
    `CODIPRV` int(11) NOT NULL AUTO_INCREMENT, 
    `PROVEEDOR` varchar(20) DEFAULT NULL, 
    `ENVIOPRICE` decimal(4,2) NOT NULL DEFAULT '0.00', 
    `CARTONPRICE` decimal(4,2) NOT NULL DEFAULT '0.00', 
    `LIMITPRICE` decimal(6,2) NOT NULL, 
    PRIMARY KEY (`CODIPRV`) 
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 
+0

запустите команду «ПОКАЖИТЕ ДВИГАТЕЛЬ INNODB STATUS» и проверьте поле «ПОСЛЕДНИЕ ЗНАКИ ИНОСТРАННОГО КЛЮЧА», сообщите, что вы там видите. Это может помочь вам или нам определить проблему! – Sevle

+0

Я совсем потерялся, я никогда не делал этого раньше. – danibg

+0

В интерфейсе phpmyadmin перейдите на вкладку «SQL» и напишите «SHOW ENGINE INNODB STATUS». Затем нажмите «Параметры» и установите флажок «Полные тексты». Наконец нажмите «GO». Если вы попытались импортировать свои таблицы в один и тот же сеанс, и вы получили ошибку «1215», появится поле «ПОСЛЕДНИЙ ИНОСТРАННЫЙ КЛЮЧ», в котором будет указана дополнительная информация об этой ошибке. – Sevle

ответ

0

Я наконец-то понял, почему он не работает:

проблема Я пытался загрузить свою базу данных на Mysql, размещаемое в Linux, которая деликатный случай. Мои foreign keys хранились на большой буквы, но мои таблицы не были.

Когда Mysql из Linux прочитал файл и попытался удалить таблицу перед ее созданием, таблица не была удалена, потому что имя не было таким же, как оно уже было сохранено в капитале раньше.

Решение заключается в редактировании файла экспорта и изменении всех имен таблиц от нижнего регистра до капитала.

Смежные вопросы