How to fix ERROR 1178: Storage engine doesn't support feature in MySQL
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';- Identify the table's storage engine
- Check your table definition
- Convert to InnoDB (recommended)
- Remove the unsupported feature (alternative)
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
- 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
- Creating spatial/geometry indexes on partitioned tables (MySQL 8.0.25 and earlier)
- Using BLOB/TEXT columns with MEMORY storage engine
- 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"
Run this query to see which storage engine your table uses:
SHOW TABLE STATUS WHERE Name = 'your_table_name';Look at the "Engine" column to confirm you're using MyISAM, MEMORY, or another engine.
Get the full CREATE TABLE statement:
SHOW CREATE TABLE your_table_name\GLook for unsupported features like:
- CHECK constraints (not supported by MyISAM)
- FOREIGN KEY clauses (not supported by MyISAM)
- FULLTEXT indexes on MEMORY tables
The safest fix is to migrate to InnoDB, which supports most modern features:
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
If you can't switch engines, remove the problematic feature:
To remove a CHECK constraint:
ALTER TABLE your_table_name DROP CONSTRAINT constraint_name;To remove a FOREIGN KEY:
ALTER TABLE your_table_name DROP FOREIGN KEY fk_name;To remove FULLTEXT index:
ALTER TABLE your_table_name DROP INDEX ft_index_name;After converting or modifying, verify the table works:
SHOW TABLE STATUS WHERE Name = 'your_table_name';
SHOW CREATE TABLE your_table_name\GTry 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
- 📚MySQL Official Documentation
- 📖MySQL Error Reference(Official Docs)
- 📖MariaDB Knowledge Base - Error 1178(Official Docs)