Jump to content
View in the app

A better way to browse. Learn more.

IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Ошибка при попытки использовать поиск на форуме: DOUBLE value is out of range

Featured Replies

Posted

Приветствую форумчан!

У меня достаточно старый (по времени) и большой (по контенту) форум на последней версии IPS.

С недавних пор после очередного обновления при попытке искать на форуме выдается ошибка IPS\Db\Exception: DOUBLE value is out of range. Код ошибки: EX1690. Полный код ошибке в спойлере.
 

Спойлер

SELECT main.*, ((MATCH(index_title) AGAINST ('Поиск' IN BOOLEAN MODE)*5)+(MATCH(index_content,index_title) AGAINST ('Поиск' IN BOOLEAN MODE)))/POWER(( ( UNIX_TIMESTAMP( NOW() ) - ( CASE WHEN index_date_updated <= UNIX_TIMESTAMP( NOW() ) THEN index_date_updated ELSE 0 END )) / 3600 ) + 2,1.5) AS calcscore FROM `core_search_index` AS `main` WHERE ( ( index_class IN('IPS\\core\\Statuses\\Status','IPS\\core\\Statuses\\Reply') ) OR index_class='IPS\forums\Topic\Post' OR ( index_class IN('IPS\\calendar\\Event','IPS\\calendar\\Event\\Comment','IPS\\calendar\\Event\\Review') ) OR ( index_class IN('IPS\\gallery\\Image','IPS\\gallery\\Image\\Comment','IPS\\gallery\\Image\\Review') ) OR ( index_class IN('IPS\\gallery\\Album\\Item','IPS\\gallery\\Album\\Comment','IPS\\gallery\\Album\\Review') ) OR index_class='IPS\cms\Pages\PageItem' ) AND MATCH(index_content,index_title) AGAINST ('Поиск' IN BOOLEAN MODE) AND ( index_permissions = '*' OR ( FIND_IN_SET(4,index_permissions) OR FIND_IN_SET('m1',index_permissions) OR FIND_IN_SET('cm',index_permissions) ) ) ORDER BY calcscore DESC LIMIT 0,25


IPS\Db\Exception: DOUBLE value is out of range in '(match `user_sairam`.`main`.`index_title` against ('Поиск' in boolean mode)) * 5 + (match `user_sairam`.`main`.`index_content`,`user_sairam`.`main`.`index_title` against ('Поиск' in boolean mode))' (1690)


#0 /system/Db/Select.php(446): IPS\Db\_Select->runQuery()#1 [internal function]: IPS\Db\_Select->rewind()
#2 /system/Content/Search/Mysql/Query.php(1302): iterator_to_array()
#3 /applications/core/modules/front/search/search.php(728): IPS\Content\Search\Mysql\_Query->search()
#4 /applications/core/modules/front/search/search.php(109): IPS\core\modules\front\search\_search->_results()
#5 /system/Dispatcher/Controller.php(101): IPS\core\modules\front\search\_search->manage()
#6 /system/Dispatcher/Dispatcher.php(153): IPS\Dispatcher\_Controller->execute()
#7 /index.php(13): IPS\_Dispatcher->run()
#8 {main}

Я сам программист и давно работаю с форумами IPS, но это проблема поставила меня в тупик, никак не могу ее решить.

Может кто подскажет? 

Странная ошибка какая-то, сообщение об ошибке не от первого запроса, там нет таких полей (user_sairam и т.д.). И первый запрос на моей базе без ошибок отрабатывает.

Вообще, если проблема пошла после апгрейда, надо проверять, всё ли сконвертировалось нормально, сравнить структуру таблиц со свежеустановленным пустым форумом. 

 

8 минут назад, Zero108 сказал:

26 МБ - это небольшая база. Базу заливают дампером или непосредственно из файла .sql на сервере по ssh.

понял сейчас попробую)

Я бы рекомендовал вешать дампер на отдельный домен третьего уровня, настраивать ему SSL сертификат. Ошибка 500 говорит о неправильных правах CHMOD, неверном пользователе файлов (например, если заливал файлы дампера по рутом, а пользователь файлов сайта должен быть другой), неправильной версии пхп (попробуй на пхп 7.4). Либо зайди по ssh в sql сервер и загрузи дамп напрямую в базу данных. Также в панеле управления сервером ISPManager (или любой другой) могут быть опции загрузки дампа в базу данных.

========================Залить дамп по ssh===================

mysql ИМЯ_БАЗЫ -uИМЯ_ПОЛЬЗОВАТЕЛЯ -pПАРОЛЬ < dump.sql

или

mysql -uИМЯ_ПОЛЬЗОВАТЕЛЯ -pПАРОЛЬ
и далее в окне на приглашение mysql>
use ИМЯБАЗЫДАННЫХ;
\. /var/lib/phpMyAdmin/upload/dump.sql

(где /var/lib/phpMyAdmin/upload/ - полный серверный путь к файлу дампа).

 

Edited by Zero108

1 час назад, Zero108 сказал:

Я бы рекомендовал вешать дампер на отдельный домен третьего уровня, настраивать ему SSL сертификат. Ошибка 500 говорит о неправильных правах CHMOD, неверном пользователе файлов (например, если заливал файлы дампера по рутом, а пользователь файлов сайта должен быть другой), неправильной версии пхп (попробуй на пхп 7.4). Либо зайди по ssh в sql сервер и загрузи дамп напрямую в базу данных. Также в панеле управления сервером ISPManager (или любой другой) могут быть опции загрузки дампа в базу данных.

========================Залить дамп по ssh===================

mysql ИМЯ_БАЗЫ -uИМЯ_ПОЛЬЗОВАТЕЛЯ -pПАРОЛЬ < dump.sql

или

mysql -uИМЯ_ПОЛЬЗОВАТЕЛЯ -pПАРОЛЬ
и далее в окне на приглашение mysql>
use ИМЯБАЗЫДАННЫХ;
\. /var/lib/phpMyAdmin/upload/dump.sql

(где /var/lib/phpMyAdmin/upload/ - полный серверный путь к файлу дампа).

 

выдает ошибку 'имя база'@'localhost' у меня не localhost, mariadb присваивает другой имя сервера

  • Author
В 26.01.2022 в 01:00, Desti сказал:

user_sairam

Это user базы данных сайта. Ошибка действительно странная, искал упоминания на stackoverflow и на форуме разработчиков IPS. Нигде нет никакой информации. На stackoverflow были подобные ошибки, связанные с переполнением максимального значения переменной типа DOUBLE. Но я не понял, какая именно колонка базы данных выдает эту ошибку. И индексы autoincrement тоже не переполнены. Пробовал запрос напрямую в базу отправить - исполнился без ошибок.

В 26.01.2022 в 08:32, Respected сказал:

Я так понимаю проблема решилась.

В общем, проблема вроде как решилась, но это не точно. Через админ панель сбросил поисковый индекс в разделе Поиск и перестроил его заново. Пока ошибка не появлялась. Надеюсь, что все-таки проблема была из-за кривого апгрейда и перестройки индекса.

Спасибо всем за советы! Даже моральная поддержка дает уверенности, что все можно решить!

1 час назад, ram108 сказал:

Но я не понял, какая именно колонка базы данных выдает эту ошибку. И индексы autoincrement тоже не переполнены.

Если ошибка связана с этим запросом, то тут не колонка базы, а вычисление - вся эта фигня POWER с возведение в степень дробного числа. В результате может получится число с огромной дробной частью, которое великовато для DOUBLE в коде. Но это только предположение, колонок DOUBLE  в этой таблице нет.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.