问题标签 [pdo-odbc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3223 浏览

php - 游标状态无效 - pdo_odbc FreeTDS SQL Server

我们正在运行一个完全无关紧要的查询,并收到以下错误:

从 PHP 我们使用pdo_odbc库通过 FreeTDS 连接到 SQLServer 2008

0 投票
1 回答
3083 浏览

sql-server - PDO_ODBC 和 unixODBC 无法使用非默认端口连接 MSSQL

我必须在 php/linux 环境中连接两个 MSSQL 服务器。所以我决定使用 unixODBC 和 PDO_ODBC。

  • server1 上的 mssql:10.10.10.5 :1433

  • server2 上的 mssql:10.10.10.8 :14233 (非默认端口号)

我认为存在 PDO_ODBC 或 unixODBC 的端口问题。我在下面尝试了一些代码。

这段代码工作正常。连接成功。

这段代码不起作用。连接失败。

奇怪的是,这段代码在错误的值下也能正常工作。:(

我的结论是有人忽略了 PDO 的 dsn 上的端口设置。

我也尝试使用其他设置/etc/odbc.ini

而且,这段代码没有建立联系。

错误信息:

而且,这段代码工作正常。

而且,这段代码没有建立联系。

端口全部打开。tcpdump显示连接使用始终使用 ms-sql-s (1433)。 sqlcmd工作正常。

我想知道我错过了什么。还是有其他方法可以连接 mssql?

  • CentOS 6.6
  • PHP 5.5.19
  • sqlncli-11.0.1790.0

-

0 投票
1 回答
765 浏览

php - 使用 Zend Framework 2 和 ODBC 驱动程序连接到 Linux 上的 MS SQL Server 正忙

我需要将 Windows 服务器设置迁移到 Linux (Red Hat 7.2) 服务器。以前我们在 Windows 机器上使用pdo_sqlsrv驱动程序。在 Linux 上,我们安装了pdo_odbc驱动程序。但是由于 Zend Framework 2 不支持这个开箱即用,我自己使用 ZF2 API 文档找到了一个数据库配置,现在可以使用。这是配置:

到目前为止,一切都很好。如果我们运行我们的应用程序,一切都会按预期进行,直到每次简单的 GET 请求都失败以获取对象的详细信息。即使我删除了在它之前执行的其他请求,我也无法使请求工作。即使以另一种方式链接请求也无济于事。这是错误:

我们尝试设置 MARS_Connection(在 smozgur 的回答中描述了如何修复本机客户端错误 'Connection is busy with results for another command'?)。但是我们没有这样的/etc/odbc.ini 文件,只有/etc/odbcinst.ini 文件。所以我们的 /etc/odbcinst.ini 文件现在看起来像这样:

我是否错过了设置中的某些内容以使其正常工作?

0 投票
0 回答
752 浏览

sql-server - 如何在 PDO ODBC SQLServer Laravel5 框架中使用 Eloquent ORM

我正在尝试使用 eloquent ORM laravel5 PDO ODBC 连接进行查询以检索所有用户以及何时执行此操作

我收到这个错误

如您所见,我正在使用 FreeTDS 与 SQL Server 连接,我不知道此驱动程序是否需要额外配置,或者我必须修改 laravel 核心。

在此错误中,主要问题是and 周围的反斜杠和\"Users\" and \"email\"引号。如何删除这个引号以及 laravel 这样做的原因。Usersemail

但是,如果我尝试这个

它工作得很好,但我认为这不是在 laravel 中构建查询的更好方法。

用户模型截图 用户模型截图


供参考

我在 Mac OS X EL Capitan、MAMP 服务器、php 5.6.10、pdo-odbc 上使用 laravel 5

0 投票
1 回答
34 浏览

php - PDO odbc 返回错误的哈希密码字符串

我将我的用户密码散列到SQL Server 2008 R2中。注册顺利。哈希密码通过以下代码正确保存:

当我想做登录脚本时,我执行以下操作:

这总是返回 false,因为由于某种原因,用户信息在电子邮件和散列密码中出现问题。

如果我从第一个查询获得的用户信息中执行 var_dump(),我会得到:

由于某种原因,散列和电子邮件字段出现问题。

提前感谢您的帮助。

0 投票
0 回答
540 浏览

php - PDO 不会通过多个查询引发异常

执行多个查询时如何让 PDO 引发异常?

如果我自己运行错误的 sql:

然后我得到预期的错误:

PHP 致命错误:未捕获的 PDOException:SQLSTATE[42S22]:找不到列:207 [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]列名“其他”无效。(SQLExecute[207] 在 /build/php7.0-41GaEn/php7.0-7.0.8/ext/pdo_odbc/odbc_stmt.c:260)

但是,如果我先运行一些好的 SQL,然后再用坏的 SQL,它就会吞下错误,一切看起来都很好。但事后查看数据库确认所有查询在错误语句之后都失败。

我正在迭代所有返回的行集,while ($statement->nextRowset())本答案所示,但它只打印了 8 次:

这加起来:

  • 1 - 第一滴
  • 1 - 完整的 ddl
  • 3 - 第一次插入
  • 1 - 秒下降
  • 1 - 部分 ddl
  • 1 - 插入的第一条语句(第二条是错误的,所以第三条永远不会执行)

为什么我没有从错误的声明中收到错误消息?

这对我来说是个大问题,因为从不抛出异常,所以事务不会回滚,我最终只插入了 1/3 记录。我需要它是全部或全部。

我正在运行带有 PHP 7.0.8-0ubuntu0.16.04.3 (cli) ( NTS ) 的 Ubuntu Linux 16.04.1,使用Microsoft® ODBC连接到 Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64)适用于 SQL Server® 的驱动程序 13(预览版)

0 投票
0 回答
410 浏览

sql-server - PDO ODBC,几个结果集之一导致 php 崩溃

- 在 IIS 8.5 (Windows Server 2012 R2) 上运行 PHP 5.6

- 通过 PDO、ODBC 远程连接到 SQL Server 2008 R2

- 与一个查询隔离的问题,其他查询正常运行并获得预期结果。

我正在调用一个返回八个结果集的存储过程。我将每个结果集写入 CSV。当我到达第三个结果集时,php-cgi.exe 崩溃并出现 500 错误。

我已将问题隔离到这个特定的结果集,因为如果我使用 $stmt->nextRowset() 完全跳过结果集,一切都会按预期工作。

我没有抛出任何 PHP 错误,高级 IIS 日志记录并没有提供太多建议。我正在努力确定导致 PHP 崩溃的原因。我直接通过 SSMS 执行了存储过程,它成功执行了,查看有问题的结果集,看不到任何异常 - 没有特殊字符,没有长字符串等。

我也一直在确认 PHP 内存限制设置是否正确,检查 FastCGI 和 php.ini 的超时,并验证 MVC++ 2012 是否已安装,包括 32 位和 64 位。

寻找有关如何在这一特定结果集上追踪 php 崩溃的任何想法。非常感谢。

更新: Laughing Vergil 下面的回答解决了这个问题。有问题的结果集有两个数据类型为 varchar(max) 的字段。将其中一个更改为 varchar(255) 解决了这个问题。

0 投票
1 回答
596 浏览

odbc - Apache Ignite - [PDOException] SQLSTATE[IM002] SQLConnect: 0 [unixODBC][Driver Manager]未找到数据源名称,并且未指定默认驱动程序

我已经设置了 apache ignite,将数据从 Java 应用程序加载到 ignite 中,并且可以使用 rest apis 进行查询。我需要从 PHP 查询它所以

我正在尝试使用 pdo_odbc 从 PHP 连接到 Apache Ignite。我有,

i) 已安装 ODBC 驱动程序管理器 - http://www.unixodbc.org/

