0

SQL コード:

SELECT id, album_date AS timestamp, CONCAT((SELECT detail_value
FROM people_db.user_details_tbl WHERE detail_field = 'first_name' AND user_id = pictures_db.albums.owner), ' uploaded pictures!') AS title_html 
FROM pictures_db.albums 
WHERE id IN 
(SELECT DISTINCT(album_id) 
FROM pictures_db.album_pics 
WHERE pic_id IN 
    (SELECT DISTINCT(picture_id) 
    FROM pictures_db.picture_access_tbl 
    WHERE grantee_group_id IN 
        (SELECT group_id 
        FROM people_db.group_membership_tbl
        WHERE member_id = '2'
        )
     )
);

PHP コード:

$albums_sql = mysql_query("SELECT id, album_date AS timestamp, CONCAT((SELECT detail_value 
    FROM people_db.user_details_tbl 
    WHERE detail_field = 'first_name' AND user_id = pictures_db.albums.owner), ' uploaded pictures!') AS title_html 
    FROM pictures_db.albums 
    WHERE id IN (
          SELECT DISTINCT(album_id) 
          FROM pictures_db.album_pics 
          WHERE pic_id IN (
              SELECT DISTINCT(picture_id) 
              FROM pictures_db.picture_access_tbl 
              WHERE grantee_group_id IN (
                  SELECT group_id 
                  FROM people_db.group_membership_tbl 
                  WHERE member_id = '2'
                  )
               )
             )") or die(mysql_error());

PHP を実行すると、次のエラーが表示されます: テーブル 'pictures_db.albums' が存在しません

同じユーザーとして実行を試み、すべての権限を再付与し、権限をフラッシュしました。PHP ではなく、シェルで動作します。何か案は?

4

2 に答える 2

1

エラー メッセージは非常に明確です。MySQL はデータベース pictures_db を認識しますが、テーブル アルバムは認識しません。

パーミッションが原因かもしれませんが、徹底的にチェックしたようです。

別の理由として、PHP で使用している接続文字列が、コマンド ラインで使用しているデータベース インスタンスとは異なるデータベース インスタンスを指していることが考えられます。おそらく、接続文字列はまだ DEV などの別の環境を指していますが、QA を行っているか、データベースの古いテスト バージョンを指していますか?

于 2013-01-28T20:08:52.680 に答える
0

mysql_select_db()クエリを実行する前に電話しますか?

mysql_select_db('pictures_db');
于 2013-01-28T20:08:47.710 に答える