форум vBSupport.ru > vBulletin > vBulletin 3.8.x > Вопросы по vBulletin 3.8
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
tays
Эксперт
 
tays's Avatar
Default Исправление ошибки vbulletin со счетчиком вложений в удаленных темах
7

Иногда при удалении тем и сообщений в vbulletin могут возникать ошибки базы данных вида:

Code:
Database error in vBulletin 3.8.8:
Invalid SQL:

                                UPDATE thread
                                SET attach = attach -
                                CASE
                                         WHEN threadid = 39268 THEN 149
                                        ELSE 0
                                END
                                WHERE threadid IN (-1,39268);

MySQL Error   : BIGINT UNSIGNED value is out of range in '(`mybase`.`thread`.`attach` - (case when (`mybase`.`thread`.`threadid` = 39268) then 149 else 0 end))'
Error Number  : 1690
Проблема связана со спецификой физического удаления/не удаления вложений в vbulletin в зависимости от прав пользователя или модератора, который удаляет сообщение или тему. Проявляться проблема может в разных ситуациях, но самый простой способ воспроизведения проблемы такой:
Пользователь создает сообщение с вложением. Затем пользователю что-то не нравится и он удаляет свое сообщение (или это делает модератор). Общий счетчик вложений в теме при этом уменьшается, однако само вложение не удаляется, если у пользователя (или модератора) нет прав физического удаления сообщений.
Если модератор или администратор с правами физического удаления сообщений попробует после этого удалить тему (не имеет значения как - soft или hard) с этим удаленным сообщением, то увидит эту ошибку.
Причина - при удалении темы будут удаляться все вложения, включая и то вложение, которое находится в удаленном пользователем сообщении.
При удалении того самого вложения общий счетчик вложений в теме снова будет уменьшен, что и приведет к отрицательному значению.
Исправить данную логику vbulletin может быть довольно затратно, поэтому лучше сделать фикс, который безопасно избавит от появления подобной ошибки.

У этой проблемы есть два решения - быстрое и правильное

Быстрое решение: у поля attach в таблице thread убрать атрибут UNSIGNED.

Правильное решение:
Внести исправление в файл includes/class_dm_attachment.php, которое предотвратит появление запросов к БД, ведущих к отрицательному значению счетчика вложений в теме:
В районе строки 446 (номер строки может различаться в разных версиях)
заменить код:
PHP Code:
        foreach($this->lists['threadlist'] AS $threadid => $count)
        {
            
$threadidlist .= ",$threadid";
            
$threadcasesql .= " WHEN threadid = $threadid THEN $count";
        } 
на
PHP Code:
        foreach($this->lists['threadlist'] AS $threadid => $count)
        {
            
$thread_info $this->registry->db->query_first("SELECT attach FROM " TABLE_PREFIX "thread WHERE threadid=" $threadid);
            
$threadidlist .= ",$threadid";
            if (
$thread_info['attach'] >= $count)
            {
                
$threadcasesql .= " WHEN threadid = $threadid THEN $count";
            }
            else
            {
                
$threadcasesql .= " WHEN threadid = $threadid THEN " $thread_info['attach'];
            }
        } 
Здесь предыдущее решение проблемы, которое работает не всегда. Его можно откатить и не применять
Attached Files
File Type: php fix_attach.php (1.9 KB, 25 views)

Last edited by tays : 08-15-2018 at 02:12 PM. Reason: Новая редакция фикса
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
Luvilla
Гость
Default

Quote:
Originally Posted by eska View Post
Проблема скорее всего имеет место и в более ранних версиях VB3.
имеет
но ошибки стали сыпаться после обновления майсиквела (не помню, в какой именно момент)
я как раз почему-то надеялась (непонятно, с какого перепугу, наивная), что в 3.8.8 разрабы учли, что обновляется не только PHP, но и MySQL
не учли... печально...
 
 
syn
Эксперт
vBSNews
 
syn's Avatar
Default
0

Quote:
Originally Posted by Luvilla View Post
после обновления майсиквела
это что за зверюшка неведомая?
 
 
tays
Эксперт
 
tays's Avatar
Default
1

Quote:
Originally Posted by Luvilla View Post
но ошибки стали сыпаться после обновления майсиквела (не помню, в какой именно момент)
С версии 5.5
Quote:
Originally Posted by Luvilla View Post
я как раз почему-то надеялась (непонятно, с какого перепугу, наивная), что в 3.8.8 разрабы учли, что обновляется не только PHP, но и MySQL
не учли... печально...
Там логическая ошибка в программном коде VB, которая, строго говоря, не зависит от версии БД.
Просто раньше это прокатывало в БД, теперь перестало, нужно описанное исправление.
Quote:
Originally Posted by syn View Post
это что за зверюшка неведомая?
Не то сын, не то дочь...
Это MySQL.
Кстати, My - это имя дочери отца-основателя этой БД - Майкл Монти Видениус (Michael Widenius).
А еще у него есть дочка Maria, в честь которой названа MariaDB

Last edited by tays : 05-03-2015 at 07:04 PM.
 
 
Scandal
Простоузер
Default
0

Hello all!
First of all sorry for English! I did found your site and this topic on google during the search for this issue which I have it also on my board.
We have a lots of forums with subforms (vB3.8.4) and ~ 3 million posts.
I'm trying to remove a header forum (so also all its subforums will be deleted) on Forum Manager > (dropdown menu for a forum) Delete Forum

The process is taking enough and suddenly this db error appears:
Quote:
Database error in vBulletin 3.8.4:

Invalid SQL:

UPDATE vb3_thread
SET attach = attach -
CASE
WHEN threadid = 161000 THEN 57
ELSE 0
END
WHERE threadid IN (-1,161000);

MySQL Error : BIGINT UNSIGNED value is out of range in '(`xxxxx`.`vb3_thread`.`attach` - (case when (`xxxxx`.`vb3_thread`.`threadid` = 161000) then 57 else 0 end))'
Error Number : 1690
Request Date : Friday, September 22nd 2017 @ 01:06:42 PM
Error Date : Friday, September 22nd 2017 @ 01:07:38 PM
Script : http://localhost/yyy/admincp/forum.php?do=kill
Referrer : http://localhost/yyy/admincp/forum.p...emove&f=190&s=
IP Address : ::1
Username : zzzz
Classname : vB_Database_MySQLi
MySQL Version : 10.1.19-MariaDB
It seems it is the same error that described on this topic.

I did the file edit and run the fix_attach.php (it returns "Работа завершена." --> "The work is completed."), then tried to delete again the forum, but I got again ~the same db error. :(
I noticed that during the process, some posts are deleted from "post" table, then the db error appears.
The forum is still there (I suppose for the reason that not all threads have been removed) and every time I run the "delete forum", the db error is different as have to do with the integer values (different "WHEN threadid = 161000 THEN 57" and "threadid IN (-1,161000)".

Any idea?
 
 
tays
Эксперт
 
tays's Avatar
Default
1

Quote:
Originally Posted by Scandal View Post
Any idea?
Заменил фикс в шапке темы.
@hoo, в 3.8.12 я бы тоже это добавил т.к. фикс полезный.
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 09:05 PM.


Powered by vBulletin® Version 3.0.9
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.