In my application, I make some changes a开发者_如何转开发nd upload them to a testing server. Because I have no access to the server database I run ALTER
commands to make changes on it.
Using a method I ran the following command on server:
ALTER TABLE `blahblahtable` ADD COLUMN `newcolumn` INT(12) NOT NULL
After that, I found that the all the data of the table has been removed. Now the table is blank.
So I need to alter the table without removing his data. Is there any way to do that?
Your question is quite obvious. You're adding a new column to the table, and setting it to NOT NULL
.
To make things clearer, I will explain the reaction of the server when you run the command:
You add a new column, so every row of the table has to set a value for that column.
As you don't declare any default value, all the rows set
null
for this new column.The server notices that the rows of the table have a
null
value on a column that doesn't allownull
s. This is illegal.To solve the conflict, the invalid rows are deleted.
There are some good fixes for this issue:
Set a default value (recommended) for the column you're creating.
Create the column without the
NOT NULL
, set the appropiate values, and then make the columnNOT NULL
.
You can create a temp table, pass all the information from the table you want to alter, and then return the info to the altered table.
精彩评论