Я получил следующую ошибку при попытке изменить тип данных столбца и установить новое значение по умолчанию:
ALTER TABLE foobar_data ALTER COLUMN col VARCHAR(255) NOT NULL SET DEFAULT '{}';
ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'VARCHAR (255) NOT NULL SET DEFAULT' {} '' в строке 1
Ответы:
Вторая возможность, которая делает то же самое (благодаря juergen_d):
источник
column
необязательно. Вы можете просто использоватьALTER TABLE foobar_data MODIFY col VARCHAR(255) NOT NULL DEFAULT '{}';
или,ALTER TABLE foobar_data CHANGE col col VARCHAR(255) NOT NULL DEFAULT '{}';
и результат будет таким же.{}
.col
буквы рядом? (вот такcol col
)DEFAULT
значение. Это обработает все строки таблицы бесплатно (очень долго на огромных таблицах). Используйте вместо этого,ALTER TABLE <table_name> ALTER COLUMN <column_name> SET DEFAULT <value>
который является мгновенным.В качестве продолжения, если вы просто хотите установить значение по умолчанию, вы можете использовать синтаксис ALTER .. SET. Только не кладите туда все остальное. Если вы собираетесь вставить оставшееся определение столбца, используйте синтаксис MODIFY или CHANGE в соответствии с принятым ответом.
В любом случае, синтаксис ALTER для установки столбца по умолчанию (поскольку именно это я искал, когда пришел сюда):
Для которого «литерал» также может быть числом (например
...SET DEFAULT 0
). Я не пробовал,...SET DEFAULT CURRENT_TIMESTAMP
но почему бы и нет?источник
ALTER TABLE table_name MODIFY COLUMN column_name TIMESTAMP NOT NULL DEFAULT current_timestamp;
DEFAULT
значение.NOW()
илиcurrent_timestamp()
@Malaise @NereisЕсли вы хотите добавить значение по умолчанию для уже созданного столбца, это работает для меня:
источник
Для DEFAULT CURRENT_TIMESTAMP:
Обратите внимание на объявление двойного столбца
Удаление DEFAULT CURRENT_TIMESTAMP:
источник
Принятый ответ работает хорошо.
В случае недопустимого использования значения NULL ошибки, на NULL значений, обновлять все значения нулевые значения , используемые по умолчанию в этом столбце , а затем попытаться сделать альтер.
источник
Если вышеперечисленное не работает для вас (т.е. вы работаете с новым SQL или Azure ), попробуйте следующее:
1) удалить существующее ограничение столбца (если есть):
2) создать новый:
источник
Попробуй это
как это
источник