求助 急MySQL server has gone away dream

求助 急~。MySQL server has gone away - ThinkPHP框架
今天刚接触的THINKPHP,安装初始化安装,配置了conf,但是运行时出现如下错误:MySQL server has gone away
FILE: D:\WWW\ThinkPHP\Library\Think\Db\Driver\Mysql.class.php  LINE: 55
#0 D:\WWW\ThinkPHP\Library\Think\Db\Driver\Mysql.class.php(55): E('MySQL server ha...')
#1 D:\WWW\ThinkPHP\Library\Think\Db.class.php(166): Think\Db\Driver\Mysql-&connect()
#2 D:\WWW\ThinkPHP\Library\Think\Db\Driver\Mysql.class.php(92): Think\Db-&initConnect(false)
#3 D:\WWW\ThinkPHP\Library\Think\Db\Driver\Mysql.class.php(211): Think\Db\Driver\Mysql-&query('SHOW COLUMNS FR...')
#4 D:\WWW\ThinkPHP\Library\Think\Model.class.php(130): Think\Db\Driver\Mysql-&getFields('category')
#5 D:\WWW\ThinkPHP\Library\Think\Model.class.php(118): Think\Model-&flush()
#6 D:\WWW\ThinkPHP\Library\Think\Model.class.php(1298): Think\Model-&_checkTableInfo()
#7 D:\WWW\ThinkPHP\Library\Think\Model.class.php(95): Think\Model-&db(0, '', true)
#8 D:\WWW\ThinkPHP\Common\functions.php(554): Think\Model-&__construct('category', '', '')
#9 D:\WWW\Home\Home\Controller\IndexController.class.php(6): M('category')
#10 [internal function]: Home\Controller\IndexController-&index()
#11 D:\WWW\ThinkPHP\Library\Think\App.class.php(155): ReflectionMethod-&invoke(Object(Home\Controller\IndexController))
#12 D:\WWW\ThinkPHP\Library\Think\App.class.php(193): Think\App::exec()
#13 D:\WWW\ThinkPHP\Library\Think\Think.class.php(120): Think\App::run()
#14 D:\WWW\ThinkPHP\ThinkPHP.php(96): Think\Think::start()
#15 D:\WWW\index.php(6): require('D:\\WWW\\ThinkPHP...')
#16 {main}
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
程序运行了好久都没反应,最后跳出如上代码。
我确定配置的数据库信息都是正确的。 我在电脑上运行ECSHOP,可以瞬间读取数据,所以APACHE服务 是没有问题的。 因为我连接的THINKPHP的INDEX用的也是相同的数据库。。而且我连接的表里也只有2条记录而已。所已出现timeout
的情况应该不会。
在下实在是想不出哪里的问题。 已经弄了一下午了。还是没有解决问题。
还请大神们指点。。。。。
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。Navicat中MySQL server has gone away错误怎么办-mysql教程-数据库-壹聚教程网Navicat中MySQL server has gone away错误怎么办
mysql数据库出现MySQL server has gone away错误一般是sql语句太大导致了,下面们在使用Navicat中操作数据库时提示MySQL server has gone away问题解决办法。
今天备份了一下本站的数据,生成的sql文件比较大,当然,这个sql是包含了比较多的冗余数据。用Navicat直接导入的话,报错MySQL server has gone away。如下图所示:
打开navicat的菜单中的tools,选择server monitor,然后在左列选择,右列则点选variable表单项,寻找max_allowed_packet,将其值改大。
改好之后,再次导入备份的sql文件,一切正常。
如果还是无法解决,下面我整理了一些mysql查询中碰到MySQL server has gone away问题
找到你的mysql目录下的my.ini配置文件,加入以下代码:
max_allowed_packet=500M
wait_timeout=288000
interactive_timeout = 288000
自己看情况更改数值,我直接改很大,最后记得重启你的mysql服务
这样的话就能很好的解决MySQL server has gone away问题了。max_allowed_packet是mysql允许最大的数据包,也就是你发送的请求; wait_timeout是等待的最长时间,这个值大家可以自定义,但如果时间太短的话,超时后就会现了MySQL server has gone away #2006错误。max_allowed_packet参数的作用是,用来控制其通信缓冲区的最大长度
如果没有修改myql权限我们可以在PHP程序里面,如果php.ini修改起来不方便,可以以下代码来尝试解决。
ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);
在ini_set后,可以用ini_get来验证参数设置适合符合预期。
上一页: &&&&&下一页:相关内容MySQL server has gone away解决办法-mysql教程-数据库-壹聚教程网MySQL server has gone away解决办法
数据库出现MySQL server has gone away这种问题根据我的经验,一是你程序向一个字段或一条语句中用超大的数据存储,但你的mysql的max_allowed_packet又没设置这么大的参考,所在就出现了这样的问题。
先要确认是不是你的空间商出问题,如果你是虚拟空间的话就先如下操作
1、虚拟主机用户请联系空间商确认 MySQL 服务器是否正常,或者你的程序在运行过程中消耗了太多的服务器资源,请联系空间商进行确认;
2、独立主机用户请优化你的 MySQL 的配置,检查 MySQL 的运行情况,适当的时候增加服务器的配置。
3、因为执行动作过多,造成 MySQL 连接超时,如果是独立主机请修改 MySQL& 的配置文件中的 wait_timeout 这个值设置大一点。
如果你是自己的服务器可以如下操作
1、应用程序(比如PHP)长时间的执行批量的MYSQL语句。最常见的就是采集或者新旧数据转化。
解决方案:
在my.cnf文件中添加或者修改以下两个变量:
wait_timeout=2880000
interactive_timeout = 2880000&&&
关于两个变量的具体说明可以google或者看官方手册。如果不能修改my.cnf,则可以在连接的时候设置
CLIENT_INTERACTIVE,比如:
sql = &set interactive_timeout=24*3600&;
_real_query(...)
2、执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理
解决方案:
在my.cnf文件中添加或者修改以下变量:
max_allowed_packet = 10M(也可以设置自己需要的大小)
max_allowed_packet 参数的作用是,用来控制其通信缓冲区的最大长度。
主要可能是因为以下几种原因:
一种可能是发送的SQL语句太长,以致超过了max_allowed_packet的大小,如果是这种原因,你只要修改my.cnf,加大max_allowed_packet的值即可。
还有一种可能是因为某些原因导致超时,比如说程序中获取数据库连接时采用了Singleton的做法,虽然多次连接数据库,但其实使用的都是同一个连接,而且程序中某两次操作数据库的间隔时间超过了wait_timeout(SHOW STATUS能看到此设置),那么就可能出现问题。最简单的处理方式就是把wait_timeout改大,当然你也可以在程序里时不时顺手mysql_ping()一下,这样MySQL就知道它不是一个人在战斗。
解决MySQL server has gone away
1、应用程序(比如PHP)长时间的执行批量的MYSQL语句。最常见的就是采集或者新旧数据转化。
解决方案:
在my.cnf文件中添加或者修改以下两个变量:
wait_timeout=2880000
interactive_timeout = 2880000
关于两个变量的具体说明可以google或者看官方手册。如果不能修改my.cnf,则可以在连接数据库的时候设置CLIENT_INTERACTIVE,比如:
sql = &set interactive_timeout=24*3600&;
mysql_real_query(...)
2、执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理
解决方案:
在my.cnf文件中添加或者修改以下变量:
max_allowed_packet = 10M
(也可以设置自己需要的大小)
max_allowed_packet
参数的作用是,用来控制其通信缓冲区的最大长度
MySQL: 诡异的MySQL server has gone away及其解决
Introduction
Here is a step by step guide, equally valid for your Linux server as well as any local Windows MySQL installation you may be using as a trial installation along with your local Drupal installation.
MySQL comes with a default configuration of the resources it is going to use, specified in &my.ini& (Windows) or &f& (Linux) during the installation of MySQL. In Windows this file is located by default at C:Program FilesMySQLMySQL Server X.Ymy.ini. In Linux this file is located at /f to set global options, or /usr/local/var/mysql-data-f to set server-specific options.
Resources allowed by the default configuration are normally insufficient to run a resource-intensive application. You must modify the following resource specifications if they are available in your original configuration file, or add them to the configuration file if they are not already specified (because some are not present by default) :
Important: Remember to keep backup files before you do anything! You will also have to reload the MySQL service after making changes to these configuration files.
MyISAM specifications
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 384M
max_allowed_packet = 64M
table_cache = 4096
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 64M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
InnoDB specifications
innodb_buffer_pool_size = 384M
innodb_additional_mem_pool_size = 20M
innodb_log_file_size = 10M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 180
Note: It is assumed here that you are using the InnoDB database tables, as Drupal is a resource intensive application. If you are not using the InnoDB database tables try to change this, in view of the fact that you are getting the Warning: MySQL server has gone away - apparently meaning that your setup is resource intensive. Convert MyISAM Tables to InnoDB .
另供参考 &
上一页: &&&&&下一页:相关内容推荐这篇日记的豆列
······

我要回帖

更多关于 server has gone away 的文章

 

随机推荐