【问题标题】:MySQL issue when moving from Dreamhost to HostGator从 Dreamhost 迁移到 HostGator 时的 MySQL 问题
【发布时间】:2011-06-07 11:29:24
【问题描述】:

首先,让我先说该网站在 Dreamhost 上运行良好(除了上周存在可怕的延迟和停机 - 但这并不是让我远离它们的原因,请阅读下文)。

我在 Dreamhost 上托管我的网站。由于收益托管所有者的问题,我不得不搬家(他不允许我更改面板上的 dns 配置,也不会为我这样做)。 所以我与 HostGator 签约,现在我被这个 MySQL 问题困住了。这是我到目前为止所做的:

首先,我通过 ftp 将所有文件上传到 HostGator 服务器。然后,我从旧服务器导出数据库并将其导入新服务器。然后我在域名注册商上更改了名称服务器,最后,过了一会儿,在浏览器上按 F5。

然后出现大量错误行。所以我搜索了HostGator Support Portal,发现我必须从这个(我之前使用的代码)进行更改:

<?
date_default_timezone_set('America/Sao_paulo');

if ($_SERVER['HTTP_HOST']=='localhost') {
    $conexao = mysql_connect("localhost");
    $bd = mysql_select_db("tablename");     
} else {
    $conexao = mysql_connect("mysite.phpmyadmin.com","mylogin","mypassword");
    $bd = mysql_select_db("mydatabasename");
}
mysql_query("SET time_zone='-3:00'");
?>

这样的:

<?
define('DB_NAME', 'mydatabasename');
define('DB_USER', 'mylogin');
define('DB_PASSWORD', 'mypassword');
define('DB_HOST', 'localhost');
?>

问题是我不是 PHP 或 MySQL 专家。程序员让我没有支持,所以我一个人。

当我尝试加载我的网站时,出现以下错误:

Warning: mysql_query() [function.mysql-query]: Access denied for user 'mylogin'@'localhost' (using password: NO) in /home/mylogin/public_html/index.php on line 42

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/mylogin/public_html/index.php on line 42

ERROR 40 >Access denied for user 'mylogin'@'localhost' (using password: NO)

在文件 index.php 上,第 42 行是这样的:

$sqlo = mysql_query("select *, max-buyers as left from offers inner join rel_city on rel_city.id_offer = offers.id  where id_city=$city and startdate <= now() and enddate >= now() order by  priority desc, left desc, enddate asc") or die("ERROR 40 >".mysql_error());

一个重要的细节是我需要这两行来处理新的主机,但是每当我尝试插入它们时,都会出现新的错误:

date_default_timezone_set('America/Sao_paulo');
mysql_query("SET time_zone='-3:00'");

有什么想法可以让这个工作吗?

【问题讨论】:

    标签: php hosting


    【解决方案1】:

    试试这个:

    <?
    date_default_timezone_set('America/Sao_paulo');
    $conexao = mysql_connect("localhost","mylogin","mypassword");
    $bd = mysql_select_db("mydatabasename");
    mysql_query("SET time_zone='-3:00'");
    ?>
    

    我所做的是简化原始代码以删除看起来可能用于开发目的的 IF / ELSE 语句。

    如果您遇到其他未发布的错误,请将它们包括在内。

    【讨论】:

      【解决方案2】:

      我不熟悉 HostGator 的设置,但问题似乎是您尝试访问服务器的地址或凭据。

      也许 HostGator 会在用户名和数据库名称前添加前缀? (例如,也许应该是 something_mydatabasename 而不是简单的 mydatabasename)

      或者他们的设置不支持使用 localhost 作为数据库地址;也许他们有一个已定义且隔离的地址供您连接。

      我会大声疾呼,或者仔细检查您的 cPanel 设置中的地址、用户名和数据库名称。它可能会给你一个好的开始。

      (当然,这个建议是假设您拥有正确的数据库用户名和密码,但错误表明情况并非如此。)

      【讨论】:

      【解决方案3】:

      从错误来看,您似乎没有在 MySQL 中设置数据库用户和密码。

      【讨论】:

      • 是的,我有。我可以用它登录PMA,没问题。
      【解决方案4】:

      您的数据库有用户名和密码。请确保您已正确指定它们,否则您将无法连接到您的数据库。

      您看到的错误消息是由于您的程序员使用了 PHP die() 函数,这不是一个很好的做法。

      与您的主机核实并确保您也对您的表具有权限。你应该,但你永远不知道。

      【讨论】:

      • 已经检查过用户名和密码,都正确。我使用它们登录 PMA。
      • @Sinner 你确定你真的在使用它们吗?您的错误消息说您根本没有使用密码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 2010-09-15
      • 2018-02-02
      • 2015-05-25
      • 2012-05-17
      • 2011-06-06
      相关资源
      最近更新 更多