Posted 25 января, 20222 yr comment_176934 Приветствую форумчан! У меня достаточно старый (по времени) и большой (по контенту) форум на последней версии 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, но это проблема поставила меня в тупик, никак не могу ее решить. Может кто подскажет?
25 января, 20222 yr comment_176936 Странная ошибка какая-то, сообщение об ошибке не от первого запроса, там нет таких полей (user_sairam и т.д.). И первый запрос на моей базе без ошибок отрабатывает. Вообще, если проблема пошла после апгрейда, надо проверять, всё ли сконвертировалось нормально, сравнить структуру таблиц со свежеустановленным пустым форумом.
26 января, 20222 yr comment_176944 да действительно проблема с переводом базы, вернул mysql и все норм стало, а что с новой не понятно полный копия той базы было
26 января, 20222 yr comment_176946 26 МБ - это небольшая база. Базу заливают дампером или непосредственно из файла .sql на сервере по ssh.
26 января, 20222 yr comment_176948 8 минут назад, Zero108 сказал: 26 МБ - это небольшая база. Базу заливают дампером или непосредственно из файла .sql на сервере по ssh. понял сейчас попробую)
26 января, 20222 yr comment_176951 Я бы рекомендовал вешать дампер на отдельный домен третьего уровня, настраивать ему 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 26 января, 20222 yr by Zero108
26 января, 20222 yr comment_176954 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 присваивает другой имя сервера
27 января, 20222 yr Author comment_177033 В 26.01.2022 в 01:00, Desti сказал: user_sairam Это user базы данных сайта. Ошибка действительно странная, искал упоминания на stackoverflow и на форуме разработчиков IPS. Нигде нет никакой информации. На stackoverflow были подобные ошибки, связанные с переполнением максимального значения переменной типа DOUBLE. Но я не понял, какая именно колонка базы данных выдает эту ошибку. И индексы autoincrement тоже не переполнены. Пробовал запрос напрямую в базу отправить - исполнился без ошибок. В 26.01.2022 в 08:32, Respected сказал: Я так понимаю проблема решилась. В общем, проблема вроде как решилась, но это не точно. Через админ панель сбросил поисковый индекс в разделе Поиск и перестроил его заново. Пока ошибка не появлялась. Надеюсь, что все-таки проблема была из-за кривого апгрейда и перестройки индекса. Спасибо всем за советы! Даже моральная поддержка дает уверенности, что все можно решить!
27 января, 20222 yr comment_177041 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.