FreeSWITCH改用MySQL

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()

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180712G1P54F00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励