Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in

Тема в разделе "Базы данных", создана пользователем maxim nestoff, 3 дек 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. maxim nestoff

    maxim nestoff Создатель

    Регистр.:
    23 апр 2009
    Сообщения:
    182
    Симпатии:
    13
    Друзья, помогите понять где ошибка: Warning: mysql_num_rows(:( supplied argument is not a valid MySQL result resource in /usr/local/www/.../mp3/last.php on line 8
    Вот та самая строка 8 из last.php: $rnum = mysql_num_rows($top_sql);
    Пару дней назад лежал сервер Mysql, может админы что изменили в mysql.
    Вот сам файл:
     

    Вложения:

    • last.php.rar
      Размер файла:
      923 байт
      Просмотров:
      8
  2. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    Напиши перед строкой


    PHP:
    $rnum mysql_num_rows($top_sql);
    строчку
    PHP:
    echo('['.mysql_errno().'] ['.mysql_error().']');
    exit;
    Так ты увидишь, почему запрос не выполняется. Выложи показанную ошибку, а там уже будем думать, что не так.
     
    maxim nestoff нравится это.
  3. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.068
    Симпатии:
    197
    видимо проблема в этом запросе

    (SELECT * FROM search_list ORDER BY count DESC LIMIT 10) UNION ALL (SELECT * FROM search_list ORDER BY date DESC LIMIT 10) UNION ALL (SELECT * FROM search_list ORDER BY rand() LIMIT 1)

    забейте в пхпмайадмин и посмотрите что вернет. скорее всего чего то не хватает в базе
     
    maxim nestoff нравится это.
  4. maxim nestoff

    maxim nestoff Создатель

    Регистр.:
    23 апр 2009
    Сообщения:
    182
    Симпатии:
    13
    Написало:
    PHP:
    [5] [Out of memory (Needed 1047264 bytes)]
    Juri, я никак не могу вспомнить как входить на phpmyadmin. Админы там что-то меня уже давно и я забыл ссылку на вход:(. Может есть что-то типа phpinfo чтоб узнать адресс входа в phpmyadmin?
     
  5. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    Эта ошибка возникает, когда базе не хватает памяти для вывода всех данных запроса. Советов тут немного:
    1) переписать запрос.
    2) Разбить такой большой запрос на несколько мелких.
    3) задать конфигурацию базы таким образом, чтобы он пережевала такой запрос.


    От себя рекомендую 1 или 2 пункт, т.к. запрос реально кривой.
    Ну а по 3 пункту, можно поигратся со значениями max_allowed_packet(например поставить max_allowed_packet=2MB) или попробывать опцию --quick
     
    maxim nestoff нравится это.
  6. maxim nestoff

    maxim nestoff Создатель

    Регистр.:
    23 апр 2009
    Сообщения:
    182
    Симпатии:
    13
    tostrss, подскажите, пожалуйста, как переписать запрос?
     
  7. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    Все зависит от того, какой тип базы там используется, какое кол-во записей там есть, как часто обновляются данные, возможность кеширования и самое главное, что этот запрос должен делать.
     
  8. askarbin

    askarbin

    Регистр.:
    31 мар 2009
    Сообщения:
    293
    Симпатии:
    36
    У вас на один запрос уходит более 1 Мб памяти, вы уверены что сервер просто напросто не загнулся от ваших запросов. Тут необходимо проанализировать параметры сервера и, возможно, перейти на более быстроходный. Либо вообще перейти на другой движок
     
Статус темы:
Закрыта.