Setup 4.6.15 'no database selected'

Gesperrt
JuePoe
Beiträge: 92
Registriert: Mi 27. Jul 2005, 13:02
Wohnort: Hamburg + Wendland
Kontaktdaten:

Setup 4.6.15 'no database selected'

Beitrag von JuePoe » Sa 30. Dez 2006, 18:01

Guten Tag,

Beim Setup der Ver. 4.6.15 erhalte ich regelmäßig die folgenden Fehlermeldungen:

Setuplog:
Setup was unable to execute SQL. MySQL-Error: 1046,
MySQL-Message: No Database Selected, SQL-Statements:

INSERT INTO con_keywords VALUES('1830', 'lilistrasse', '', '&3=1(CMS_HTML-1)', '', '2')Setup was unable to execute SQL. MySQL-Error: 1046, MySQL-Message: No Database Selected, ...
Der Server ist folgendermaßen konfiguriert:
PHP Version 4.4.4
System Linux d112.x-mailer.de 2.4.33.3 #2 SMP Wed Oct 18 01:21:58 CEST 2006 i686
Build Date Sep 25 2006 15:12:28
Vollständige Liste hier
MySql: Ver. 4.0.24

Da ich schon eine Reihe von Contenidos (Ver. 4.4.5) installiert habe, bin ich mit den Setup-Routinen (eigentlich) vertraut.

Kann jemand von euch diesen Fehler nachvollziehen? Ideen, woran das liegen kann?

Danke und beste Grüße an Euch Macher und das ganze Forum.
J. Pötschik
dialog im netz
dialog im netz Hamburg + Wendland

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 31. Dez 2006, 14:41

Nicht wirklich. Verfügt die Datenbank über einen ungewöhnlichen Namen?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

JuePoe
Beiträge: 92
Registriert: Mi 27. Jul 2005, 13:02
Wohnort: Hamburg + Wendland
Kontaktdaten:

Beitrag von JuePoe » Mo 1. Jan 2007, 17:21

Hallo und allen ein superschönes neues Jahr!
HerrB hat geschrieben:Verfügt die Datenbank über einen ungewöhnlichen Namen?
HerrB
Nicht wirklich: db432 und noch ein paar Ziffern.
Der Name wird vom Provider vorgegeben.

Beste Grüße
Jürgen Pötschik
dialog im netz Hamburg + Wendland

krusa
Beiträge: 5
Registriert: Fr 26. Nov 2004, 14:00
Kontaktdaten:

Beitrag von krusa » Fr 19. Jan 2007, 18:31

Hallo zusammen,
bei mir stellt sich bei der 15er Version das gleiche Phänomen ein (mit der Fehlermeldung in den Install-Logs).
Logischer Weise hat er auch keine Tabellen in der Datenbank angelegt.
Alle Angaben sind (meiner Meinung nach) korrekt gemacht worden.

Der Server bei meinem Provider (allinkl) hat:
PHP 4.4.4
MySQL 5
Linux
Apache

Bei den Vorgänger-Versionen gabs es diese(s) Problem(e) nicht.

Wenn ich es bei mir lokal unter MAMP installieren, da läufts ohne Probleme.

Zur Hülfe, wer weiß weiter?

JuePoe
Beiträge: 92
Registriert: Mi 27. Jul 2005, 13:02
Wohnort: Hamburg + Wendland
Kontaktdaten:

Beitrag von JuePoe » Fr 19. Jan 2007, 22:12

Datei /setup/lib/functions.mysql.php
Diesen Code

Code: Alles auswählen


function checkMySQLDatabaseCreation ($db, $database)
{
	if (checkMySQLDatabaseExists($db, $database))
	{
		return true;	
	} else {
	
		$db->query("CREATE DATABASE $database");
		
		if ($db->Errno != 0)
		{
			return false;	
		} else {
			return true;
		}
	}
} 

ersetzen durch:

Code: Alles auswählen

function checkMySQLDatabaseCreation ($db, $database)
{
		return true;
}
Erklärung:
Das Setup versucht, probeweise eine DB zu erstellen. Dazu haben wir oft nicht die entsprechenden Rechte, daher scheitert der Test.
Da dies bei den meisten Providern die Regel sein dürfte, würde ich den verehrten Programmierern nahelegen, diesen Test wieder dauerhaft zu entfernen.
Beste Grüße
Jürgen[/code]
Zuletzt geändert von JuePoe am Fr 2. Feb 2007, 15:47, insgesamt 1-mal geändert.
dialog im netz Hamburg + Wendland

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Sa 20. Jan 2007, 10:21

JuePoe hat geschrieben:Das Setup versucht, probeweise eine DB zu erstellen. Dazu haben wir oft nicht die entsprechenden Rechte, daher scheitert der Test.
Da dies bei den meisten Providern die Regel sein dürfte, würde ich den verehrten Programmierern nahelegen, diesen Test wieder dauerhaft zu entfernen.
Als erstes prüft das Setup über "checkMySQLDatabaseExists($db, $database)" ob die Datenbank existiert, erst danach wird versucht, eine Datenbank anzulegen. Das hört sich für mich ziemlich sinnvoll an.

