I have a table with about 10K rows, which I am trying to alter so that the field fielddelimiter
is never null. I am attempting to do an alter statement, expecting a
If your column has NULL values, you can't alter it to be "NON NULL". Change the NULL values first to something else, then try it.
In my case I was setting the column to NOT NULL
ALTER TABLE `request_info`
CHANGE COLUMN `col_2` `col_2`
VARCHAR(2000)
NOT NULL -- here was setting it to NULL when the existing col allowed NULL
AFTER `col_1`
when previously I set the column to DEFAULT NULL (i.e. allow NULL values), so if you want to allow NULL then you can do the following:
ALTER TABLE `request_info`
CHANGE COLUMN `col_2` `col_2`
VARCHAR(2000)
DEFAULT NULL -- changed from NOT --> DEFAULT
AFTER `col_1`
I have just encountered this error, and it seems the solution was to use the IGNORE
statement:
ALTER IGNORE TABLE `table` CHANGE COLUMN `col` `col` int(11) NOT NULL;
Note that you may still have data truncation issues, so be sure this is the desired result. Using the IGNORE statement it will suppress the data truncated errors for NULL values in columns (and possibly other errors!!!)
First remove any null values
UPDATE merchant_ftp_account SET fielddelimiter='t' WHERE fielddelimiter IS NULL;
Then
ALTER TABLE merchant_ftp_account MODIFY COLUMN `fielddelimiter` char(1) NOT NULL DEFAULT 't';