【问题标题】:Installing magento, get database connection error.安装magento,出现数据库连接错误。
【发布时间】:2013-07-16 10:30:40
【问题描述】:

我正在尝试将 magento 安装到我的网络主机上,在安装过程中我收到“数据库连接错误”我已经正确输入了所有值(已经联系了我的网络主机以确保我在这一点上被难住了)他们说是指magento 论坛以获得额外支持。我找不到修复方法。任何想法/帮助将不胜感激。

【问题讨论】:

    标签: mysql database magento


    【解决方案1】:

    试试这个脚本,它会测试您的连接并报告实际的 MySQL 错误。确定您获得的凭据是否有效或流程的哪一部分失败可能会很有用。由于您在远程虚拟主机上使用它,我建议您对数据库用户名和密码进行硬编码,以避免在开放的 Internet 上以明文形式传递它们。

    (注意:不是我自己的作品 - 脚本来自 webune.com)

    <?php
    ###################################### C O P Y R I G H T S ####################################
    # THIS SCRIPT IS DISTRIBUTED BY WEBUNE.COM UNDER LICENSE UNDER THE GPL RULES
    # PLEASE DO NOT REMOVE THIS MESSAGE IN SUPPORT OF OUR HARD WORK TO CONTINUE TO PROVIDE FREE SUPPORT
    ###############################################################################################
    # OK, HERE WE GO
    # Use this varialble if you are using an installation script
    $step = $_GET['step'];
    if (!$step) {
        $page_title = 'Form';
    }
    else{
        $page_title = 'Test MySQL step '.$step;
    }
    ############## BEGIN FUNCTIONS ##############################
    # FUNCTION TO TEST USERNAME AND PASSWORD IN MYSQL HOST
    function db_connect($server, $username, $password, $link = 'db_link') {
        global $$link, $db_error;
        $db_error = false;
        if (!$server) {
            $db_error = 'No Server selected.';
            return false;
        }
        $$link = @mysql_connect($server, $username, $password) or $db_error = mysql_error();
        return $$link;
    }
    # FUNCTION TO SELECT DATABASE ACCESS
    function db_select_db($database) {
        echo mysql_error();
        return mysql_select_db($database);
    }
    # FUNCTION TO TEST DATABASE ACCESS
    function db_test_create_db_permission($database) {
        global $db_error;
        $db_created = false;
        $db_error = false;
        if (!$database) {
            $db_error = 'No Database selected.';
            return false;
        }
        if ($db_error) {
            return false;
        } else {
            if (!@db_select_db($database)) {
                $db_error = mysql_error();
                return false;
            }else {
                return true;
            }
        return true;
        }
    }
    
    function step1 ($error) {
        echo '<h1 style="color:#FF0000">'.$error.'</h1><hr>';
    ?>
    <form name="form1" method="post" action="<?php $_SERVER['PHP_SELF']; ?>?step=2">
    <table border="0" cellspacing="5" cellpadding="5">
    <tr>
    <td><div align="right">mysql hostname:</div></td>
    <td><input name="server" type="text" value="<?php echo $_REQUEST['server']; ?>">
    (usually &quot;localhost&quot; or enter IP Address of MySQL Server)</td>
    </tr>
    <tr>
    <td><div align="right">mysql username:</div></td>
    <td><input type="text" name="username" value="<?php echo $_REQUEST['username']; ?>"></td>
    </tr>
    <tr>
    <td><div align="right">mysql username password:</div></td>
    <td><input type="text" name="password" value="<?php echo $_REQUEST['password']; ?>"></td>
    </tr>
    <tr>
    <td><div align="right">mysql database name:</div></td>
    <td><input type="text" name="database" value="<?php echo $_REQUEST['database']; ?>"></td>
    </tr>
    <tr>
    <td colspan="2"><input type="submit" name="Submit" value="Submit"></td>
    </tr>
    </table>
    </form>
    <?php
    }
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Webune MYSQL TEST - <?php echo $page_title; ?></title>
    </head>
    <body>
    <h1><?php echo $page_title; ?></h1>
    <?php
    ############## END FUNCTIONS ##############################
    switch ($step) {
        case '2':
            if ($_REQUEST['server']) {
        $db = array();
        $db['DB_SERVER'] = trim(stripslashes($_REQUEST['server']));
        $db['DB_SERVER_USERNAME'] = trim(stripslashes($_REQUEST['username']));
        $db['DB_SERVER_PASSWORD'] = trim(stripslashes($_REQUEST['password']));
        $db['DB_DATABASE'] = trim(stripslashes($_REQUEST['database']));
        $db_error = false;
        db_connect($db['DB_SERVER'], $db['DB_SERVER_USERNAME'], $db['DB_SERVER_PASSWORD']);
        if ($db_error == false) {
            if (!db_test_create_db_permission($db['DB_DATABASE'])) {
                $error = $db_error;
            }
        } else {
            $error = $db_error;
        }
        if ($db_error != false) {
            $error = "failed";
            echo step1($db_error);
        } else {
            echo '<h1 style="color:green">Congratulations!</h1>
            Connected Successfuly to datbase <strong>
            <a href="http://www.webune.com/forums/how-to-test-mysql-database-connection.html">Continue &gt;&gt; </a></strong>';
        }
            } else {
                $error = "ERROR: please provide a hostanme";
                echo step1($error);
            }
        break;
    
        default:
        echo step1('Step 1');
        break;
    }
    ?>
    <div align="center">
    <img src="http://www.webune.com/images/headers/default_logo.jpg">
    </div>
    <div align="center">
    Script Courtesy of
    <a href="http://www.webune.com">Webune PHP/Mysql Hosting</a></div>
    </body>
    </html>
    

    【讨论】:

    • 我把这个放在哪里?作为主机上的文件?
    • @user1937185 是的。您可以将此脚本上传到与您的 Magento 安装位置相同的虚拟主机空间。然后通过浏览器运行它。
    • 连接成功是否意味着magento端有问题?
    • 现在可以正常工作了,好像是webhost修复了mysql权限什么的,等待回复。谢谢你的帮助
    • 正是我需要的!谢谢。
    【解决方案2】:

    我通过在提交数据库设置之前使用 phpMyAdmin 手动创建数据库解决了这个问题。

    【讨论】:

      【解决方案3】:
      1. 转到 PhpMyAdmin
      2. 创建数据库(例如 Magento-Madabase)
      3. 编辑数据库的属性并添加对新用户的访问权限(例如 Magento-User@localhost 和密码)
      4. 安装 Magento。当它询问数据库类型 Magento-Database 并且询问用户和密码时,选择 Magento-User 和设置的密码。

      ...安装将继续没有问题!

      【讨论】:

      • 我刚刚在 PHPMyadmin 中添加了一个具有“localhost”权限且没有密码的新用户,等等。
      【解决方案4】:

      检查您是否使用在数据库名称文本字段中指定的值创建了数据库名称

      【讨论】:

        【解决方案5】:

        这个错误有很多可能的原因,但是如果您的数据库名称、用户名和密码都正确,并且假设您的数据库在同一主机上,您可以尝试交换主机名和 IP 地址:

        也就是说,如果您当前尝试使用“localhost”作为主机名,请尝试使用“127.0.0.1”。如果您已经在尝试“127.0.0.1”,请尝试“localhost”。

        【讨论】:

        • 谢谢,我没有使用本地主机,我使用的是网络主机提供的主机名。无论如何尝试了它,仍然没有快乐。真的不知道如何进行。感谢您的帮助 =)
        【解决方案6】:

        在安装magento时输入用户名和密码,输入用户名字段'root'而不是你自己的用户名和密码字段必须为空。 “这个解决方案成功了”............

        【讨论】:

          【解决方案7】:

          1) 转到 xampp\php\php.ini 并删除 "extension=php_curl.dll" 之前的 ";" 符号

          2) 只需转到以下位置并替换代码:

          文件位置:app/code/core/Mage/Install/etc/config.xml

          查找代码:&lt;pdo_mysql&gt;

          替换为:

          <pdo_mysql> 1 </pdo_mysql>
          

          【讨论】:

          • 第二点:在给定位置“app/code/core/Mage/Install/etc/config.xml”上找不到文件夹
          【解决方案8】:
          • 转到app/code/core/Mage/Install/Model/Installer/Db.php
          • 找到checkDatabase($data)函数
          • 在这个函数的最后,有如下代码:

            Mage::throwException(Mage::helper('install')->__('Database connection error.'));
            
          • 将其更改为以下内容:

            Mage::throwException(Mage::helper('install')->__($e->getMessage()));
            
          • 转到要安装 Magento 的浏览器,单击 Continue 按钮

          • 现在,您应该能够看到一些正确的错误消息

          就我而言,我收到以下错误消息:

          数据库服务器不支持 InnoDB 存储引擎。

          所以,为了解决这个问题,我在同一个 checkDatabase 函数中注释了 InnoDB 检查。

          // check InnoDB support
          /*if (!isset($variables['have_innodb']) || $variables['have_innodb'] != 'YES') {
              Mage::throwException(Mage::helper('install')->__('Database server does not support the InnoDB storage engine.'));
          }*/
          

          之后,我就可以安装 Magento。

          【讨论】:

            猜你喜欢
            • 2018-02-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-11-15
            • 1970-01-01
            • 2021-02-16
            • 1970-01-01
            相关资源
            最近更新 更多