Невозможно изменить тип столбца таблицы в MySQL 5.7

У меня есть эта таблица в базе данных MySQL 5.7 и остальные операторы SQL:

create table m_workflow
    (
        id bigint(10) auto_increment primary key,
        course bigint(10) default 0 not null,
        name varchar(255) default '' not null,
        intro longtext not null,
        introformat smallint(4) default 0 not null,
        recommendationstitle varchar(255) null,
        recommendintro longtext null,
        recommendintroformat bigint(10) default 1 null,
        timeopen bigint(10) default 0 not null,
        timeclose bigint(10) default 0 not null,
        timelimit bigint(10) default 0 not null,
        timecreated bigint(10) default 0 not null,
        timemodified bigint(10) default 0 not null
    )
    comment 'The settings for each workflow.';

    create index m_work_cou_ix on m_workflow (course);

    INSERT INTO m_workflow (course, name, intro, introformat) VALUES (1, 'aaa', 'aaaa', 1);
    INSERT INTO m_workflow (course, name, intro, introformat) VALUES (1, 'aaa', 'aaaa', 1);

    ALTER TABLE m_workflow MODIFY COLUMN recommendationstitle LONGTEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL after introformat;

Проблема здесь в том, что он не работает с оператором столбца ALTER с ошибкой:

Data truncated for column 'recommendationstitle' at row 1

Если я добавлю некоторый текст в поля рекомендаций, то конверсия пройдет нормально.

Это ожидаемо или я что-то не так делаю?

Вот рабочий пример SQL - http://www.sqlfiddle.com/#!9/10934c/2

Вы пытаетесь изменить его с NULL на NOT NULL. И записи со значениями NULL, вызывающими проблему.

fifonik 11.06.2019 04:59

Да, вы действительно правы. Если вы опубликуете это как ответ, я приму это.

Darko Miletic 11.06.2019 05:06
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
2
293
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы пытаетесь изменить его с NULL на NOT NULL. Существующие в настоящее время записи со значениями NULL вызывают проблему.

Другие вопросы по теме