… meinem Linux-Server eine MySql-Datenbank erstellen, einen User für die Datenbank anlegen, und danach Daten in die Datenbank schreiben.
Ich stelle eine Verbindung mit Root und Passwort zum Server her. So weit hat es funktioniert keine Fehlermeldung!.
Create Database mit der vorhandenen Verbindungskennung. Keine Fehlermeldung, aber die Datenbank wurde nicht erstellt, denn ich kann sie über PLESK nicht sehen.
Da alles in einen Script laufen soll, kommt gleich danach der User. Keine Fehlermeldung, aber der User wurde nicht erstellt. Jetzt kommen die Daten in die Datenbank. Auch keine Fehlermeldung, und natürlich keine Daten, wo auch!
Da das Script so angelegt ist, dass bei einem Fehler die Ausführung abgebrochen wird, es aber keine Fehler gibt, läuft das Script durch ohne Fehler und ohne Ergebnis.
Woran kann das liegen? Der User ist Root, der muss doch alle Rechte haben.
Entwickelt habe ich das Script unter Windows xammp und es läuft ohne Probleme. Doch die Portierung auf den Linux-Server funktioniert nicht.
Hat da jemand eine zündende Idee, oder das Wissen?
Jede Idee ist gut!
$this->kennung = mysql_connect(„localhost“,„root“,„pass“) or die(mysql_errno($this->kennung);
$this->sql = „CREATE DATABASE IF NOT EXISTS „.$this->DB.““;
$db_res1 = mysql_query($this->sql,this->$kennung);
$this->sql = „CREATE USER '“.$this->User."’@’".$this->DB."’ IDENTIFIED BY „.$this->Code.“";
$db_res2 = mysql_query($this->sql,$this->kennung);
$db_res1 und $db_res2 werden zwischendurch ausgewertet ob true o. false und dann erfolgt Abbruch o. Weiter.
Danach kommen die Daten mit INSERT. Ist jetzt aber nicht so wichtig.
Wie gesagt, unter Windows Vista Business läuft alles ohne Probleme.
Ok, ich vermute mal, das die Default-Storage-Engine eine andere ist, möglicherweise sowas wie MEMORY?
Die kann man direkt beim anlegen für die laufende Session mit angeben:
SET storage_engine=MyISAM;
Wenn die Inserts gelaufen sind, können denn die Werte auch wieder mit Select abgerufen werden? Also direkt nach dem Insert?
Weiterer Ansatz wäre, explizit nach dem anlegen USE $this->DB zu setzen.
Da die Prüfung auf Fehler in deinem Codeschnippsel nicht dabei: Prüfst du auf Erfolg "if ($db_res1 ) " oder Fehler „if( ! $db_res1)“?
mysql_query liefert nicht für alle Abfragen TRUE
(siehe http://www.php.net/manual/de/function.mysql-query.php)
$this->kennung = mysql_connect(„localhost“,„root“,„pass“) or die(mysql_errno($this->kennung);
$this->sql = „CREATE DATABASE IF NOT EXISTS „.$this->DB.““;
$db_res1 = mysql_query($this->sql,this->$kennung);
$this->sql = „CREATE USER '“.$this->User."’@’".$this->DB."’ IDENTIFIED BY „.$this->Code.“";
$db_res2 = mysql_query($this->sql,$this->kennung);
$db_res1 und $db_res2 werden zwischendurch ausgewertet ob true o. false und dann erfolgt Abbruch o. Weiter.
Danach kommen die Daten mit INSERT. Ist jetzt aber nicht so wichtig.
Wie gesagt, unter Windows Vista Business läuft alles ohne Probleme.
ich hab mich mal mit PuTTy mit meinem Server verbunden und unter /var/lib/mysql etwas erstaunliches gesehen. Alle Datenbanken die ich zum Test angelegt habe, ob über PLESK oder PHP-Script sind dort vorhanden. Nur das ich die mit PHP-Script erstellten DB’s in PLESK nicht sehen kann. Warum?
Schon etwas her das ich mit plesk gearbeitet habe, soweit ich mich erinnern kann hat der User mit dem sich plesk auf die Datenbank verbindet nur zugriff auf bestimmte Datenbank vor allem nur Datenbanken die plesk kennt.
Installiere dir mal adminer oder phpmysql und log doch mal darüber mit deinen root Daten ein.
Gute Frage. Möglicher Weise ist das ein Versions-Konflikt. Ich habe keine Ahnung, welche Versionen von PHP-, Apache- und (My)SQL-Server Dein XAMPP benutzt und welche Deine Linux-Distro.
Wenn Du das erstmal auflösen kannst, ob das evtl. daran liegt (ggf. updaten), kann man mal weitersehen.
Hallo, das müsste man sich direkt auf dem Server ansehen.
Normalerweise müßte die DB angelegt werden können.
Falls ich mir das ansehen soll bitte eine PN senden.
die Datenbanken wurden tatsächlich alle angelegt. Ich hab sie unter var/lib/mysql gefunden. Doch meine Frage ist jetzt: da ich zu jeder Datenbank einen User angelegt habe (mit eigenem Passwort) weiß ich jetzt nicht ob diese User wirklich vorhanden sind. Soweit ich weiß sind die User in der Datenbank mysql abgelegt, doch wie komme ich da ran?