如何在不丢失数据的情况下改变MySQL表?

9 mysql database alter

在我的应用程序中,我进行了一些更改并将它们上传到测试服务器.因为我无法访问服务器数据库,所以我运行ALTER命令对其进行更改.

使用方法我在服务器上运行以下命令:

ALTER TABLE `blahblahtable` ADD COLUMN `newcolumn` INT(12) NOT NULL
Run Code Online (Sandbox Code Playgroud)

之后,我发现表的所有数据都已删除.现在表格是空白的.

所以我需要改变表而不删除他的数据.有没有办法做到这一点?

Alb*_*dez 17

你的问题非常明显.您正在向表中添加新列并将其设置为NOT NULL.
为了使事情更清楚,我将在运行命令时解释服务器的反应:

  1. 您添加了一个新列,因此表的每一行都必须为该列设置一个值.

  2. 由于您没有声明任何默认值,因此null为此新列设置了所有行.

  3. 服务器注意到表的行在null不允许nulls 的列上具有值.这是非法的.

  4. 要解决冲突,将删除无效行.

这个问题有一些很好的解决方法:

  • 为您正在创建的列设置默认值(推荐).

  • 创建列没有NOT NULL,设置此时,相应的值,然后进行列NOT NULL.