这个错误是由于你用了事物,导致表的死锁。 死锁的原因很多,如果你的批量插入有依赖性的话,可能在Mysql里面形成了脏读。
第一步先解决你的死锁问题,用指令show engine innodb status \G 查看是那一个查询进程锁表, 找出来ID,杀掉它。
第二步检查自己的程序的SQL语言,一般批量插入的话尽量用insert into (),(),() 一个SQL来执行,如果需要检查是否存在然后插入或替换,如果表有唯一索引或主键,用replace, 其他格式一样。
第三步检查你的访问数据库的逻辑,在什么时候进行的commit,你在读写的时候是否设定了独占式访问方法, 或数据库中已经其他的存储过程或触发器同时在 *** 作这个表。
如果以上都无效,你最好是通过上述指令同时监控你的程序并在mysql里面用show process list查看是哪一个ID出了问题。
你这算法本身存在很大问题,为什么非要把客户端传来的数据和数据库中的都要先放到数组,然后再来更新?这得多花时间啊!直接更新不行吗?
rowsCount=CLng(Request("rowsCount")) '这是传过来的数组的行数(个数)tozDate=Request("tm") '这是一个日期
Set rs=ServerCreateObject("ADODBRecordset")
For i=0 To rowsCount-1
rsopen "select from wlfaliao where bianma='" & request("bianma" & i) & "' And tzriqi='" & tozDate & "'",conn,1,3
if not rseof then
rs("nyuliao")=rs("nyuliao")+clng(request("sl" & i))
rsupdate
end if
rsclose
Next
1、查看权限,看看是否有权限。
2、换一个数据库看看,最好是新建一个,看看数据库能否更新,有时候有些数据库带了关系锁定了,所以不能单独更新。
3、检查更新方式,试试其他更新方式。
4、SQL语句问题,要更新的数据是不是非法。
解决:
原因:改过计算机的名称或IP
查找同义词中是否有服务器名称为1921682510,删除后重新新建。
重新出现问题:
未将服务器 'FGI' 配置为用于 DATA ACCESS
解决:
sp_serveroption 'FGI','data access', 'true'
GO
当对sql数据库中的表进行编辑时,会出现“未更新任何行”的错误,这是可能是因为插入了一条与之前相同的记录或者不满足某种约束类型,这时数据库当然不能更新任何行了。
此时应该检查一下是否输入了错误的数据,并与之前已输入的数据记录进行比较,确定正确之后再录入数据。若仍有“未更新任何行”的错误并且保存不了这个表,也退不出去,这时就需要用sql语句来删除已录入的错误数据。
扩展资料
Sql 修改表结构的 *** 作
1、添加表字段
alter table 表名 add 字段名 类型(值)
示例:alter table user add name varchar(40);
2、删除表字段
alter table 表名 drop 字段名
示例: alter table user drop name;
3、字段名更名
alter table 表名 rename 老字段名 to 新字段名
示例:alter table user rename oldname to newname;
4、更改字段类型
alter table 表名 alter 字段 类型;
示例:alter table user alter name varchar(50);
以上就是关于mysql批量更新出错全部的内容,包括:mysql批量更新出错、ASP更新数据库出错,求大神支一下怎么解决、懂数据库的麻烦看下为什么总更新失败呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)