今天我的问题与 PDO、OCI8 和 PDO_OCI 有关。但从一开始。
我使用的是 Ubuntu 11.10 和 PHP 版本:5.3.8-1ubuntu3。我已经安装了 Oracle 10g Express,并对其进行了配置并且运行良好。我必须做的下一步是在 Oracle 和 PDO 之间进行集成。所以我找到了这个链接:http : //lacot.org/blog/2009/11/03/ubuntu-php5-oci8-and-pdo_oci-the-perfect-install.html 并一步一步地做(不安装 PDO,之前使用 pdo_mysql 安装)。当我尝试在 Ubuntu 10.10 上执行此操作时 - 它正在运行。现在,在 11.10 上,当我尝试打开我的网站应用程序时,出现错误:“找不到驱动程序”。
我检查了 phpinfo(),在 PDO 行中有:PDO 支持 - 已启用,PDO 驱动程序 - mysql。本节中没有关于 oci 的任何内容,尽管在它下面几行我有适用于 OCI 8 及更高版本的 PDO 驱动程序 - 已启用。
希望有人可以帮助解决这个问题。最好的问候,马特奥。
我正在开发一个使用 Oracle 作为后端的旧 PHP Web 应用程序。我没有直接访问这个数据库的权限。
在旧应用程序中,他们使用str_replaces 而不是oci_bind_by_name替换 sql 上的变量。我想改变这一点,但我想这样做,同时避免破坏某些东西。所以我在执行sql之前写了一些测试。
我想将旧生成的 sql 与使用后生成的 sql 进行比较,oci_bind_by_name但我找不到查看“绑定”sql 的方法。
有这样的方法吗?
我最近将我的 Windows 从 7 升级到 10。升级后,我通过将可执行路径添加到PATH环境变量来“安装”PHP7.1,与旧 Windows 相同php.ini(因为它是相同的文件夹,没有任何更改),并且还添加了同一个即时客户端 12 到PATH.
使用php -v,它加载所有模块,包括 mbstrings 和 xdebug,除了 oci 模块:
PHP 警告:PHP 启动:无法加载动态库 'ext\php_oci8_12c.dll' - 找不到指定的模块。在第 0 行未知
警告:PHP 启动:无法加载动态库 'ext\php_oci8_12c.dll' - 找不到指定的模块。在第 0 行未知
PHP 警告:PHP 启动:无法加载动态库 'ext\php_pdo_oci.dll' - 找不到指定的模块。在第 0 行未知
警告:PHP 启动:无法加载动态库“ext\php_pdo_oci.dll” - 找不到指定的模块。在第 0 行未知
PHP 7.1.1 (cli)(构建时间:2017 年 1 月 18 日 18:38:49)( ZTS MSVC14 (Visual C++ 2015) x64 )
版权所有 (c) 1997-2017 PHP 集团
Zend Engine v3.1.0,版权所有 (c) 1998-2017 …
我从其他开发人员那里继承了一个小型 java 实用程序——只有几个 .java 文件和可执行的 .jar。
我通过传递连接字符串来运行java程序。现在我需要将 Oracle 的连接字符串从 更改为 ,jdbc:oracle:thin:<user>/<password>@host以jdbc:oracle:oci:<user>/<password>@host开始使用厚驱动程序而不是瘦驱动程序。
结果我收到错误:“ocijdbc11(在 java.library.path 中找不到)”。
这是我的问题:
/oracle/client/o11r2/lib/libocijdbc11.soocijdbc11?万一:
$ ls /oracle/client/o12r1/
assistants diagnostics jlib oui slax
bin dmu ldap owm sqlplus
cdata has lib perl srvm
cfgtoollogs hs network plsql ucp
clone install nls precomp usm
crs instantclient odbc QOpatch utl
css inventory OPatch racg wwg
cv javavm opmn rdbms xdk
dc_ocm jdbc oracore relnotes
deinstall jdk oraInst.loc root.sh …Run Code Online (Sandbox Code Playgroud) 我们使用 Lumen 5.2.x (Laravel) 应用程序从 Oracle 数据库获取数据。出于这个原因,我们使用oci_connect()连接到数据库。(额外信息:我们使用 Oracle instantclient)
由于未知原因,应用程序没有响应并且不会返回任何数据。经过几个小时的调试,我们发现它陷入了同样的方法:oci_connect(). 显然该函数没有返回“超时”消息或类似的消息。
后来好像数据库移到了另一台主机上,这就是无法连接的原因。然而,我们预计会出现错误,而不是等待大量的时间。
这就是我们试图强制设置暂停的原因,但到目前为止还没有成功。
我们尝试过的事情:
将其添加到连接字符串:(CONNECT_TIMEOUT=10)(RETRY_COUNT=3)完全被忽略。
设置max_execution_time和set_time_limit1
添加一个sqlnet.orawith 设置:
TCP.CONNECT_TIMEOUT=10
SQLNET.INBOUND_CONNECT_TIMEOUT=10
SQLNET.OUTBOUND_CONNECT_TIMEOUT=10
Run Code Online (Sandbox Code Playgroud)
我们尝试的一切都失败了,有人知道如何解决这个错误吗?任何帮助表示赞赏!
编辑:系统信息:Windows Server 2012 R2、IIS 8、PHP 5.6
我写了一个php脚本,必须在php解释器(没有Apache)上运行,它使用带有Oracle数据库的adodb库,但是当我尝试运行它时,我收到以下错误:
PHP Notice: Use of undefined constant OCI_COMMIT_ON_SUCCESS - assumed 'OCI_COMMIT_ON_SUCCESS' in c:\proyect\backend\libraries\adodb\adodb.inc.php on line 4248
Run Code Online (Sandbox Code Playgroud)
我已经检查过,并且启用了php_oci8和php_oci8_11g,所以应该定义常量.此外,当我使用Apache运行此脚本时,它没有任何问题.
提前致谢!
Noob在这里(关于Oracle和OCI).
我正在编写一个程序来为我的公司做一些任务.在这些任务中,我必须更新oracle数据库以使其与其他操作保持同步.
我想有效地预分配内存以保存在选择集上获取的结果.为了做到这一点,我需要知道选择集中有多少行.
我可以用2个单独的陈述来做; 首先是SELECT COUNT语句,后跟SELECT语句,但从服务器的角度来看效率很低.我也可以执行我的SELECT语句并在从选择集中获取行时动态分配内存,但从客户端的角度来看这是低效的.
我想简单地执行SELECT语句,并在获取任何行之前,检索选择集中匹配行的数量.
但我找不到具有此信息的属性.
有OCI_ATTR_ROW_COUNT但这是FETCHED的行数,而不是选择集中的总行数.然后有OCI_ATTR_PARAM_COUNT告诉你COLUMNS的数量(似乎没用,因为你已经知道你在SQL中要求的列数).
有人知道如何在获取之前获取选择集行数吗?
谢谢乔希
我试图在一次oci_execute()PHP 调用中发出多个 INSERT 语句。问题是我收到此错误:
ORA-00911: invalid character
Run Code Online (Sandbox Code Playgroud)
我猜这是;在每个语句之后。
所以现在,我的问题是我如何制作多个可以在其中工作的 INSERT 语句oci_execute()?
到目前为止,这是我的查询:
INSERT INTO tbl (id, name) VALUES(1, 'John');
INSERT INTO tbl (id, name) VALUES(2, 'Martha');
INSERT INTO tbl (id, name) VALUES(3, 'Richard')
Run Code Online (Sandbox Code Playgroud)
编辑:
请注意,;我的查询末尾没有,因为我使用的是 SQL 语句。
我正在制作一个连接 Oracle DB 的 C 程序。我已正确安装 Oracle Instant Client 和 ocilib。
我确实编译了代码,没有任何错误,但是当我执行程序时,出现以下错误。
./a.out: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果有人知道如何解决请写下谢谢。
我刚刚在我的电脑上安装了xampp v3.2.2.我想使用php创建连接字符串到oracle.当我在xampp上启动Apache时,总是会显示弹出窗口"OCI.DLL正在从您的计算机中丢失".我一直从http://www.dll-found.com/download/o/oci.dll下载oci.dll 并将其放在C/windows/SysWOW64中
但是,当我再次在xampp上启动apache时,显示弹出窗口"程序入口点OCIstmtgetNextresult无法位于动态链接库oci.dll"中 ,如此截图
我该怎么办?谢谢