簡體   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