新闻中心

解决Ecshop网站迁移后出现Unknown column ‘****’ in ‘where clause’

作者 / 无忧主机 时间 2012-10-31 06:02:52

Echop是一款非常不错的网店开源程序,它的用户面量很大,今天在帮一个用户迁移的时候出现了一个很不常见的错误,“MySQL server error report:Array.....” 详细如下: 问题现象 网站在迁移后,访问后台正常,访问首页出现如下报错。数据库保证没有缺少。

MySQL server error report:Array ( [0] => Array ( [message] => MySQL Query Error )
[1] => Array ( [sql] => SELECT c.cat_id, c.cat_name, c.sort_order, a.article_id,
a.title, a.file_url, a.open_type FROM `s5jg****_data`.`teashop_article` AS a LEFT
JOIN `s5jgj****_data`.`teashop_article_cat` AS c ON a.cat_id = c.cat_id WHERE
c.cat_type = 5 AND a.is_open = 1 AND C.cat_id != 14 ORDER BY c.sort_order ASC,
a.article_id ) [2] => Array ( [error] => Unknown column 'C.cat_id' in 'where clause' )
[3] => Array ( [errno] => 1054 ) )
现象分析 一般情况下,我们的网站报Unknown column '****' in 'where clause'我们开始都会想到,是不是网站在迁移的过程中,数据库出现了丢失。在重新下载数据库,导入之后。可以完全确定数据库是没问题的。那么,这会是什么问题呢。小编在查询相关资料后,总结出现以上问题主要有以下几个方面: 1、teashop_article表中确实缺少这个列。 2、teashop_article 表前面多了一个小的可以忽略的空格,没有看到。 3、php中的sql字符串,字段变量或者关键字用的双引号。比如:WHERE products_id = "test",将test旁边的双引号,改成单引号就可以。 4、linux主机对文件名大小写比较敏感,PHP程序中,或者数据库的列名是大写。 问题解决 明白了是什么原因造成,问题就很容易解决了。我们仔细看一下上面的那个错误提示,发现“Unknown column 'C.cat_id' in 'where clause'”里的列名里的C是大写的,而无忧主机的php虚拟主机是纯正是linux系统,所以可以肯定是因为用户修改了自己的程序,语句中编写不规范导致。我们把用户修改过的文字main.php替换为安装包中默认文件就解决问题了 。   纯Linux环境下高端免备案【香港独立IP地址】 php空间,仅仅只需199元一年起。商务中国域名核心代理直销50元注册国际顶级域名

本文地址:https://www.51php.com/ecshop/9665.html

1
1
1
1
1
1
1

客户服务热线

0791-8623-3537

在线客服