Найти - Пользователи
Полная версия: Не импортируется экспортированная БД mysql
Начало » Базы данных » Не импортируется экспортированная БД mysql
1
S
Если БД экспортированная с одного сервера через phpminiadmin не импортируется на другой, выдавая ошибку 150, то это проблема с настройками mysql сервера? Логично ведь?
Не выполняется даже самый первый запрос из sql-файла.
CREATE TABLE `answers` (
  `id` int(11) NOT NULL auto_increment,
  `quest_id` int(11) NOT NULL default '0',
  `content` varchar(500) NOT NULL,
  `rights` tinyint(4) default '0',
  `zindex` smallint(6) default NULL,
  PRIMARY KEY  (`id`),
  KEY `FK` (`quest_id`),
  CONSTRAINT `answers_ibfk_1` FOREIGN KEY (`quest_id`) REFERENCES `questions` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

Выдаётся:
=====================================
130502 15:22:06 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 24 seconds
———-
SEMAPHORES
———-
OS WAIT ARRAY INFO: reservation count 4, signal count 4
Mutex spin waits 0, rounds 20, OS waits 0
RW-shared spins 8, OS waits 4; RW-excl spins 0, OS waits 0
————————
LATEST FOREIGN KEY ERROR
————————
130502 15:22:02 Error in foreign key constraint of table stimul_db/answers:
FOREIGN KEY (`quest_id`) REFERENCES `questions` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8 ROW_FORMATYNAMIC:
Cannot resolve table name close to:
(`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8 ROW_FORMATYNAMIC

Версия mysql 5.1.69
phpmyadmin в серверных настройках пишет “have innodb YES”.
В my.cnf написано:
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /var/db/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/db/mysql
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 512M
innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 128M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

Что я делаю не так?
Lexander
В первом скрипте вы ссылаетесь на таблицу, которой еще не существует.
Попробуйте завернуть все скрипты в одну транзакцию.
START TRANSACTION
-- тут скрипты
COMMIT;
Или выполняйте SQL-скрипты в правильной последовательности - по мере существования внешних ключей.
Hayate
Lexander
В первом скрипте вы ссылаетесь на таблицу, которой еще не существует.Попробуйте завернуть все скрипты в одну транзакцию.
Думал про это. Изначально заливал sql файл целиком, была та же ругань. Возможно, что phpminiadmin не умеет учитывать порядок запросов, и sql-файл получается не корректным?
Сейчас попробую правильный порядок определить….

Lexander
START TRANSACTION – тут скрипты COMMIT;
Попробовал - та же ошибка. Буду менять порядок.
Hayate
Сейчас потаблично экспортирую-импортирую, нормально отрабатывается, если следить, чтобы ранее уже были импортированы нужные таблицы. Жаль, что START TRANSACTION; COMMIT; не сработало, было бы проще.
Lexander
А так:
set foreign_key_checks=0;
-- тут скрипты
set foreign_key_checks=1;
S
А вот так вот молча всё импортировалось. Спасибо огромное, буду знать.
Пустая голова руками покоя не даёт.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB