Ошибка БД Field 'ua_os' doesn't have a default value

Автор Astana Infonet, 08 Июнь 2016, 20:32:26

« назад - далее »

0 Пользователей и 1 гость просматривают эту тему.

Astana Infonet

Приветствую уважаемых форумчан.

История такая:

Есть сохраненный из админки бэкап базы 2.0.10. Был переезд, устанавливался на свежий сервер 2.0.11, но движок ругался, что база старая и необходимо обновление, запуски скриптов update.php и updatesql.php не помогли.

Появилась идея поставить начисто 2.0.10, залить из PMA бэкап базы, проапгрейдить его до 2.0.11, при апгрейде обновится и база. Действительно в логах было сказано об обновлении таблиц, и что все успешно. Но, при попытке создания тем или ответов выдается ошибка БД:

Ошибка базы данных
Field 'ua_os' doesn't have a default value
Файл: /var/www/html/Sources/Subs-Post.php
Строка: 1817


Пробовал все инструменты админки, поиск исправление ошибок, очистка базы итд - безрезультатно, и в логах ошибок в админке - 0.

Из поиска по форуму понял, что нужно присвоить некое дефолтное значение полям какой-то таблицы в базе, но к сожалению, не понял в какой именно и какое именно значение.
Буду очень благодарен за помощь.

P. S. Пробовал еще установить 2.1, ставится нормально, база создается, посты тоже, но при заливке старой базы через PMA - Unable to load the 'boardindex_outer_above' template.
в админку не попасть, пути не исправить, работают ли посты - не проверить.

digger®

Включите
Админка - Безопасность и модерация -  Включать в лог ошибок текст SQL-запроса к базе данных
увидите в логе весь запрос и узнаете, в какой таблице это поле. Скорее всего, в smf_messages.

Astana Infonet

Спасибо, действительно это smf_messages:


INSERT INTO smf_messages(`id_board`, `id_topic`, `id_member`, `subject`, `body`, `poster_name`, `poster_email`, `poster_time`, `poster_ip`, `smileys_enabled`, `modified_name`, `icon`, `approved`)
VALUES
(1, 542, 2, SUBSTRING('Re: testing', 1, 255), SUBSTRING('test', 1, 65534), SUBSTRING('username', 1, 255), SUBSTRING('user@mail.com', 1, 255), 1465409134, SUBSTRING('IP', 1, 255), 1, '', SUBSTRING('xx', 1, 16), 1)


Каков мой следующий шаг?


Astana Infonet

о чудо O0
большое спасибо!

Но как связан этот мод с голым форумом? Ведь он никогда не был у меня установлен, и в пакет чистой установки насколько я понимаю тоже не включен? И теперь этот мод необходимо постоянно иметь в пакете?

digger®

Цитата: Astana Infonet от 08 Июнь 2016, 21:58:31о чудо O0
большое спасибо!

Но как связан этот мод с голым форумом? Ведь он никогда не был у меня установлен, и в пакет чистой установки насколько я понимаю тоже не включен? И теперь этот мод необходимо постоянно иметь в пакете?
Не ветром же эти поля в таблицу принесло. Значит, был когда-то установлен. Теперь, можно снова удалить.

Astana Infonet

Доброго дня, я дико извиняюсь, но после удаления мода ошибка возвращается. Может быть есть варианты его безболезненного отключения, или болезненного но перманентного удаления?

Astana Infonet

Извиняюсь, можно как-то помочь нам, или надо смириться и впадать в отчаяние?

digger®

Цитата: Astana Infonet от 16 Июль 2016, 15:20:31Извиняюсь, можно как-то помочь нам, или надо смириться и впадать в отчаяние?
Или найдите где в коде хвост мода остается и вручную удалите или создайте в таблице поля, которые этот хвост хочет.

Astana Infonet

Я с радостью, а как найти остатки?


S.T.A.L.K.E.R.

Цитата: Astana Infonet от 16 Июль 2016, 16:14:16Я с радостью, а как найти остатки?
Если сами не понимаете то пригласить и нанять для разовой работы того кто понимает.Делов то,в моде глянуть где и что он добавляет и проверить файлы на предмет хвостов мода.

Astana Infonet

Цитата: digger® от 16 Июль 2016, 16:16:55Sources/Display.php свой выложите.


S.T.A.L.K.E.R., форум некоммерческий, средствами увы не располагаю.

Вам недоступны вложения в этом разделе.

S.T.A.L.K.E.R.

Цитата: Astana Infonet от 16 Июль 2016, 18:24:57S.T.A.L.K.E.R., форум некоммерческий, средствами увы не располагаю.

Понятно.Мод сейчас стоит?Если его удалять ошибки есть?Смотрю файл.

Astana Infonet

Цитата: S.T.A.L.K.E.R. от 16 Июль 2016, 19:58:25Понятно.Мод сейчас стоит?Если его удалять ошибки есть?Смотрю файл.

Стоит. Есть.

S.T.A.L.K.E.R.

Цитата: Astana Infonet от 16 Июль 2016, 19:59:45Стоит. Есть.
Какие именно конкретней.В каких файлах?
Файл выше пересмотрен и хвосты мода удалил.Ошибка только в этом файле?

Astana Infonet

Цитата: S.T.A.L.K.E.R. от 16 Июль 2016, 20:02:54Какие именно конкретней.В каких файлах?
Файл выше пересмотрен и хвосты мода удалил.Ошибка только в этом файле?

Не совсем понял вопрос "какие". Если это про мод - то он один, OS & Browser Detection   1.5     
Был поставлен после установки на хостинг чистого 2.0.11 и восстановления базы из бэкапа админки по причине того как раз, что без него возникает вышеуказанная ошибка при попытке отправки сообщений. Других модов на форме нет, ошибок других вроде бы тоже.

S.T.A.L.K.E.R.

Цитата: Astana Infonet от 16 Июль 2016, 20:16:12Не совсем понял вопрос "какие". Если это про мод - то он один, OS & Browser Detection   1.5     
Был поставлен после установки на хостинг чистого 2.0.11 и восстановления базы из бэкапа админки по причине того как раз, что без него возникает вышеуказанная ошибка при попытке отправки сообщений. Других модов на форме нет, ошибок других вроде бы тоже.
При удалении мода этого ошибки есть или нет?
Где и в каких файлах если есть?

kak2z

пришлите в личку админский доступ к форуму и доступ к ftp... помогу.
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Astana Infonet

Цитата: S.T.A.L.K.E.R. от 16 Июль 2016, 20:19:11При удалении мода этого ошибки есть или нет?
Где и в каких файлах если есть?
Непосредственно при удалении мода никаких ошибок не возникает, но после удаления мода при попытке создания тем или ответов выдается ошибка БД:

Ошибка базы данных
Field 'ua_os' doesn't have a default value

kak2z, благодарю, а будет ли это корректно по отношению к уважаемому S.T.A.L.K.E.R., который уже что-то делает?

и к моей паранойе, да)

S.T.A.L.K.E.R.

Непосредственно файл в котором удален хвост мода..Удалите мод и потом подмените файл тот что ниже.
Если не поможет то строка ошибки и сам файл сюда...

Astana Infonet

Цитата: S.T.A.L.K.E.R. от 16 Июль 2016, 20:38:04Непосредственно файл в котором удален хвост мода..Удалите мод и потом подмените файл тот что ниже.
Если не поможет то строка ошибки и сам файл сюда...

