Создание новой темы.

Проблемы с установкой или работой phpBB 2.0.x? Ищите ответы здесь!
Ryazansky
phpBB 1.2.0
Сообщения: 17
Стаж: 19 лет 7 месяцев
Откуда: Москва

Создание новой темы.

Сообщение Ryazansky »

При создании новой темы возникает ошибка 1062
SQL Error : 1062 Duplicate entry '16777215' for key 1
Внимательно прочитал все обсуждения этой ошибки, найденные поиском по данному форуму, и ответа на свой вопрос не нашел.

Есть уверенность, что ошибка возникает потому, что каждый новый топик создается с одним и тем же номером. Именно это и создает проблему, которая не исправляется простым удалением строки с номером '16777215' из БД mySQL.

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

Добавлено спустя 10 минут 39 секунд:

Всякие db_Maintenance и другие попытки наведения порядка в БД только переименовывают сообщения, наводят бедлам, заменяют сообщение на созданное сегодня сообщение другого пользователя, и т.п.

ЗЫ. Просьба - при полном понимании к проблемам модераторов с ламерами, задающими одинаковые вопросы, будьте, пожалуйста, толерантны к этим самым ламерам! Может быть, когда-нибудь и они смогут кому-то чем-то помочь! Заранее спасибо!

Добавлено спустя 8 минут 50 секунд:

В вышеупомянутой ситуации ключом к разгадке может служить то, что ВСЕ создаваемые темы дают команду для mysql, содержащую, кроме различных чисел, еще и следующий (выделенный жирным) фрагмент:
INSERT INTO phpbb_posts (topic_id, forum_id, poster_id, post_username, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_sig) VALUES (227, 3, 3, '', 1128474724, '53ed030c', 1, 1, 1, 1)
На этом мое понимание происходящих проблем заканчивается :(

Добавлено спустя 13 минут 34 секунды:

Прошу прощения за флуд, но http://phpbbguru.net/community/viewtopic.php?t=4427 я неоднократно прочитал.
И вообще, на пятые сутки обалденного секса с phpBB я излазил этот форум практически вдоль и поперек.
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
Сообщения: 1464
Стаж: 20 лет 3 месяца
Откуда: Novosibirsk,RU

Сообщение [R: R@m$e$ :U] »

Ryazansky
хм... а собственно что тебе не нравится? этот кусок нормально оформлен... это кодированный(в шестнадцатиричный формат) ip пользователя... с ним все ок... =)
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)

Оставь благодарность, подтверди работоспособность совета.

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 20 лет 6 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Ryazansky
Убейте мыло у пользователя test/test.

Код: Выделить всё

SQL Error : 1062 Duplicate entry '16777215' for key 1

INSERT INTO phpbb_posts (topic_id, forum_id, poster_id, post_username, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_sig) VALUES (230, 3, 93, '', 1128487280, 'd4054e13', 1, 1, 1, 1)

Line : 279
File : functions_post.php
Можно 279 строку и +/-10 строк из functions_post.php.
Ryazansky писал(а):Есть уверенность, что ошибка возникает потому, что каждый новый топик создается с одним и тем же номером.
Нет, номера топикам присваиваются нормально.

Кто тут умный, поясните что такое post_username и почему оно всегда пустое?
я люблю daft punk | новый sugoi.ru
Ryazansky
phpBB 1.2.0
Сообщения: 17
Стаж: 19 лет 7 месяцев
Откуда: Москва

Сообщение Ryazansky »

279 строка (и еще 290 строка, выдающая ту же ошибку) выглядит так:
if (!$db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
}
Я их обе закомментировал с помощью ///, однако проблему это так и не решило - post_id совпадает с уже написанным постом. Ссылка "Посмотреть ваше сообщение" скидывает на другой пост.
Что означает "Убейте мыло"? Пользователь активен, он, вроде бы, еще пока может пригодиться...

Добавлено спустя 5 минут 14 секунд:

