Перейти к содержанию

IP.Downloads - SQL ошибка при загрузке больших файлов


Рекомендуемые сообщения

Привет всем, сразу перейду к делу.

Установил вчера, загруженный у вас, IP.Downloads 2.5 Rus, сразу же столкнулся с проблемой php при загрузке новых файлов. По совету, оставленному в одной из соседних тем, я сменил место хранения файлов с локального хранилища на базу данных, проблема решилась и все бы хорошо, вот только загрузить файлы весом более ~250 Кб. не могу, появляется ошибка со следующим описанием: "mySQL query error: INSERT INTO downloads_filestorage (`storage_file`,`storage_ss`,`storage_thumb`)". Расширение файла при этом роли не играет, на других форумах, расположенных на этом же сервере, все отлично. К сожалению, с администратором любого из них сейчас не связаться, поэтому и прошу помощи у вас, скриншот прилагаю. Любую дополнительную информацию с радостью готов предоставить.

Заранее спасибо. Адрес страницы при этом выглядит, как __****.**/index.php? .

Ссылка на комментарий
Поделиться на другие сайты

Не надо хранить файлы в базе данных, она не для этого предназначена. Кто вам вообще это посоветовал?

Ссылка на комментарий
Поделиться на другие сайты

Dark, знаю-знаю, сам был удивлен тому, что такой метод хранения и вовсе предлагается, но раз это было единственным решением проблемы, пришлось смириться. Вот, собственно, тема, где Respected и дал такой совет, .

Ссылка на комментарий
Поделиться на другие сайты

Нужен лог из папки cache, только он поможет узнать нам ошибку :crazy:

Хранение файлов в базе тут не причём!

Ссылка на комментарий
Поделиться на другие сайты

Respected, без проблем.

Скажу сразу, ничего в этом не понимаю. Пытался уже разобраться.

Ссылка на комментарий
Поделиться на другие сайты

Не надо хранить файлы в БД. Вы исправили следствие, но не исправили причину, поэтому и будут ошибки всякие.

Надо решать ту проблему другим способом.

Вот собственно, подтверждение из лога:

Error: 1153 - Got a packet bigger than 'max_allowed_packet' bytes
ну не рассчитана БД на то, чтобы выполняли такие запросы. Чисто для справки: в запросе, который выполняется в БД для вставки значения, значение имеет размер в 1.266.928 символов (зависит от размера файла). Если кто-то не понял, то 1 млн. символов в строке - это уже слишком для PHP / MySQL и прочего. Следующая ошибка:

Error: 2006 - MySQL server has gone away
[/code]

Короче говоря, сервер MySQL просто закрывает соединение после такого запроса.

Я настоятельно рекомендую вам не делать того, что вы делаете, вы просто напросто повалите сервер БД этим.

Информация из документации MySQL:

Эти ошибки будут также выдаваться при посылке серверу неверного или слишком длинного запроса. Если mysqld получает неправильный или слишком большой пакет, то сервер предполагает, что с клиентом что-то не так, и закрывает соединение. Если необходимо выполнять объемные запросы (например, при работе с большими столбцами типа BLOB), можно увеличить предельный размер запроса, запустив mysqld с опцией -O max_allowed_packet=# (по умолчанию 1 Mб). Дополнительная память выделяется по требованию, так что mysqld будет использовать больше памяти только в случае, когда выдан большой запрос или когда mysqld должен возвратить большую строку результата!

Я разъясняю: вы пытаесь загрузить весь файл в БД, сервер понимает, что вы сошли с ума, и от греха подальше закрывает соединение с вами.

Ссылка на комментарий
Поделиться на другие сайты

C этим я согласен! Но..

Каков выход в данной ситуации?

Ссылка на комментарий
Поделиться на другие сайты

Проблема с хранением файлов на сервере исчезнет после

Ссылка на комментарий
Поделиться на другие сайты

Всем спасибо за помощь, Respected, в особенности вам, очень приятно, как пользователю, такое внимание со стороны администрации, после обновления, проблема действительно решилась - файлы загружаются, но появилась новая, снова ошибка php, но на этот раз при попытке просмотреть любой из загруженных файлов - Fatal error: Call to undefined method classItemMarking::getSqlJoin() in /var/www/.../admin/applications_addon/ips/downloads/modules_public/display/file.php on line 175 . Непосредственно 175 строчка:


