All: Recently I've run into a problem where I intermittently receive an "Unknown database" error while attempting to communicate with a local MySQL server. I read through the mail list archives and discovered that others reported similar problems under BSD, but I didn't see any concrete solutions. I may not be able to provide a solution, but I believe I can pinpoint the cause.
Let me apologize now for the length of this message. I'm trying to explain enough so that someone else, more knowledgable about MySQL's internals, can either use it to solve the problem or refute my guess. First, my environment: MacOS X (10.1.4), MySQL 3.23.49, running on a G3 PowerBook (Firewire), latest dev tools from Apple. The MySQL server is running on that system as well as my own C++ code. Before seeing the problem within MySQL I found a problem with my own multithreaded code. Each thread is responsible for loading a file in one directory and then manipulating a couple of other files in a different directory, all referenced relatively to the application's directory. When the load got high -- there were many concurrent threads -- I would intermittently receive an error from the OS telling me that one of the files I was trying to open could not be found. Given that the file in question was one that was supposed to always be present, I grew suspicious. After a bit of debugging, imagine my surprise when I discovered that the full pathname the OS was trying to use was wrong. Example Source file: foo/text.txt Dest file: data/index.txt App directory: /Users/lordgrey/Projects/myproject/ When the problem occurred while opening the dest file, referenced relatively, the OS was actually trying to open: /Users/lordgrey/Projects/myproject/foo/data/index.txt instead of /Users/lordgrey/Projects/myproject/data/index.txt Once I nailed down a variable with the current working directory at application launch time and used that to fully qualify my datafiles, all of my problems disappeared. As further testing, I started cranking up the number of threads. Now, in addition to dinking around with files, each thread has its own MySQL connection. Increasing the number of threads started causing the "unknown database" error to appear, pretty much in direct proportion to the number threads. The other problem reports in the archive noted that the "unknown database" problem seemed to occur when the system's load was high. That would agree with what I found. Anyway, it occurs to me that MySQL is failing to find a database -- which is a directory -- for the same reason that my code couldn't find its own data files. Namely: MySQL is using a relative path, BSD is mucking around with the concept of "current working directory" incorrectly and it's colliding with other concurrent threads also trying to use relative paths. I haven't picked the MySQL source code apart to see if this is really the case or not, but it seems reasonable. If it's true then the actual problem lies in BSD/MacOS/etc. but it can be worked around in the MySQL server. Cheers, DSC _________________________________________________________________________ Dan S. Camper Borrowed Time, Inc. Software Thaumaturge http://www.bti.net --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php