我正在尝试将magento安装到我的网络主机上,在安装过程中我收到“数据库连接错误”我已经正确输入了所有值(已经联系了我的网络主机以确保我在这一点上被难住了)他们说参考magento论坛额外的支持。我找不到修复方法。任何想法/帮助将不胜感激。
8 回答
Try this script which tests your connection and reports the actual MySQL error. It might be useful to determine whether the credentials you were given will work, or which part of the process is failing. Since you are using it on a remote webhost I recommend you hard-code the database username and password to avoid passing them in clear over the open Internet.
(Note: Not my own work - script comes from 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 手动创建数据库解决了这个问题。
- 转到 PhpMyAdmin
- 创建一个数据库(例如 Magento-Madabase)
- 编辑数据库的属性并添加对新用户的访问权限(例如 Magento-User@localhost 和密码)
- 安装 Magento。当它要求数据库类型 Magento-Database 并且当它要求用户和密码时,选择 Magento-User 和设置的密码。
...安装将继续没有问题!
检查您是否使用在数据库名称文本字段中指定的值创建了数据库名称
在安装magento时输入用户名和密码,输入用户名字段'root'而不是你自己的用户名和密码字段必须为空。“这个解决方案是成功的”............
这个错误有很多可能的原因,但是如果您的数据库名称、用户名和密码都正确,并且假设您的数据库在同一主机上,您可以尝试交换主机名和 IP 地址:
也就是说,如果您当前尝试将“localhost”作为主机名,请尝试“127.0.0.1”。如果您已经在尝试“127.0.0.1”,请尝试“localhost”。
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 了。