ну я ещё вот это нашёл
Definition at line 277 of file cdr.c.
{ struct astvart *newvariable; struct varshead *headp; const char *read_only[] = { "clid", "src", "dst", "dcontext", "channel", "dstchannel", "lastapp", "lastdata", "start", "answer", "end", "duration", "billsec", "disposition", "amaflags", "accountcode", "uniqueid", "userfield", NULL }; int x;
for(x = 0; readonly[x]; x++) { if (!strcasecmp(name, readonly[x])) { astlog(LOGERROR, "Attempt to set a read-only variable!.\n"); return -1; } }
Вариант - поправить исходники и перекомпелить?
xmaster83 ( 2014-05-23 15:35:47 +0400 )редактироватьневариант. очень вероятно что там не просто так RO стоит, что это используется гдето еще. где могли поставили RW
meral ( 2014-05-24 00:16:01 +0400 )редактироватьодин товарищ так подсказал
DELIMITER ;;
CREATE DEFINER=dbcdruser
@%
TRIGGER cdr_insert AFTER INSERT ON cdr
FOR EACH ROW BEGIN
DECLARE ph VARCHAR(25);
IF SUBSTRING(NEW.src,1,1) = '8' THEN
ph = CONCAT('7',SUBSTRING(NEW.src,2));
END IF;
UPDATE asterisk.cdr SET src = ph WHERE uniqueid = NEW.uniqueid LIMIT 1;
END;;
DELIMITER ;
xmaster83 ( 2014-05-26 09:44:05 +0400 )редактироватькак экранировать код на этом сайте чтоб читался красиво ?
xmaster83 ( 2014-05-26 09:47:06 +0400 )редактироватьплохой вариант. вообещ избегайте тригеров если не уверены что они НЕОБХОДИМЫ. и кстати тригер у вас ОЧЕНЬ плохой. замените before insert и сделайте SET NEW.src=ph вместо того бреда который у вас(который будет искать по индексу и делать update для КАЖДОЙ строки)
meral ( 2014-05-26 10:44:13 +0400 )редактироватьпродолжение тут http://asterisk-support.ru/question/53385/kak-podmenit-zapis-v-mysql-cdr-podmena-8-na-7/
xmaster83 ( 2014-05-27 11:34:18 +0400 )редактировать