Zum Inhalt springen

Realurl: Datenbank bleibt leer

Erstellt am 17. März 2010 · 8 Antworten · letzte Antwort am 16. April 2010

Tags: RealURL, Datenbank, Frage

Unbekannter Benutzer ·

Ich habe Typo3 4.2.10 und wollte Realurl 1.7.0 installieren. Nach der Installation wird im Extension Manager folgendes angezeigt:

The extension is installed (loaded and running)!

Update needed:
Changing fields
ALTER TABLE tx_realurl_chashcache CHANGE spurl_hash spurl_hash char(32) default '';
Current value: varchar(32) default ''
ALTER TABLE tx_realurl_urldecodecache CHANGE url_hash url_hash char(32) default '';
Current value: varchar(32) default ''
ALTER TABLE tx_realurl_urlencodecache CHANGE url_hash url_hash char(32) default '';
Current value: varchar(32) default ''

Wenn ich [Make updates] klicke verschwinden diese drei Meldungen, sind aber wieder da, sobald ich den Extension Manager das nächste öffne.

Weiter unten steht in roter Schrift:

Database status:
Table error! Probably one or more required fields/tables are missing in the database!

Code warnings (developer-relevant):
Some tables or fields are missing!
It seems like there is a backend module in "mod1/conf.php" which is not configured in ext_emconf.php
No XCLASS inclusion code found in file "class.tx_realurl_userfunctest.php"

In der Datenbank ist die Tabelle "tx_realurl_pathcache" leer.

Irgendwas scheint aber zu funktionieren, denn die URLs werden jetzt so angezeigt:
http://www.mydomain.com/123 anstelle von:
http://www.mydomain.com/kontakt

Jetzt bin ich völlig am Anschlag, denn mit den roten Fehlermeldungen kann ich rein gar nichts anfangen. Irgendwo in diesem Forum habe ich gelesen, man könne sie ignorieren. Woran ich ein wenig zweifle.

Deinstallation und Neuinstallation von Realurl hat nichts gebracht. Auf zwei weiteren Websites läuft Realurl problemlos.

Vielen Dank für Eure Hilfe!
crimle

digitalfreak ·

Einfach ma versuchen die DB Qrys manuell aus dem "EXT/ext_tables.sql" Ordner auf DB Ebene ausführen. Wenn der Fehler darin liegt könnte es damit gelöst werden.

Ach und. Wenn er /123 anzeigt, dann ist deine Config falsch.

Nur ma so als Bsp. bei mir funktioniert diese hier generell. Einfach die tt_news cfg raus nehmen ums n bisl "schmaler" zu machen. Dann sollte das klappen. Aber der DB Updatefehler sollte nicht kommen. Da würd ich das o.g. machen.

// RealURL
$TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tstemplate.php'] ['linkData-PostProc'] []
= 'EXT:realurl/class.tx_realurl.php:&tx_realurl->encodeSpURL';
$TYPO3_CONF_VARS['SC_OPTIONS'] ['tslib/class.tslib_fe.php'] ['checkAlternativeIdMethods-PostProc'] []
= 'EXT:realurl/class.tx_realurl.php:&tx_realurl->decodeSpURL';

$TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tcemain.php'] ['clearAllCache_additionalTables'] ['tx_realurl_urldecodecache']
= 'tx_realurl_urldecodecache';
$TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tcemain.php'] ['clearAllCache_additionalTables'] ['tx_realurl_urlencodecache']
= 'tx_realurl_urlencodecache';
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables']['tx_realurl_pathcache'] = 'tx_realurl_pathcache';


