AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

asterisk 1.8.7.0 и queue_log в Mysql

Asterisk IP PBX 17 сообщений 04.10.2011 06:44 - 16.10.2011 16:50
#1

никто не решил проблему?.. аналогичная ситуация..
может у кого нибудь рабочая таблица есть ?
#2

Версия 1.8.7

Код:

CREATE TABLE `queue_log` (
`callid` char(64) default NULL,
`queuename` char(64) default NULL,
`agent` char(64) default NULL,
`event` char(64) default NULL,
`data1` char(64) default NULL,
`data2` char(64) default NULL,
`data3` char(64) default NULL,
`data4` char(64) default NULL,
`data5` char(64) default NULL,
`time` varchar(32) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


Обращаю внимание что еще не исправили баг с необходимостью перезапуска логгера

_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#3

спасибо.. вчера и у меня завелось..
изменил поле с datetime на char, и добавил data с char..
#4

Wapo, спасибо за таблицу.
#5

по опыту использования odbc в версии 1.6.2.20 могу сказать следующее:
1. обращайте внимание во всех RT таблицах на формат времени, поскольку в базе он может не совпадать с тем, который используется в данном конкретном модуле *. не знаю как с MySQL, но в oracle, решается с помощью триггера на логин.
2. разные модули могут использовать разный формат времени при обращениях к базе, решается как предыдущий способ, но с использованием отдельной схемы под особо корявый модуль. (возможно, что недочеты устранены, но в ветке 1.6.2 была разница в cdr_odbc и meetme.
3. судя по всему * ругается на регистр названия полей в таблице, но при этом спокойно добавляет и изменяет данные. замечено в 1.6.2.20 модуль meetme.

не подскажете, в 1.6.2.20 есть запись data сразу по полям? уж очень там длинный триггер на разбор единого поля.

_________________
e=mc^2
#6

Структура таблицы на счёт data или data1-5, зависит от того что прописано в logger.conf - queue_log = yes или no.
_________________
www.telb.kz
#7 04.10.2011 06:44

asterisk 1.8.7.0 и queue_log в Mysql


Всем привет.
Обновился тут до 1.8.7.0 и появились проблемы с queue_log в MySQL
В начале модифицировал БД как описано здесь
http://www.voip-info.org/wiki/view/Aster ... g+on+MySQL
В логах появилось следующее
Код:

[Sep 30 10:04:49] WARNING[26888] res_config_mysql.c: Table queue_log_processed requires a column 'data4' of size '0', but no such column exists.
[Sep 30 10:04:49] WARNING[26888] res_config_mysql.c: Table queue_log_processed requires a column 'data5' of size '0', but no such column exists.
[Sep 30 10:04:49] WARNING[26888] res_config_mysql.c: Table queue_log_processed requires a column 'time' of size '0', but no such column exists.
[Sep 30 10:04:49] WARNING[26888] res_config_mysql.c: Table queue_log_processed requires a column 'agent' of Хороsize '0', but no such column exists.

При этом данные заносились в поля data1,data2,data3
Затем я решил добавить недостающие поля data4 и data5. Добавил.
Пявилось следующее
Код:

[Sep 30 13:28:27] WARNING[28382] res_config_mysql.c: Realtime table queue_log_new@general: Column time cannot be a datetime
[Sep 30 13:28:27] WARNING[28382] res_config_mysql.c: Table queue_log_new requires a column 'data' of size '0', but no such column exists.
[Sep 30 13:28:27] WARNING[28382] res_config_mysql.c: MySQL RealTime: Failed to insert into database: Unknown column 'data' in 'field list'

Вот ведь думаю, незадача...
Причём данные в поля data1,data2,data3 заноситься перестали..
Добавил поле data.
Деперь данные кладуться в поле data, причём почти в том-же формате, что был раньше, т.е. с разделителем "|". Остальные поля datax - пустые.
В логах осталось
Код:

[Oct 4 11:22:53] WARNING[25889] res_config_mysql.c: Realtime table queue_log_new@general: Column time cannot be a datetime
[Oct 4 11:22:53] WARNING[25889] res_config_mysql.c: Table queue_log_new requires a column 'data' of size '0', but no such column exists.

Я так понимаю, что в астериск пытаются сунуть автоматическое определение формата БД?
Или я не прав где-то?
И вообще, какой формат БД должен быть?
#8 04.10.2011 08:49

К слову о свежей версии 1.8.7 У меня зависают канальные интервалы и астериск начинает отбивать входящие с 44 причиной. Пришлось откатится. Собрал из резервного астериска тестовый стенд, второй день пытаюсь воспроизвести баг.
#9 04.10.2011 08:56

Все там работает, нужно просто правильную структуру таблицы сделать.
_________________
Gentoo Linux || Asterisk 11.2-cert3
Решения телефонии на базе Asterisk || http://it-need.ru
#10 04.10.2011 11:46

aven писал(а):
Все там работает, нужно просто правильную структуру таблицы сделать.

Ну я как-бы об этом и спрашиваю. Это тайна?
Если не трудно, ткните носом.
#11 04.10.2011 12:13

Код:
Table "public.queue_log_testpbx18"
Column | Type | Modifiers
-----------+-----------------------------+------------------------------------------------------------------
id | integer | not null default nextval('queue_log_testpbx18_id_seq'::regclass)
time | timestamp without time zone |
callid | character varying(100) |
queuename | character varying(100) |
agent | character varying(100) |
event | character varying(50) |
data1 | character varying(100) |
data2 | character varying(100) |
data3 | character varying(100) |
data4 | character varying(100) |
data5 | character varying(100) |
Indexes:
"queue_log_testpbx18_pkey" PRIMARY KEY, btree (id)


как то так. Это пример на PostgreSQL, для мускуля думаю адаптируете
#12 04.10.2011 13:27

Может стоит сначала под носом посмотреть? Например в дистрибутиве.
Код:
./asterisk-1.8.5.0/contrib/realtime/mysql/queue_log.sql

_________________
Gentoo Linux || Asterisk 11.2-cert3
Решения телефонии на базе Asterisk || http://it-need.ru
#13 04.10.2011 18:31

Ага. Спасибо.
Вот в contrib я то и не посмотрел.
Создал скриптом, никакого результата.
Код:

[Oct 4 22:23:08] WARNING[28760]: res_config_mysql.c:1252 require_mysql: Realtime table queue_log_1@general: Column time cannot be a datetime
[Oct 4 22:23:08] WARNING[28760]: res_config_mysql.c:1289 require_mysql: Table queue_log_1 requires a column 'data' of size '0', but no such column exists.
[Oct 4 22:23:08] WARNING[28760]: res_config_mysql.c:842 store_mysql: MySQL RealTime: Failed to insert into database: Unknown column 'data' in 'field list'

Confused

Added after 1 hours 32 minutes:

Посмотрел в базу - в базе пусто.
Подцепил обратно старую - исчезла строчка с ошибкой
Код:

WARNING[28760]: res_config_mysql.c:1289 require_mysql: Table queue_log_new requires a column 'data' of size '0', but no such column exists.

сейчас осталась только такая ошибка
Код:

[Oct 4 23:22:29] WARNING[29105]: res_config_mysql.c:1263 require_mysql: Realtime table queue_log_new@general: Column time cannot be a datetime

Причем данные в базу попадают. В поле data.
#14 04.10.2011 19:23

какая у тебя структура таблицы?
_________________
Gentoo Linux || Asterisk 11.2-cert3
Решения телефонии на базе Asterisk || http://it-need.ru
#15 05.10.2011 05:42

Сейчас такая

Код:

`id` int(10) unsigned NOT NULL auto_increment,
`time` datetime NOT NULL default '0000-00-00 00:00:00',
`callid` varchar(32) NOT NULL,
`queuename` varchar(32) NOT NULL,
`agent` varchar(32) NOT NULL,
`event` varchar(32) NOT NULL default '',
`data1` varchar(128) NOT NULL,
`data2` varchar(128) NOT NULL,
`data3` varchar(128) NOT NULL,
`data4` varchar(128) NOT NULL default '',
`data5` varchar(128) NOT NULL default '',
`data` varchar(128) NOT NULL,
PRIMARY KEY (`id`),
KEY `data1` (`data1`),
KEY `data2` (`data2`),
KEY `data3` (`data3`),
KEY `data4` (`data4`),
KEY `data5` (`data5`),
KEY `event` (`event`),
KEY `queuename` (`queuename`),
KEY `callid` (`callid`),
KEY `agent` (`agent`),
KEY `time` (`time`)


Ещё раз по порядку.
1. Обновил asterisk
2. Модифицировал БД, как описано на voip-info.org
3. Хотя поначалу хоть и были предупреждения в логах об отсутствии data4, data5, данные ложились в data1, data2, data3.
4.Добавил data4, data5 - появилась строчка об отсутствии поля data. Данные в data1, data2, data3 ложиться перестали.
5.Добавил data - данные ложатся в поле data, разделитель "|". Остальные поля dataX - пустые. В логах осталось предупреждение об несоответствии поля calldate.
6.Создал БД из скрипта в contrib/realtime. Появилась строчка об отсутствии поля data. Данные ложиться перестали. Совсем.
7. Откатился на старую БД. Теперь ситуация как в п.5. Формат БД привёл выше.
#16 06.10.2011 04:12

После перезагрузки сервера в логах чисто.
Но пишет все равно в поле data
#17 16.10.2011 16:50

Аналогичная проблема.
Код:

[Oct 16 11:05:13] WARNING[5621]: res_config_mysql.c:1263 require_mysql: Realtime table rt_queue_log@general: Column time cannot be a datetime
[Oct 16 11:05:13] WARNING[5621]: res_config_mysql.c:1252 require_mysql: Realtime table rt_queue_log@general: Column time cannot be a datetime
[Oct 16 11:05:13] WARNING[5621]: res_config_mysql.c:1289 require_mysql: Table rt_queue_log requires a column 'data' of size '0', but no such column exists.
[Oct 16 11:05:13] WARNING[5621]: res_config_mysql.c:842 store_mysql: MySQL RealTime: Failed to insert into database: Unknown column 'data' in 'field list'
[Oct 16 11:05:13] WARNING[5621]: res_config_mysql.c:1252 require_mysql: Realtime table rt_queue_log@general: Column time cannot be a datetime
[Oct 16 11:05:13] WARNING[5621]: res_config_mysql.c:1289 require_mysql: Table rt_queue_log requires a column 'data' of size '0', but no such column exists.
[Oct 16 11:05:13] WARNING[5621]: res_config_mysql.c:842 store_mysql: MySQL RealTime: Failed to insert into database: Unknown column 'data' in 'field list'


Таблица взята из исходников:
Код:

+-----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+-------+
| time | datetime | YES | MUL | NULL | |
| callid | char(50) | YES | | NULL | |
| queuename | char(50) | YES | MUL | NULL | |
| agent | char(50) | YES | | NULL | |
| event | char(20) | YES | | NULL | |
| data1 | char(20) | YES | | NULL | |
| data2 | char(20) | YES | | NULL | |
| data3 | char(20) | YES | | NULL | |
| data4 | char(20) | YES | | NULL | |
| data5 | char(20) | YES | | NULL | |
+-----------+----------+------+-----+---------+-------+


В 1.8.6 ставил заглушку в исходниках на проверку. Писало по полям data1, data2 и тд
Но с каждым новым дистром не накомпилишься.
Хотелось бы найти корень зла Smile
Не хочу парсить data|
Может кто-нибудь решил проблему?