How to fix ERROR 1178: Storage engine doesn't support feature in MySQL

MySQLINTERMEDIATEMEDIUMUpdated Dec 23, 2025· 112 views

This error occurs when you try to use a feature—like CHECK constraints, foreign keys, or transactions—that your table's storage engine doesn't support. Switch to InnoDB or remove the unsupported feature to resolve it.

Quick fix

Fixes 1178

SHOW TABLE STATUS WHERE Name = 'your_table_name';
  1. Identify the table's storage engine
  2. Check your table definition
  3. Convert to InnoDB (recommended)
  4. Remove the unsupported feature (alternative)
mysql — error
SHOW TABLE STATUS WHERE Name = 'your_table_name';
ERROR 1178: Storage engine doesn't support feature

What this error means

MySQL ERROR 1178 (ER_CHECK_NOT_IMPLEMENTED) is raised when you attempt to create or modify a table with a feature that the underlying storage engine cannot handle. Different MySQL storage engines support different capabilities. For example, MyISAM doesn't support transactions, foreign keys, or CHECK constraints, while InnoDB supports these but didn't support FULLTEXT indexes until version 5.6. The error prevents data corruption by refusing to create incompatible table structures.

Typical symptoms

  • CREATE TABLE or ALTER TABLE statement fails with "ERROR 1178"
  • Adding CHECK constraints to MyISAM tables fails
  • Attempting to add foreign keys to MyISAM tables fails
  • Creating FULLTEXT indexes on non-MyISAM/InnoDB tables fails
  • Creating spatial indexes on partitioned tables fails

Common causes

  1. Table uses MyISAM engine with CHECK constraints (MyISAM doesn't support CHECK)
  2. Attempting to add foreign keys to MyISAM tables (only InnoDB supports foreign keys)
  3. Using FULLTEXT indexes with unsupported engines like MEMORY
  4. Creating spatial/geometry indexes on partitioned tables (MySQL 8.0.25 and earlier)
  5. Using BLOB/TEXT columns with MEMORY storage engine
  6. Upgrading MySQL to a version that dropped support for a feature on your table's engine

How to fix "ERROR 1178: Storage engine doesn't support feature"

1Identify the table's storage engine

Run this query to see which storage engine your table uses:

sql
SHOW TABLE STATUS WHERE Name = 'your_table_name';

Look at the "Engine" column to confirm you're using MyISAM, MEMORY, or another engine.

2Check your table definition

Get the full CREATE TABLE statement:

sql
SHOW CREATE TABLE your_table_name\G

Look for unsupported features like:
- CHECK constraints (not supported by MyISAM)
- FOREIGN KEY clauses (not supported by MyISAM)
- FULLTEXT indexes on MEMORY tables

3Convert to InnoDB (recommended)

The safest fix is to migrate to InnoDB, which supports most modern features:

sql
ALTER TABLE your_table_name ENGINE = InnoDB;

Before running in production:
- Back up your database: mysqldump -u root -p your_database > backup.sql
- Test on a development copy first
- The ALTER TABLE command locks the table temporarily

4Remove the unsupported feature (alternative)

If you can't switch engines, remove the problematic feature:

To remove a CHECK constraint:

sql
ALTER TABLE your_table_name DROP CONSTRAINT constraint_name;

To remove a FOREIGN KEY:

sql
ALTER TABLE your_table_name DROP FOREIGN KEY fk_name;

To remove FULLTEXT index:

sql
ALTER TABLE your_table_name DROP INDEX ft_index_name;
5Verify the change

After converting or modifying, verify the table works:

sql
SHOW TABLE STATUS WHERE Name = 'your_table_name';
SHOW CREATE TABLE your_table_name\G

Try your original operation (adding constraints, indexes, etc.) again.

Advanced notes

Storage Engine Feature Matrix:
- InnoDB: Supports transactions, foreign keys, CHECK constraints (MySQL 8.0.16+), FULLTEXT (5.6+), spatial indexes, row-level locking
- MyISAM: Fast reads, but no transactions, foreign keys, CHECK constraints, or row-level locking
- MEMORY: Fast in-memory tables, but no BLOB/TEXT columns or persistent storage
- Archive: Compressed read-only tables, minimal feature support

Partitioned Table Limitations:
Partitioned tables cannot use spatial indexes in MySQL 8.0.25 and earlier. Upgrade to 8.0.26+ or remove partitioning.

FULLTEXT Index History:
- MySQL 5.6+: InnoDB supports FULLTEXT
- Earlier versions: Only MyISAM supported FULLTEXT

Migration Performance:
ALTER TABLE ENGINE conversion locks the table. For large tables, use tools like pt-online-schema-change to minimize downtime.

Frequently asked questions

What does "1178" mean?
MySQL ERROR 1178 (ER_CHECK_NOT_IMPLEMENTED) is raised when you attempt to create or modify a table with a feature that the underlying storage engine cannot handle. Different MySQL storage engines support different capabilities. 6.
How do I fix "1178"?
This error occurs when you try to use a feature—like CHECK constraints, foreign keys, or transactions—that your table's storage engine doesn't support. Switch to InnoDB or remove the unsupported feature to resolve it.
What causes "1178"?
Table uses MyISAM engine with CHECK constraints (MyISAM doesn't support CHECK) Attempting to add foreign keys to MyISAM tables (only InnoDB supports foreign keys) Using FULLTEXT indexes with unsupported engines like MEMORY
Is the "1178" error serious?
It is a medium-severity error — more of a blocker than a risk. The steps above resolve it.

Official resources & further reading