2014-03-19 96 views
0

所以我有一個奇怪的問題。在PHP中,我運行數據庫,並在每個數據庫上使用PDO執行一些查詢。一切都很正常,但是當數據庫名稱的長度大於27,我有一個錯誤:PDO:數據庫名稱的長度太長

SQLSTATE[HY000] 
General SQL Server error: Check messages from the SQL Server. 
(severity 5) 

我不知道,如果這只是一個巧合,但與90級的數據庫,我只是有這個問題對於那些誰有一個大於27.

你有這個問題的想法和如何解決它?我沒有發現類似這樣的問題。

class BD_TEST { 
… 

private function __construct(){} 
private function __clone(){} 
private function __destruct(){ 
    self::$oDB_main = null; 
    self::$oDB_error = null; 
} 

public static function getInstance() { 
    … 


    if (!self::$oDB_main) { 
     try { 
      //Error in the next line 
      self::$oDB_main = new PDO("mssql:host=".$prj_server.",".$prj_port.";dbname=[".$prj_datasource."]",$prj_user,$prj_pass); 
      self::$oDB_main->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     }catch (Exception $e) {echo($e."<br>Impossible to connect to [".$prj_datasource."] on ".$prj_server.":".$prj_port." with the user ".$prj_user."\n\n ".$e->getMessage());exit(0);} 
    } 
    return self::$oDB_main; 


} 

... 

}

+0

新的SQL Server數據庫名稱被存儲爲'是一樣的'爲nvarchar(128)'所以你應該能夠有SYSNAME'數據類型數據庫名稱最多爲'128'字符。較舊的數據庫,它曾經是'varchar(30)' – 2014-03-19 17:46:24

+0

你的db的名字是什麼?也許它有一個不應該在那裏的角色。 – Duniyadnd

+0

不,我檢查的字符都很好 例如:amstedindustrie_60_amstedindustrie_sp_dev – TroyAndAbed

回答

0

也許沒有實際的問題:

Messages with a severity level of 0 to 10 are informational messages and not actual errors. 

來源: http://blog.sqlauthority.com/2007/04/25/sql-server-error-messages-sysmessages-error-severity-level/

如果你決定的情況是所有的權利,您可能需要取消錯誤消息,也許通過關閉錯誤報告。


UPDATE:你說你的程序崩潰和錯誤消息是沒有意義的。

  1. 將error_reporting設置爲高,看看PHP是否會咳嗽更好。
  2. 檢查日誌文件到PHP,服務器和SQL Server
+0

但情況並不好。即使有error_reporting(0);我的程序崩潰,有DB。 – TroyAndAbed

+0

我在第一條消息中添加了一些代碼 – TroyAndAbed