Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Проблема с импортом базы (Dima) 10/03/2006 - 08:56:32
      Re: Проблема с импортом базы (Dima) 10/03/2006 - 19:08:12
      Re: да, баг... (Dinky) 10/03/2006 - 22:48:23

> Original message text:
> From: Dima - 10/03/2006 - 08:56:32
> Subject:Проблема с импортом базы
> -----------------
> Делаю дамп локальной базы данных командой:
>
> mysqldump --add-drop-table --compatible=mysql40 -uroot -p -hlocalhost my_db > my_db.sql
>
> Ключ --compatible=mysql40 необходим, поскольку версия дальней базы, куда предполагается весь этот дамп заливать -- 4.0.х. Версия локальной бд -- 4.1.16. Без этого ключа дальняя база не принимает дамп.
>
> Проблема в следующем: если использовать этот ключ, для всех полей пропадает значение auto_increment. Следовательно, дамп хоть и заливается без проблем, работает, мягко говоря, некорректно.
>
> Есть, конечно, вариант написать скрипт, который бы возвращал нужным полям auto_increment, и им в последствии обрабатывать всю базу сразу после импорта дампа. Но это в данном случае очень плохое решение, по целому ряду причин.
>
> Помогите, пожалуйста, решить проблему.
>
>


From: Dima - 10/03/2006 - 19:08:12
Subject:Проблема с импортом базы
-----------------
Вроде нашел решение. Вот такой php-скрипт замутил:

<?
$hostname = "localhost";
$username = "root";
$password = "";
$dbName = "renews";
mysql_connect($hostname,$username,$password) or die("Не могу создать соединение ");
$res1 = mysql_query("SHOW TABLES FROM $dbName");
$i=0;
$fp = fopen ("ai_fix.sql", "w");
while($row1 = mysql_fetch_array($res1)){
$res2 = mysql_db_query($dbName, "SHOW CREATE TABLE $row1[0]");
while($row2 = mysql_fetch_array($res2)){
preg_match("/\s*(\W\w+\W)(.*auto_increment)/", $row2[1], $matches);
if($matches){
$i++;
$str = "ALTER TABLE ".$row2[0]." CHANGE ".$matches[1]." ".$matches[1]."".$matches[2].";\n";
fwrite($fp, $str);
}
}
mysql_free_result($res2);
}
fclose($fp);
mysql_free_result($res1);
mysql_close();
echo "Создано ".$i." записей";
?>

Это штука создает sql-файлик, который требуется запустить вслед за кривым дампом.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
26897



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |