一段时间以来,我们一直在收到一个未知的专栏"来自我们的mysql服务器的错误。
错误如下所示:
Unknown column 'JOIN search_table��z[.cc.' in 'field list'
Unknown column '(`IX_cfs$order$make$model`) INNER JOIN search_t' in 'field list'
Unknown column 'eated, cp.stat_sales, cp.stat_views, cp.culture_code' in 'field list'
+ more
最奇怪的是,我们的.NET代码中的哪些方法可以完全随机地获取错误。即使查询中不包含任何报告的错误表的方法,有时也会报告" unkown列"内部SQL代码错误不属于该查询...: - (
我们正在运行Windows 2008,mysql 5.0.45和MySQL连接器6.2,.NET 3.5。我们有平均250请求/秒,峰值为750请求/秒。 MySQL CPU使用率为10-50%,内存使用量为5-6 GB(8 GB可用)。
错误仅在几个月前开始,但变得越来越频繁,以至于我们每天从ELMAH获得+500错误。我们怀疑它可能是一个强调的mysql服务器,混合连接(在mysql或.NET连接池中)。
我们尝试在本地和单独的相同服务器设置上重现它,但到目前为止没有运气重新生成错误,因为它不会发生在所有sql查询中,但是重新启动mysql服务会消除错误一段时间。但随着我们的用户群和服务器负载每月增加10-15%,错误变得更加频繁。
非常感谢任何帮助,想法,建议...
其他信息: 我们运行所有外部参数(QueryString,表单发布数据,Web服务参数以及内部参数)会引发一个自定义函数,修复所有SQL注入尝试。我们不使用" dynamic" SQL,仅使用存储过程。
除此之外,最常见的方法是返回"未知列" error是.NET中一种只接受int32作为输入参数的方法,MySQL SP也只接受int作为参数。
我们还将所有东西都包装在try-catch-finally中,我们得到的错误来自我们的错误处理模块(主要是ELMAH)
答案 0 :(得分:0)
看起来腐败的查询字符串正在传递给mySQL。
您的.Net应用程序几乎肯定是罪魁祸首。
SUGGESTIONS:
再次查看正在进行查询的代码。
如果幸运的话,您可以轻松地隔离实际的SQL
任何情况下,请确保相关代码:创建查询的位置,然后是查询的位置,最后是访问结果的位置 - 包装在try / catch块中。
我猜测某些未处理的异常可能会让您退出您希望采取的控制路径流,从而导致数据损坏。