Bug #1011 | ERROR 2006 at line 31: MySQL server has gone away | ||
---|---|---|---|
Submitted: | 7 Aug 2003 10:17 | Modified: | 27 Sep 2009 10:36 |
Reporter: | Martin Mokrejs | Email Updates: | |
Status: | Not a Bug | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | 4.0.14 | OS: | Linux (Linux 2.4.22-pre7) |
Assigned to: | MySQL Verification Team | CPU Architecture: | Any |
[7 Aug 2003 10:17]
Martin Mokrejs
[7 Aug 2003 10:52]
Indrek Siitan
This bug report does not qualify as a bug report at all, but rather as a try to get free support. max_allowed_packet is a server option which needs to be set in the [mysqld] section of /etc/my.cnf, not specified to the 'mysql' client on the command line like you're trying. But generally you're going in the right direction - the "MySQL server has gone away" error is caused by a query longer than the max_allowed_packet. Bugzilla is not a MySQL product and we cannot provide support for it in any way.
[7 Aug 2003 13:15]
Martin Mokrejs
Sorry, I don't understand. You say [mysql] section may not contain max_allowed_packet variable? But why does then mysql client report is in between it's own variables? Couldn't mysqld then report the actual size of max_allowed_packet and say that client asked for more(I mean to display both values, so that users gets a clue why the connection was closed). $ mysql --help | grep max --max_allowed_packet=# --max_join_size=# max_allowed_packet 536869888 max_join_size 1000000 $ BTW: I don't know if this bug reporting software is bugzilla or not, I wast want to get notified when you respond and close my bugreport. Am I supposed to always check for "All" bugs in descending order? :(
[7 Aug 2003 14:37]
Martin Mokrejs
One note actually: if the above is the case (as Indrek Siitan claims), why connection to mysqld works with max_allowed_packet=2M set on server even in case client uses max_allowed_packet=128M? I don't believe the discrepancy is the reason to loose connection. I don't understand why max_allowed_packet=1M on server side with client having max_allowed_packet=128M results in broken connection. I really mean in [mysqld] is max_allowed_packet=1M or 2M while client gets on a commandline request for max_allowed_packet=128M.
[8 Aug 2003 5:02]
MySQL Verification Team
I verified it and it is a bug.
[8 Aug 2003 8:24]
Indrek Siitan
Martin, I must apologize for multiple things - first, for my incomplete knowledge of max_allowed packet, and second, for understanding you wrong about Bugzilla. About max_allowed_packet - I must admit I wasn't aware that this could be used as a client parameter, but after doing some research I think I'm now competent in this. Yes, it can be set as a client side parameter, but in this case it will only affect the server-client traffic. There is no way of passing this variable to the server from the client, as it would defeat the whole purpose of it - it's there to limit exhausting server memory with large queries, but it wouldn't do it's job if anyone could just override it with a client parameter. I've talked with Sinisa and what he 'verified as a bug' above is that if you send a query to the server that is larger than the max_allowed_packet, it drops the connection without providing a good error message. Yes, that's what's happening, but the reasoning by the developers for it is that a packet too large is handled the same way as a bogus packet - there's no knowing if the connection is still good or what is going on, so the easiest way is just to drop the connection and move along. Do you have any further comments on this issue? About Bugzilla - the system should work so you get an e-mail each time this bug is updated. Is that not happening for you?
[10 Aug 2003 13:49]
Martin Mokrejs
Hi Indrek and Sinisa, thank you for response. I really would like to get any message back from the client. Do you want to say server just drop the connection, without actually explaining the client why? If is it so, will you update the documentation for max_allowed_packet and also where the error messages like "Connection dropped" are explained with possible causes? Actually, I'm not satisfied if you just improve documentation. I really want to get a message from the client that the connection was dropped specifically because it has sent too large packet to the server. If the protocol doesn't support such communication, please file this as Feature request. ;) I have another report regarding max_allowed_packet and I was told there's loose-max_allowed_packet option available. That should cause clients which do NOT uderstand max_allowed_packet not to die on an unknown variable. I'd say then they must be pretty old, but 4.0.14 dies. I don't know where to complain about your bug tracking system. I believe you do great job developing mysql, but please, for me to figure out what's the status with my bugreports, I either have to memorize the bug ID's, or always have to get displayed "All" bugs in descending order and try to find out, which I've reported. THat's how I came to your last response. Please, please, do something with that! Why cannot I receive an email that response to bug XY has been stored?! I've lost track of my old bug reports, and that's bad!!!
[10 Aug 2003 13:54]
Martin Mokrejs
No, no, while thinking again what was the original report, why does the connection get dropped when the max_allowed_packet on client is 1M, but doesn't get dropped when the max_allowed_packet is 2M? It is dropped by the client, right! So the user-friendly client should be that kind and say that user asked for max_allowed_packet=1M and that server has sent packet of size 3,5M and therefore it drops the connection. BTW: The related bug is #1012. I don't believe it is not reproducible.
[11 Aug 2003 14:18]
MySQL Verification Team
Thank you for your bug report. This issue has been fixed in the latest development tree for that product. You can find more information about accessing our development trees at http://www.mysql.com/doc/en/Installing_source_tree.html
[19 Aug 2003 13:41]
Michael Widenius
Sorry about the last bug entry, but it was not true. Sinisa had a patch pending but I didn't approve of it as it didn't solve this problem for all cases. This problem is already documented in the manual section 'MySQL server has gone away Error': ----- You can also get these errors if you send a query to the server that is incorrect or too large. If mysqld gets a packet that is too large. or out of order, it assumes that something has gone wrong with the client and closes the connection. ----- We fixed this problem in 4.0 for not compressed packets but for compressed packets it's VERY hard to fix it without having to allocate a buffer bigger than max_allowed_packet, which would defeat the purpose of this flag. Ane problem is that to be able to skip the packet we have to decompress all packets in the stream and this would make it easy for someone to force the server to allocate a lot of big packets even if the MySQL administrator has forbidden this. I looked into fixing this but didn't come up with a good way to to fix it without a major amount of work (8-16 hours). As we have more important things on our todo (this is not a serious bug) we have to put this on hold for now and look at fixing this in 4.1 or 5.0. The easy way to avoid this problem is to ensure that max_allowed_packet is set bigger in the mysqld server than in the client and that all clients uses the same value for max_allowed_packet. Regards, Monty
[27 Aug 2003 13:20]
Martin Mokrejs
Monty, I think I'd be happy even with a partial fix. Definitely, leave it please on the wishlist. I think I'm going to disable compression. Can you explain where else compression might be a problem?
[29 Aug 2003 1:56]
Martin Mokrejs
I've tested the patch from Sinisa: the patch helps that I get from mysql(1) client: ERROR 1153 at line 31: Got a packet bigger than 'max_allowed_packet' instead of ERROR 2006 at line 31: MySQL server has gone away I'm only curious why mysqld from BK tree does NOT log anymore those closed connections after applying that patch, you probably know why: vrapenec mysql-4.0 # /usr/local/mysql/bin/mysqld --defaults-extra-file=/etc/mysql/my.cnf --basedir=/usr/local/mysql --datadir=/var/lib/mysql --user=mysql --skip-locking --open-files-limit=30000 Warning: Ignoring user change to 'mysql' because the user was set to 'mysql' earlier on the command line Warning: Ignoring user change to 'mysql' because the user was set to 'mysql' earlier on the command line /usr/local/mysql/bin/mysqld: ready for connections. Version: '4.0.14-debug-debug' socket: '/var/run/mysqld/mysqld.sock' port: 3306 030828 15:38:43 Aborted connection 1 to db: 'Aquifex_aeolicus_VF5' user: 'pedant' host: `localhost' (Got a packet bigger than 'max_allowed_packet') 030828 15:39:28 Aborted connection 2 to db: 'Aquifex_aeolicus_VF5' user: 'pedant' host: `localhost' (Got a packet bigger than 'max_allowed_packet') 030828 15:39:56 /usr/local/mysql/bin/mysqld: Normal shutdown 030828 15:39:56 /usr/local/mysql/bin/mysqld: Shutdown Complete vrapenec mysql-4.0 # vrapenec mysql-4.0 # /usr/local/mysql-bk/libexec/mysqld --defaults-extra-file=/etc/mysql/my.cnf --basedir=/usr/local/mysql --datadir=/var/lib/mysql --user=mysql --skip-locking --open-files-limit=30000 Warning: Ignoring user change to 'mysql' because the user was set to 'mysql' earlier on the command line Warning: Ignoring user change to 'mysql' because the user was set to 'mysql' earlier on the command line /usr/local/mysql-bk/libexec/mysqld: ready for connections. Version: '4.0.15-debug' socket: '/var/run/mysqld/mysqld.sock' port: 3306
[28 Apr 2008 23:01]
Martin Mokrejs
Monty, as this already been fixed in 5.0 or 5.1 series? ;-) Thanks for info.
[27 Sep 2008 9:05]
Konstantin Osipov
I believe this has been fixed in 5.0 and now we print an error message: kostja@bodhi:~$ mysql --max_allowed_packet=18M < foo.sql ERROR 1153 (08S01) at line 1: Got a packet bigger than 'max_allowed_packet' bytes The compressed protocol is still closing the connection without an error message, but the compressed protocol is hardly being used nowadays.
[26 Sep 2009 23:43]
laki laki
I recieve the same error message :( What was wrong?
[26 Sep 2009 23:46]
laki laki
ohh and I use 5.1.36 version.
[27 Sep 2009 10:36]
Konstantin Osipov
We're sorry, but the bug system is not the appropriate forum for asking help on using MySQL products. Please report a separate bug if you experience the described behavior in the newest GA release. The bug will be re-verified as a new report. Support on using our products is available both free in our forums at http://forums.mysql.com/ and for a reasonable fee direct from our skilled support engineers at http://www.mysql.com/support/ Thank you for your interest in MySQL.