SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.10.2008 16:10:24

Mikasto
Завсегдатай
Зарегистрирован: 25.09.2007
Сообщений: 35

БД отрубается если триггер использовать вместе с DELAYED ?

На WinXP стоит Mysql 5.2.3.
Если сделать триггер для таблицы и послать отложеный запрос

REPLACE DELAYED INTO stat_oper VALUES(....   .....);

то после 3-ей вставки сервис Mysql просто отрубается, сервер становится недоступен и не дает переконектиться, и его надо заново стартовать.

Если же использовать:
REPLACE INTO stat_oper VALUES(....   .....);

а в триггере:
INSERT DELAYED IGNORE INTO stat_url VALUES (tr_id_url, NEW.url);

то после второй вставки:
mysql> REPLACE INTO stat_oper VALUES(1, 120, '20081001', 2, 'www.ru/23', 'ya.ru2', 111);
ERROR 1165 (HY000): INSERT DELAYED can't be used with table 'stat_url' because it is locked with LOCK TABLES
и больше ничего вставить нельзя.

Выходит что триггеры вообще нельзя использовать совместно с инструкцией DELAYED.
Так ли это?  В чем моя ошибка?

Исходники:

CREATE TABLE `stat_oper` (
  `id_sess` bigint(20) unsigned NOT NULL,
  `id_pageview` bigint(20) unsigned NOT NULL,
  `time_start` datetime DEFAULT NULL,
  `duration` int(8) DEFAULT NULL,
  `url` varchar(5000) DEFAULT NULL,
  `ref` varchar(5000) DEFAULT NULL,
  `ip` bigint(12) unsigned DEFAULT NULL,
  PRIMARY KEY (`id_pageview`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TRIGGER `stat_oper_after_ins_tr` AFTER INSERT ON `stat_oper`
  FOR EACH ROW
BEGIN

DECLARE tr_id_url, tr_id_ref, tr_id_page, tr_id_sess BIGINT UNSIGNED;

SET tr_id_url = NEW.id_pageview;

INSERT IGNORE INTO stat_url VALUES (tr_id_url, NEW.url);

SET tr_id_ref = NEW.id_pageview + 1;

INSERT IGNORE INTO stat_url VALUES (tr_id_ref, NEW.ref);

END;


CREATE TABLE `stat_url` (
  `id` bigint(20) unsigned NOT NULL COMMENT 'ПК',
  `url` varchar(5000) DEFAULT NULL COMMENT 'адрес страницы',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='InnoDB free: 52224 kB; InnoDB free: 48128 kB; InnoDB free: 7';
 

Неактивен

 

#2 01.10.2008 17:59:19

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: БД отрубается если триггер использовать вместе с DELAYED ?

Очень классная ошибка, у меня перегружает сервер (5.0) smile
Если запостите багу - киньте сюда ссылочку, пожалуйста, интересно будет последить за ней.

Неактивен

 

#3 01.10.2008 21:37:36

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 848

Re: БД отрубается если триггер использовать вместе с DELAYED ?

Mysql 5.2.3.

Что, уже 5.2 есть? (я думал, только 5.1 и 6.0).
А зачем такую новую? Еще даже 5.1 стабильную не выпустили, эта наверняка довольно сырая.
Хотя если ошибка перегружает сервер 5.0...
Паулюс, а у тебя какая версия?

Неактивен

 

#4 02.10.2008 14:57:18

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: БД отрубается если триггер использовать вместе с DELAYED ?

5.0.51a-3ubuntu5.3-log

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson