Seite 1 von 2

Error: You appear not to have the 'mysql' program installed

Verfasst: Freitag 18. Dezember 2009, 11:53
von kostonstyle
Hallo miteinander
Für die Webprogrammierung benutze Django-Framework. Nun möchte ich die Eigenschaft eines Models ändern.
Zum Beispiel
Vorher:

Code: Alles auswählen

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publisher_date = models.DateField() 
Nachher

Code: Alles auswählen

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publisher_date = models.DateField(blank=True, null=True)
Wie ich mitbekommen habe, setzt Django die Änderung von Eigenschaften nicht automatisch um. Man muss mit dem Befehl

Code: Alles auswählen

python manage.py dbshell
in der Console schreiben und danach die ergebenen SQL Befehle selber ausführen.
Bei mir erscheint nicht das MYSQL Befehl sondern folgende Fehlermeldung.

Code: Alles auswählen

Error: You appear not to have the 'mysql' program installed or on your path.
Danke kostonstyle

Verfasst: Freitag 18. Dezember 2009, 12:44
von cofi
Dann fangen wir mal von vorne an: Ist MySQL denn installiert und im Suchpfad?

Verfasst: Freitag 18. Dezember 2009, 12:50
von Pekh
Falls das die Frage war.

Verfasst: Freitag 18. Dezember 2009, 13:50
von kostonstyle
ja mysql ist installiert aber suchpfad? was meinst du damit?

Verfasst: Freitag 18. Dezember 2009, 13:53
von Pekh
Den Suchpfad. Den Pfad (oder vielmehr: Die Pfade) in dem das Betriebssystem nach dem Programm sucht.

Verfasst: Freitag 18. Dezember 2009, 14:04
von kostonstyle
wie finde den das?
die verbindung und daten lesen von MYSQL klappt ohne Probleme.

Code: Alles auswählen

try:
    conn = MySQLdb.connect (host = "127.0.0.1",
                        user = "webdev",
                        passwd = "littlebit",
                        db = "web")
    cursor = conn.cursor()
    cursor.execute ("""SELECT id, data FROM example""")
    row = cursor.fetchall()
    for r in row:
        print(r)
    cursor.close()
    conn.close()
except MySQLdb.Error, e:
    print "Error %d: %s" % (e.args[0], e.args[1])
    sys.exit(1)
Auch django arbeitet problemlos mit MYSQL.

Verfasst: Freitag 18. Dezember 2009, 14:11
von Pekh
Du mußt zwischen dem MySQL-Server, den du in Python über die DB-API (Modul mysqldb) ansprichst, und dem MySQL-Client ('mysql'), den du in der Shell benutzen würdest, unterscheiden.

Letzteres muß nicht unbedingt installiert oder zugänglich sein, um den Server zu betreiben.

Verfasst: Freitag 18. Dezember 2009, 14:13
von kostonstyle
dann muss ich das Modul zuerst importieren oder was muss ich machen?

Verfasst: Freitag 18. Dezember 2009, 14:19
von Pekh
Es geht nicht um das Modul. Das funktioniert ja scheinbar. Aber er findet das Programm mysql (also den Client) nicht. Also ist es entweder nicht installiert, nicht im Suchpfade eingetragen oder du hast keine Zugangsberechtigung dafür. Das hat mit Python oder Django nix zu tun.

Verfasst: Freitag 18. Dezember 2009, 14:23
von /me
kostonstyle hat geschrieben:wie finde den das?
die verbindung und daten lesen von MYSQL klappt ohne Probleme.
[...]
Auch django arbeitet problemlos mit MYSQL.
Es besteht ein Unterschied ob du auf laufende Dienste zugreifst oder ob du ein Programm aufrufen möchtest.

Ich gehe mal davon aus, dass du erstens dein Problem unter Windows hast und zweitens wenig Ahnung davon, was das System unterhalb der bunten Bildchen tatsächlich tut.

Als erstes benötigst du mal die Kommandozeile. Erreichbar ist sie über Start->Ausführen, die Eingabe von cmd und einem Klick auf OK. Wenn du jetzt set PATH eingibst werden dir alle Verzeichnisse angezeigt in denen das Betriebssystem nach Befehlen sucht bei denen nicht explizit der Aufrufpfad angegeben ist. Prüfe mit Bordmitteln (Suche via Explorer) in welchem Pfad das Programm mysql liegt (das Programm, nicht die Installation!) und ob dieser Pfad in der Liste steht die du dir auf der Kommandozeile hast ausgeben lassen. Falls das der Fall ist, dann haben wir hier ein ganz merkwürdiges Problem was wir näher klären müssen. Falls nicht, dann geht es im nächsten Schritt weiter.

