FreeSWITCH默认的数据库是SQLite,实际使用中可能需要改用其他数据库,本文即以MySQL为例进行说明。
基础准备
首先需要安装MySQL,安装完后就需要配置ODBC数据源:
创建用户与数据库:
链接mysql:mysql.exe -u用户 -p密码;
创建用户:Create User 'fsuser'@'%' Identified by 'fspsw';
创建数据库:Create Database FreeSwitch;
授权:Grant privileges ON FreeSwitch.* To 'fsuser'@'%';
安装‘mysql-connector-odbc-***’;
通过‘管理工具’-‘数据源(ODBC)’,添加数据源:
Data Source Name:以后使用的数据源名称,设为Fs-MySql;
Tcp/IP Server:服务器IP地址,本机使用localhost即可;
输入用户名、密码与数据库(FreeSwitch);
点击‘Detail’,在‘Connection’中选中‘Allow Multiple statements’(允许一次执行多条语句,FreeSWITCH的要求)
创建完成后即可修改配置改用MySQL了。
FreeSWITCH配置修改
修改各个模块对应数据库配置,改用MySQL:
修改其他模块,添加以下配置
修改完配置重启后,FreeSWITCH就会自动改用MySQL
FreeSWITCH代码修改
因MySQL的限制,需要修改FreeSWITCH代码以便能顺利创建对应表。
1、MySQL一个行定义长度(如一个数据表中的所有字段:基本类型、varchar等字段)不能超过65535字节(text、blob只计做十几个字节);若字段总长度超过限制值,则需要把一些大的varchar字段改用text。
把switch_core_sqldb.c中的表定义中的字段类型,从varchar(4096)改为text;否则创建会失败。
2、字段名不能与MySQL中的保留字相同,若相同,则使用反引号引起。
把mod_fifo.c中的lag改为`lag`。
3、MySQL创建索引的长度不能超过1000。
注释掉sofia_glue.c中contact字段上的索引。
在lua中操作MySQL
local dbh=freeswitch.Dbh("odbc://Fs-MySql:fsuser:fspsw")
assert(dbh:connected())
dbh:test_reactive("Select * from myTable",
"Drop Table myTable" --获取数据失败,则删除表
"Create Table MyTable(Id int Primary Key Not NULL, Info Varchar(100) Not NULL)") -- 重新创建表
dbh:query("Replaceinto MyTable(1, "test")) --若存在则更新,否则插入
print(dbh:affected_rows())
dbh:release()
领取专属 10元无门槛券
私享最新 技术干货