ZF2-未定义的类常量' MYSQL_ATTR_INIT_COMMAND' (PHP 5.5.12)

时间:2014-08-11 08:26:12

标签: php database zend-framework2

我正在开发一个zend框架2应用程序,我正在使用端口8080.我在开始时遇到的主要问题是我无法在视图中检索或添加数据库中的数据(可能是与连接有关的问题)数据库)。它没有显示任何错误,但无法检索或添加数据。 我试图在global.php中指定端口:

<?php

return array(
  'db' => array(
             'driver' => 'Pdo',
             'dsn' => 'mysql:dbname=pizza;host=localhost', 
             'driver_options' => array(
                 PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES\'UTF8\''
                 ),
              ),
  'service_manager' => array( 
      'factories' => array(
          'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory'
          )
      ),
 );

之后,我收到了这个错误:

Warning: PDO::__construct(): MySQL server has gone away in

我找了一个解决方案,我找到了一个。我在php.ini中注释了一行:

extension=php_pdo_mysql.dll

它解决了这个问题,但现在我陷入了另一个问题:

Fatal error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in C:\wamp\www\pizza\config\autoload\global.php on line 18

我找到了一些关于如何通过Linux命令解决这个问题的建议:

 apt-get install php5-mysql /etc/init.d/apache2 restart 

但是我想要一个Windows 7的解决方案,或者你可能觉得有用的任何其他解决方案。 谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

不幸的是,您似乎有两次找到了不好的建议。您收到Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'错误,因为通过注释php_pdo_mysql.dll您有效地禁用了MySQL扩展。所以取消注释这一行 - 你肯定希望那里。

您提到您正在“使用端口8080”,但目前尚不清楚您的ZF2应用程序是否在端口8080上运行,或者您是否在该端口上运行MySQL(这将是非标准的)。您说您尝试在global.php配置文件中指定此端口,但在您发布的配置中无法看到该端口。

“MySQL服务器已经消失”错误意味着MySQL连接超时。通常这是由运行很长时间(> 30秒)的PHP脚本引起的,而不会触及数据库连接。这在标准Web应用程序中不太可能发生,因此我们需要有关导致此错误的更多信息才能为您提供帮助。

您还说过“无法在视图中检索或添加数据库中的数据”。如果仍然如此,那么某处肯定会出现错误,即使它没有显示给你。因此,请检查相关的错误日志和错误设置。