我花了很多时间试图解决这个问题.所以也许有人可以帮我在这里,请:(.
我得到了一个ibm-iaccess64.rpm然后使用外星人将其转换为deb.然后安装它:sudo dpkg -i ibm-iaccess64.deb.这是成功的.
然后在我的/etc/odbcinst.ini中我有这个配置:
[ISERIES]
Description = iSeries Access ODBC Driver DSN for iSeries
Driver = iSeries Access ODBC Driver
System = 192.16.1.1
UserID = myuserid
Password = mypassword
Naming = 0
DefaultLibraries = QGPL
Database = MMGSTLIB
ConnectionType = 0
CommitMode = 2
ExtendedDynamic = 0
DefaultPkgLibrary = QGPL
DefaultPackage = A/DEFAULT(IBM),2,0,1,0,512
AllowDataCompression = 1
LibraryView = 0
AllowUnsupportedChar = 0
ForceTranslation = 0
Trace = 0
Run Code Online (Sandbox Code Playgroud)
然后我试了isql -v ISERIES给了我这个错误:
[01000] [unixODBC] [驱动程序管理器]无法打开lib'/opt/ibm/iSeriesAccess/lib64/libcwbodbc.so':找不到文件[ISQL]错误:无法SQLConnect
我检查了文件路径,并且libcwbodbc存在>.<...
希望有人能在这里帮助我:(.非常感谢
经过相当广泛的搜索后,我注意到很多人都很难找到一个回答这个问题的从头到尾的指南.(至少有一个问题指出存在一个解决方案,但是提出的解决方案并没有解决这样一个事实,即默认情况下,RODBC尝试针对iODBC进行编译,而iostBC并未包含在Yosemite中.)我刚刚完成了这个过程,所以我以为我会在这里记录它,希望它会使其他人受益.我正在连接到SQL Server数据库.
我正在尝试在我的macOS High Sierra机器上安装这个mysql odbc连接器,但是我收到此错误:

我试图安装它installer,希望获得有关出错的信息:
? ~ sudo installer -pkg Desktop/mysql-connector-odbc-5.3.9-macos10.12-x86-64bit.pkg -target / -verbose
installer: Package name is MySQL Connector/Odbc 5.3.9
installer: Installing at base path /
installer: Preparing for installation….....
installer: Preparing the disk….....
installer: Preparing MySQL Connector/Odbc 5.3.9….....
installer: Waiting for other installations to complete….....
installer: Configuring the installation….....
installer:
#
installer: Validating packages….....
#
installer: The install failed (The Installer encountered an error that caused the installation to fail. Contact the software manufacturer …Run Code Online (Sandbox Code Playgroud) 经过2天的战斗,我试着在这里寻求帮助.我正在使用unixODBC(2.2.11)在CentOS 5.4服务器上使用DB2(iSeries)和PHP(5.3).我想这是自PHP升级到5.3以来,我在某些查询中得到了PHP段错误.经过一些调查后,我发现问题出现在一些带有长字段的查询中,例如使用此表:
TABLE (
CONTRACTID NUMERIC,
SOMETEXT CHAR(583)
)
Run Code Online (Sandbox Code Playgroud)
这段简单的代码引发了段错误:
try {
$conn = new PDO("odbc:".$dsn, $username, $password, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);
}
catch (Exception $e) {
echo $e->getMessage();
}
$sql = 'SELECT * FROM LIB.TABLE ';
$stmt = $conn->prepare($sql);
$vals = $stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)
是否有任何列长度限制或unixODBC和/或PHP> = 5.1的错误?这个Web应用程序工作得很好,然后我遇到了这个问题..
顺便说一句,我用更新的64位CentOS 6.2机器测试了unixODBC 2.2.14和PHP 5.3,问题是一样的.
任何帮助非常感谢,
谢谢
法比安
更新: 使用PHP odbc函数,它的工作原理:
$conn = odbc_connect($dsn, $username, $password);
$res = odbc_exec($conn, $sql);
$rows = odbc_fetch_array($res);
Run Code Online (Sandbox Code Playgroud)
所以问题更多地与PDO有关,任何想法?
我正在尝试连接到.mdb文件,并安装了MDBTools
当我运行PHP脚本时,这是我得到的错误;
[unixODBC][Driver Manager]Can't open cursor lib 'libodbccr'
Run Code Online (Sandbox Code Playgroud)
在/usr/lib64我找到以下类似的库;
有没有我需要编辑的配置文件,因为对我而言,似乎lib就在那里,只是unixODBC无法找到它?
我将unixodbc配置为在我的Linux Mint机器中使用cloudera的hive连接器,但是在尝试连接到hive时我一直收到以下错误(例如使用isql -v hive)
S1000][unixODBC][Cloudera][ODBC] (11560) Unable to locate SQLGetPrivateProfileString function.
[ISQL]ERROR: Could not SQLConnect
Run Code Online (Sandbox Code Playgroud)
我想我以正确的方式设置了/etc/odbcinst.ini和〜/ .odbc.ini:
# content of /etc/odbcinst.ini
[hive]
Description = Cloudera ODBC Driver for Apache Hive (64-bit)
Driver=/opt/cloudera/hiveodbc/lib/64/libclouderahiveodbc64.so
ODBCInstLib=libodbcinst.a(libodbcinst.so.1)
UsageCount = 1
DriverManagerEncoding=UTF-16
ErrorMessagesPath=/opt/cloudera/hiveodbc/ErrorMessages/
LogLevel=0
SwapFilePath=/tmp
Run Code Online (Sandbox Code Playgroud)
和我的〜/ .odbc.ini文件包含:
[hive]
Description=Cloudera ODBC Driver for Apache Hive (64-bit) DSN
Driver = hive
ErrorMessagesPath=/opt/cloudera/hiveodbc/ErrorMessages/
# Values for HOST, PORT, KrbHostFQDN, and KrbServiceName should be set here.
# They can also be specified on the connection string.
HOST= …Run Code Online (Sandbox Code Playgroud) 我必须在php/linux环境中连接两个MSSQL服务器.所以我决定使用unixODBC和PDO_ODBC.
server1上的mssql:10.10.10.5:1433
server2上的mssql:10.10.10.8 : 14233(非默认端口号)
我认为PDO_ODBC或unixODBC存在端口问题.我在下面尝试了一些代码.
这段代码工作正常.连接成功.
$db = new PDO('odbc:Driver=SQL Server Native Client 11.0; Server=10.10.10.5; Port=1433; Database=dbname; UID=uid; PWD=pwd');
Run Code Online (Sandbox Code Playgroud)
这段代码不起作用.连接失败.
$db = new PDO('odbc:Driver=SQL Server Native Client 11.0; Server=10.10.10.8; Port=14233; Database=dbname; UID=uid; PWD=pwd');
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这个代码也适用于错误的值.:(
$db = new PDO('odbc:Driver=SQL Server Native Client 11.0; Server=10.10.10.5; Port=14233; Database=dbname; UID=uid; PWD=pwd');
Run Code Online (Sandbox Code Playgroud)
我得出结论,有人忽略了PDO的dsn上的端口设置.
我也尝试过使用其他设置 /etc/odbc.ini
[odbc-erp]
Driver=SQL Server Native Client 11.0
Description=MSSQL
Trace=Yes
Server=10.10.10.8
Port=14233
Database=dbname
Run Code Online (Sandbox Code Playgroud)
并且,此代码没有建立连接.
$dbh = new PDO('odbc:odbc-erp', $uid, $pwd);
Run Code Online (Sandbox Code Playgroud)
错误信息:
DB Error: SQLSTATE[HYT00] SQLConnect: 0 …Run Code Online (Sandbox Code Playgroud) 我计划转向 Centos 8,但似乎我无法仅使用普通的 Centos 8 软件包与 SQL Server 建立有效的 PDO 连接。
我已经安装了 unixODBC 包,然后从 PECL sqlsrv 和 sqlsrv_pdo 安装,但我不知道如何进行实际连接或 odbc 配置。
由于我要转移到新环境的大部分代码都是使用 PDO 编写的,因此我不想将其更改为 sql server 本机。
是否有任何分步说明如何在不使用 freetds 的情况下构建到 sql server 的 PDO ODBC 连接,而 freetds 无法通过 centos 存储库(或 RHEL)获得。
代码我正在尝试运行:
$query = "DESCRIBE TABLE TABLENAME";
$result = odbc_exec($h, $query);
Run Code Online (Sandbox Code Playgroud)
结果:
PHP警告:odbc_exec():SQL错误:[unixODBC] [IBM] [iSeries Access ODBC驱动程序] [DB2 UDB] SQL0104 - 令牌TABLENAME无效.有效令牌:INTO.,SQLExecDirect中的SQL状态37000 ...
在同一连接上,SELECT,INSERT,UPDATE或DELETE查询没有其他问题.这是语法错误吗?
我正在使用 CentOS 5.6 版(最终版)和 PHP 5.1.6(cli)(构建时间:2012 年 2 月 2 日 18:24:47)。我需要与同一本地网络中的 DB2 数据库服务器连接。db2 版本是 V5R3。我已经安装了 iSeriesAccess 客户端和 unixODBC。
我的 odbc.ini 配置:
[iSeries Access ODBC Driver]
Description = iSeries Access for Linux ODBC Driver
Driver = /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
Setup = /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so
NOTE1 = If using unixODBC 2.2.11 or later and you want the 32 and 64-bit ODBC drivers to share DSN's,
NOTE2 = the following Driver64/Setup64 keywords will provide that support.
Driver64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so
Setup64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so
Threading = 2
DontDLClose …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用一些简单的 C odbc 代码启动并运行(考虑到我需要一个更大的应用程序,需要一个相当简单的实用程序)。问题是,到目前为止,我无法将我的简单测试用例编译并链接到我可以实际执行的二进制文件中。
此代码来自 easysoft 网站,是他们可用的最简单的示例:
#include <stdio.h>
#include <sql.h>
#include <sqlext.h>
main() {
SQLHENV env;
char driver[256];
char attr[256];
SQLSMALLINT driver_ret;
SQLSMALLINT attr_ret;
SQLUSMALLINT direction;
SQLRETURN ret;
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);
direction = SQL_FETCH_FIRST;
while(SQL_SUCCEEDED(ret = SQLDrivers(env, direction,
driver, sizeof(driver), &driver_ret,
attr, sizeof(attr), &attr_ret))) {
direction = SQL_FETCH_NEXT;
printf("%s - %s\n", driver, attr);
if (ret == SQL_SUCCESS_WITH_INFO) printf("\tdata truncation\n");
}
}
Run Code Online (Sandbox Code Playgroud)
我的编译语句是:gcc -lodbc listdrivers.c -o listdrivers
海湾合作委员会的输出:
/tmp/cchgAMyC.o: In function `main':
listdrivers.c:(.text+0x2f): …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 Ubuntu 连接到 Windows Server 中的 Oracle。我已经为 Ubuntu 安装了 unixODBC 和 Oracle 驱动程序。当我尝试使用 isql 连接时,出现以下错误:
user@user:~$ isql -v oracle-jono username password
[S1000][unixODBC][Oracle][ODBC][Ora]ORA-12545: Connect failed because target host or object does not exist
[ISQL]ERROR: Could not SQLConnect
Run Code Online (Sandbox Code Playgroud)
当我用 sudo 运行它时,我得到了不同的错误:
[S1000][unixODBC][Oracle][ODBC][Ora]ORA-12162: TNS:net service name is incorrectly specified
Run Code Online (Sandbox Code Playgroud)
我尝试了许多环境变量的组合,但都没有成功(ORACLE_HOME、ORACLE_SID、TNS_ADMIN、TWO_TASK)。这是我第一次使用 Oracle 做任何事情,所以实际上我对此一无所知。我还尝试修改 odbc.ini 和 tnsnames.ora 文件。
我用于此 Oracle 连接的 odbc.ini:
[oracle-jono]
Description = ...
Driver = OracleDriver
Server = 111.222.111.222
User = ...
Password = ...
Port = 1521
Database = mydatabase
Run Code Online (Sandbox Code Playgroud)
我的 …
我正在尝试通过我的 MacBook 连接到我公司的 SQL Server 数据库,并按照此处概述的步骤操作:https : //github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Mac-OSX但当我进入以下步骤时,不断收到以下错误:
通过运行检查一切是否正常isql TEST myuser mypassword。您应该看到以下内容:
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
Run Code Online (Sandbox Code Playgroud)
我已经验证了以下工作:
使用 tsql 实用程序测试连接,例如tsql -S TEST -U myuser -P mypassword. 如果这有效,您应该看到以下内容:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>
Run Code Online (Sandbox Code Playgroud)
odbcinst.ini 和 odbc.ini 配置文件都在同一目录中。
MacBook-Pro: myname$ odbcinst -j
unixODBC 2.3.7
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources …Run Code Online (Sandbox Code Playgroud)