重启后,IBM DB2无法从PHP访问数据库

时间:2015-10-27 01:13:20

标签: php database db2

系统: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

3 个答案:

答案 0 :(得分:0)

您可能需要仔细检查db2diag.log以找到SQL5005C的原因。在更好的情况下,访问配置文件存在临时问题。但是,在更糟糕的情况下,其中一个DBM或DB配置文件可能已损坏。对于损坏的DBM CFG,我通常使用db2idrop / db2icrt。可以通过RESET DB CFG“修复”损坏的DB CFG(如“重置”,您将丢失所有自定义更改)。

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

答案 1 :(得分:0)

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

  • 使用命令检查。

    db2diag -g db=database name > log.txt
    
  • 打开log.txt,您将看到如下信息。在这种情况下,我丢失了一些db2配置文件。 enter image description here

  • 创建缺少的文件夹并复制db2 从备份配置文件 enter image description here

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

答案 2 :(得分:0)

当您尝试使用编程语言(PHP,python或其他语言)与DB2交互时,您使用与db2客户端应用程序交互的库(示例 ibm_db for python)连接/查询您的数据库。

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

因此,您必须验证PHP api用于执行此任务的客户端。要做到这一点:

  1. 识别包含db2客户端实用程序的../clidriver/bin文件夹(在我的情况下,它位于我的python安装文件夹/ site-packages / ibm_db-2.0.8-py3.6.egg / clidriver / bin < / LI>
  2. 运行命令 db2cli验证,它将显示您正在使用的客户端
  3. 如果当前工作站上的所有IBM Data Server客户端软件包的列表中有多个条目:,并且您没有使用 IBMDBCL _ 客户端之一,那么必须通过双击 db2swtch.exe (以管理员身份运行)并按照可视指示切换到IBMDBCL_项目
  4. 来切换客户端
  5. 如果它不起作用,请卸载并重新安装您的库(在我的情况下 pip uninstall ibm_db easy_install ibm_db
  6. 您可以在同一台计算机上找到有关管理更多db2客户端的更多信息here