Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 07. März 2014 22:47
- joeking
- hat von CMS/ms gehört
- Ort: Torgau
- Registriert: 08. August 2011
- Beiträge: 6
[GELÖST] Fehler nach Änderung des Datenbank-Präfixes
Hallo Cmsms-Gemeinde.
Ich muss mal einen Hilferuf starten.
Bin mit 2 Projekten zu einen neuem Provider gezogen.
Bei beiden Projekten ist nach dem Umzug jeweils nur die Startseite zu sehen, alles andere fehlt.
Unter Inhalte->Seiten findet man gar nichts, dafür im Systemprotokoll für jede Seite einen Fehler "failed to get content for valid content id xx"
Systeminfo -> alles ok
Cache löschen, Seitenhierarchie aktualisieren (hier wird die Anzahl der Seiten angezeigt) -> bringt alles nichts
Ein System auf akt. version geupdatet -> kein Erfolg
Datenbank angeschaut -> sieht ok aus, aber nicht viel Ahnung im Zusammenhang mit cmsms??
Module:
CMSMailer 5.2.2
CMSPrinting 1.0.5
FileManager 1.4.4
MenuManager 1.8.6
MicroTiny 1.2.6
ModuleManager 1.5.5
ThemeManager 1.1.8
TinyMCE 2.9.12
Captcha 0.4.6
FormBuilder 0.7.3
PHP-Version: 5.3 im CGI-Modus
mysql: 5.1.73 (da weiß ich nicht, mit welcher Version das vorher lief?) -> doch, 5.5
Ok, hat jemand eine Idee oder Hinweis wie dem Problem beizukommen ist?
Danke schon mal im Voraus!
Beitrag geändert von joeking (07. März 2014 22:56)
Offline
#2 08. März 2014 07:33
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.017
- Webseite
Re: [GELÖST] Fehler nach Änderung des Datenbank-Präfixes
Willkommen im Forum!
Wie genau hast du den Umzug durchgeführt. Die Fehlermeldung klingt, als ob da etwas schief gegangen wäre...
Offline
#3 08. März 2014 13:22
- joeking
- hat von CMS/ms gehört
- Ort: Torgau
- Registriert: 08. August 2011
- Beiträge: 6
Re: [GELÖST] Fehler nach Änderung des Datenbank-Präfixes
Hallo cyberman
und danke für die schnelle Reaktion.
Die Ursache hab ich inzwischen gefunden, die Lösung allerdings noch nicht.
Ich habe im Zusammenhang mit dem Umzug die DB-Tabellen mit einem Prefix versehen.
config.php natürlich entspr. angepasst.
Das ist definitiv die Ursache für den Effekt, mach ich das rückgängig, ist's ok.
Den Prefix hätte ich aber gern, um mehrere (kleinere) Projekte in einer DB zu halten.
Den Installationsassistent hab ich auch schon noch mal drüber laufen lassen (prefix angegeben), aber dabei wird ja die DB nicht geändert. Es muss also in der DB irgendwas geben, was den Prefix mit speichert.
Gefunden hab ich allerdings nichts ...
Offline
#4 08. März 2014 13:39
- Cherry
- arbeitet mit CMS/ms
- Registriert: 15. Dezember 2010
- Beiträge: 529
Re: [GELÖST] Fehler nach Änderung des Datenbank-Präfixes
Den DB Prefix gibt man in der config.php an:
$config['db_prefix'] = 'cms_';
da kannst du ihn entsprechend ändern, wie du ihn brauchst.
Danach CMSms Cache leeren.
Dann sollte das funktionieren.
Beitrag geändert von Cherry (08. März 2014 13:39)
Offline
#5 08. März 2014 14:15
- joeking
- hat von CMS/ms gehört
- Ort: Torgau
- Registriert: 08. August 2011
- Beiträge: 6
Re: [GELÖST] Fehler nach Änderung des Datenbank-Präfixes
Ja danke Cherry,
aber genau das fkt. eben nicht.
Offline
#6 10. März 2014 00:11
- joeking
- hat von CMS/ms gehört
- Ort: Torgau
- Registriert: 08. August 2011
- Beiträge: 6
Re: [GELÖST] Fehler nach Änderung des Datenbank-Präfixes
Offline
#7 10. März 2014 13:36
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.435
Re: [GELÖST] Fehler nach Änderung des Datenbank-Präfixes
Das Problem liegt an den Indizes der Tabellen.
Für den Indexnamen wird in einigen Tabellen das Tabellenpräfix mit verwendet. (keine Ahnung wieso)
Ändert man das Tabellenpräfix, passen diese Indizes nicht mehr.
Dadurch schlagen SQL-Abfragen fehl wie z.B.
$query = 'SELECT * FROM '.cms_db_prefix().'content FORCE INDEX ('.cms_db_prefix().'index_content_by_idhier)';
Denn es gibt keinen Index mit dem neuen Tabellenpräfix.
(hätte im Debug-Modus eigentlich sofort auffallen müssen)
Optimieren/Reparieren der Tabelle oder Cache löschen bringt hier leider auch keine Lösung. Die Indizes müssen neu angelegt/umbenannt werden. Dazu folgendes Script als UDT speichern und im Backend ausführen (vorher im Code das alte Tabellenpräfix angeben):
$old_db_prefix = "cms_"; // change this to match your own OLD db prefix
$db =& cmsms()->GetDb();
$dbresult = $db->Execute("SHOW TABLES LIKE '" . cms_db_prefix() . "%'");
$tables = array();
while($dbresult && $row = $dbresult->FetchRow())
$tables = array_merge($tables, array_values($row));
foreach($tables as $t)
{
$dbresult = $db->Execute("SHOW INDEX FROM `$t` WHERE `Key_name` LIKE '" . $old_db_prefix . "%'");
$indizes = array();
if(version_compare(mysql_get_server_info(), "5.7", ">="))
{
while($dbresult && $row = $dbresult->FetchRow())
$db->Execute("ALTER TABLE `$t` RENAME INDEX `" . $row['Key_name'] . "` TO '" . cms_db_prefix() . substr($row['Key_name'], strlen($old_db_prefix)) . "'");
continue;
}
while($dbresult && $row = $dbresult->FetchRow())
$indizes[$row['Key_name']][] = $row['Column_name'];
foreach($indizes as $k => $v)
{
$new_index = cms_db_prefix() . substr($k, strlen($old_db_prefix));
$db->Execute("ALTER TABLE `$t` DROP INDEX `" . $k . "`");
$db->Execute("ALTER TABLE `$t` ADD INDEX `" . $new_index . "` (`" . implode("`,`", $v) . "`)");
}
}
EDIT 1:
Hab dan code mal noch abgeändert, falls jemand mehrere CMS Instanzen in einer Datenbank hat.
EDIT 2:
Man könnte natürlich auch einfach die Tabellen exportieren das SQL-Skript ändern und wieder importieren.
Aber da muss man wissen was man wo wie ändern muss.
Momentan scheint es sich nur auf die Tabelle "content" zu beschränken.
Aber wer weiß, wie das in Zukunft aussieht.
Ich hab jedenfalls keine Lust, immer im Code rumwühlen zu müssen um herauszufinden welche Indizes man ggfs. wie ändern muss.
EDIT 3:
Hab grad noch einen kleinen peinlichen Fehler mit der DB-Version korrigiert.
(Hatte dummerweise die AdoDB Version anstelle der MySQL Version verglichen )
Beitrag geändert von NaN (11. März 2014 12:55)
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#8 11. März 2014 13:04
- joeking
- hat von CMS/ms gehört
- Ort: Torgau
- Registriert: 08. August 2011
- Beiträge: 6
Re: [GELÖST] Fehler nach Änderung des Datenbank-Präfixes
Hallo Nan,
und vielen Dank für die Lösung des Problems.
Ja, man sieht es auch im Debug-Modus (hätte man von einem solchen gewusst ...)
Das Skript (erste Version) lief mit einer kleinen Einschränkung:
Die "$db->Execute("ALTER TABLE ..." Anweisung in der Version >=5.7 Abfrage gefiel dem Parser im CMSMS nicht -> ließ sich nicht speichern.
Hab's nicht weiter analysiert, da für meinen Fall keine Bedeutung.
Auf jeden Fall sind jetzt 3 kleinere Projekte mit Prefix in eine DB gezogen und alles fkt. wie gehabt.
Offline
#9 11. März 2014 13:11
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.435
Re: [GELÖST] Fehler nach Änderung des Datenbank-Präfixes
Das Skript (erste Version) lief mit einer kleinen Einschränkung:
Ja, da fehlte am Ende der Zeile eine Klammer
Habs korrigiert.
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#10 11. März 2014 14:02
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.017
- Webseite
Re: [GELÖST] Fehler nach Änderung des Datenbank-Präfixes
man sieht es auch im Debug-Modus (hätte man von einem solchen gewusst ...)
Ein bisschen musst du dich schon mit der Dokumentation beschäftigen. Und die Referenz für die config.php ist bei CMSMS im /doc Verzeichnis immer mit dabei .
Offline
#11 11. März 2014 16:57
- joeking
- hat von CMS/ms gehört
- Ort: Torgau
- Registriert: 08. August 2011
- Beiträge: 6
Re: [GELÖST] Fehler nach Änderung des Datenbank-Präfixes
Ja, ich sehe den erhobenen Zeigefinger und gelobe Besserung!
Deine Signatur ist schon ok!
Danke noch mal allen Beteiligten für die schnelle Hilfe.
Offline
Seiten: 1