После удаления мода и замены файла на Вашу версию вот такая ошибка при попытке зайти в любую тему. При этом глагне и разделы отображаются нормально.
Parse error: syntax error, unexpected ''' (T_ENCAPSED_AND_WHITESPACE) in /var/www/html/Sources/Display.php on line 1677

S.T.A.L.K.E.R.

А этот файл попробуйте.Только архив распакуйте.
Моды ещё какие-то помимо этого стоят?

Astana Infonet

Цитата: S.T.A.L.K.E.R. от 16 Июль 2016, 20:58:24А этот файл попробуйте.Только архив распакуйте.
Моды ещё какие-то помимо этого стоят?

с этим как раньше - в темы заходит, но при попытке отправить сообщение:

Field 'ua_os' doesn't have a default value
Файл: /var/www/html/Sources/Subs-Post.php
Строка: 1817

Просмотр и удаление установленных пакетов
Нет установленных пакетов модификаций.

S.T.A.L.K.E.R.

Цитата: Astana Infonet от 16 Июль 2016, 21:05:48с этим как раньше - в темы заходит, но при попытке отправить сообщение:

Field 'ua_os' doesn't have a default value
Файл: /var/www/html/Sources/Subs-Post.php
Строка: 1817

Просмотр и удаление установленных пакетов
Нет установленных пакетов модификаций.
Теперь этот файл сюда выкладывайте....
Хвост в нем ещё остался.
Давайте уже тему до логического конца доведём.
Мод уже нужно было бы чтобы был удален...

Astana Infonet

Цитата: S.T.A.L.K.E.R. от 16 Июль 2016, 21:10:34Теперь этот файл сюда выкладывайте....
Хвост в нем ещё остался.
Давайте уже тему до логического конца доведём.
Мод уже нужно было бы чтобы был удален...
Вам недоступны вложения в этом разделе.

S.T.A.L.K.E.R.

Нужно далее искать у мода хвосты.Если не стоит не один мод посмотрите в какие файлы вносит мод изменения и замените их на дефолтные.
Нужно ещё проверить /Themes/default/Display.template.php файл

Astana Infonet

Тут же в чем хитрость. Они и есть дефолтные. И когда мода нет, а файлы дефолтные, то и выдается ошибка, с которой все началось. Бэкап базы - от версии 2.0.10, и там этого мода точно не было. Мод возможно ставился когда-то лет 5 назад, после чего был признан ненужным и удален, все эти годы форум жил без него, прекрасно работал и проходил апгрейды. А вот теперь, будучи восстановленным из бэкапа после сбоя хостинга, дает такие кренделя.

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

S.T.A.L.K.E.R.

Цитата: Astana Infonet от 16 Июль 2016, 21:33:27Подскажите пожалуйста, по какому фильтру Вы его ищете - попробую пошерстить файлы, но боюсь я не настоящий сварщик и могу выпилить лишнего из кода...
ua_os

Astana Infonet


S.T.A.L.K.E.R.

Цитата: Astana Infonet от 16 Июль 2016, 21:55:16Поиск говорит

Post.php~
Subs-Post.php~

Если с такими пременными то это файлы на случай восстановления которые остались после мода.
Вот,смотрите.Это то что изменяет мод.
Код
<?xml version="1.0"?>
<!DOCTYPE modification SYSTEM "http://www.simplemachines.org/xml/modification">

<modification xmlns="http://www.simplemachines.org/xml/modification" xmlns:smf="http://www.simplemachines.org/">
<id>X3mE:OS-Browser-Detection</id>
<version>1.5</version>

<file name="$sourcedir/Post.php">
<!-- Parse the user agent and store detected info. -->
<operation>
<search position="replace"><![CDATA[$posterOptions = array(
'id' => $user_info['id'],]]></search>

<add><![CDATA[//OS & Browser Detection
require_once($sourcedir .'/os_browser_detection.php');
$os_browser_detected = parse_user_agent($_SERVER['HTTP_USER_AGENT']);
$posterOptions = array(
'ua_os' => $os_browser_detected['system'],
'ua_browser' => $os_browser_detected['browser'],
'ua_os_icon' => $os_browser_detected['system_icon'],
'ua_browser_icon' => $os_browser_detected['browser_icon'],
'id' => $user_info['id'],]]></add>
</operation>

</file>

<file name="$sourcedir/Subs-Post.php">
<!-- Insert the data into the database. -->
<operation>
<search position="before"><![CDATA['smileys_enabled' => 'int', 'modified_name' => 'string', 'icon' => 'string-16', 'approved' => 'int',]]></search>

<add><![CDATA[
'ua_os' => 'string', 'ua_browser' => 'string', 'ua_os_icon' => 'string', 'ua_browser_icon' => 'string',]]></add>
</operation>

<!-- Values to be inserted. -->
<operation>
<search position="before"><![CDATA[$msgOptions['smileys_enabled'] ? 1 : 0, '', $msgOptions['icon'], $msgOptions['approved'],]]></search>

<add><![CDATA[
isset($posterOptions['ua_os']) ? $posterOptions['ua_os'] : "", isset($posterOptions['ua_browser']) ? $posterOptions['ua_browser'] : "", isset($posterOptions['ua_os_icon']) ? $posterOptions['ua_os_icon'] : "unknown", isset($posterOptions['ua_browser_icon']) ? $posterOptions['ua_browser_icon'] : "unknown",]]></add>
</operation>
</file>

<file name="$sourcedir/Display.php">
<!-- Fill the message info array. -->
<operation>
<search position="before"><![CDATA['body' => $message['body'],]]></search>

<add><![CDATA[
'ua_os' => $message['ua_os'],
'ua_browser' => $message['ua_browser'],
'ua_os_icon' => $message['ua_os_icon'],
'ua_browser_icon' => $message['ua_browser_icon'],]]></add>
</operation>
</file>

<file name="$sourcedir/ManagePermissions.php">
<!-- Add it as a new simple permissions group -->
<operation>
<search position="before"><![CDATA['administrate',]]></search>

<add><![CDATA[
'view_os_browser',]]></add>
</operation>

<!-- Add it to the permissions list -->
<operation>
<search position="before"><![CDATA['karma_edit' => array(false, 'general', 'moderate_general'),]]></search>

<add><![CDATA[
'view_os_browser' => array(false, 'general', 'view_os_browser'),]]></add>
</operation>

<!-- Add it to restrictive group -->
<operation>
<search position="before"><![CDATA[$groupLevels['global']['restrict'] = array(]]></search>

<add><![CDATA[
'view_os_browser',]]></add>
</operation>
</file>

<file name="$themedir/Display.template.php">
<!-- Display detected info to the user, if he can see it. -->
<operation>
<search position="after"><![CDATA[
// This shows the popular messaging icons.]]></search>

<add><![CDATA[
//OS & Browser Detection
if (allowedTo('view_os_browser')){
if ($message['ua_os'] || $message['ua_browser']){ //Do not display if both are unknown

if ($message['ua_os']) {
echo '
<li class="margintop"><b>', $txt['OS_Browser_OS'], ':</b></li>
<li><img src="', $settings['default_images_url'], '/os_browser_detection/icon_', $message['ua_os_icon'], '.png" align="top" alt="', $message['ua_os'], '" /> ', $message['ua_os'], '</li>';
} else {
echo '
<li class="margintop"><b>', $txt['OS_Browser_OS'], ':</b></li>
<li><img src="', $settings['default_images_url'], '/os_browser_detection/icon_unknown.png" align="top" alt="', $txt['OS_Browser_Unknown'], '" /> ', $txt['OS_Browser_Unknown'], '</li>';
}

if ($message['ua_browser']) {
echo '
<li><b>', $txt['OS_Browser_Browser'], ':</b></li>
<li><img src="', $settings['default_images_url'], '/os_browser_detection/icon_', $message['ua_browser_icon'], '.png" align="top" alt="', $message['ua_browser'], '" /> ', $message['ua_browser'], '</li>';
} else {
echo '
<li><b>', $txt['OS_Browser_Browser'], ':</b></li>
<li><img src="', $settings['default_images_url'], '/os_browser_detection/icon_unknown.png" align="top" alt="', $txt['OS_Browser_Unknown'], '" /> ', $txt['OS_Browser_Unknown'], '</li>';
}
}
}
]]></add>
</operation>

</file>


</modification>

Astana Infonet

16 Июль 2016, 22:15:16 #31 Последнее редактирование: 17 Июль 2016, 23:42:16 от digger®
Вот это мне и непонятно, откуда инсерт идет, если я беру с сервера файл Sub-post.php, делаю в нем поиск по ua_os и ничего не нахожу, а форум ругается на строку 1817, вот код со строки 1803 по 1822:

Код
// Insert the post.
 $smcFunc['db_insert']('',
 '{db_prefix}messages',
 array(
 'id_board' => 'int', 'id_topic' => 'int', 'id_member' => 'int', 'subject' => 'string-255', 'body' => (!empty($modSettings['max_messageLength']) && $modSettings['max_messageLength'] > 65534 ? 'string-' . $modSettings['max_messageLength'] : 'string-65534'),
 'poster_name' => 'string-255', 'poster_email' => 'string-255', 'poster_time' => 'int', 'poster_ip' => 'string-255',
 'smileys_enabled' => 'int', 'modified_name' => 'string', 'icon' => 'string-16', 'approved' => 'int',
 ),
 array(
 $topicOptions['board'], $topicOptions['id'], $posterOptions['id'], $msgOptions['subject'], $msgOptions['body'],
 $posterOptions['name'], $posterOptions['email'], time(), $posterOptions['ip'],
 $msgOptions['smileys_enabled'] ? 1 : 0, '', $msgOptions['icon'], $msgOptions['approved'],
 ),
 array('id_msg')
 );
 $msgOptions['id'] = $smcFunc['db_insert_id']('{db_prefix}messages', 'id_msg');

 // Something went wrong creating the message...
 if (empty($msgOptions['id']))
 return false;

S.T.A.L.K.E.R.

Если нет ни одного мода абсолютно то берёте файл с смф установочный и перезаливаете файлы начисто.
Если и после этого останутся проблемы то нужно будет смотреть БД.

Serifa

Цитата: S.T.A.L.K.E.R. от 16 Июль 2016, 22:22:59Если нет ни одного мода абсолютно то берёте файл с смф установочный и перезаливаете файлы начисто.
даже если и есть моды, гораздо проще их заново установить, в SMF это делается в два клика!
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге

Astana Infonet

Цитата: S.T.A.L.K.E.R. от 16 Июль 2016, 22:22:59Если нет ни одного мода абсолютно то берёте файл с смф установочный и перезаливаете файлы начисто.
Если и после этого останутся проблемы то нужно будет смотреть БД.

Похоже Вы правы и проблемы действительно с базой.
Еще раз установил с нуля 2.0.11, чтобы исключить проблемы с LAMP отправил сообщение в пустой форум с пустой базой - отправляется без ошибок. Заливаю в базу бэкап - появляется ошибка. Вспоминаю, что бэкап делался из 2.0.10 - ставлю с нуля движок 2.0.10, заливаю в него бэкап базы - та же ошибка, с той лишь разницей, что  еще жалоба на устаревшую базу:

Ошибка базы данных
Field 'ua_os' doesn't have a default value
Файл: /var/www/html/test10/Sources/Subs-Post.php
Строка: 1817

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

В качестве жеста отчаяния залил этот бэкап в 2.1 Beta 2 - но там сразу после заливки при открытии форума появляется ошибка:
Unable to load the 'boardindex_outer_above' template.
И никуда не попасть -ни в админку ни в форум, видны лишь календарь и кнопка регистрации.

Печаль в том, что очень давно никаких манипуляций на тему модов не производилось и даже не знаю, имеет ли смысл пробовать заливать более ранние бэкапы? Вот такая вот загогулина.

digger®

Цитата: Astana Infonet от 17 Июль 2016, 00:33:26Похоже Вы правы и проблемы действительно с базой.
Еще раз установил с нуля 2.0.11, чтобы исключить проблемы с LAMP отправил сообщение в пустой форум с пустой базой - отправляется без ошибок. Заливаю в базу бэкап - появляется ошибка. Вспоминаю, что бэкап делался из 2.0.10 - ставлю с нуля движок 2.0.10, заливаю в него бэкап базы - та же ошибка, с той лишь разницей, что  еще жалоба на устаревшую базу:

Ошибка базы данных
Field 'ua_os' doesn't have a default value
Файл: /var/www/html/test10/Sources/Subs-Post.php
Строка: 1817

Найдите эти поля в нужной таблице через phpmyadmin и задайте для них значения по умолчанию, можно просто ""
Или пишите в личку, просто исправлю вам все без костылей.

kak2z

Цитата: Astana Infonet от 16 Июль 2016, 20:29:59Непосредственно при удалении мода никаких ошибок не возникает, но после удаления мода при попытке создания тем или ответов выдается ошибка БД:

Ошибка базы данных
Field 'ua_os' doesn't have a default value

kak2z, благодарю, а будет ли это корректно по отношению к уважаемому S.T.A.L.K.E.R., который уже что-то делает?

и к моей паранойе, да)
да как хотите))
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)