Автор Тема: Подавление ошибки  (Прочитано 2389 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Подавление ошибки
« : 24 Октября 2002, 09:08:13 »
Как в Perl\'е подавить MySQL\'евскую ошибку

Есть напр. след. строка:
.....
$rows=$dbh->do("INSERT INTO my_table VALUES(\'".$some_str."\')");
.....

Поле в таблице my_table уникально (UNIQUE)
Далее я проверяю:

if (defined($rows)) .....
else ....

Т.е. если не смог добавить, то $rows будет !defined

Всё бы хорошо, но если строку добавить не смог, то в error.log\'е такая запись вылезает

[error] [client 199.106.212.8] FastCGI: server "/autodealer/www/includes/button.fcgi" stderr: DBD::mysql::db do failed: Duplicate entry \'194.85.218.250,\' for key 1 at button.fcgi line 68.

А мне эта строчка на хрен не нужна.

Может подскажете как от неё избавится.
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Подавление ошибки
« Ответ #1 : 24 Октября 2002, 12:24:01 »
Cдается мне, что MySQL тут нипричем...
В MySQL есть два параметра PrintError и RaiseError. Поиграйся с ними (хотя я сомневаюсь, что поможет).

Пример:
$dbh = DBI->connect("DBI:mysql:database=database_name;host=localhost","username", "userpass",{PrintError => 0, RaiseError => 1});

ЗЫ. Я не очень хорошо понял проблему, но думаю, что без "подавления" можно обойтись. Опиши подробнее.
« Последнее редактирование: 24 Октября 2002, 13:14:47 от NeoNox »
The documentations is your friend

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Подавление ошибки
« Ответ #2 : 24 Октября 2002, 13:23:34 »
Цитировать
Здается мне, что MySQL тут нипричем

Понятно, что не причём.

Цитировать
Пример:
$dbh = DBI->connect("DBI:mysql:database=database_name;host=localhost","username", "userpass",{PrintError => 0, RaiseError => 1});

Ща поюзаю, тока вроде на RaiseError у мя Perl ругался.

Цитировать
ЗЫ. Я не очень хорошо понял проблему, но думаю, что без "подавления" можно обойтись. Опиши подробнее.


Есть скрипт http://www.autodealer.ru/includes/button.php
зто кнопка-счётчик рейтинга http://www.autodealer.ru/top/

Дак вот следующая ситуация: Юзерза обращаются к скрипту, а я выбираю: SELECT ip ......
Если нет такого ip, то делаю вышеуказаный INSERT, а дабы всё это быстро работало приходится делать следующее:
ip UNIQUE и таблицу LOCK\'ом не закрывать, а просто проверять прощёл ли INSERT.
Все работает ОК, просто хотелось бы в лог не писАть.

PS Ща буду юзать, то что ты подсказал.
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28