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

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Dann fangen wir mal von vorne an: Ist MySQL denn installiert und im Suchpfad?
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Falls das die Frage war.
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

ja mysql ist installiert aber suchpfad? was meinst du damit?
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Den Suchpfad. Den Pfad (oder vielmehr: Die Pfade) in dem das Betriebssystem nach dem Programm sucht.
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

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.
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

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.
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

dann muss ich das Modul zuerst importieren oder was muss ich machen?
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

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.
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

also ich benutze keine Windoof, sondern einen MAC entschuldige habe vorher vergessen zu erwähnen.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Was zeigt das Terminal, wenn Du

Code: Alles auswählen

$ which mysql
eingibst?
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

gar nichts. einfach leer.
BlackJack

@kostonstyle: Dann ist das Programm nicht installiert oder nicht im Pfad.
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

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?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

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$ 
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Scheint so, als ob Python entweder nicht installiert ist oder nicht im PATH vorhanden ist.
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

ist PATH ein programm pointer?
Antworten