在虚拟空间上安装出现ECSHOP info: Can't Connect MySQL Server错误

2016-07-07 15:20 来源:www.chinab4c.com 作者:ecshop专家

我假设您的ECSHOP版本号为2.15。找到这个文件:/${ecshop}/includes/cls_mysql.php

大概73行左右,把以下语句中的着红色的@去掉,观看错误信息,再来报告一下。
if (PHP_VERSION >= '4.2')

{

$this->link_id = @mysql_connect($dbhost, $dbuser, $dbpw, true);

}

else

{

$this->link_id = @mysql_connect($dbhost, $dbuser, $dbpw);



mt_srand((double)microtime() * 1000000); // 随机数函数初始化

}


回答:
JSLover:
你好,感谢你的关注和回复,ECSHOP是2.15版本的没错。
如你所说之法,得如下结果:

创建配置文件............成功
创建数据库............成功
安装数据............失败


Warning: mysql_connect() [function.mysql-connect]: Access denied for user: 'MYSQL服务器的user@MYSQL服务器的IP' (Using password: YES) in D:\wwwroot路径\eshop\includes\cls_mysql.php on line 75
ECSHOP info: Can't Connect MySQL Server(MYSQL服务器的IP:3306)!

不客气,还要感谢您的测试。

这么看来,有可能是由于这个参数引起的:
$this->link_id = @mysql_connect($dbhost, $dbuser, $dbpw, true);

把这个参数去掉,即改为:
$this->link_id = @mysql_connect($dbhost, $dbuser, $dbpw);

再测试一下。

最后测试一下了。

找到这个文件:${ecshop}/install/includes/lib_installer.php
,大概383行,有两条语句:
$db = new cls_mysql($db_host, $db_user, $db_pass, $db_name);
$se = new sql_executor($db, 'utf8', 'ecs_', $prefix);
改成:
echo 'installer.install_data()connecting...';
$db = new cls_mysql($db_host, $db_user, $db_pass, $db_name);
echo 'installer.install_data()connected...';
echo 'installer.install_data()creating tables...';
$se = new sql_executor($db, 'utf8', 'ecs_', $prefix);
echo 'installer.install_data()created tables success...';
echo '<hr />';


看来楼上只喜欢高技术性的

只要填写好数据库信息之后进行搜索,可以搜索到数据库的话,说明链接正确。
根据提示信息看来,可能是MySQL用户权限不够的原因。如果用原有的数据库直接安装的话,应该是没有问题的。如果要重新建立数据库的话,一些空间分配给的用户权限是不够的。

修改之后会在安装页面的顶部出现错误提示:
Warning: Cannot modify header information - headers already sent by (output started at D:\Webhosting\Clients\net24hourweb\wwwroot\shop\install\includes\lib_installer.php:1) in D:\Webhosting\Clients\net24hourweb\wwwroot\shop\install\includes\init.php on line 26
结合后来我自己做的一些实验看来,liry朋友说的情况是对的,但Discuz5.5.0或DedeCMS就可以在这种限制下正确安装,这就说明对于MYSQL表的建立是可以应对这种有限制的数据库的情况的。我对于PHP只是纯粹的应用,对代码不了解,所以麻烦大家帮忙解决,这个论坛很温馨,两位研发组的朋友很热心。向JSLover献上300积分,不过没试过能不能转送积分,如果可以马上送,对你热心的帮助表示谢意!

晕,没找到可以转送积分的操作,郁闷,JSLover你喜欢的话就请开个收费贴,我去购买,如果觉得也没什么所谓积分,就当我没说过,呵呵。

您是用什么编辑器修改的呢?修改之后出现这个错误提示,是因为您在修改之后没有保存为UTF8编码或者文件里带有了编码签名引起的。
建议您将修改过的这个文件删除,重新上传原来的吧

谢谢您对我们的支持,我们会尽量帮助您解决在安装使用中遇到的问题~

原帖由 风飘尘逸 于 2007-7-29 22:06 发表
晕,没找到可以转送积分的操作,郁闷,JSLover你喜欢的话就请开个收费贴,我去购买,如果觉得也没什么所谓积分,就当我没说过,呵呵。

感动!替JSLover谢谢您了!有此心意已足矣!

对于您遇到的这个问题,先以普通的流程和操作方式来完成安装吧。对数据库操作权限这部分我们做得是比较严谨的

installer.install_data() connecting...ECSHOP info: Can't Connect MySQL Server(MYSQL服务器IP:3306)!


从这个提示信息来看,是数据库没连上。还没到建表的阶段。这和“是否有无建表权限”已经没关系了。

从您反映的情况来看:既可以搜到已有的数据库,又可以选中指定的数据库,此时已经正常连上数据库两次;而当要建表的时候,这时候数据库却连不上了。

我建议,您查看一下${ecshop}/data/config.php文件,确认以下四项和您输入的值是一致的(观察一下有无特殊字符):
// database host
$db_host= "localhost:3306";

// database name
$db_name= "abc";

// database username
$db_user= "abc";

// database password
$db_pass= "abc";

甚至,可以直接在${ecshop}/includes/cls_mysql.php(75行左右)里硬编码您的帐号信息:
$this->link_id = @mysql_connect('localhost:3306', 'abc', 'abc', true); // 注意:要用单引号

如果走完这些流程还不行的话,联系一下空间服务商,报告异常。

本人已不在这个行业多时,除了周末,平时不上网,不然的话很乐意亲自为您调试(如果您愿意)。这种非正常的错误,只有一行一行调试才能抓出问题。

您可以在此跟帖,对于给用户造成的每一个困扰,EC都非常重视。