【发布时间】:2013-07-16 10:30:40
【问题描述】:
我正在尝试将 magento 安装到我的网络主机上,在安装过程中我收到“数据库连接错误”我已经正确输入了所有值(已经联系了我的网络主机以确保我在这一点上被难住了)他们说是指magento 论坛以获得额外支持。我找不到修复方法。任何想法/帮助将不胜感激。
【问题讨论】:
我正在尝试将 magento 安装到我的网络主机上,在安装过程中我收到“数据库连接错误”我已经正确输入了所有值(已经联系了我的网络主机以确保我在这一点上被难住了)他们说是指magento 论坛以获得额外支持。我找不到修复方法。任何想法/帮助将不胜感激。
【问题讨论】:
试试这个脚本,它会测试您的连接并报告实际的 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 "localhost" 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 >> </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>
【讨论】:
我通过在提交数据库设置之前使用 phpMyAdmin 手动创建数据库解决了这个问题。
【讨论】:
...安装将继续没有问题!
【讨论】:
检查您是否使用在数据库名称文本字段中指定的值创建了数据库名称
【讨论】:
这个错误有很多可能的原因,但是如果您的数据库名称、用户名和密码都正确,并且假设您的数据库在同一主机上,您可以尝试交换主机名和 IP 地址:
也就是说,如果您当前尝试使用“localhost”作为主机名,请尝试使用“127.0.0.1”。如果您已经在尝试“127.0.0.1”,请尝试“localhost”。
【讨论】:
在安装magento时输入用户名和密码,输入用户名字段'root'而不是你自己的用户名和密码字段必须为空。 “这个解决方案成功了”............
【讨论】:
1) 转到 xampp\php\php.ini 并删除 "extension=php_curl.dll" 之前的 ";" 符号
2) 只需转到以下位置并替换代码:
文件位置:app/code/core/Mage/Install/etc/config.xml
查找代码:<pdo_mysql>
和
替换为:
<pdo_mysql> 1 </pdo_mysql>
【讨论】:
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。
【讨论】: