关于向数据库中插入数据时报"An explicit value for the identity column in table 'tm_o365_11' can only be specified when a column list is used and IDENTITY_INSERT is ON."错误

  • 解决方法

解决方法

从网上搜索说是如果想显示插入自增列(此表中的自增列是ID)需要将IDENTITY_INSERT设为ON。
于是在python脚本中添加这句话,代码如下。ps:我这里插入的表是随机的

def hash_id(company_id):num = company_id[35:]return int(num, 16)%16sql1 = "select distinct company_id from tm_o365_x"
cur.execute(sql1)
data_list = []
data_id = cur.fetchall()
for i in data_id:# 将所有的company_id集合到一个listdata_list.append(i[0])for company_guid in data_list:table_name = 'tm_o365_' + str(hash_id(company_guid))cur.execute(f"set identity_insert [dbo].[{table_name}] on")sql = f"INSERT INTO {table_name} select * from tm_o365_x where company_id = '{company_guid}' "cur.execute(sql)cur.execute(f"set identity_insert [dbo].[{table_name}] off")conn.commit()

但是将identity_insert设为on还是报了标题的这个错误。又查到说是不能select *,ID是自增列,要把它去掉,于是进行了如下修改

for company_guid in data_list:table_name = 'tm_o365_' + str(hash_id(company_guid))cur.execute(f"set identity_insert [dbo].[{table_name}] on")sql = f"INSERT INTO {table_name}(company_id,user_id)select company_id,user_id from tm_o365_x where company_id = '{company_guid}' "cur.execute(sql)cur.execute(f"set identity_insert [dbo].[{table_name}] off")

执行完又报了Explicit value must be specified for identity column in table ‘tm_o365_11’ either when IDENTITY_INSERT is set to ON or when a replication user is inserting into a NOT FOR REPLICATION identity column这个错

最后insert into 所有列,即加上ID就正确了,即:

sql = f"INSERT INTO {table_name}(ID,company_id,user_id) \select ID,company_id,user_id from tm_o365_x where company_id = '{company_guid}' "

思考了一下原因,应该是只有把identity_insert设为on,并且显示插入ID才可以。因为默认identity_insert关闭的,需要开启才能插入数据携带ID的。而开启后,field colum list是and的关系,所以ID也要加上的

关于向数据库中插入数据时报“An explicit value for the identity column in table can only be specified when ...“的错误相关推荐

  1. 用java向mysql数据库中插入数据为空

    利用java面向对像编程,向数据库中插入数据时.遇到插入的数据为空的情况.在此做一小结: 1.数据库连接正正常 2.sql语句没有问题 3.程序没有报异常 4.代码: import java.util ...

  2. 以使用QSqlQuery向数据库中插入数据为例,做一个小结

    背景: 最近在使用Qt+SQLite写一个本地数据库管理程序(使用者不懂SQL),在写向数据库中插入数据的 相关的函数时,我遇到了几个问题(暂时就这些): 1.向指定字段插入指定数据时,读取到的数据都 ...

  3. mongodb数据库中插入数据

    mongodb数据库中插入数据 一:connection 访问集合: 在mongodb数据库中,数据是存储在许多数据集合中,可以使用数据库对象的collection方法访问一个集合.该方法使用如下: ...

  4. Java向数据库中插入数据出错时怎么避免插入错误数据

    Java向数据库中插入数据出错时怎么避免插入错误数据 对于初学者,向数据库写数据时,当程序输错,会有错误的数据写入了数据库,这是可以用捕获异常回滚的方法避免这种情况的发生 代码如下: /** 完成增删 ...

  5. ajax向数据库中添加数据,用jqueryajax在数据库中插入数据

    我有一个带有c#(.net4)代码的表单.在这种形式下,用户填写他的规格并提交. 我想在jquery中使用ajax或post方法来预防blink.i写流程代码. "成功"函数执行, ...

  6. php怎么插入数据,利用PHP怎么向MySQL数据库中插入数据

    利用PHP怎么向MySQL数据库中插入数据 发布时间:2020-12-11 16:41:47 来源:亿速云 阅读:89 作者:Leah 这篇文章给大家介绍利用PHP怎么向MySQL数据库中插入数据,内 ...

  7. 向数据库中插入数据的三种方式

    在数据库中,向数据库中插入数据,使用insert into关键字.在数据库中插入数据有三种方法. 1)插入单个字段的情况 insert into table_name(列名) values(值); 2 ...

  8. mysql数据库插入数据为空_用java向mysql数据库中插入数据为空

    利用java面向对像编程,向数据库中插入数据时.遇到插入的数据为空的情况.在此做一小结: 1.数据库连接正正常 2.sql语句没有问题 3.程序没有报异常 4.代码: import java.util ...

  9. java如何向数据库中插入数据_如何控制Java代码向数据库中插入数据

    慕哥6287543 Java程序向数据库中插入数据,代码如下:123456789101112131415161718192021222324252627282930313233343536373839 ...

最新文章

  1. 有了NPU,还要DSP吗?
  2. eeglab中文教程系列(15)-绘制独立成分ERP贡献
  3. 华为首款搭载鸿蒙os 荣耀智慧屏,全球首款搭载鸿蒙OS终端! 荣耀智慧屏将在今天拉开面纱...
  4. Android WebView 图片超出宽度自适应,点击查看大图
  5. Linux指令类型(一)change指令
  6. AngularDart4.0 指南- 表单
  7. K8S安全军规101:对CNCF最佳实践的扩充
  8. PureCode--iOS--自定义UITableViewCell(含疑问)
  9. Windows7WithSP1/TeamFoundationServer2012update4/SQLServer2012
  10. Objective-C 函数
  11. epson LQ 600KIIH 针式打印机走纸问题
  12. 进程管理(C/C++)
  13. UniAPP 使用高德地图,打包后定位api不执行
  14. 带按扭的轮换横幅广告
  15. Anaconda navigator打不开,一直卡在loading application
  16. C++string:查找、替换、插入、删除等
  17. Java求200内素数质数及其之和
  18. Nebula 官方地址
  19. 独立开发变现周刊(第81期):开发一个应用来减少屏幕使用时间,月收入2万美元...
  20. 哈工大计算机技术学制,哈尔滨工业大学研究生学制与学习年限

热门文章

  1. 如何使用Foobar将高码率Flac转成低码率Flac或者Wav
  2. 大数据人工智能ai培训师专家讲师叶梓介绍及ChatGPT提纲
  3. YOLOv5-detect
  4. 《我是一只IT小小鸟》书评──将要成为IT小小鸟
  5. SCI、EI、IEEE和中文期刊在查询中有什么区别?
  6. 使用ar_receipt_api_pub.apply失误
  7. 等价无穷小代换易混淆的概念错误!!用泰勒展开,以后!
  8. H264--4--H264编码
  9. 凯捷面试(1):JavaSE、MySQL数据库、前端
  10. window镜像制作