这是我第一次将本地开发站点转移到另一个本地站点进行测试,无法访问新站点中的数据库。两台计算机都在Mac上运行XAMPP。测试站点已成功安装XAMPP,并已将数据库文件放在Applications / XAMPP / xamppfiles / var / mysql下。测试用户可以启动Apache和MySQL,并在PHPMyAdmin中查看数据库文件。测试用户还可以访问本地网站而不会显示错误消息。
编辑:数据库文件是通过复制/压缩我的文件,并在测试端解压缩/删除复制的文件而复制的。
但是,本地网站似乎没有看到数据库。应该返回数据的页面只显示默认的“抱歉,我们已售罄”消息或显示“未找到图像”图形,并且管理员无法登录。
索引页面调用
include_once "common/base.php";
由
组成<?php
// Set the error reporting level
error_reporting(E_ALL);
ini_set("display_errors", 1);
// Start a PHP session
session_start();
$_SESSION['docroot'] = $_SERVER['DOCUMENT_ROOT'] . '/mysite/';
// Include site constants
include_once $_SERVER['DOCUMENT_ROOT'] . "/inc/constants.inc.php";
if ( !isset($_SESSION['token']) )
{
$_SESSION['token'] = md5(uniqid(rand(), TRUE));
$_SESSION['token_time'] = time();
}
// Create a database object
try {
$dsn = "mysql:host=".DB_HOST.";dbname=".DB_NAME;
$_db = new PDO($dsn, DB_USER, DB_PASS);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
exit;
}
?>
如果存在连接问题,我希望看到返回一条错误消息,我可以通过将inc / constants.inc.php中的常量更改为伪值来验证。所以我不相信存在连接问题。
如果你在我的位置,你会检查什么?
编辑:我刚刚在PHPMyAdmin中发现了导出功能。我将尝试删除复制过的db文件,从PHPMyAdmin导出文件,然后在测试机器中导入它们。
编辑:我刚刚让测试机做了一个简单的$sql = "SELECT FirstName From users";
$stmt = $_db->prepare($sql);
$stmt->execute();
$aaData = array();
while($row = $stmt->fetch(PDO::FETCH_NUM)){
$aaData[] = $row;
}
$stmt->closeCursor();
print_r($aaData);
在索引页面上,它显示正确的用户列表。所以连接很好, 其他地方也有问题。您是否都会说我仍然需要删除复制的数据库并使用“正确”方式(导出/导入),还是浪费时间?
最终编辑:我使用导出/导入重做了移动,现在一切正常。谢谢大家。
答案 0 :(得分:2)
首先,在mysql数据目录中压缩文件并移动它们并不是最好的方法。如果你在移动它们之前完全刷新/关闭了mysql服务器,它可以工作。你最好使用mysqldump或类似的工具一次移动整个数据库。
听起来像你移动了应用程序的数据库文件,但是你可能忘了将用户/密码凭据添加到新的MySQL设置中。您提到使用phpMyAdmin,因此当您在另一台计算机上登录时,请单击“权限”选项卡,并确保它与您的开发计算机上的“权限”选项卡匹配。
如果不是这样,那么通过压缩和复制文件完全可能是某些/所有表都被破坏了。尝试使用phpMyAdmin的导出和导入功能来移动数据库。如果数据非常大,请告诉我,我可以给你一些命令行条目来运行。
希望这有帮助。