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!!