Klick auf dem Windows-Desktop das Arbeitsplatz-Icon mit der rechten Maustaste an. Wähle im Kontextmenü Eigenschaften, gehe auf den Reiter Erweitert und klicke dort auf Umgebungsvariablen. Bearbeite dann den Wert der Variablen PATH indem du durch ein Semikolon getrennt den Pfad angibst in dem sich das Programm mysql befindet. Nach Aufruf einer neuen Kommandozeile sollte der Wert dann dort auch in der Umgebung vorhanden sein und ein Aufruf von mysql sollte dort auch funktionieren. Ob andere Programme das sofort mitbekommen weiß ich nicht, im Zweifelsfall ist windows-typisch das komplette System neu zu booten.

Verfasst: Freitag 18. Dezember 2009, 15:01
von kostonstyle
also ich benutze keine Windoof, sondern einen MAC entschuldige habe vorher vergessen zu erwähnen.

Verfasst: Freitag 18. Dezember 2009, 15:12
von CM
Was zeigt das Terminal, wenn Du

Code: Alles auswählen

$ which mysql
eingibst?

Verfasst: Freitag 18. Dezember 2009, 16:49
von kostonstyle
gar nichts. einfach leer.

Verfasst: Freitag 18. Dezember 2009, 20:23
von BlackJack
@kostonstyle: Dann ist das Programm nicht installiert oder nicht im Pfad.

Verfasst: Freitag 18. Dezember 2009, 22:00
von kostonstyle
welches programm muss ich installieren mysql ist doch installiert. oder wo kann ich den path eintragen?
das hier habe auf der django seite gefunden

Code: Alles auswählen

dbshell¶

django-admin.py dbshell¶

Runs the command-line client for the database engine specified in your DATABASE_ENGINE setting, with the connection parameters specified in your DATABASE_USER, DATABASE_PASSWORD, etc., settings.

    * For PostgreSQL, this runs the psql command-line client.
    * For MySQL, this runs the mysql command-line client.
    * For SQLite, this runs the sqlite3 command-line client.

This command assumes the programs are on your PATH so that a simple call to the program name (psql, mysql, sqlite3) will find the program in the right place. There's no way to specify the location of the program manually.
so kommen wir die sachen einbisschen näher, das mysql programm befindet sich im pfad /usr/local/mysql/bin nun wo muss ich diesen pfad eingeben?

Verfasst: Freitag 18. Dezember 2009, 22:29
von cofi

Code: Alles auswählen

PATH=PATH:/usr/local python manage.py dbshell
Abhaengig von deiner Shell kannst du das auch exportieren, mit der Bash/Zsh zb per

Code: Alles auswählen

export PATH=PATH:/usr/local

Verfasst: Samstag 19. Dezember 2009, 00:54
von Leonidas
cofi hat geschrieben:

Code: Alles auswählen

PATH=PATH:/usr/local python manage.py dbshell
Abhaengig von deiner Shell kannst du das auch exportieren, mit der Bash/Zsh zb per

Code: Alles auswählen

export PATH=PATH:/usr/local
``PATH:/usr/local/mysql/bin`` klingt mir angesichts des vom OP berichteten Pfades sinnvoller.

Verfasst: Samstag 19. Dezember 2009, 20:21
von kostonstyle
was muss ich genau machen
habe folgendes ausprobiert

Code: Alles auswählen

Develops-MacBook-Pro:~ develop$ PATH=PATH:/usr/local/mysql/bin python manage.py dbshell
-bash: python: command not found
Develops-MacBook-Pro:~ develop$ cd /Volumes/Develop/web
Develops-MacBook-Pro:web develop$ PATH=PATH:/usr/local/mysql/bin python manage.py dbshell
-bash: python: command not found
Develops-MacBook-Pro:web develop$ 

Verfasst: Samstag 19. Dezember 2009, 20:27
von derdon
Scheint so, als ob Python entweder nicht installiert ist oder nicht im PATH vorhanden ist.

Verfasst: Samstag 19. Dezember 2009, 21:17
von kostonstyle
ist PATH ein programm pointer?