Seite 1 von 1

Column 'post_text' cannot be part of FULLTEXT index

Verfasst: 23.01.2010 00:21
von Loewenherz
Hi,

ich beziehe mich genau auf diese Fehlermeldung - den Weg dazu habe ich hier beschrieben: http://www.phpbb.de/community/viewtopic ... 2#p1157272 - hatte die zu meinem Problem passende Fehlermeldung fortgeführt. Aber da hier das passende Board ist, ergänze ich nochmal.

Es ging um ein Update von phpBB 3.0.5 auf 3.0.6 nach Serverwechsel von MySQL 4 auf 5 sowie Nutzung des MySQL-Migrators.
#1283 - Column 'post_text' cannot be part of FULLTEXT index
Mir ist jetzt allerdings nicht ganz klar, ob auch hier die Entfernung einer Zeile die Lösung bringen könnte (hab die betreffende Zeile mal hervorgehoben):
ALTER TABLE phpbb_posts
MODIFY post_id mediumint(8) UNSIGNED NOT NULL auto_increment,
MODIFY topic_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY forum_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY poster_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY icon_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY poster_ip varchar(40) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY post_approved tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY post_reported tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY enable_bbcode tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY enable_smilies tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY enable_magic_url tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY enable_sig tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY post_username varchar(255) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_subject varchar(255) DEFAULT '' NOT NULL COLLATE utf8_unicode_ci,
MODIFY post_text mediumtext NOT NULL COLLATE utf8_bin,
MODIFY post_checksum varchar(32) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_attachment tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY bbcode_bitfield varchar(255) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY bbcode_uid varchar(8) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_postcount tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY post_edit_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY post_edit_reason varchar(255) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_edit_user mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY post_edit_count smallint(4) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY post_edit_locked tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Was meint ihr, was hier Sinn machen würde?

Unter http://www.phpbb.com/community/viewtopi ... 6&t=926905 wird von Stucco eine Lösung beschrieben, wo ich überlege, ob das Sinn machen könnte:

Code: Alles auswählen

ALTER TABLE `phpbb3_posts` ADD FULLTEXT (
`post_text`
) 
Edit: Hier gibt es einen Upgrade-Patch - http://www.phpbb.com/bugs/phpbb3/ticket ... t_id=46285 - aber ob ich damit etwas anfangen könnte?

Re: Column 'post_text' cannot be part of FULLTEXT index

Verfasst: 23.01.2010 00:30
von Mahony
Hallo
Schau mal im ACP unter - Wartung - Such-Indizes, ob da bei Fulltext mysql ein index existiert. Falls ja, dann lösche den index.
Danach versuchs noch einmal mit dem code

Code: Alles auswählen

ALTER TABLE phpbb_posts
MODIFY post_id mediumint(8) UNSIGNED NOT NULL auto_increment,
MODIFY topic_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY forum_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY poster_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY icon_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY poster_ip varchar(40) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY post_approved tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY post_reported tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY enable_bbcode tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY enable_smilies tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY enable_magic_url tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY enable_sig tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY post_username varchar(255) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_subject varchar(255) DEFAULT '' NOT NULL COLLATE utf8_unicode_ci,
MODIFY post_text mediumtext NOT NULL COLLATE utf8_bin,
MODIFY post_checksum varchar(32) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_attachment tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY bbcode_bitfield varchar(255) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY bbcode_uid varchar(8) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_postcount tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY post_edit_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY post_edit_reason varchar(255) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_edit_user mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY post_edit_count smallint(4) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY post_edit_locked tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Anschließend kannst du den Suchindex wieder neu erstellen lassen.

Das ganze sollte eigentlich genau so funktionieren - siehe hier http://www.phpbb.de/community/viewtopic ... 5#p1109455


Grüße: Mahony

Re: Column 'post_text' cannot be part of FULLTEXT index

Verfasst: 23.01.2010 00:31
von bantu
Folgendes Vorgehen müsste funktionieren: Such-Index löschen, MySQL-Upgrader für deine Version, Update auf die neueste phpBB-Version, Such-Index wieder erstellen.

Re: Column 'post_text' cannot be part of FULLTEXT index

Verfasst: 23.01.2010 00:43
von Loewenherz
Hi,

der am Ende meines Postings erwähnte Bug hatte mich auf eine Spur gebracht: der verwendete mysql_upgrader war älter als beispielsweise dieser hier: http://code.phpbb.com/repositories/entr ... ?rev=10219

Der resultierende Vorschlag lautete:

Code: Alles auswählen

ALTER TABLE phpbb_posts
DROP INDEX post_text,
DROP INDEX post_subject,
DROP INDEX post_content;

