Christopher,
if you are not using the [mysqld] option
innodb_file_per_table
then an InnoDB table consists of
1) the .frm file in the database directory,
2) the table data dictionary entry and data in the ibdata files.
If 1) is missing, you can create the table in some other database, and copy the .frm file from there.
If 2) is missing, you can simply delete the .frm file manually.
After this, you are in a consistent state.
---
If you are using
innodb_file_per_table
then an InnoDB table consists of:
1) the .frm file in the database directory,
2) data dictionary entry in the ibdata files,
3) the .ibd file.
If MySQL complains it can't open file x.ibd, that means either 2) or 3) or both are missing. You should look into the .err log of mysqld to determine which is the case.
If 1) is missing, do like above.
If 2) is missing, then simply delete the .frm file manually (and also the .ibd file if that one exists).
If 3) is missing, you should upgrade to a recent 4.1.xx or 5.0.xx version, and simply DROP the table. Earlier versions had the problem that if you did not have the option
no-auto-rehash
in the [mysql] section of your my.cnf, then dropping a table with a missing .ibd file did not work.
I think we should add these detailed instructions to the manual.
Best regards,
Heikki
Oracle Corp./Innobase Oy
InnoDB - transactions, row level locking, and foreign keys for MySQL
InnoDB Hot Backup - a hot backup tool for InnoDB which also backs up MyISAM tables
http://www.innodb.com/order.php