krusa
Beiträge: 5
Registriert: Fr 26. Nov 2004, 14:00
Kontaktdaten:

Beitrag von krusa » Sa 20. Jan 2007, 11:23

JuePoe hat geschrieben:Datei /setup/lib/functions.mysql.php
Diesen Code

Code: Alles auswählen


function checkMySQLDatabaseCreation ($db, $database)
{
	if (checkMySQLDatabaseExists($db, $database))
	{
		return true;	
	} else {
	
		$db->query("CREATE DATABASE $database");
		
		if ($db->Errno != 0)
		{
			return false;	
		} else {
			return true;
		}
	}
} 

löschen oder auskommentieren.
Erklärung:
Das Setup versucht, probeweise eine DB zu erstellen. Dazu haben wir oft nicht die entsprechenden Rechte, daher scheitert der Test.
Da dies bei den meisten Providern die Regel sein dürfte, würde ich den verehrten Programmierern nahelegen, diesen Test wieder dauerhaft zu entfernen.
Beste Grüße
Jürgen
Das war des Rätsels Lösung.
Ich kann mich entsinnen, dass ich sowas in der Art schonmal machen musste (wusste aber halt nimmer genau was und wo). Allerdings war damals in einer früheren Version das Problem, dass das Setup erst garnicht bis zur Installationsbalkenseite gekommen ist, sondern schon vorher eine Fehlermeldung vonwegen fehlerhafte DB-Verbindung oder so brachte...

Auf jeden Fall gehts jetzt
Thx

JuePoe
Beiträge: 92
Registriert: Mi 27. Jul 2005, 13:02
Wohnort: Hamburg + Wendland
Kontaktdaten:

Beitrag von JuePoe » Fr 2. Feb 2007, 17:06

Dodger77 hat geschrieben:Als erstes prüft das Setup ... ob die Datenbank existiert,
Das ist sehr sinnvoll. Ja.
Dodger77 hat geschrieben:erst danach wird versucht, eine Datenbank anzulegen
Wieso noch eine weitere? Das halte ich für Unsinn.
Stattdessen könnte das Script testen, ob es eine Tabelle in der vorhandenen DB anlegen kann.
Beste Grüße
Jürgen
dialog im netz Hamburg + Wendland

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Fr 2. Feb 2007, 17:29

JuePoe, bitte mit dem Code auseinandersetzen.

Es wird geprüft, ob die DB existiert. Und wenn nicht, wird versucht, sie anzulegen. Logisch, dass man nicht probiert, eine DB anzulegen, wenn schon eine da ist.

Die Überprüfung, ob die DB bereits existiert, erfolgt über

Code: Alles auswählen

$db->query("SHOW DATABASES LIKE '$database'");
offensichtlich scheitert dies - vermutlich aufgrund fehlender Rechte (SHOW DATABASES ist IMHO ein extra Recht).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Vince
Beiträge: 122
Registriert: So 6. Mär 2005, 12:53
Kontaktdaten:

Beitrag von Vince » Fr 2. Feb 2007, 17:41

Hi,

hab gerade 4.6.15 installiert und das gleiche Problem. Hab mich eh gewundert, warum das so schnell durchlief, ein Blick in die DB sagte dann alles 8)

Nach Editieren der functions.mysql.php gemäß Jürgens Posting klappte alles bestens.

Soweit ich das gesehen habe, zumindest bei all-inkl.de, darf eine DB ausschließlich über das dortige Administrationstool angelegt werden.
Meine anderen genutzten Scripte schreiben auch stets in eine bestehende DB oder fragen ab, in welche DB die Tabellen rein sollen.

Evtl. sollte das im Contenido-Setup dementsprechend geändert werden.

IMHO :wink:

Vince

JuePoe
Beiträge: 92
Registriert: Mi 27. Jul 2005, 13:02
Wohnort: Hamburg + Wendland
Kontaktdaten:

Beitrag von JuePoe » Fr 2. Feb 2007, 17:43

Hallo, Björn,
HerrB hat geschrieben:...offensichtlich scheitert dies - vermutlich aufgrund fehlender Rechte (SHOW DATABASES ist IMHO ein extra Recht).
Leider ändert das nichts an der Sinnhaftigkeit einer solchen Prüfung.
Wenn ich das Recht "Lock_tables" beim Provider beantrage, damit C. überhaupt funktioniert, mach ich das. Aber ein Recht beantragen, NUR damit eine Prüfung durchläuft?
Soll jeder selbst entscheiden.

Ich bleibe dabei: Lasse das Script prüfen, ob es in der eingetragenen DB eine Tabelle anlegen kann. Genau das ist, was C. benörigt.

Freundliche Grüße
Jürgen
dialog im netz Hamburg + Wendland

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Fr 2. Feb 2007, 17:55

JuePoe hat geschrieben:Wieso noch eine weitere? Das halte ich für Unsinn.
Sehr lustig. :roll:
Natürlich wird versucht, genau die Datenbank anzulegen, die man angegeben hat, sofern die Datenbank nicht bereits existiert. Dass die Überprüfung ob die DB existiert durch "SHOW DATABASES" erfolgt, sollte man evtl. ändern.

Gesperrt