Де-факто, он все новые сообщения через postreply пытается записать в БД с одним и тем же номером entry. Эту ошибку как-нибудь можно исправить?
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 20 лет 4 месяца
Откуда: Москва

Сообщение Coagulant »

VVVas писал(а):Кто тут умный, поясните что такое post_username и почему оно всегда пустое?
Для гостей, которые вводят своё имя при создании сообщения, непустое.
Ryazansky писал(а):Есть уверенность, что ошибка возникает потому, что каждый новый топик создается с одним и тем же номером. Именно это и создает проблему, которая не исправляется простым удалением строки с номером '16777215' из БД mySQL.
У меня те же подозрения. Попробуйте таблицу починить.

Добавлено спустя 3 минуты 59 секунд:

Откуда у вас могла взяться тема с номером большим 16 миллионов при таком форуме? Поясните, пожалуйста.
Ryazansky
phpBB 1.2.0
Сообщения: 17
Стаж: 19 лет 7 месяцев
Откуда: Москва

Сообщение Ryazansky »

Попробовал починить таблицы phpbb_posts и phpbb_posts_text.
Статус OK.
После этого все равно та же самая ошибка.
Аватара пользователя
crash
Former team member
Сообщения: 6517
Стаж: 20 лет 10 месяцев
Откуда: Бердск

Сообщение crash »

Ryazansky
тогда остается только одно.. после чего у вас появилась такая ошибка
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 20 лет 4 месяца
Откуда: Москва

Сообщение Coagulant »

Думаю был произведен инсерт какой-нибудь с номером топика большим. Теперь индекс id не умещаются в unsigned mediumint(8).
Ryazansky
phpBB 1.2.0
Сообщения: 17
Стаж: 19 лет 7 месяцев
Откуда: Москва

Сообщение Ryazansky »

Кто-нибудь, проверьте, плз, как у вас выглядит структура таблицы phpbb_posts, и скажите, чем отличается?
post_id mediumint(8) UNSIGNED Нет auto_increment
topic_id mediumint(8) UNSIGNED Нет 0
forum_id smallint(5) UNSIGNED Нет 0
poster_id mediumint(8) Нет 0
post_time int(11) Нет 0
poster_ip varchar(8) Нет 0
post_username varchar(25) Да NULL
enable_bbcode tinyint(1) Нет 1
enable_html tinyint(1) Нет 0
enable_smilies tinyint(1) Нет 1
enable_sig tinyint(1) Нет 1
post_edit_time int(11) Нет 1
post_edit_count smallint(5) UNSIGNED Нет 0
Добавлено спустя 7 минут 42 секунды:
тогда остается только одно.. после чего у вас появилась такая ошибка
Так вот это-то и непонятно! после чего она появилась...
Как раз с добавлением постов я ничего и не делал, а теперь при любом прямом обращении к posting.php создается тема с ОДНИ И ТЕМ ЖЕ номером entry в DB!
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 20 лет 4 месяца
Откуда: Москва

Сообщение Coagulant »

Дело не в структуре таблицы. Дело в том, что был произведён запрос, например,
INSERT INTO phpbb_posts (topic_id, forum_id, poster_id, post_username, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_sig) VALUES (16777215, 3, 93, '', 1128487280, 'd4054e13', 1, 1, 1, 1)
и теперь бд хранит текущий автоинкремент индекс вашей таблицы 16777215. Т.к. это максимальное число, которое может быть записано в поле
Ryazansky писал(а):post_id mediumint(8) UNSIGNED Нет auto_increment
mdeiumint(8) UNSIGNED, то и вылезает ошибка.

Я думаю есть правильное решение, но в голову приходит одно:
сделайте бэкап этой таблицы (удостоверившись, что нету там ненормальных id). Удалить таблиу и восстановить из бэкапа.
Аватара пользователя
crash
Former team member
Сообщения: 6517
Стаж: 20 лет 10 месяцев
Откуда: Бердск

Сообщение crash »

Ryazansky
вообщето все это есть в папке инсталл