$TYPO3_CONF_VARS['FE'] ['addRootLineFields'] .=
',tx_realurl_pathsegment,alias,nav_title,title';
$TYPO3_CONF_VARS['EXTCONF'] ['realurl'] ['_DEFAULT'] = array(
  'init' => array(
    'enableCHashCache' => 1,
    'enableUrlDecodeCache' => 1,
    'enableUrlEncodeHash' => 1,
    // 'postVarSet_failureMode' => 'redirect_goodUpperDir',
  ),
  'rewrite' => array(
  ),

  'preVars' => array(
  ), 
  
  'pagePath' => array(
    'type' => 'user',
    'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
    'spaceCharacter' => '-',
    'languageGetVar' => 'L',
    'expireDays' => 3,
    'rootpage_id' => '56'
  ),
  'fileName' => array (
    'defaultToHTMLsuffixOnPrev' => 1,
    'index' => array(
        'page.html' => array(
          'keyValues' => array (
            'type' => 0,
          ),
        ),
        'print.html' => array(
          'keyValues' => array (
            'type' => 98,
          ),
      ),
    ),
  ),
  
  'fixedPostVarSets' => array(
  ),
  
  'postVarSets' => array(
    '_DEFAULT' => array(
      
      // news archive parameters
      'archive' => array(
        array(
          'GETvar' => 'tx_ttnews[year]' ,
        )
      ),
      
      // news pagebrowser
      'browse' => array(
        array(
          'GETvar' => 'tx_ttnews[pointer]',
        ),
      ),
      // news categories
      'select_category' => array (
        array(
          'GETvar' => 'tx_ttnews[cat]',
        ),
      ),
      
      'period' => array (
        array (
          'condPrevValue' => -1,
          'GETvar' => 'tx_ttnews[pS]',
          //'valueMap => array()
        ),
        array (
          'GETvar' => 'tx_ttnews[pL]',
          //'valueMap => array()
        ),
        
        array (
          'GETvar' => 'tx_ttnews[arc]',
          'valueMap' => array(
            'non-archived' => -1,
          ),
        ),
      ),
      
      'browse' => array (
        array (
        'GETvar' => 'tx_ttnews[pointer]',
        ),
      ),
      'select' => array (
      array (
        'GETvar' => 'tx_ttnews[cat]',
        'lookUpTable' => array (
          'table' => 'tt_news_cat',
          'id_field' => 'uid',
          'alias_field' => 'title',
          'addWhereClause'=> 'AND NOT deleted',
          'useUniqueCache'=> 1,
          'useUniqueCache_conf' => array (
            'strtolower' => 1,
            'spaceCharacter' => '-',
          ),
        ),
      ),
      ),
      'article' => array(
        array (
          'GETvar' => 'tx_ttnews[backPid]',
          // 'valueMap => array(
          // ),
        ),
        array (
          'GETvar' => 'tx_ttnews[tt_news]',
          'lookUpTable' => array (
            'table' => 'tt_news',
            'id_field' => 'uid',
            'alias_field' => 'title',
            'maxLength' => 12,
            'addWhereClause'=> 'AND NOT deleted',
            'useUniqueCache'=> 1,
            'useUniqueCache_conf' => array (
              'strtolower' => 1,
              'spaceCharacter' => '-',
            ),
          ),
        ),
      ),
    ),
  ),
);
Unbekannter Benutzer ·

Ich verwende also den folgenden SQL-Befehl:

USE MeinDatenbankName;
ALTER TABLE tx_realurl_chashcache CHANGE spurl_hash spurl_hash char(32) default '';
Current value: varchar(32) default ''

und es erscheint folgende Fehlermeldung:

Fehler

SQL-Befehl:

Current value : varchar( 32 ) default ''

