Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: востановление таблицы в БД
Форумы портала PHP.SU » » Вопросы новичков » востановление таблицы в БД

Страниц (1): [1]
 

1. daglas1 - 17 Июля, 2013 - 22:23:20 - перейти к сообщению
Всем привет.
Иногда из БД исчезает таблица, иногда парочку. Сильно прожорливые скрипты, иногда БД не вытягивает все запросы и старая таблица удаляется а новая не успевает появится. И так и не появляется.
Вобщем написал скрипт и повешал его на крон.
ЧТобы скрипт востанавливал таблицу.
Но получилась другая проблема, скрипт в таблицу добавляет дубликаты. Т.е. каждый день вставляет одно и тоже.
Хотя внутри скрипта стоит проверка содержимого таблицы.
PHP:
скопировать код в буфер обмена
  1.  
  2. try {
  3.         $sth = $db->prepare("select count(cod) from mytable");
  4.        
  5.         $sth->execute();
  6.         $row = $sth->fetch();
  7.         $x=$row[0];
  8.         echo $x;
  9.  
  10.  
  11. } catch (Exception $e) {
  12.     echo $e->getMessage(); //выведет либо сообщение об ошибке подключения, либо об ошибке выбора
  13.  
  14. }
  15.  
  16. if (strlen($x)>0) die();
  17. if (strlen($x)==0)
  18.                                 {
  19.                                 echo "no table<br>";
  20.         $sth = $db->prepare("CREATE TABLE `mytable` ")
  21.         $sth->execute();
  22.         //################################################                     
  23.         $sth = $db->prepare(" insert into mytable");
  24.         $sth->execute();
  25.         echo "<br>data inserted<br>";
  26.                                 }
  27.  


Вот код, мускульный запросы упрощенны
2. EuGen - 17 Июля, 2013 - 22:55:56 - перейти к сообщению
daglas1
Postgres? Транзакции
?
3. caballero - 18 Июля, 2013 - 00:58:43 - перейти к сообщению
Цитата:
Иногда из БД исчезает таблица, иногда парочку. Сильно прожорливые скрипты, иногда БД не вытягивает все запросы и старая таблица удаляется а новая не успевает появится.

с чего бы это исчезать таблицам?


и что за бредовый код - то что в таблице 0 записей не означает что ее нет.
И с чего ты взял что получишь Exception если не будет таблицы в БД


Цитата:
Транзакции
?

ну, это мускул а не оракл - тут транзакции на DDL не распространяются
4. EuGen - 18 Июля, 2013 - 09:23:08 - перейти к сообщению
Верно, ни я, ни автор не уточнили. Я имел ввиду, правда, не Oracle, а Postgres
5. daglas1 - 18 Июля, 2013 - 09:48:33 - перейти к сообщению
caballero пишет:
Цитата:
Иногда из БД исчезает таблица, иногда парочку. Сильно прожорливые скрипты, иногда БД не вытягивает все запросы и старая таблица удаляется а новая не успевает появится.

с чего бы это исчезать таблицам?
и что за бредовый код - то что в таблице 0 записей не означает что ее нет.
И с чего ты взял что получишь Exception если не будет таблицы в БД
Цитата:
Транзакции
?

ну, это мускул а не оракл - тут транзакции на DDL не распространяются

Таблицы исчезают в следствии работы скриптов. Скприт каждый день удаляет старую таблицу и на основе суровых выборок создает новую таблицу. В послднее время у него не получается создавать эти таблицы. Большую часть скриптов написали до меня на перл.
Я их не хочу трогать. Как вариант БД не тянет таких нагрузок, хотя сервак достаточно мощный.
Касательно бредовости кода. Код не бредовый а имеет место частный случай.
Таблица у конкретном случае никогда не бывает пустой. Или она есть и в ней данные или ее нет вообще. Тут уже многодневные наблюдения за сайтом конкретным.
Касательно эксепшинов поставил их на всякий случай. Они ведь не мешают?

 

Powered by ExBB FM 1.0 RC1