新增表字段时报错异常

下班时,一同事执行一个简单的sql给表加字段并且该字段不为空,

  alter table aaa add name varchar(10) not null;

但就是这么简单的sql死活执行不通过。并且报错如下:

消息 4901,级别 16,状态 1,第 1 行
ALTER TABLE 只允许添加满足下述条件的列: 列可以包含 Null 值;或者列具有指定的 DEFAULT 定义;或者要添加的列是标识列或时间戳列;或者,如果前几个条件均未满足,则表必须为空以允许添加此列。不能将列"name"添加到非空表"aaa"中,因为它不满足上述条件。

原来是因为该表中已经有数据了,新增表字段时不能设置为not null,否则逻辑上就不通过。

可以这样: 

  alter table aaa add name varchar(10);
  update aaa set name=‘‘;
  alter table aaa alter column name varchar(10) not null;

--附赠删除字段:alter table aaa drop column name;

  

时间: 2024-10-07 05:34:03

新增表字段时报错异常的相关文章

安装sybase12.0,运行时报错异常。

报错为:invalid command line argument ' and' 当通过开始菜单打开"配置服务器"时,回报如上异常,当继续创建服务器是,不会成功.实际上不是程序出错了而是快捷方式出错了.之后创建就没有问题了. 参考网址:http://www.cnblogs.com/victor_chou/archive/2009/10/04/1578041.html

Java之数据库表字段有关键字报错java.sql.SQLSyntaxErrorException

前两天在开发中遇到一个坑,本来我在快乐的做着增删改查,然后悲剧发生了,在查询数据库的过程中,报了java.sql.SQLSyntaxErrorException: 经过排查,是因为数据库表字段中存在关键字: 下面重点来了,我用的是mybatis-plus,我的解决方案如下: 在这个字段上增加@TableField(value="`key`")注解即可,用``将字段包起来,是英文半角状态下的数字1前面的那个符号. 再运行起来就没问题啦 one more thing: 1.如果你用的是jp

MySQL生产库中添加修改表字段引起主从崩溃的问题总结

上周末和开发人员对线上库中的部分表的在线DDL和update,这过程中出现了一些意料之外的问题,现将过程.分析和解决方案在这里总结一下 一. 需求背景: 要在如下表中添加字段(modified_at)并且更改默认值 table_name { baby_compbaby_comp_statusbaby_usrbaby_ad_userbaby_campbaby_ordbaby_acc_eva } 每张表执行如下操作ALTER TABLE `$table_name` ADD COLUMN `modif

hive udaf 用maven打包运行create temporary function 时报错

用maven打包写好的jar,在放到hive中作暂时函数时报错. 错误信息例如以下: hive> create temporary function maxvalue as "com.leaf.data.Maximum"; java.lang.SecurityException: Invalid signature file digest for Manifest main attributes at sun.security.util.SignatureFileVerifier

PDM导出数据库结构时报错Generation aborted due to errors detected during the verification of the mode

转载:http://hi.baidu.com/clqaitxp/item/8aa7af12ff8883faddeeca10 做数据库结构导出时,发现有报错信息,之前还是好的,只是上午调整了一张表.下面看具体现象: 在导出的结果列表中可以发现有一个对象被打X了, 双击这个错误,可以看到是哪个表引起的错误,再来看看这个表的表结构是否有异常,结果发现这个表上建序列的时候没有勾上主键. 更改下这个表的属性,,对serial列选上P(primary key). 再执行一次导出,OK. 当然,你不做数据库表

SQLSERVER创建该存储过程时不会出错,但是执行存储过程时报错

创建该存储过程时,不会出错,但是执行存储过程时,会报出下面这样的错误 这是因为在存储过程创建时,它先做语法检查,如果通过了语法检查,它会尝试解析它包含的对象名,如果存在也会解析该对象引用的对象是否存在.如果引用的对象名不存在,解析会在存储过程首次执行时触发.即在首次执行存储过程时,查询处理器从 sys.sql_modules 目录视图中读取该存储过程的文本,并检查该过程所使用的对象名称是否存在.这一过程称为延迟名称解析,因为存储过程引用的表对象不需要在创建该存储过程时就存在,而只需在执行该存储过

mysql 对插入超过表字段限制时的处理

mysql在插入时,比如varchar类型超过表字段限制时,经测试不同版本的处理:    5.1版本,会对字符串进行截断后插入,不会报错    5.6,5.7版本,会直接插入失败,并报错

NS2仿真时报错“can't read "node_(5)": no such element in array”

在用NS2进行无线网络仿真时,通过生成cbr数据流,生成场景文件,导入运行tcl时,有可能出现下面错误: 在运行10个节点以上是没有错误,5个或者10个是报错, can't read "node_(5)": no such element in array while executing "$ns_ attach-agent $node_(5) $null_(1)" (file "cbr_n5_m5" line 25) invoked from

2015.3.4 VS2005调用MFC dll时报错及解决

今天在用VS2005调用MFCdll时报错: 正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码... 原因是我在dll的CSpaceApp::CSpaceApp()函数里写入了些判断代码.如果保持此函数为空,故障消失. 找到解决办法:VS2005-调试->异常->Managed Debuggin Assistants->LoaderLock 的选中状态去掉后OK VC++编译的dll必须用Release版本,不能用Debug的,否则在没