DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(mysql.info) merge-table-problems

Info Catalog (mysql.info) merge-storage-engine (mysql.info) merge-storage-engine
 
 14.3.1 `MERGE' Table Problems
 -----------------------------
 
 The following are known problems with `MERGE' tables:
 
    * If you use `ALTER TABLE' to change a `MERGE' table to another
      storage engine, the mapping to the underlying tables is lost.
      Instead, the rows from the underlying `MyISAM' tables are copied
      into the altered table, which then uses the specified storage
      engine.
 
    * `REPLACE' does not work.
 
    * You cannot use `DROP TABLE', `ALTER TABLE', `DELETE' without a
      `WHERE' clause, `REPAIR TABLE', `TRUNCATE TABLE', `OPTIMIZE
      TABLE', or `ANALYZE TABLE' on any of the tables that are mapped
      into an open `MERGE' table. If you do so, the `MERGE' table may
      still refer to the original table, which yields unexpected
      results. The easiest way to work around this deficiency is to
      ensure that no `MERGE' tables remain open by issuing a `FLUSH
      TABLES' statement prior to performing any of those operations.
 
    * `DROP TABLE' on a table that is in use by a `MERGE' table does not
      work on Windows because the `MERGE' storage engine's table mapping
      is hidden from the upper layer of MySQL. Windows does not allow
      open files to be deleted, so you first must flush all `MERGE'
      tables (with `FLUSH TABLES') or drop the `MERGE' table before
      dropping the table.
 
    * A `MERGE' table cannot maintain uniqueness constraints over the
      entire table. When you perform an `INSERT', the data goes into the
      first or last `MyISAM' table (depending on the value of the
      `INSERT_METHOD' option). MySQL ensures that unique key values
      remain unique within that `MyISAM' table, but not across all the
      tables in the collection.
 
    * When you create a `MERGE' table, there is no check to ensure that
      the underlying tables exist and have identical structures. When
      the `MERGE' table is used, MySQL checks that the row length for all
      mapped tables is equal, but this is not foolproof. If you create a
      `MERGE' table from dissimilar `MyISAM' tables, you are very likely
      to run into strange problems.
 
    * The order of indexes in the `MERGE' table and its underlying
      tables should be the same. If you use `ALTER TABLE' to add a
      `UNIQUE' index to a table used in a `MERGE' table, and then use
      `ALTER TABLE' to add a non-unique index on the `MERGE' table, the
      index ordering is different for the tables if there was already a
      non-unique index in the underlying table. (This happens because
      `ALTER TABLE' puts `UNIQUE' indexes before non-unique indexes to
      facilitate rapid detection of duplicate keys.)  Consequently,
      queries on tables with such indexes may return unexpected results.
 
Info Catalog (mysql.info) merge-storage-engine (mysql.info) merge-storage-engine
automatically generated byinfo2html