ALTER TABLE phpbb_posts
MODIFY post_id mediumint(8) UNSIGNED NOT NULL auto_increment,
MODIFY topic_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY forum_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY poster_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY icon_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY poster_ip varchar(40) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY post_approved tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY post_reported tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY enable_bbcode tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY enable_smilies tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY enable_magic_url tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY enable_sig tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY post_username varchar(255) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_subject varchar(255) DEFAULT '' NOT NULL COLLATE utf8_unicode_ci,
MODIFY post_text mediumtext NOT NULL COLLATE utf8_bin,
MODIFY post_checksum varchar(32) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_attachment tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY bbcode_bitfield varchar(255) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY bbcode_uid varchar(8) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_postcount tinyint(1) UNSIGNED DEFAULT '1' NOT NULL,
MODIFY post_edit_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY post_edit_reason varchar(255) DEFAULT '' NOT NULL COLLATE utf8_bin,
MODIFY post_edit_user mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY post_edit_count smallint(4) UNSIGNED DEFAULT '0' NOT NULL,
MODIFY post_edit_locked tinyint(1) UNSIGNED DEFAULT '0' NOT NULL,
DROP INDEX post_username,
ADD KEY post_username (post_username),
DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Die ersten Zeilen wirkten allerdings SEHR merkwürdig auf mich als jemanden, der nicht wirklich was von PHP/MySQL versteht ;-)

Zum Glück war mittlerweile der Post von Mahony da und funktionierte. Super, vielen Dank!

Damit ist die Migration zweier phpBB 2 auf 3 abgeschlossen und ich kann mich den nächsten Boards zuwenden :)

Re: Column 'post_text' cannot be part of FULLTEXT index

Verfasst: 23.01.2010 01:01
von Loewenherz
Ok, ganz abgeschlossen ist es nicht, Umlaute werden jetzt nach Umstellung auf UTF falsch dargestellt. Bislang habe ich nur hier etwas dazu gefunden, scheint aber etwas kurz zu sein das Snippet: http://www.phpbb.com/community/viewtopi ... 6&t=612469

Code: Alles auswählen

    
UPDATE phpbb3_posts
SET post_text = REPLACE(post_text, 'ß', 'ß')
WHERE post_text LIKE '%ß%'
Gibt es irgendwas in dieser Form, das ich einfach in phpMyAdmin drüberlaufen lassen kann, damit äüö wieder richtig im post_text stehen?

Re: Column 'post_text' cannot be part of FULLTEXT index

Verfasst: 23.01.2010 01:29
von Mahony
Hallo
Lies mal hier Die Umlautproblematik. Da wird dir alles wichtige zum Thema erklärt.

P.S. Ich sehe gerade deine Bemerkung
Damit ist die Migration zweier phpBB 2 auf 3 abgeschlossen und ich kann mich den nächsten Boards zuwenden
Da dürfte dann bei der Konvertierung bereits ein Fehler aufgetreten sein. Das hier könnte dir weiter helfen Lösung - phpBB2 zu phpBB3 - Umlaute falsch.

Also in der lang_main.php von phpBB2 vor der Konvertierung folgendes ändern:

Code: Alles auswählen

$lang['ENCODING'] = 'iso-8859-1';
zu

Code: Alles auswählen

$lang['ENCODING'] = 'utf-8';
P.P.S. Ansonsten kannst du es noch mit dem DUK versuchen.


Grüße: Mahony

Re: Column 'post_text' cannot be part of FULLTEXT index

Verfasst: 23.01.2010 10:41
von Loewenherz
Hi,

sorry, war nur ein Board betroffen, das von 2 auf 3 migriert war vor ca. zwei Monaten. Das andere ist direkt mit einem RC von phpBB3 gestartet. Insofern war deine Vermutung richtig, dass der Fehler bereits bei der Migration geschehen ist. Aber er ist mir erst jetzt bei den Umstellungen der Datenbank aufgefallen oder tauchte erst jetzt auf.

Es waren dabei nur die posts betroffen, keine Sprachdateien (mit denen kenne ich mich zum Glück aus *g*). DUK fand keine falsch codierten Umlaute, obwohl sie in der DB klar erkennbar waren. Letztendlich brachte wie erwartet http://www.phpbb.de/community/viewtopic ... 6#p1083561 die Lösung. Vier Befehle in phpMyAdmin und die Anzeigen sind korrekt.

Danke für deine Hilfe, genau den Thread hatte ich nicht gefunden. Da die nächsten vier Boards alle phpBB2 sind, die endlich auf 3 migriert werden müssen, bin ich jetzt hoffentlich für alle Eventualitäten gerüstet. Einziger Horror könnten die Template-Anpassungen werden, da blicke ich erstmals seit phpBB1 und 2 nicht mehr so ganz durch.