#mysql #sql #alter
#mysql #sql #изменить
Вопрос:
Я хочу изменить и добавить новый столбец в таблицу Mysql, который является ndbcluster:
ALTER TABLE `schema`.`table`
ADD COLUMN `test` VARCHAR(255) NULL;
Но это выдает ошибку:
Error Code: 1005. Can't create table 'my_table.#sql-1706_142' (errno: 851)
У меня нет большого опыта работы с ndbcluster, но в ходе моих исследований я пришел к выводу, что существуют некоторые ограничения на ширину таблицы.
Я также прочитал эту часть в документах :
Кроме того, максимальное смещение для столбца фиксированной ширины таблицы NDB составляет 8188 байт; попытка создать таблицу, нарушающую это ограничение, завершается неудачей с ошибкой NDB 851 Превышено максимальное смещение для столбцов фиксированного размера. Для столбцов на основе памяти вы можете обойти это ограничение, используя тип столбца переменной ширины, такой как VARCHAR или определяя столбец как COLUMN_FORMAT=DYNAMIC; это не работает со столбцами, хранящимися на диске. Для столбцов на основе диска вы можете сделать это, изменив порядок одного или нескольких столбцов таблицы на основе диска таким образом, чтобы общая ширина всех столбцов, кроме столбца на основе диска, определенного последним в инструкции CREATE TABLE, используемой для создания таблицы, не превышала 8188 байт, за вычетом любых возможныхокругление выполняется для некоторых типов данных, таких как CHAR или VARCHAR; в противном случае необходимо использовать хранилище на основе памяти для одного или нескольких столбцов или столбцов.
Тип хранилища моей таблицы и всех столбцов — ДИСК. Но я действительно не понимаю, что мне делать, чтобы увеличить ограничения.
Я могу установить тип хранилища моего нового столбца как ПАМЯТЬ, это работает, но в моем случае это не вариант, потому что я не хочу, чтобы данные были потеряны после сбоя сервера.
Комментарии:
1. Вам нужно будет показать инструкцию, которая вызывает эту ошибку.
2. Это просто запрос на ИЗМЕНЕНИЕ. Я обновил вопрос
3. Длина одного из моих столбцов VARCHAR в текущей таблице составляла 1024. В итоге я уменьшил его до 255. Затем запустите запрос alter, и он сработал. Но все еще не знаю, как увеличить лимит таблицы