ZF2- Undefined class constant 'MYSQL_ATTR_INIT_COMMAND&#


ZF2- Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' (PHP 5.5.12)

我正在开发一个zend framework 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的解决方案,或者任何你可能觉得有用的解决方案。感谢您的宝贵时间。

不幸的是,你似乎在两个场合找到了不好的建议。你得到Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'错误,因为通过注释掉php_pdo_mysql.dll,你有效地禁用了MySQL扩展。取消注释,你肯定会想要的

你提到你正在"使用端口8080",但不清楚你的ZF2应用程序是否在端口8080上运行,或者你是否在该端口上运行MySQL(这将是非标准的)。你说你试图在你的global.php配置文件中指定这个端口,但端口在你发布的配置中无处可见。

"MySQL server has gone away"错误表示MySQL连接超时。这通常是由于PHP脚本运行了很长时间(>30秒)而没有接触DB连接造成的。这在标准的web应用程序中不太可能发生,所以为了帮助你,我们需要更多的信息来了解导致这个错误的原因。

您还说您"无法从视图中的数据库检索或添加数据"。如果仍然是这种情况,那么一定是在某个地方出现了错误,即使没有显示给您。因此,请检查相关的错误日志和错误设置。