2

这是我第一次将本地开发站点转移到另一个本地站点进行测试,并且无法访问新站点中的数据库。两台计算机都在 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);

在索引页面上,它显示了正确的用户列表。所以连接很好,其他地方有问题。你们会说我仍然需要删除复制的数据库并使用“正确”的方式(导出/导入),还是浪费时间?

最后编辑:我确实使用 Export/Import 重做了这个动作,现在一切正常。谢谢大家。

4

1 回答 1

2

首先,在 mysql 数据目录中压缩文件并移动它们并不是最好的方法。如果您在移动它们之前已经完全刷新/关闭了 mysql 服务器,它可以工作。您最好使用 mysqldump 或类似工具一次移动整个数据库。

在我看来,您移动了应用程序的数据库文件,但您可能忘记将用户/密码凭据添加到新的 MySQL 设置中。您提到您使用 phpMyAdmin,因此当您在另一台机器上登录时,单击“权限”选项卡并确保它与您的开发机器上的“权限”选项卡匹配。

如果不是这样,则完全有可能通过压缩和复制文件,部分/所有表已损坏。尝试使用 phpMyAdmin 的导出和导入功能来移动数据库。如果数据非常大,请告诉我,我可以给你一些命令行条目来运行。

希望这可以帮助。

于 2012-05-03T22:18:49.907 回答