ThinkPHP 5.1 SqlSrv 驱动不支持 Chinese_PRC_BIN 二进制排序规则

此文章发布于 68 个月前,部分信息可能已经过时,请自行斟酌确认。

先吐槽一下:最新刚入门ThinkPHP才发现真是入坑了,框架是不错就是官方社区太冷清了,问个问题基本没人搭理。

项目背景

最近用 ThinkPHP 重构公司的移动 App 服务端,公司 ERP 数据库使用 Sql Server 数据库并且排序规则是Chinese_PRC_BIN,于是在使用 ThinkPHP 中的 SqlSrv 驱动查询数据时报错了。

错误信息:

获取数据出错SQLSTATE[42S02]: Microsoft[SQL Server]对象名 'information_schema.tables' 无效。

临时解决方案

出错是因为 TP 内置的 SqlSrv 数据库连接驱动中获取表结构用的小写表名,而 Sql Server 数据库中排序规则决定了要区分大小写,数据库中表名和字段名是大写的。微酷是临时这样处理的:

  • 修改:thinkphp/library/think/db/connector/Sqlsrv.php
  • information_schema表相关的表名及字段名改成大写。
最后修改:2019 年 04 月 02 日 11 : 49 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论