列不属于表--可能出现的问题总结

个人感觉很有可以和数据库阻塞或者内存泄露有关。

正题:

异常的特点: 
一:最大的特点是随机性。会突然报错,说不定是什么时候,有可能是你下一个点击,或者刷新一下页面之后,总之就是出现在数据库有联系的地方(查询,绑定数据控件时)。 
二:报错的多样性。一报错后,千奇百怪的错误也就喷井式爆发,如“列不属于表”,“找不到表0”,“数据转换不成功”等,各种各样都有,但都是与数据库的数据有关。 
三:持续时间比较短。很多页面报错后,刷新几次,或者是等一阵,又正常了,又可以使用了,但可能下一个点击,刷新,就又报错了 
四:越多人使用,网络情况越差,就越频繁。我的系统在公司内部几个开发人员测试没有问题,但上线后,客户公司很多人用,就不断有这个错。而且,有几天网络比较好,就没有发生这错,我以为换了dbhelper已经搞掂了,但这几天又继续报错。

1、

法名: getList 异常信息: 列“productId”不属于表 Table
lz我公司的网站不知道出现了多少次了,我以前也发过这样的帖子,不过那个时候我解决了
原因是全局变量的问题,因为我的sql是拼接的,而在一些方法中设置了那个全局变量的值,
然后第二次再调用其他方法,因为字段被设置过,所以错了,最后我把那个全局变量全部改成局部变量
就不会错了。

NND,过一段时间又出现这样的问题,以为还是那个全局变量的问题,但是整个项目都没有全局变量了
现在还没有解决这个问题,但从我的日志记录来看,1、我的项目的数据层都有记录异常日志,在页面Global.aspx里也有记录异常日志。而且数据层都是记录日志后抛出的,所以正常情况数据层出现错误的话
那么就会有2个日志记录,一个是数据层的,该日志有记录参数的值,另一个是页面的,该日志直接记录异常信息,但是每次都只有页面的日志,所以怀疑与数据绑定有关

2、

SqlConnection 不要用全局或静态或单例模式 , 否则会出现不同进程进下共用connection的情况 , 特别是在web环境下 , 这将导致使用者获取的dataset不正确 , 从而引发上面我提出的问题 , 解决的方法是在需要做数据连接的地方new connection来使用 , 用后close , 这样就可以避免出现类似于 “xxxxx不属于表 Table ”等一系列的问题了。。。

3、

这个问题可能是由于并发的时候取的数据出了问题,很难找出问题,所以, 
最后在这个经常容易出错的地方,加上try catch,然后在catch中加日志,把这个表的所有字段列出来,看到底是什么东西.

4、

到数据库里看看日志,出错就会影响应用池,要重新启动 
是否是并发操作问题

5、

呵呵,应该是并发问题导致数据超时 
你可以将数据库的连接池放大一些。

6、

建议LZ将上线的东西加上一个日志,因为上线的东西有时错误是很难跟踪的,那你看到的问题又不全面。。 
之前因为上线后网站出现问题,老大要原因,我说我也不知道,后来他才让我加日志跟踪。 
这样以后出现问题都可以有据可查。我现在使用的是log4net

7、

先确定下,你报的这些错不属于连接超时所带来的问题。这些问题归根结底的原因还是在与你代码的问题。 
1.加日志记录记录SQL语句和连接字符串 
2.查是否有垃圾数据 
3.检查代码。(数据库连接,你的DBHELPER,查询语句)

8、
数据库ADO.NET的连接操作不正确,我也遇到了这样的问题,原来的DBHelp类中用的是静态的一个Connection对象,现在不采用静态的,在使用时全部重新创建对象,问题解决。 
代码如下: 
public static int ExecuteCommand(string safeSql) 
        { 
            using (SqlConnection Connection = new SqlConnection(connectionString)) 
            {

SqlCommand cmd = new SqlCommand(safeSql, Connection); 
                int result = cmd.ExecuteNonQuery(); 
                Connection.Close(); 
                return result; 
            } 
        }

