首页 / 知识
关于php:MDB2在重新连接时会断开连接并忘记字符集设置
2023-04-16 10:59:00

MDB2 disconnects and forgets charset setting when reconnecting我们最近调试了一个奇怪的错误。找到了解决方案,但是该解决方案并不完全令人满意。 我们使用IntSmarty来本地化我们的网站,并使用我们自己的包装器将本地化的字符串存储在数据库中。 IntSmarty在其析构函数中保存它可能具有的所有新字符串,从而导致数据库调用。 我们使用MDB2的Singleton实例针对MySQL进行查询,并且在连接后,我们使用SetCharset()函数将字符集更改为UTF-8。我们发现在完成最终插入时,IntSmarty保存的字符串被解释为ISO-8859-1。我们仔细查看了查询日志,发现在调用IntSmarty的析构函数之前,MySQL连接已断开连接。然后重新建立它,但是在新连接上没有发出" SET NAMES utf8"查询。这导致保存的字符串被MySQL解释为ISO-8859-1。 似乎没有设置MDB2上默认字符集的选项。我们针对此问题的解决方案是通过添加以下内容来更改MySQL服务器配置
到my.cnf。这仅解决了我们的字符集始终相同的问题。 因此,有什么方法可以防止在运行所有查询之前断开连接吗?我可以强制在其他所有操作之后销毁MDB2实例吗? 打开持久连接有效,但不是理想的答案。 从PHP5文档中:
(强调我的) 可能发生的情况是您的脚本没有显式销毁对象,因此,当PHP到达脚本的末尾时,它将开始按照其感觉的顺序清理所有内容(在您的情况下,这是先关闭数据库链接) 。 如果在脚本实际结束之前明确销毁IntSmarty对象,那应该可以解决您的问题。 |
最新内容
相关内容
linux命令连接数修改?
linux命令连接数修改?,服务,系统,网络,环境,密码,情况,地址,命令,服务器,表示,linux设置telnet服务最大连接数的方法1、在red hat Linux 9的安linux设置命令行长度?
linux设置命令行长度?,系统,工作,信息,地址,命令,工具,异常,管理,目录,文件,linux日志显示长度,设置命令tail -n 1000:显示最后1000行 tail -nlinux设置代替命令?
linux设置代替命令?,系统,地址,网络,工作,软件,工具,服务,信息,命令,别名,linux系统怎样设置命令别名可将设置别名的命令写进启动文件内,这样,每linux网口连接命令?
linux网口连接命令?,网络,系统,地址,密码,检测,软件,情况,分析,电脑,状态,怎么用linux命令连接racle数据库(linux如何连接数据库)连接mysql(myslinux命令设置时区?
linux命令设置时区?,时间,系统,国家,大陆,命令,时区,时钟,日期,指令,时分,linux系统修改系统时间与时区的方法有哪些inux修改时间命令是date-s断开一个长命令linux?
断开一个长命令linux?,系统,信息,工作,名称,暂停,软件,地址,命令,代码,状态,linux的常用命令有那些1、linux系统常用操作命令如下:ls:全拼list,功linux的网络连接命令?
linux的网络连接命令?,地址,系统,工作,网络,工具,信息,命令,基础,服务,目录,linux常用命令及用法1、linux系统常用操作命令如下:ls:全拼list,功能linux设置命令限制?
linux设置命令限制?,数字,情况,信息,管理,系统,最新,在线,设备,第一,发行,Linux每个命令行最多可以输入多少字符,如何设置?多少字符没有特定限linux设置日志命令行?
linux设置日志命令行?,异常,系统,实时,日志,管理,信息,对比,项目,名称,情况,Linux运维知识:从命令行如何查看Linux日志如下图所示,先cd到我们需linux命令行设置网卡?
linux命令行设置网卡?,系统,地址,信息,网络,工具,电脑,工作,名称,设备,网卡,linux配置网卡后,单独关掉网卡和重启网卡的命令是什么?首先用CRTlinux命令优先级设置?
linux命令优先级设置?,系统,时间,实时,策略,优先级,分时,管理,周期性,进程,命令,如何修改linux系统中进程的优先级1、优先级的值=优先系数+niclinux设置ip命令?
linux设置ip命令?,地址,系统,密码,设备,命令,服务,工具,网络,网卡,计算机,在Linux中,可以使用()命令为计算机配置IP地址。1、首先使用root用户