繁体   English   中英

重新引导后,IBM DB2无法从PHP访问数据库

[英]IBM DB2 unable to access database from PHP after reboot

系统:Windows 8

我一直在使用IBM DB2 Express-C,Xampp和PHP访问数据库的学校项目。

一切都进行得很顺利。 然后有一天,我重新启动了计算机。

IBM Database Manager在启动时返回以下错误:

SQL5005C操作失败,因为数据库管理器无法访问数据库管理器配置文件或数据库配置文件。

我尝试运行db2stop和db2start。

我仍然可以通过db2命令行终端访问我的数据库,好像没有什么错一样。

但是,当我尝试从PHP访问数据库时,我现在从PHP文件中收到以下错误:

58031 [IBM] [CLI驱动程序] SQL1031N在指定的文件系统上找不到数据库目录。 SQLSTATE = 58031 SQLCODE = -1031

您可能需要仔细检查db2diag.log以查找SQL5005C的原因。 在更好的情况下,访问配置文件时会出现暂时性问题。 但是,在最坏的情况下,DBM或DB配置文件之一可能已损坏。 如果DBM CFG损坏,我通常使用db2idrop / db2icrt RESET DB CFG可以“修复”损坏的DB CFG(如在“重置”中,您将丢失所有自定义更改)。

随后的SQL1031N告诉我您尝试访问的数据库已被取消目录。 这也很奇怪,特别是因为您告诉我您可以从DB2命令行访问数据库。 您可能要从命令行执行LIST DB DIRECTORY来显示数据库条目,还希望执行LIST DB DIRECTORY LIST NODE DIRECTORY来查看数据库位于哪个节点上。

可能的原因是您丢失了硬盘上的数据库文件。

  • 使用命令进行检查。

     db2diag -g db=database name > log.txt 
  • 打开log.txt,您将看到如下消息。 在这种情况下,我丢失了一些db2配置文件。 在此处输入图片说明

  • 创建丢失的文件夹并从备份中复制db2配置文件 在此处输入图片说明

  • 使用备份文件还原数据库。

当您尝试通过编程语言(PHP,Python或其他语言)与DB2进行交互时,将使用与db2客户机应用程序进行交互的库(例如python的ibm_db )来连接/查询您的数据库。

如果工作站上安装了多个IBM Data Server客户端软件包,则可能无法使用正确的软件包访问数据库。

因此,您必须验证您的PHP api使用哪个客户端来完成此工作。 去做这个:

  1. 标识包含db2客户机实用程序的../clidriver/bin文件夹(在我的情况下,它位于我的python安装文件夹/site-packages/ibm_db-2.0.8-py3.6.egg/clidriver/bin中
  2. 运行命令db2cli validate ,它将向您显示您正在使用的客户端
  3. 如果当前工作站上的所有IBM Data Server客户端软件包的列表中有多个条目并且您没有使用IBMDBCL_客户端之一,则必须通过双击db2swtch.exe (以管理员身份运行)来切换客户端。按照视觉指示切换到IBMDBCL_项目
  4. 如果不起作用,请卸载并重新安装您的库(在本例中为pip卸载ibm_dbeasy_install ibm_db

您可以在此处找到有关在同一台机器上管理更多db2客户机的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM