Bug #119418 MyISAM ALTER TABLE random fails
Submitted: 18 Nov 8:23 Modified: 25 Nov 11:21
Reporter: Jukka Kangas Email Updates:
Status: Open Impact on me:
None 
Category:MySQL Server: MyISAM storage engine Severity:S3 (Non-critical)
Version:8.4.7 OS:Any
Assigned to: CPU Architecture:Any
Tags: MYISAM engine

[18 Nov 8:23] Jukka Kangas
Description:
Running alter table to MyISAM table occasionally fails with error:
"Table storage engine for '<tablename>' doesn't have this option"

Cannot replicate on InnoDB engine.

How to repeat:
Running following, sometimes fails, and sometimes not:

drop table if exists `test01`;
create table `test01` (id int auto_increment, primary key (id)) engine MyISAM;
alter table `test01` add column `name` varchar(10) DEFAULT NULL;
drop table if exists `test01`;
create table `test01` (id int auto_increment, primary key (id)) engine MyISAM;
alter table `test01` add column `name` varchar(10) DEFAULT NULL;
drop table if exists `test01`;
create table `test01` (id int auto_increment, primary key (id)) engine MyISAM;
alter table `test01` add column `name` varchar(10) DEFAULT NULL;
drop table if exists `test01`;
create table `test01` (id int auto_increment, primary key (id)) engine MyISAM;
alter table `test01` add column `name` varchar(10) DEFAULT NULL;
drop table if exists `test01`;
create table `test01` (id int auto_increment, primary key (id)) engine MyISAM;
alter table `test01` add column `name` varchar(10) DEFAULT NULL;
drop table if exists `test01`;
create table `test01` (id int auto_increment, primary key (id)) engine MyISAM;
alter table `test01` add column `name` varchar(10) DEFAULT NULL;
drop table if exists `test01`;
create table `test01` (id int auto_increment, primary key (id)) engine MyISAM;
alter table `test01` add column `name` varchar(10) DEFAULT NULL;
drop table if exists `test01`;
create table `test01` (id int auto_increment, primary key (id)) engine MyISAM;
alter table `test01` add column `name` varchar(10) DEFAULT NULL;
drop table if exists `test01`;
create table `test01` (id int auto_increment, primary key (id)) engine MyISAM;
alter table `test01` add column `name` varchar(10) DEFAULT NULL;
[18 Nov 8:26] Jukka Kangas
It does not need to be same table, I was able to replicate the issue with this as well:

drop table if exists `test01`;
create table `test01` (id int auto_increment, primary key (id)) engine MyISAM;
alter table `test01` add column `field` int DEFAULT NULL;

drop table if exists `test02`;
create table `test02` (id int auto_increment, primary key (id)) engine MyISAM;
alter table `test02` add column `field` int DEFAULT NULL;
[18 Nov 14:45] MySQL Verification Team
After running a few thousand:

drop table if exists `test01`;
create table `test01` (id int auto_increment, primary key (id)) engine MyISAM;
alter table `test01` add column `name` varchar(10) DEFAULT NULL;

I didn't get any such problem.
Can you show where you get the error,  and what other DML/DDL is running on server?
Group Replication/InnoDB Cluster?

Send my.cnf too.
[20 Nov 5:09] Jukka Kangas
Run on docker container official mysql:8.4 (Mac OS ARM). I can replicate this using Sequel ACE client, and also with Linux docker container using PHP mysqli. Connection was without SSL.

default my.cnf, and in /etc/mysql/conf.d/local.cnf

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
disable_log_bin
max_heap_table_size=256M

# Set the default character set
character-set-server = latin1
collation-server = latin1_swedish_ci

ssl-ca=/etc/mysql/certs/cacert.pem
ssl-cert=/etc/mysql/certs/mysql-latest.local.crt
ssl-key=/etc/mysql/certs/mysql-latest.local.key
#require_secure_transport = ON
[20 Nov 5:11] Jukka Kangas
Screenshot of the error in Sequel Ace, same error when using php mysqli.

Attachment: Screenshot 2025-11-20 at 7.09.42.png (image/png, text), 60.52 KiB.

[20 Nov 5:32] Jukka Kangas
I was able to replicate this on version 8.0.44 as well (docker container, Mac OS ARM).
[20 Nov 5:48] MySQL Verification Team
I just tried on :

 Linux xxx 5.15.0-314.193.5.4.el8uek.aarch64 #2 SMP Tue Nov 11 13:12:28 PST 2025 aarch64 aarch64 aarch64 GNU/Linux

with 8.4.7 and couldn't repeat it there either.
[20 Nov 6:24] MySQL Verification Team
I also tried on a UBSAN build of 8.4.7 on x64 linux and didn't get any warnings.

for i in {1..1000000}; do mysql -uroot --socket=/tmp/s.sock -uroot test -e"drop table if exists test01; create table test01 (id int auto_increment, primary key (id)) engine MyISAM; alter table test01 add column name varchar(10) DEFAULT NULL;" ; done ;

I don't have MacOS to test.  Does this happen on linux x64 platform too
[25 Nov 11:21] Jukka Kangas
I was not able to reproduce this in docker 8.4.7 running in x86 (Kubernetes). Could be a problem just with the Mac ARM / Docker environment.