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:in `execute' /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:in `select_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:in `count_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:in `count_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:in `paginate' /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:in `index' /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:in `perform_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:in `measure' /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:in `perform_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:in `process' /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:in `process_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:in `each_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:in `process!' /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
on 08.02.2006 06:21
on 08.02.2006 06:37
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
on 08.02.2006 06:41
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
on 08.02.2006 07:06
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
on 08.02.2006 07:52
Craig White 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
on 08.02.2006 07:56
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
on 10.08.2008 11:02
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.