MySQL meldet: Dokumentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Current value: varchar(32) default ''' at line 1

Wie müsste die Syntax denn richtig lauten? Oder was sollte denn in der Datenbank geändert werden? ich könnte die Änderung vielleicht auch manuell durchführen?!

Unbekannter Benutzer ·

verstehe ich den SQL-Befehl richtig? Da soll der Feldtyp von VARCHAR in CHAR geändert werden? Ich habe jetzt versucht, den Feldtyp manuell zu ändern. Nach dem Speichern der Änderung wird der folgende SQL-Befehl angezeigt:

ALTER TABLE `tx_realurl_chashcache` CHANGE `url_hash` `url_hash` CHAR( 32 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL

und

Tabelle tx_realurl_chashcache wurde geändert.

was aber nicht stimmt!!! Der Feldtyp ist nach dem Speichern immer noch varchar(32). Wobei ich mir nicht vorstellen kann, dass diese scheinbar nebensächliche Änderung zur Folge hat, dass Realurl nicht funktioniert.

Unbekannter Benutzer ·
digitalfreak schrieb

Ach und. Wenn er /123 anzeigt, dann ist deine Config falsch.

Nur ma so als Bsp. bei mir funktioniert diese hier generell. Einfach die tt_news cfg raus nehmen ums n bisl "schmaler" zu machen. Dann sollte das klappen.

// RealURL
$TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tstemplate.php'] ['linkData-PostProc'] []
...

Verstehe ich Dich richtig: wir sprechen hier von der Datei typo3conf/realurl_conf.php? Eine solche Datei gibt es bei mir nicht, wenn ich mit FTP auf den Server schaue. Wenn ich eine solche Datei erzeuge und Deinen Code hineinkopiere sieht man vor lauter Fehlermeldungen die Seite gar nicht mehr:

// RealURL $TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tstemplate.php'] ['linkData-PostProc'] [] = 'EXT:realurl/class.tx_realurl.php:&tx_realurl->encodeSpURL'; $TYPO3_CONF_VARS['SC_OPTIONS'] ['tslib/class.tslib_fe.php'] ['checkAlternativeIdMethods-PostProc'] [] = 'EXT:realurl/class.tx_realurl.php:&tx_realurl->decodeSpURL'; $TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tcemain.php'] ['clearAllCache_additionalTables'] ['tx_realurl_urldecodecache'] = 'tx_realurl_urldecodecache'; $TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tcemain.php'] ['clearAllCache_additionalTables'] ['tx_realurl_urlencodecache'] = 'tx_realurl_urlencodecache'; $TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables']['tx_realurl_pathcache'] = 'tx_realurl_pathcache'; $TYPO3_CONF_VARS['FE'] ['addRootLineFields'] .= ',tx_realurl_pathsegment,alias,nav_title,title'; $TYPO3_CONF_VARS['EXTCONF'] ['realurl'] ['_DEFAULT'] = array( 'init' => array( 'enableCHashCache' => 1, 'enableUrlDecodeCache' => 1, 'enableUrlEncodeHash' => 1, // 'postVarSet_failureMode' => 'redirect_goodUpperDir', ), 'rewrite' => array( ), 'preVars' => array( ), 'pagePath' => array( 'type' => 'user', 'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main', 'spaceCharacter' => '-', 'languageGetVar' => 'L', 'expireDays' => 3, 'rootpage_id' => '56' ), 'fileName' => array ( 'defaultToHTMLsuffixOnPrev' => 1, 'index' => array( 'page.html' => array( 'keyValues' => array ( 'type' => 0, ), ), 'print.html' => array( 'keyValues' => array ( 'type' => 98, ), ), ), ), 'fixedPostVarSets' => array( ), 'postVarSets' => array( '_DEFAULT' => array( // news archive parameters 'archive' => array( array( 'GETvar' => 'tx_ttnews[year]' , ) ), // news pagebrowser 'browse' => array( array( 'GETvar' => 'tx_ttnews[pointer]', ), ), // news categories 'select_category' => array ( array( 'GETvar' => 'tx_ttnews[cat]', ), ), 'period' => array ( array ( 'condPrevValue' => -1, 'GETvar' => 'tx_ttnews[pS]', //'valueMap => array() ), array ( 'GETvar' => 'tx_ttnews[pL]', //'valueMap => array() ), array ( 'GETvar' => 'tx_ttnews[arc]', 'valueMap' => array( 'non-archived' => -1, ), ), ), 'browse' => array ( array ( 'GETvar' => 'tx_ttnews[pointer]', ), ), 'select' => array ( array ( 'GETvar' => 'tx_ttnews[cat]', 'lookUpTable' => array ( 'table' => 'tt_news_cat', 'id_field' => 'uid', 'alias_field' => 'title', 'addWhereClause'=> 'AND NOT deleted', 'useUniqueCache'=> 1, 'useUniqueCache_conf' => array ( 'strtolower' => 1, 'spaceCharacter' => '-', ), ), ), ), 'article' => array( array ( 'GETvar' => 'tx_ttnews[backPid]', // 'valueMap => array( // ), ), array ( 'GETvar' => 'tx_ttnews[tt_news]', 'lookUpTable' => array ( 'table' => 'tt_news', 'id_field' => 'uid', 'alias_field' => 'title', 'maxLength' => 12, 'addWhereClause'=> 'AND NOT deleted', 'useUniqueCache'=> 1, 'useUniqueCache_conf' => array ( 'strtolower' => 1, 'spaceCharacter' => '-', ), ), ), ), ), ), );
Warning: Cannot modify header information - headers already sent by (output started at /home/mydomain.com/htdocs/typo3conf/realurl_conf.php:7) in /home/mydomain.com/htdocs/t3lib/class.t3lib_userauth.php on line 278

Warning: session_register() [function.session-register]: Cannot send session cache limiter - headers already sent (output started at /home/mydomain.com/htdocs/typo3conf/realurl_conf.php:7) in /home/mydomain.com/htdocs/typo3conf/ext/de_phpot/res1/phpot/class.tx_dephpot_phpopentracker_container.php on line 39

Warning: Cannot modify header information - headers already sent by (output started at /home/mydomain.com/htdocs/typo3conf/realurl_conf.php:7) in /home/mydomain.com/htdocs/typo3/sysext/cms/tslib/class.tslib_fe.php on line 3229

dolithe ·

hallo,

habe ein ähnliches problem:
auch bei mir kann ich nicht alle updates bei der realurl ext machen und habe die gleiche meldung in roter schrift.
Ein Database Analyzer Compare funktioniert auch nicht, weil es keine Änderungen nach Write changes gibt.

Außerdem kriege ich folgenden Fehler im Frontend sobald realurl installiert wurde:

t3lib_error_Exception

PHP Catchable Fatal Error: Argument 1 passed to tx_realurl::initDevLog() must be an array, boolean given, called in /is/htdocs/wp1172615_N6XMP3V6OW/www/t3e/typo3conf/ext/realurl/class.tx_realurl.php on line 193 and defined in /is/htdocs/wp1172615_N6XMP3V6OW/www/t3e/typo3conf/ext/realurl/class.tx_realurl.php line 202

Nach Deinstallation von realurl funktioniert es sofort wieder.

hmm - gibt es denn keine Lösungsmöglichkeit? Irgendetwas scheint doch die Datenbankkommunikation zu stören...

Unbekannter Benutzer ·

Soeben habe ich ein Upgrade von Typo3 Version 4.3.2 -> 4.3.3 durchgeführt. Das Datenbankproblem ist dabei noch schlimmer geworden. COMPARE ergibt eine noch grössere Anzahl Tabellen die updated werden sollten, die aber nicht können. Ich vermute, das Problem liegt bei einer veralteten mySQL-Version. Ich habe bei einem anderen Provider drei Typo3-Installationen die problemlos funktionieren. Hier die Versionsnummern beim jeweiligen Provider (links die problematische Typo3-Installation, rechts die drei funktionierenden):

MySQL-Version: 5.0.84 bzw. 5.1.42
phpMyAdmin Version: 2.11.9.5 bzw. 3.3.0
Server Version: 4.1.22-log bzw. 5.1.42-log

Was hast Du für Versionen? Vielleicht finden wir einen gemeinsamen Nenner?

Unbekannter Benutzer ·

Folgendes habe ich inzwischen herausgefunden:
MySQL-4 hat die Eigenschaft, dass Änderungen von varchar auf char nur dann durchgeführt werden, wenn ansonsten ebenfalls nur Objekte mit fixer Länge in der Tabelle vorhanden sind. Siehe auch
http://dev.mysql.com/doc/refman/5.0/en/silent-column-changes.html

Da bei cache_treelist neben VARCHAR ein TEXT-Feldd vorkommt wird die Umwandlung zwar angenommen aber MySQL-intern verworfen. Dieses Verhalten wurde in MySQL-5 dann geändert.

Technisch sollten beide DBs eigentlich mit Typo3 funktionieren. Typo3 ist diese Eigenschaft aber nicht bekannt und versucht dann erneut das Update durchzuführen.

Am besten exportiert man die DB mittels DB-Dump (vorher unnötige Tabellen wie syslog leeren und alle Tabellen optimieren). Erstellen einer neuen DB (MySQL5) und Importieren der Daten in die neue DB. Dann Typo3 umstellen auf die neue erstellte MySQL5-Datenbank.

Soweit die Theorie. Das werde ich jetzt mal in der Praxis ausprobieren.

dolithe · · Beste Antwort

Also bei mir hat bei der Datenbank ein Anruf bei Hosteurope geholfen (Produkt: Managed vServer L). Die haben dann die Datenbank von myisam auf innodb umgestellt und seitdem geht auch der compare durch.

Leider ist aber das realurl Problem geblieben.