考えられる原因
原因は、
- ODBC-Connector がインストールさて例ない場合
- ODBC-Connector の設定ファイルが /etc/ 直下でなく /usr/local/etc/ である場合
- odbcinst.ini の内容と odbc.ini の整合性がとれていない場合
- odbc.ini で sock ファイルを使っているためアクセスできない場合
が、考えられる。まずは odbcinst にてチェックしてみる
sudo apt-get install -y unixodbc odbcinst
odbcinst -j
ここで
Can’t connect to local server through socket ‘/var/lib/mysql/mysql.sock’
というエラーが出た場合は、 odbc.ini を sock から ユーザー名とパスワードに変更する
ドライバーの認識する odbc.ini と odbcinit.ini が /etc でなく/usr/loca/etc であるのが原因と mariadb-connector の入っていないのが原因の場合
https://mariadb.com/downloads/connectors/connectors-data-access/odbc-connector/ にアクセスし、 Connectors タブから ODBC connector 3.2.5-GA Ubuntu 24.04 Noble(64bit x86) Deb をダウンロード
sudo apt install -y mariadb-connector-odbc_3.2.5-1+maria~noble_amd64.deb
sudo apt-get update
sudo apt-get install unixodbc odbcinst
sudo apt-get update
# これはいらないかも
sudo apt-get install unixodbc-dev
ドライバーの確認
odbcinst -j
結果
unixODBC 2.3.12
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
上記の DRIVERS と SYSTEM DATA SOURCE の設定ファイルを編集する ここで
find /usr -name libmaodbc.so
にて libmaodbc.so の場所を確認しておく
cat <<EOF > /usr/local/etc/odbcinst.ini
[MySQL]
Description=ODBC for MySQL (MariaDB)
Driver=/usr/lib/libmaodbc.so
FileUsage=1
[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.5.so.1.1
UsageCount=1
[MariaDB ODBC 3.0 Driver]
Description = MariaDB Connector/ODBC v.3.0
Driver = /usr/lib/libmaodbc.so
EOF
上記の Driver の場所に libmaodbc.so が存在していること odbcinst.ini の カッコでくくった MariaDB Connector 定義名と odbc.ini の Driver が一致していること
cat <<EOF > /usr/local/etc/odbc.ini
[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
Driver=MariaDB ODBC 3.0 Driver
SERVER=localhost
DATABASE=asteriskcdrdb
USER=Mariadb の asteriskcdrdb にアクセスできるユーザー名
PASSWORD=Mariadb の asteriskcdrdb にアクセスできるユーザーのパスワード
PORT=3306
EOF
接続確認
isql MySQL-asteriskcdrdb -v
エラーが表示されないこと。一度
sudo fwconsole restart
で、 Asterisk / FreePBX を再起動。
asterisk -r にて CLI を立ち上げ、
odbc show all
cdr show status
にてエラーがなく、Number of active connections: が 0 でないことと、
cdr show active
を入力し、通話中複数回入れて録音時間が更新されていることと、CDR レポートにて通話記録と音声の再生が可能なことを確認しておく。