Seite 1 von 1
Problem bei zu langen Beiträgen
Verfasst: 06.07.2005 15:19
von bisi
Folgendes kommt als Fehlermeldung wenn der Beitrag im Forum zu viele Zeichen enthält:
Code: Alles auswählen
Could not insert new word
DEBUG MODE
INSERT INTO markt_search_wordlist (word_text, word_common) VALUES ('ändern', 0)
Line : 209
File : functions_search.php
Hat jemand Ideen?
Verfasst: 06.07.2005 15:36
von Christian Benz
Hallo,
http://www.phpbb.de/viewtopic.php?t=83866
(Tabelle mittels phpMyAdmin reparieren, vielleicht geht's dann wieder.)
Gruß,
Chris
Verfasst: 08.07.2005 15:30
von bisi
Hallo,
um das Thema aufzugreifen!
Es liegt anscheinend daran, dass ich mein phpBB2 mit einer PostgreSQL Datenbank laufen lasse.
Wenn die Beiträge demzufolge zu lang werde, gibt es Probleme beim schreiben in die Datenbank.
Hat jemand damit Erfahrungen?!?!
Mit einer MySQL DB Funktioniert das, es muss aber unbedingt mit PostgreSQL laufen.
Danke
Verfasst: 11.07.2005 10:43
von bisi
Code: Alles auswählen
$value_sql = '';
$match_word = array();
for ($i = 0; $i < count($word); $i++)
{
$new_match = true;
if ( isset($check_words[$word[$i]]) )
{
$new_match = false;
}
if ( $new_match )
{
switch( SQL_LAYER )
{
case 'mysql':
case 'mysql4':
$value_sql .= ( ( $value_sql != '' ) ? ', ' : '' ) . '(\'' . $word[$i] . '\', 0)';
break;
case 'mssql':
case 'mssql-odbc':
$value_sql .= ( ( $value_sql != '' ) ? ' UNION ALL ' : '' ) . "SELECT '" . $word[$i] . "', 0";
break;
default:
$sql = "INSERT INTO " . SEARCH_WORD_TABLE . " (word_text, word_common)
VALUES ('" . $word[$i] . "', 0)";
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not insert new word', '', __LINE__, __FILE__, $sql);
}
break;
}
}
}
An diesem Code aus der function_search.php liegt es.
Ich benutze eine PostgreSQL Db und wenn ein Wort bereits in der DB ist wie z.B. "ändern" dann gibt es Probleme beim Posten der nachrichten.
Wie sieht das denn aus?
die Tabelle phpbb_search_wordlist - Was für eine Funktion hat sie genau?
Verfasst: 11.07.2005 15:18
von bisi
[IRONIEMODUS:ON]Danke für die Hilfreichen Postings [/IRONIEMODUS:OFF]
Ich hab es nun von allein herausgefunden:
in der
function_search.php zeile 92:
Code: Alles auswählen
function split_words(&$entry, $mode = 'post')
{
// If you experience problems with the new method, uncomment this block.
/*
$rex = ( $mode == 'post' ) ? "/\b([\w±µ-ÿ][\w±µ-ÿ']*[\w±µ-ÿ]+|[\w±µ-ÿ]+?)\b/" : '/(\*?[a-z0-9±µ-ÿ]+\*?)|\b([a-z0-9±µ-ÿ]+)\b/';
preg_match_all($rex, $entry, $split_entries);
return $split_entries[1];
*/
// Trim 1+ spaces to one space and split this trimmed string into words.
return explode(' ', trim(preg_replace('#\s+#', ' ', $entry)));
}
einfach den auskommentierten Code wieder "aktivieren" (d.h. die /* */ wegmachen) und schon klappt es.
Anscheinend hat PostgreSQL Probleme gehabt mit der
function split_words funktion!!