odbc_connect():SQL错误:[unixODBC] [驱动程序管理器]数据源

时间:2017-11-07 06:50:24

标签: php odbc teradata unixodbc

我想创建与teradata数据库格式php的连接。我的代码托管在Ubuntu服务器上,但发生了以下错误。

  

" odbc_connect():SQL错误:[unixODBC] [Driver Manager]数据源名称   找不到,也没有指定默认驱动程序,SQL状态为IM002   SQLConnect in / path"。

当它从本地主机正常工作时。

php代码是:

$sDriver = 'Teradata';
$sDBCName = 'ip';
$sDatabase = 'dbname';
$sDSN = "Driver={$sDriver};DBCName={$sDBCName};Database={$sDatabase};";
$connection = odbc_connect($sDSN, "username", "password");

但代码bcoz没有任何问题,它正在本地主机上工作。

2 个答案:

答案 0 :(得分:0)

之前我也遇到过同样的问题。我以某种方式设法使用此代码修复它:

$database = 'db';
$user = 'user';
$password = 'pass';
$hostname = 'ip';
$port = portNo;
$db = odbc_connect("Driver={Your-Driver};HOSTNAME=$hostname;
                    Database=$database;PORT=$port;PROTOCOL=TCPIP;", $user, $password);

希望它有所帮助。

答案 1 :(得分:0)

您需要同时安装用于SQL Server的PHP ODBC扩展和Microsoft的ODBC驱动程序。

安装PHP ODBC扩展

sudo apt-get install php7.2-odbc

# Note that on Ubuntu 16.04 and earlier you'll need to register this PPA first.

sudo add-apt-repository ppa:ondrej/php

安装用于SQL Server的Microsoft ODBC驱动程序17

导入GPG密钥:

bash curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

注册Microsoft Ubuntu存储库:

curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list

# Note replace 16.04 in package URL aboive with your Ubuntu version. i.e. 14.04, 18.04, etc.

下载适用于您的Ubuntu版本的驱动程序:

bash sudo ACCEPT_EULA=Y apt-get install msodbcsql17

安装可选的bcp和sqlcmd工具:

bash sudo ACCEPT_EULA=Y apt-get install mssql-tool

从您的PHP应用程序连接

<?php
$dsn = 'Driver={ODBC Driver 17 for SQL Server};Server=server.domain;Database=database_name';
$username = 'your_username';
$password = 'your_password';
if($connection = odbc_connect($dsn, $username, $password, SQL_CUR_USE_ODBC)) {
    echo "Connected to the datasource.";
} else {
    echo "Could not connect to the datasource.";
}

参考:https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017