Mysql::Error: Lost connection to MySQL server during query:


#1

Hi,

I am having Mysql connection problem for my first AddressBook
application (which I took it from
http://www-128.ibm.com/developerworks/linux/library/l-rubyrails/)

I have gem installed the latest ruby, rails, lighttpd, fastcgi,
mysql-4.1.14 on linux. Everything looks good. When I do:

mysql -h localhost -u test -ptest -D AddressBook
mysql> SELECT COUNT() FROM contacts;
±---------+
| COUNT(
) |
±---------+
| 1 |
±---------+
1 row in set (0.00 sec)

And I have config/database.yml as

development:
adapter: mysql
database: AddressBook
username: test
password: test
#socket: /var/lib/mysql/mysql.sock

Connect on a TCP socket. If omitted, the adapter will connect on

the

domain socket given by socket instead.

host: localhost
port: 3306

Here’s the stack trace:
Parameters: {“action”=>“index”, “controller”=>“contact”}
Contact Count (0.000000) Mysql::Error: Lost connection to MySQL
server during query: SELECT COUNT(*) FROM contacts

ActiveRecord::StatementInvalid (Mysql::Error: Lost connection to MySQL
server during query: SELECT COUNT(*) FROM contacts ):
/home/aaronlee/ruby/gemrepository/gems/activerecord-1.13.2/lib/active_record/connection_adapters/abstract_adapter.rb:88:in
log' /home/aaronlee/ruby/gemrepository/gems/activerecord-1.13.2/lib/active_record/connection_adapters/mysql_adapter.rb:180:inexecute’
/home/aaronlee/ruby/gemrepository/gems/activerecord-1.13.2/lib/active_record/connection_adapters/mysql_adapter.rb:322:in
select' /home/aaronlee/ruby/gemrepository/gems/activerecord-1.13.2/lib/active_record/connection_adapters/mysql_adapter.rb:175:inselect_one’
/home/aaronlee/ruby/gemrepository/gems/activerecord-1.13.2/lib/active_record/connection_adapters/abstract/database_statements.rb:16:in
select_value' /home/aaronlee/ruby/gemrepository/gems/activerecord-1.13.2/lib/active_record/base.rb:518:incount_by_sql’
/home/aaronlee/ruby/gemrepository/gems/activerecord-1.13.2/lib/active_record/base.rb:511:in
count' /home/aaronlee/ruby/gemrepository/gems/actionpack-1.11.2/lib/action_controller/pagination.rb:167:incount_collection_for_pagination’
/home/aaronlee/ruby/gemrepository/gems/actionpack-1.11.2/lib/action_controller/pagination.rb:188:in
paginator_and_collection_for' /home/aaronlee/ruby/gemrepository/gems/actionpack-1.11.2/lib/action_controller/pagination.rb:124:inpaginate’
/home/aaronlee/ruby/gemrepository/gems/actionpack-1.11.2/lib/action_controller/scaffolding.rb:101:in
list' /home/aaronlee/ruby/gemrepository/gems/actionpack-1.11.2/lib/action_controller/scaffolding.rb:94:inindex’
/home/aaronlee/ruby/gemrepository/gems/actionpack-1.11.2/lib/action_controller/base.rb:853:in
perform_action_without_filters' /home/aaronlee/ruby/gemrepository/gems/actionpack-1.11.2/lib/action_controller/filters.rb:332:inperform_action_without_benchmark’
/home/aaronlee/ruby/gemrepository/gems/actionpack-1.11.2/lib/action_controller/benchmarking.rb:69:in
perform_action_without_rescue' /home/aaronlee/ruby/install-1.8.4//lib/ruby/1.8/benchmark.rb:293:inmeasure’
/home/aaronlee/ruby/gemrepository/gems/actionpack-1.11.2/lib/action_controller/benchmarking.rb:69:in
perform_action_without_rescue' /home/aaronlee/ruby/gemrepository/gems/actionpack-1.11.2/lib/action_controller/rescue.rb:82:inperform_action’
/home/aaronlee/ruby/gemrepository/gems/actionpack-1.11.2/lib/action_controller/base.rb:369:in
process_without_session_management_support' /home/aaronlee/ruby/gemrepository/gems/actionpack-1.11.2/lib/action_controller/session_management.rb:116:inprocess’
/home/aaronlee/ruby/gemrepository/gems/rails-1.0.0/lib/dispatcher.rb:38:in
dispatch' /home/aaronlee/ruby/gemrepository/gems/rails-1.0.0/lib/fcgi_handler.rb:141:inprocess_request’
/home/aaronlee/ruby/gemrepository/gems/rails-1.0.0/lib/fcgi_handler.rb:53:in
process!' /home/aaronlee/ruby/install-1.8.4//lib/ruby/site_ruby/1.8/fcgi.rb:600:ineach_cgi’
/home/aaronlee/ruby/install-1.8.4//lib/ruby/site_ruby/1.8/fcgi.rb:597:in
each_cgi' /home/aaronlee/ruby/gemrepository/gems/rails-1.0.0/lib/fcgi_handler.rb:52:inprocess!’
/home/aaronlee/ruby/gemrepository/gems/rails-1.0.0/lib/fcgi_handler.rb:22:in
`process!’
/home/aaronlee/ruby/AddressBook/public/dispatch.fcgi:24

Any ideas? How do I go about debugging this problem? Can I have a more
verbose mode to know whether it’s talking to my localhost MySQL?

-Aaron


#2

One more data point: if I start with ruby script/server webrick I
actuall got

/home/aaronlee/ruby/gemrepository/gems/activerecord-1.13.2/lib/active_record/connection_adapters/mysql_adapter.rb:325:
[BUG] Segmentation fault
ruby 1.8.4 (2005-12-24) [i686-linux]

Aborted

-Aaron


#3

Try the socket method instead of TCP…

verify that is the location of the socket…

ls -l /var/lib/mysql/mysql.sock

srwxrwxrwx 1 mysql mysql 0 Jan 26 21:53 /var/lib/mysql/mysql.sock

There may be a firewall interfering…

or try command line connecting to TCP Port 3306…

I think it’s something like…

mysql -h localhost -P 3306 -u test -ptest -D AddressBook

and lastly…newer versions of mysql sometimes default to older password
version hash which has bit many people…

cat /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

Default to using old password format for compatibility with mysql 3.x

clients (those using the mysqlclient10 compatibility package).

old_passwords=0

As you can see…I changed it from ‘1’ to ‘0’ as Red Hat stuff defaults
to ‘old password’ and that didn’t play well with Rails.

As for ‘debugging’ mysql, I don’t know much besides looking at logs
log/development.log - mysqld.log or ethereal trace - perhaps someone
else can offer some suggestions.

Craig


#4

On Wed, 2006-02-08 at 06:37 +0100, Aaron Lee wrote:

One more data point: if I start with ruby script/server webrick I
actuall got

/home/aaronlee/ruby/gemrepository/gems/activerecord-1.13.2/lib/active_record/connection_adapters/mysql_adapter.rb:325:
[BUG] Segmentation fault
ruby 1.8.4 (2005-12-24) [i686-linux]

Aborted


I don’t know that this is going to help but at the top of of
database.yml…it should be stating some important details…

Get the fast C bindings:

gem install mysql

(on OS X: gem install mysql – --include=/usr/local/lib)

And be sure to use new-style password hashing:

http://dev.mysql.com/doc/refman/5.0/en/old-client.html

did you do ‘gem install mysql’ ?

also - no tabs in database.yml (I think this has also been discussed on
this message base a time or two).

Seg fault though sounds like something else is the problem.

Craig


#5

Craig W. wrote:

Try the socket method instead of TCP…

I tried both and both failed. I also ran gem install mysql (2.7)
I also tried creating a new user ruby without password and that also
failed with the same Mysql::Error Lost connection …

development:
adapter: mysql
database: AddressBook
username: test
password: test
socket: /var/lib/mysql/mysql.sock

AND

development:
adapter: mysql
database: AddressBook
username: test
password: test
host: localhost
port: 3306

verify that is the location of the socket…

ls -l /var/lib/mysql/mysql.sock

srwxrwxrwx 1 mysql mysql 0 Jan 26 21:53 /var/lib/mysql/mysql.sock

It’s there

There may be a firewall interfering…

or try command line connecting to TCP Port 3306…

I think it’s something like…

mysql -h localhost -P 3306 -u test -ptest -D AddressBook

This one works so I am pretty sure it’s no problem. Talking to localhost
doesn’t go through firewall

and lastly…newer versions of mysql sometimes default to older password
version hash which has bit many people…

cat /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

Default to using old password format for compatibility with mysql 3.x

clients (those using the mysqlclient10 compatibility package).

old_passwords=0

I changed old_passwords from 1 to 0 and did /etc/init.d/mysqld restart
but it still doesn’t help

As you can see…I changed it from ‘1’ to ‘0’ as Red Hat stuff defaults
to ‘old password’ and that didn’t play well with Rails.

As for ‘debugging’ mysql, I don’t know much besides looking at logs
log/development.log - mysqld.log or ethereal trace - perhaps someone
else can offer some suggestions.

Craig

/var/log/mysql.log shows

/usr/libexec/mysqld: ready for connections.
Version: ‘4.1.14’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306
Source distribution

Any other ideas? -Aaron


#6

The following works (I forgot to reran the new mysql password
generation).

mysql> grant all privileges on . to ‘test’@‘localhost’ identified by
‘test’ with grant option;
mysql> flush privileges;

Thanks!
Aaron


#7

I had a MySQL error this was a gr8 help

http://www.fixya.com/support/t840251-mysql_error_messeage

I hope this will help you,
Yuri.