开发者

How to alter MySQL table without losing data?

开发者 https://www.devze.com 2023-02-25 07:39 出处:网络
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.

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:

  1. You add a new column, so every row of the table has to set a value for that column.

  2. As you don't declare any default value, all the rows set null for this new column.

  3. The server notices that the rows of the table have a null value on a column that doesn't allow nulls. This is illegal.

  4. 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 column NOT 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.

0

精彩评论

暂无评论...
验证码 换一张
取 消