views:

240

answers:

2

There have been similar questions on StackOverflow about this, but I haven't found quite the same situation. This is on a OS X Leopard machine using MySQL

Some starting information:

MySQL Server version     5.1.30
Apache/2.2.13 (Unix)
Python 2.5.1
mod_wsgi 3

mysqladmin also has skip-networking listed as OFF

I am able to connect to mysql from the python command line. But when I try to do it through mod_wsgi using code that is copy and pasted or via Django I receive the generic connection refusal

OperationalError: (2003, "Can't connect to MySQL server on 'localhost' (49)")

I've looked at the mysql manual and tried its troubleshooting tips such as

telnet localhost 3306

and I do get a connection.

I am not trying to connect as root, either.

Any ideas on what else I could check? Thanks in advance!

A: 

Not too much out there on this. Just a random guess but try using:

DATABASE_HOST = 'localhost' instead of 127.0.0.1

and/or try commenting out in your my.ini:

bind-address 127.0.0.1

worth a shot.

Louis
A: 

Bit odd that the telnet connection works. Maybe some more ways to trouble shot:

shell> perror 49
OS error code  49:  Can't assign requested address

I would check the localhost interface first, check if it has IPv4 address. Far fetched maybe, but I had troubles ones when I didabled IPv6.

shell> ifconfig lo0

Maybe the name resolution doesn't work correctly from within Apache/mod_wsgi/etc..

import python
print socket.gethostbyname('localhost')
print socket.gethostbyaddr('127.0.0.1')

Maybe to get you going (something I contributed to Django) try the UNIX Socket in Django, it works setting the database host to the path (start with forward-slash):

DATABASE_HOST = '/tmp/mysql.sock'

Or where ever your socket file is.

Last, check the MySQL error log if there are any weird messages, like it failing to bind on the IP address or port.

Hope this helps a bit.

geertjanvdk