Asterisk-CDR-Viewer-Mod icon indicating copy to clipboard operation
Asterisk-CDR-Viewer-Mod copied to clipboard

Настроить работу с pqsql

Open ByteDSM opened this issue 9 years ago • 10 comments

CDR исторически складываю в pgsql. Как настроить работу с pgsql?

ByteDSM avatar Oct 06 '16 07:10 ByteDSM

Здесь используется подключение к базе данных через PDO, т.е. можно использовать не только mysql. Все можно настроить в config.inc.php. Для pgsql: $db_type = 'pgsql';. Далее все также. Советую посмотреть в Google про PDO и pgsql.

prog-it avatar Feb 09 '17 13:02 prog-it

Отлично! Это помогло. Но появилась ошибка: PDO::errorInfo(): Array ( [0] => 42883 [1] => 7 [2] => ОШИБКА: функция unix_timestamp(timestamp with time zone) не существует LINE 1: SELECT *, unix_timestamp(calldate) as call_timestamp FROM cd... ^ HINT: Функция с данными именем и типами аргументов не найдена. Возможно, вам следует добавить явные приведения типов. )

Как ее можно вылечить? Таблицы: "id,"calldate","clid","src","dst","dcontext","channel","dstchannel","lastapp","lastdata","duration","billsec","disposition","amaflags","accountcode","uniqueid","userfield","type_call","sip_a","sip_b","id_order","waittime","calltime","resultcall","peeraccount","flags","linkedid","sequence"

ByteDSM avatar Feb 22 '17 17:02 ByteDSM

Попробуйте сделать, как написано в файле "Старый Readme.txt". Нужно в базе создать функцию unix_timestamp.

to use this software with postgres DB, add follow function to DB:

CREATE FUNCTION unix_timestamp(TIMESTAMP) RETURNS INTEGER AS ' SELECT date_part(''epoch'', $1)::INTEGER AS RESULT ' LANGUAGE sql; CREATE FUNCTION

Отпишитесь, если все будет работать. Потом добавлю в основной файл справки.

prog-it avatar Feb 22 '17 18:02 prog-it

Сделал как в описании. получил: PDO::errorInfo(): Array ( [0] => 42883 [1] => 7 [2] => ОШИБКА: функция unix_timestamp(timestamp with time zone) не существует LINE 1: SELECT *, unix_timestamp(calldate) as call_timestamp FROM cd... ^ HINT: Функция с данными именем и типами аргументов не найдена. Возможно, вам следует добавить явные приведения типов. )

ByteDSM avatar Feb 23 '17 06:02 ByteDSM

Проверьте, действительно ли функция unix_timestamp создалась в базе. Ошибка прежняя, эта функция отсутствует. У себя не могу проверить, т.к. используется MySQL.

prog-it avatar Feb 23 '17 09:02 prog-it

Создалась. При повторном выполнении команды ошибка: ОШИБКА: функция "unix_timestamp" с аргументами таких типов уже существует CSV выгружаются.

ByteDSM avatar Feb 23 '17 10:02 ByteDSM

Добрый день, все же при работе с PostgreSql и с обновленным asterisk 13+ приходится плясать с бубном касательно того что бы приложение заработало. Можно как-то исправить зависимость от того как называны столбцы в БД, так как проще поменять в конфиге приложения чем менять в asterisk на котором может быть много чего завязано. Спасибо.

brestows avatar Sep 01 '17 11:09 brestows

Постараюсь добавить такую возможность. Но, скорее всего, не в ближайшей версии, а в следующей, после нее.

prog-it avatar Sep 11 '17 02:09 prog-it

Спасибо большое.

brestows avatar Oct 03 '17 08:10 brestows

Для работы с postgresql надо создать функцию unix_timestamp CREATE FUNCTION unix_timestamp(TIMESTAMP) RETURNS INTEGER AS ' SELECT date_part(''epoch'', $1)::INTEGER AS RESULT ' LANGUAGE sql; CREATE FUNCTION и поправить index.php все упомнинания unix_timestamp(calldate) заменем на unix_timestamp(CAST(calldate AS DATE)) и начнут отображаться записи. Лучше перед таким действием забэкапить index.php

kpu32167 avatar Mar 01 '20 17:03 kpu32167