FWIW, я получаю ту же ошибку «Не удалось установить SDI» при попытке:
ALTER TABLE 'MyDb.MyTable' ADD COLUMN 'myCol' VARCHAR(255)
В моем случае движки таблиц представляли собой сочетание InnoDB
и MyISAM
.Все они должны были быть InnoDB
, и когда я переключил их и перезапустил сервер MySQL, казалось, что все работает.
В каталоге данных MySql (/usr/local/mysql/data/MyDb/
на моем компьютере) было множество .sdi
файлов.) ... который представляет собой простой json
файл с метаданными, относящимися к конкретной таблице.Эти SDI-файлы, по-видимому, существуют только для таблиц MyISAM.
Прежде чем я это понял, я решил, что SDI-файл для конкретной таблицы должен отсутствовать или что-то в этом роде, и выясняется, что mysql имеет ibd2sdi
утилита в своем каталоге bin, которая может создавать SDI-файл из таблиц ibd
файлов (которые также находятся в каталоге данных).
Если вам нужно придерживаться MyISAM
, она можетстоит взглянуть на это.Будьте осторожны с изменением содержимого файла SDI, хотя, когда я наткнулся на эту цитату в рабочих журналах MySql :
При этом нужно быть очень осторожным - изменения, которыенесовместимы с тем, что хранится в файлах .MYD и .MYI, например, изменение типа данных столбца может привести к катастрофическим последствиям, и его следует избегать.
Не знаю, так ли этополезно, но думал, что поделюсь.