时间: 2024-10-16 03:36:33

列不属于表--可能出现的问题总结的相关文章

SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段

一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL,动态列字段: 方法三:使用PIVOT关系运算符,静态列字段: 方法四:使用PIVOT关系运算符,动态列字段: 扩展阅读一:参数化表名.分组列.行转列字段.字段值: 扩展阅读二:在前面的基础上加入条件过滤: 参考文献(References) 二.背景(Contexts) 其实行转列并不是一个什么新鲜的

第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all; Select 列 into 新表;字符串函数;日期函数

第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all;  Select 列 into 新表;字符串函数;日期函数 SQL聚合函数 MAX(最大值).MIN(最小值).AVG(平均值).SUM(和).COUNT(数量:记录的条数) 聚合函数对null不计算.如果一行数据都是null,count(*)包含对空值行.重复行的统计. --聚合函数演示 selec

mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型

mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型 ,代码肯定省事的呀 --添加表列 alter table test add address nvarchar(50) null; --删除表列 alter table test drop column address; --修改表列字段类型 alter table test alter column address char(10); --修改表列字段名 exec sp_rename '表名.[列名]', '新的列名', '

如何解决xx列不在表中

在连接数据库的程序中常会出现xx列不在表中的问题?那么应该怎么解决呢? 产生此问题的原因有三种: 1.数据表没这个字段2.sql查询没将这个字段查出来3.字段名写错了 还有重要的是一定要检查你的数据库是否填写正确.

Mysql下在某一列后即表的某一位置添加新列的sql语句

Mysql简介 MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库.  Mysql ALTER TABLE详细语法 ALTER TABLE用于更改原有表的结构.例如,您可以增加或删减列,创建或取消索引,更改原有列的类型,或重新命名列或表.您还可以更改表的评注和表的类型.ww

information_schema系列四(跟踪,列约束,表和列)

这个系列的文章主要是为了能够让自己了解MySQL5.7的一些系统表,统一做一下备注和使用,也希望分享出来让大家能够有一点点的受益. 1:KEY_COLUMN_USAGE 按照官方的解释,这个表描述的是关于有约束的列.也就是没有约束的列都不会显示出来,按照整库查了一下,我里面有五张表,结果这个库记录的只有一条信息.因为只有这个列有约束,其他几张表都是测试玩的,并没有什么约束. 我现在创建两张表主键外键关联关系,然后查一下记录: 看一下就很是明朗了有没有,test1的ID只是主键,后面的关联就会显示

基于列转行大表的复杂查询优化

横版流程卡 优化(复杂SQL的优化),留档 一.横版流程卡原SQL 1 SELECT SOL.*,para.* FROM 2 (SELECT 3 A.SERIAL_NUMBER, 4 SUM(casewhen B.spc_item='Speed'and SUBSTR(C.TERMINAL_NAME,1,INSTR(C.TERMINAL_NAME,'-',1,1)-1)='LAS1'then A.SPC_VALUE ELSE 0end)as LAS1_Speed , 5 SUM(casewhen

mysql修改表名,列名,列类型,添加表列,删除表列

alter table test rename test1; --修改表名 alter table test add column name varchar(10); --添加表列 alter table test drop column name; --删除表列 alter table test modify address char(10) --修改表列类型 ||alter table test change address address char(40) alter table test

Java学习笔记(2)----散列集/线性表/队列/集合/图(Set,List,Queue,Collection,Map)

1. Java集合框架中的所有实例类都实现了Cloneable和Seriablizable接口.所以,它们的实例都是可复制和可序列化的. 2. 规则集存储的是不重复的元素.若要在集合中存储重复的元素,就需要使用线性表.线性表不仅可以存储重复的元素,而且允许用户指定存储的位置.用户可以通过下标来访问线性表中的元素. 3. Java集合支持三种类型的规则集:散列集HashSet.链式散列集LinkedHashSet和树形集TreeSet.HashSet以一个不可预知的顺序存储元素:LinkedHas