在我的应用程序中,我进行了一些更改并将它们上传到测试服务器。因为我无法访问服务器数据库,所以我运行ALTER
命令对其进行更改。
使用方法我在服务器上运行以下命令:
ALTER TABLE `blahblahtable` ADD COLUMN `newcolumn` INT(12) NOT NULL
之后,我发现该表的所有数据已被删除。现在表格是空白的。
所以我需要改变表而不用删除他的数据。有没有办法做到这一点?
答案 0 :(得分:14)
你的问题非常明显。您要在表格中添加新列,并将其设置为NOT NULL
为了使事情更清楚,我将在您运行命令时解释服务器的反应:
您添加了一个新列,因此表格的每一行必须为该列设置一个值。
由于您未声明任何默认值,因此所有行都为此新列设置了null
。
服务器注意到表的行在不允许null
的列上具有null
值。这是非法的。
要解决冲突,无效行已删除。
这个问题有一些很好的解决方法:
为您正在创建的列设置默认值(推荐)。
创建列不 NOT NULL
,设置适当的值,然后创建列NOT NULL
。
答案 1 :(得分:0)
您可以创建临时表,传递要更改的表中的所有信息,然后将信息返回到更改的表。