As it turns out the problem was related to OS X and its lack of a case sensitive file system. OS X (I have 10.5.8) only appears to have a case sensitive file system but in fact it does not.
Try this:
Code:
$ touch test
$ ls
$ touch Test
$ ls
Disappointingly, OS X will change the file from 'test' to 'Test' but only one file will exist.
This can be changed by modifying the file system _prior_ to operating system installation. I was not about to do this so I looked to MySQL for options.
Code:
mysql> show variables;
Where the important lines are:
Code:
lower_case_file_system ON
lower_case_table_names 2
In this state, tables could be queried in lower or upper case.
I added the following line to /etc/my.cnf
Code:
lower_case_table_names=0
restarted mysql server. Tables could only be queried in lower case. I dropped the database and recreated it. Tables can only be queried in the case they were created in (with some leeway).
Running the above roo scripts produces expected output and no errors. 
Note:
I experienced a name conflict in one of the MySQL auto generated names for foreign keys. I had to specify the name of the foreign key using the 'constraint' key word.
It is interesting in the database introspect output (from a previous post) that some of the table names identified in foreign keys were lower case and others matched the case of the table names.