2014-03-19 54 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