Forum Webscript.Ru
Программирование => Perl => Тема начата: Alexandr от 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.
А мне эта строчка на хрен не нужна.
Может подскажете как от неё избавится.
-
Cдается мне, что MySQL тут нипричем...
В MySQL есть два параметра PrintError и RaiseError. Поиграйся с ними (хотя я сомневаюсь, что поможет).
Пример:
$dbh = DBI->connect("DBI:mysql:database=database_name;host=localhost","username", "userpass",{PrintError => 0, RaiseError => 1});
ЗЫ. Я не очень хорошо понял проблему, но думаю, что без "подавления" можно обойтись. Опиши подробнее.
-
Здается мне, что 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 Ща буду юзать, то что ты подсказал.