ii) 内置 ODBC 驱动程序 http://apacheignite.gridgain.org/docs/odbc-driver#section-building-on-linux

iii) 安装了 Ignite ODBC 驱动程序http://apacheignite.gridgain.org/docs/odbc-driver#section-installing-on-linux ,

iv) 配置 dsn, http://apacheignite.gridgain.org/v1.8/docs/connecting-string#configuring-dsn 使用

odbcinst -j

猫 /etc/odbcinst.ini

猫 /etc/odbc.ini

猫/home/me/.odbc.ini

v) 安装 pdo_odbc,

它显示在 phpinfo 中。

vi) 使用启用 OdbcConfiguration

七)

我仍然收到此异常。

更新:LD_LIBRARY_PATH 已经有 /usr/local/lib ls /usr/local/lib | grep libignite-binary-1.8.0.16166.so.0

ldd /usr/local/lib/libignite-odbc.so

linux-vdso.so.1 => (0x00007ffe68521000) libignite-binary-1.8.0.16166.so.0 => 未找到

0 投票
1 回答
507 浏览

php - Apche ignite - pdo odbc - SQLSTATE [08001] SQLConnect:0 [unixODBC]无法与主机建立连接

我安装了 odbc 驱动程序和 pdo odbc。这些是相关的问题。

Apache Ignite - [PDOException] SQLSTATE[IM002] SQLConnect: 0 [unixODBC][Driver Manager]未找到数据源名称,并且未指定默认驱动程序

src/teamcity/teamcity_boost.cpp:22:47:致命错误:boost/test/unit_test_suite_impl.hpp:没有这样的文件或目录

虽然安装完成,开始用 odbc enabled 点燃,我仍然得到这个异常。

请检查我上面的问题链接,其中我提到了我在所有配置中详细遵循的所有步骤。

这是我的 odbc.ini 配置

日志显示

0 投票
1 回答
124 浏览

php - 从 Java 加载数据以点燃并从 php pdo_odb 读取 - “[unixODBC]无法接收消息头”

我已经设置了 ignite 和 pdo_odbc。我能够将数据加载到 ignite 中,并且一切都在 java 中工作。

我需要从 PHP 访问数据,所以我设置了 pdo_odbc。

我得到了例外

[PDOException]
SQLSTATE[HYT01] SQLConnect: 0 [unixODBC]无法接收消息头

这是我的 ~/.odbc.ini 配置

我尝试配置不同的端口,但对于某些端口,我无法连接到主机。对于 48100,我似乎能够连接,但 pdo_odbc 无法获取数据。

日志中的错误

点燃开始时记录