Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вернёмся к удалению таблиц с базы!!
 
 автор: kasir   (09.09.2006 в 13:24)   письмо автору
 
 

Есть вот такой скрип

<?php
$dblocation 
"10.1.1.2";
$dbname "hostip";
$dbuser "alex";
$dbpasswd "";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!
$dbcnx)
{
    exit(
"<P>В настоящий момент сервер базы данных недоступен, поэтому корректно отображение страницы невозможно.</P>");
}
if (!@
mysql_select_db($dbname$dbcnx))
{
    exit(
"<P>В настоящий момент база данных недоступна, поэтому корректное отображение страницы невозможно.</P>");
}
echo 
"Работает<br>";
$newfile '';
$file 'C:\Program Files\Apache Group\Apache2\htdocs\serg\hostip_current.sql.gz';
$newfile 'C:\Program Files\Apache Group\Apache2\htdocs\serg2\hostip_current.sql.gz';
if (!
copy($file$newfile))
{
    echo 
"Не удалось скопировать $file... \n";
}
exec ("mysql -h 10.1.1.2 -b hostip -u alex < '/Users/alex/Sites/sergey/hostip_current.sql'");
exit;
$result mysql_list_tables($dbname);
while (
$row mysql_fetch_row($result)) 
{
    if (
$row[0] <> "cityByCountry" or $row[0] <> "countries")
        {
         
mysql_query("ALTER TABLE `hostip`.`$row[0]` DROP COLUMN `cron`
                                    , DROP INDEX `kCountry`
                                    , DROP INDEX `kCity`
                                    , DROP INDEX `kb`
                                    , DROP INDEX `kc`
                                    , DROP INDEX `kcron`"
);
                                    
            echo 
$row[0]." OK<br>";
        }
}
?>


Перед Дампом мне нужно вписать функцию котораю очистит базу от всех таблиц!
Прошу Вас о помощи.. у самого что-то не получается=(

   
 
 автор: cheops   (09.09.2006 в 14:43)   письмо автору
 
   для: kasir   (09.09.2006 в 13:24)
 

А вы прямо в дамп запишите операторы DROP TABLE перед каждым оператором CREATE TABLE.

   
 
 автор: kasir   (09.09.2006 в 15:02)   письмо автору
 
   для: cheops   (09.09.2006 в 14:43)
 

Мне нужно это зделать скриптом!!!

   
 
 автор: kasir   (09.09.2006 в 15:59)   письмо автору
 
   для: kasir   (09.09.2006 в 15:02)
 

Долго думая, написал функцию удаление таблиц так:


<?php
2 $result 
mysql_list_tables ("SHOW TABLES");
while($res mysql_fetch_row($datap[0]))
{
5    mysql_query("DROP TABLE $data[0]");
6    echo "DROP TABLE $data[0]   OK<br>";
}
?>


Сработало, вывело в браузере что все таблицы удалны.

Подставил эту функцию в скрипт:

<?php
2 $dblocation 
"10.1.1.2";
3 $dbname "hostip";
4 $dbuser "alex";
5 $dbpasswd "";
6 $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx)
{
9      exit("<P>В настоящий момент сервер базы данных недоступен, поэтому корректно отображение страницы не возможно.<P>");
10 }
11 if (!@mysql_select_db($dbname$dbcnx))
12 {
13      exit("<P>В настоящий момент база данных недоступна, поэтому корректное отображение страницы невозможно.</P>");
14 }
15 echo "Работает<br>";
16 $newfile '';
17 $file 'C:\Program Files\Apache Group\Apache2\htdocs\serg\hostip_current.sql.gz';
18 $newfile 'C:\Program Files\Apache Group\Apache2\htdocs\serg2\hostip_current.sql.gz';
19 if (!copy($file$newfile))
20 {
21     echo "Не удалось скопировать $file... \n";
22 }
23 $result mysql_list_tables ("SHOW TABLES");
24 while ($res mysql_fetch_row($data[0]))
25 {
26      mysql_query("DROP TABLE $data[0]");
27     echo "DROP TABLE $data[0]  OK<br>";
28 }
29 exec ("mysql -h 10.1.1.2 -b hostip -u alex < '/Users/alex/Sites/sergey/hostip_current.sql'");
30 $result mysql_list_tables($dbname);
31 while ($row mysql_fetch_row($result)) 
32 {
33     if ($row[0] <> "cityByCountry" or $row[0] <> "countries")
34         {
35          mysql_query("ALTER TABLE `hostip`.`$row[0]` DROP COLUMN `cron`
36                                     , DROP INDEX `kCountry`
37                                     , DROP INDEX `kCity`
38                                     , DROP INDEX `kb`
39                                     , DROP INDEX `kc`
40                                     , DROP INDEX `kcron`"
);
41                                    
42             
echo $row[0]." OK<br>";
43         }
44 }
45 ?>


Выдаёт ошибку:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\Program Files\Apache Group\Apache2\htdocs\serg\1.php on line 24

В чём проблема непойму.

   
 
 автор: kasir   (09.09.2006 в 16:05)   письмо автору
 
   для: kasir   (09.09.2006 в 15:59)
 

Может это из-за того что я удалил таблицы с базы и невостанавливая их я запустил скрипт?
Или что-то с Дампом? по идеи скрипта он должен удалить таблицы с базы и дампом востановить, а дальше скрипт должен удалить индексы с таблиц.

   
 
 автор: Trianon   (09.09.2006 в 17:42)   письмо автору
 
   для: kasir   (09.09.2006 в 15:59)
 


<?php                                          //1
 
$result mysql_list_tables ("SHOW TABLES");  //2
 
while($res mysql_fetch_row($datap[0]))      //3
 
{                                             //4
    
mysql_query("DROP TABLE $data[0]");        //5
    
echo "DROP TABLE $data[0]   OK<br>";       //6
 
}                                             //7
?>
откуда в третьей строке возьмется нечто названное $datap , а в пятой - $data?


<?php                                             //1
    
$result mysql_list_tables ("SHOW TABLES");  //2
    
if($result === false)                         //3
        
echo "Cannot fetch table list: " mysql_error(); //4
    
else                                          //5
        
while($data mysql_fetch_row($result))   //6
        
{                                         //7
            
$tabname $data[0];                  //8
            
$res mysql_query("DROP TABLE $tabname");        //9
            
if($res) echo "table $tabname deleted<br>";       //10
            
else
                echo 
"Cannot delete table $tablename: " mysql_error() ."<br>"//11
        
}                                             //12
?>

   
 
 автор: kasir   (11.09.2006 в 10:28)   письмо автору
 
   для: Trianon   (09.09.2006 в 17:42)
 

Извените $datap это опечатка, я имел введу $data =))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования