php - 使用 PHP : Data source name not found, 连接到 MS SQL 数据库且未指定默认驱动程序

标签 php sql-server odbc freetds

我被这个问题困扰了一段时间,但我无法进一步解决,我进行了很多搜索,但没有任何效果......我正在尝试使用 odbc 通过 php 连接到 Microsoft SQL 数据库.

一切都设置好了,如下(文件中“”之间的值是正确的):

/etc/odbc.ini:

[CRMCONNECT]
Description = "CRMConnect"
Driver = FreeTDS
Trace = No
Servername = CRMSERVER
Database = "dbname"
UserName = "username"
Password = "password"

[Default]
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so

/etc/odbcinst.ini:

[FreeTDS]
Description = tdsodbc
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
CPTimeout       = 5
CPReuse         = 5
FileUsage       = 1

/etc/freetds/freetds.conf:

[CRMSERVER]
host = xxx.xxx.xxx.xxx 
port = 1433
tds version = 8.0

我多次检查主机,它是正确的。我也试过 tds 7.0 版,但没有成功。

我可以使用 isql 成功连接到服务器:

root@crmart-web004:/# isql -v CRMCONNECT "user" "pass"
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

但是使用 php 我无法让它工作,我得到以下错误:

[unixODBC][Driver Manager]Data source name not found, and no default driver specified 

我的连接字符串:

$connection = odbc_connect("Driver={CRMCONNECT};Server=xxx.xxx.xxx.xxx;Database=dbname;","username","password");

所有参数都经过双重检查并且正确无误。

为什么我可以成功连接到 isql,但在 php 中连接失败?

我的 php 版本:

PHP Version 5.4.4-14+deb7u5

odbcinst 配置:

unixODBC 2.2.14
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

我希望有人知道哪里出了问题。

提前致谢

问候

更新:

我将连接字符串更改为:

$connection = odbc_connect("CRMCONNECT;Database=dbname;","user","pass");

这会导致另一个错误:

[unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_HENV failed

我会调查的,再次感谢 vinodadhikary

问候。

更新 2:

我的连接字符串错了,应该是:

$connection = odbc_connect("CRMCONNECT","user","pass");

谢谢 vinodadhikary!

问候和节日快乐。

最佳答案

因为您已经定义了 CRMCONNECT DSN,您可以使用以下连接方法:

$connection = odbc_connect("CRMCONNECT","username","password");

同样在您的连接字符串中,您有 Driver={CRMCONNECT};CRMCONNECT 您定义的不是驱动程序,它是数据源名称。你的驱动程序是 FreeTDS

关于php - 使用 PHP : Data source name not found, 连接到 MS SQL 数据库且未指定默认驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20739588/

相关文章:

javascript - 下拉自动完成

python - Django 无法连接到 SQL Server 2019

c# - LINQ 到 SQL : Left join on multiple columns

python - 设置 pyodbc 搜索 odbcinst.ini 文件的位置

windows - 创建 ODBC 连接的脚本

python - windows上从python连接odbc的常用方法?

php - FTUNCATE 在开头留出空格

php - Redis nodejs 获取过滤器

php - 发布表单后重置隐藏变量

sql - 如何创建 SQL 脚本?