尝试通过“ pgsql” DSN连接到PostgreSQL数据库在FreeSWITCH 1.8上返回“ ERR [无法打开数据库文件]”

时间:2019-08-24 03:22:56

标签: lua freeswitch

当我尝试连接到远程PostgreSQL服务器时,我得到了

$ awk -F'|' -v c="$CURR_SNAP" '
>     NR==FNR {
>         for (i=1;i<NF;i++)
>             a[$4]=i>1?a[$4]"|"$i:a[$4]$1
>     }
>     NR>FNR {
>         if(a[$1])
>             print a[$1]"|"c
>     }
> ' file1 file2
DOMAIN1|USER1|LE1|ORG1|ACCES1|RSCTYPE1|123
DOMAIN3|USER3|LE3|ORG3|ACCES3|RSCTYPE3|123

将FreeSWITCH Lua API与2019-08-23[ERR] switch_core_db.c:223 SQL ERR [unable to open database file] 连接字符串一起使用时:

pgsql

(根据docs中的建议)

即使在FreeSWITCH服务重启后,此设置也可以正常工作, 然后我愚蠢地在Debian 9上做了conn_string = "pgsql://hostaddr=1.2.3.4" .. " dbname=my-db" .. " user=postgres" .. " password=postgres" .. " options='-c client_min_messages=NOTICE'" .. " application_name='freeswitch'" freeswitch.Dbh(conn_string) 就是这样。

1 个答案:

答案 0 :(得分:2)

在最后的沮丧中,我诉诸于使用新的FreeSWITCH安装来重新创建整个VM,并在Debian 9 Stretch install guide中找到了一个新部分:

  

1.10不兼容的更改

     

因为现在即使您仍然使用Fs1.10软件包也已安装   1.8回购,您会更好地意识到一个不兼容的更改:

     

sudo apt update && sudo apt upgrade不再是核心,而是恰当地命名为pgsql

     

您不得将mod_pgsql加载到mod_pgsql中(不起作用),但是   在一个特殊的附加xml文件中,在相同的“ autoload_configs”中   目录。

     

文件名:modules.conf.xml

pre_load_modules.conf.xml

因此,当我做<configuration name="pre_load_modules.conf" description="Modules"> <modules> <!-- Databases --> <!-- <load module="mod_mariadb"/> --> <load module="mod_pgsql"/> </modules> </configuration> 时,FreeSWITCH从1.8升级到1.10。


(2019/08/23)更新:尽管有上述警告,但更新sudo apt upgrade仍无效。仅在将pre_load_modules.conf.xml添加到mod_pgsql后才连接。

有关Debian 9 Stretch的完整解决方案

  1. modules.conf.xml添加到<load module="mod_pgsql"/>
  2. modules.conf.xml
  3. sudo systemctl stop freeswitch

(2019/09/03)来自SignalWire平台工程师Andrey Volk的更新和警告

Andrey Volk :“ 除非您知道自己在做什么,否则请勿将sudo systemctl start freeswitch添加到mod_pgsql。请使用modules.conf.xml。如果存在遇到任何问题,请创建一张Jira票。

toraritte :“ 为什么在pre_load_modules.conf.xml中加载mod_pgsql会成为问题?

Andrey Volk :“ 区别在于Core可能也要使用该数据库。但这是Core,它在任何模块之前都已加载。因此我们需要一个特殊的位置数据库模块(以防万一)是在其他任何模块类型之前加载的;另一方面,如果核心模块未使用该数据库模块,则使用哪个文件都没有关系,应该首先使用。如果是用于LUA,请在LUA之前加载它,但是我们不建议/将其记录下来。

如果无法识别module.conf.xml,则可能是升级错误的结果。确保所有freeswitch软件包都已升级(包括主软件包)。