$this->registry->classItemMarking->getSqlJoin( array( 'item_app_key_1' => 'f.file_cat' ), 'downloads' ),

Заранее спасибо.

Ссылка на комментарий
Поделиться на другие сайты

Нужно обновить кеш файлы стиля!

Ссылка на комментарий
Поделиться на другие сайты

Respected, cовершенно забыл это упомянуть, в том-то и дело, что перекешировал уже несколько стилей, перекешировал конкретно "Загрузки", сразу, как строку увидел, об этом и подумал - не помогает, даже приложение переустанавливал.

Ссылка на комментарий
Поделиться на другие сайты

По-прежнему актуально.


Fatal error: Call to undefined method classItemMarking::getSqlJoin() in /var/www/.../admin/applications_addon/ips/downloads/modules_public/display/file.php on line 175

Кеш стилей обновлял, к слову, обновлял также и глобальный кеш, кеш отдельно IP.Bownloads, проверял ошибку сразу в нескольких стилях, ставил новые, даже переустановил приложение - не помогло. Возможно, есть еще какие-нибудь варианты?

Ссылка на комментарий
Поделиться на другие сайты

Какое содержание у этой строчки?

Ссылка на комментарий
Поделиться на другие сайты

Respected,

Непосредственно 175 строчка:


$this->registry->classItemMarking->getSqlJoin( array( 'item_app_key_1' => 'f.file_cat' ), 'downloads' ),

Заранее спасибо.

Ссылка на комментарий
Поделиться на другие сайты

Что, если обновить IP.Downloads до версии 2.5.1?

Ссылка на комментарий
Поделиться на другие сайты

Respected,

...после обновления (Имеется ввиду 2.5.1), проблема действительно решилась - файлы загружаются, но появилась новая, снова ошибка php, но на этот раз при попытке просмотреть любой из загруженных файлов...

Предвкушая последующие вопросы:

Кеш стилей обновлял, к слову, обновлял также и глобальный кеш, кеш отдельно IP.Bownloads, проверял ошибку сразу в нескольких стилях, ставил новые, даже переустановил приложение - не помогло.

Понимаю, что дело не в модификации, а во мне - в сервере или форуме, но вот понять в чем конкретно, увы, не могу.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

up. Та же проблема, при загрузке файла


Fatal error: Call to undefined method classItemMarking::getSqlJoin() in /home/p113200/www/site.ru/форум/admin/applications_addon/ips/downloads/modules_public/display/file.php on line 175

При просмотре уже загруженного файла

Fatal error: Call to undefined method classItemMarking::getSqlJoin() in /home/p113200/www/site.ru/форум/admin/applications_addon/ips/downloads/modules_public/display/file.php on line 175

Ссылка на комментарий
Поделиться на другие сайты

я на 2.5.1 и сижу. Пытаюсь сделать через FTP. Ошибка та же остаётся..

Изменено пользователем Nicolayka
Ссылка на комментарий
Поделиться на другие сайты

Делаю через локальное. Файл загрузился, но когда публикую, выскакивает..


Fatal error: Call to undefined method classItemMarking::getSqlJoin() in /home/p113200/www/сайт.рф/форум/admin/applications_addon/ips/downloads/modules_public/display/file.php on line 175

+ зайти и скачать файл не могу... не может найти метод getSqlJoin у класса classItemMarking

				 $this->registry->classItemMarking->getSqlJoin( array( 'item_app_key_1' => 'f.file_cat' ), 'downloads' ),

говорят, что этой вот функции getSqlJoin не существует. Надо найти где объявляется класс classItemMarking и написать эту функцию, ну или найти как её использовать. Ибо функция имхо как бы намекает, что она должна быть откуда то из другого места.

Изменено пользователем Nicolayka
Ссылка на комментарий
Поделиться на другие сайты

Nicolayka, у меня данная проблема решилась полной переустановкой модуля. При этом важно делать перерасчет и перестраивать кеш после каждого выполненного вами действия - удалили Downloads - перестроили кеш, перезагрузили модуль на FTP - повторили операцию и так до окончания установки. Не могу сказать точно, помогло ли мне это, но сейчас проблема решена :good:

Ссылка на комментарий
Поделиться на другие сайты

Nicolayka, у меня данная проблема решилась полной переустановкой модуля.

Не помогло...поставил чистую 2.5.1

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...