happen if you try to create a table using a transactional storage engine that is not supported by your mysqld  server (or that was disabled with a startup option). If mysqld  does not support a storage engine, it instead creates the table as a MyISAM  table, which is nontransactional. 

You can check the storage engine for a table by using either of these statements: 

SHOW TABLE STATUS LIKE ’ tbl_name ’; SHOW CREATE TABLE tbl_name ; 

See Section 13.7.7.38, “SHOW TABLE STATUS Statement” , and Section 13.7.7.10, “SHOW CREATE TABLE Statement” . 

To check which storage engines your mysqld  server supports, use this statement: 

## B.3.4.6 Deleting Rows from Related Tables 

SHOW ENGINES; 

See Section 13.7.7.16, “SHOW ENGINES Statement”  for full details. 

If the total length of the DELETE  statement for related_table  is more than the default value of the max_allowed_packet  system variable, you should split it into smaller parts and execute multiple DELETE  statements. You probably get the fastest DELETE  by specifying only 100 to 1,000 related_column  values per statement if the related_column  is indexed. If the related_column  isn’t indexed, the speed is independent of the number of arguments in the IN  clause. 

## B.3.4.7 Solving Problems with No Matching Rows 

If you have a complicated query that uses many tables but that returns no rows, you should use the following procedure to find out what is wrong: 

1. Test the query with EXPLAIN  to check whether you can find something that is obviously wrong. See Section 13.8.2, “EXPLAIN Statement” . 

2. Select only those columns that are used in the WHERE  clause. 

3. Remove one table at a time from the query until it returns some rows. If the tables are large, it is a good idea to use LIMIT 10  with the query. 

4. Issue a SELECT  for the column that should have matched a row against the table that was last removed from the query. 

5. If you are comparing FLOAT  or DOUBLE  columns with numbers that have decimals, you cannot use equality ( = ) comparisons. This problem is common in most computer languages because not all floating-point values can be stored with exact precision. In some cases, changing the FLOAT  to a DOUBLE  fixes this. See Section B.3.4.8, “Problems with Floating-Point Values” . 

6. If you still cannot figure out what is wrong, create a minimal test that can be run with mysql test < query.sql  that shows your problems. You can create a test file by dumping the tables with mysqldump --quick db_name tbl_name_1  ... tbl_name_n  > query.sql . Open the file in an editor, remove some insert lines (if there are more than needed to demonstrate the problem), and add your SELECT  statement at the end of the file. 

Verify that the test file demonstrates the problem by executing these commands: 

shell> mysqladmin create test2 shell> mysql test2 < query.sql 

