2

テストのためにローカル開発サイトを別のローカル サイトに転送するのはこれが初めてで、新しいサイトのデータベースにアクセスできません。両方のコンピューターが Mac で XAMPP を実行しています。テスト サイトは XAMPP を正常にインストールし、Applications/XAMPP/xamppfiles/var/mysql にデータベース ファイルを配置しました。テスト ユーザーは、Apache と MySQL を起動し、PHPMyAdmin でデータベース ファイルを表示できます。テスト ユーザーは、エラー メッセージなしでローカル Web サイトにアクセスすることもできます。

編集:データベースファイルは、私の側でファイルをコピー/圧縮し、テスト側でコピーされたファイルを解凍/ドロップすることでコピーされました。

ただし、ローカル Web サイトにはデータベースが表示されないようです。データを返すはずのページに、デフォルトの「申し訳ありませんが、売り切れました」というメッセージが表示されるか、「画像が見つかりません」というグラフィックが表示されるだけで、管理者はログインできません。

インデックスページ呼び出し

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);

インデックス ページでは、ユーザーの正しいリストが表示されます。接続は良好で、別の場所に問題があります。コピーしたデータベースを削除して「正しい」方法(エクスポート/インポート)を使用する必要があると言うでしょうか、それとも時間の無駄ですか?

最終編集: エクスポート/インポートを使用して移動をやり直しましたが、現在はすべて正常に機能しています。ありがとうございます。

4

1 に答える 1

2

まず、mysqlデータディレクトリ内のファイルを圧縮して移動するのは最善の方法ではありません。mysqlサーバーを移動する前に、完全にフラッシュ/シャットダウンした場合に機能します。mysqldumpまたは同様のツールを使用して、データベース全体を一度に移動することをお勧めします。

アプリのデータベースファイルを移動したように聞こえますが、ユーザー/パスワードのクレデンシャルを新しいMySQLセットアップに追加するのを忘れた可能性があります。phpMyAdminを使用しているとのことですが、他のマシンにログインするときは、[権限]タブをクリックして、開発マシンの[権限]タブと一致していることを確認してください。

そうでない場合は、ファイルを圧縮してコピーすることにより、テーブルの一部またはすべてが破損している可能性があります。phpMyAdminのエクスポートおよびインポート機能を使用してデータベースを移動してみてください。データが非常に大きい場合はお知らせください。実行するコマンドラインエントリをいくつか提供できます。

お役に立てれば。

于 2012-05-03T22:18:49.907 に答える