On Wed, Mar 05, 2008 at 05:34:51PM -0800, Robert W. wrote:
What platform? I have had cases where MySQL will go case sensitive,
seemingly by just by running on a different platform.
I was running an app nicely (not Rails in this case) with Mac OS X
Server, but when the data was moved to a Linux machine using a GUI
tool it decided to rename all the tables in lower case. (Like you I
had nothing to do with the case issue, but was the one who had to fix
the problem).
This is because MySQL stores tables on the filesystem by name (certainly
MyISAM tables, and I think InnoDB tables as well). If your DB is on a
system with a case-sensitive filesystem (most filesystems Linux
supports),
MySQL table names are case-sensitive. If your DB is on a
case-insensitive
(even case-preserving, like HFS+ on MacOS X, though there is a
case-sensitive version available) filesystem, however, the files
containing
the tables will be found even when the case does not match.
I have also had case issues with PostgreSQL in the past as well. Again
it was running on Linux. SQL is “generally” case agnostic, but on
Linux I’ve seen a number of cases where it isn’t.
You should not have had any issue with PostgreSQL unless the table names
were quoted when they were created. See
Note that none of this answers the question about SQLite3. Some googling
for it makes me think that it isn’t too promising. It is probably worth
your while to fix your case issues anyway, though. Most of the SQL I see
generated by ActiveRecord does a lot of table name and column name
quoting,
which (according to the SQL standard) should enforce case. MySQL is
exhibiting non-standard behavior (see above) in this case.
(And in so many others. Don’t get me started on how much I loathe MySQL
and
everything it stands for, despite having had to use it for work for over
two years. All my personal projects use PostgreSQL or, occasionally,
SQLite.)
–Greg