我正在开发一个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应用程序中不太可能发生,所以为了帮助你,我们需要更多的信息来了解导致这个错误的原因。
您还说您"无法从视图中的数据库检索或添加数据"。如果仍然是这种情况,那么一定是在某个地方出现了错误,即使没有显示给您。因此,请检查相关的错误日志和错误设置。