Код: Выделить всё

CREATE TABLE phpbb_posts (
   post_id mediumint(8) UNSIGNED NOT NULL auto_increment,
   topic_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
   forum_id smallint(5) UNSIGNED DEFAULT '0' NOT NULL,
   poster_id mediumint(8) DEFAULT '0' NOT NULL,
   post_time int(11) DEFAULT '0' NOT NULL,
   poster_ip char(8) NOT NULL,
   post_username varchar(25),
   enable_bbcode tinyint(1) DEFAULT '1' NOT NULL,
   enable_html tinyint(1) DEFAULT '0' NOT NULL,
   enable_smilies tinyint(1) DEFAULT '1' NOT NULL,
   enable_sig tinyint(1) DEFAULT '1' NOT NULL,
   post_edit_time int(11),
   post_edit_count smallint(5) UNSIGNED DEFAULT '0' NOT NULL,
   PRIMARY KEY (post_id),
   KEY forum_id (forum_id),
   KEY topic_id (topic_id),
   KEY poster_id (poster_id),
   KEY post_time (post_time)
);
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Ryazansky
phpBB 1.2.0
Сообщения: 17
Стаж: 19 лет 7 месяцев
Откуда: Москва

Сообщение Ryazansky »

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

Добавлено спустя 17 минут 43 секунды:

Не помогло.
Это же ошибка, скорее всего, не в ДБ, а в php? который управляет этой дб, разве я не прав?
Аватара пользователя
crash
Former team member
Сообщения: 6517
Стаж: 20 лет 10 месяцев
Откуда: Бердск

Сообщение crash »

Ryazansky писал(а):Это же ошибка, скорее всего, не в ДБ, а в php? который управляет этой дб, разве я не прав?
VVVas писал(а):Можно 279 строку и +/-10 строк из functions_post.php.
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Ryazansky
phpBB 1.2.0
Сообщения: 17
Стаж: 19 лет 7 месяцев
Откуда: Москва

Сообщение Ryazansky »

Ой, мин пардон... Без проблем:

Код: Выделить всё

	$edited_sql = ($mode == 'editpost' && !$post_data['last_post'] && $post_data['poster_post']) ? ", post_edit_time = $current_time, post_edit_count = post_edit_count + 1 " : "";
	$sql = ($mode != "editpost") ? "INSERT INTO " . POSTS_TABLE . " (topic_id, forum_id, poster_id, post_username, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_sig) VALUES ($topic_id, $forum_id, " . $userdata['user_id'] . ", '$post_username', $current_time, '$user_ip', $bbcode_on, $html_on, $smilies_on, $attach_sig)" : "UPDATE " . POSTS_TABLE . " SET post_username = '$post_username', enable_bbcode = $bbcode_on, enable_html = $html_on, enable_smilies = $smilies_on, enable_sig = $attach_sig" . $edited_sql . " WHERE post_id = $post_id";
 	if (!$db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
	}

	if ($mode != 'editpost')
	{
		$post_id = $db->sql_nextid();
	}

	$sql = ($mode != 'editpost') ? "INSERT INTO " . POSTS_TEXT_TABLE . " (post_id, post_subject, bbcode_uid, post_text) VALUES ($post_id, '$post_subject', '$bbcode_uid', '$post_message')" : "UPDATE " . POSTS_TEXT_TABLE . " SET post_text = '$post_message',  bbcode_uid = '$bbcode_uid', post_subject = '$post_subject' WHERE post_id = $post_id";
	if (!$db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
	}
"Ругаются" строки

Код: Выделить всё

message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
Ryazansky
phpBB 1.2.0
Сообщения: 17
Стаж: 19 лет 7 месяцев
Откуда: Москва

Сообщение Ryazansky »

Пока ошибку исправить не удалось :(
Последний раз редактировалось Ryazansky 07.10.2005 0:56, всего редактировалось 1 раз.

Вернуться в «Поддержка phpBB 2.0.x»