MySQLdb - Fehler

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
andreaszdw
User
Beiträge: 24
Registriert: Donnerstag 12. Oktober 2006, 07:28

Hallo folgende Code habe ich auf einem Server im cgi-bin:

Code: Alles auswählen

#!/usr/bin/python
import cgi
import _mysql

print "Content-type: text/html"
print

db=_mysql.connect(host="localhost", user="XXXX", passwd="XXXX", db="XXXX")
Leider funktioniert dieses Programm nicht.

Weiß jemand warum?

MfG
Andreas
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Definiere "funktioniert nicht". Davon ab, dass da auch überhaupt keine Ausgabe erzeugt wird, kann es an der Konfiguration des Webservers, falschen Zeilenumbrüchen, einem fehlenden Modul oder sonstwas liegen.

MySQLdb importiert man übrigens als 'MySQLdb', du dagegen nur einen Teil in Form eines nativ kompilierten Moduls. Tutorials dazu liefert Google (z.B. welche bei DevShed.com).
andreaszdw
User
Beiträge: 24
Registriert: Donnerstag 12. Oktober 2006, 07:28

Also wenn ich jetzt z. B. noch diese Ausgabe anhänge,

Code: Alles auswählen

print "hallo"
wird auch nichts angezeigt.

Ich hatte schon etwas mehr Code, bis zur obigen Ausgabe konnte ich jedoch den Fehler verfolgen. Das heißt ab _mysql.connect, tritt der Fehler auf.

Der Fehler äußert sich darin, dass im Browser keine Ausgabe startet.

MfG
Andreas
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

[wiki]Web-Skripte zum Laufen bringen[/wiki] :lol:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
andreaszdw
User
Beiträge: 24
Registriert: Donnerstag 12. Oktober 2006, 07:28

Hallo,

warum klappt das nicht:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import sys, os

import cgitb; cgitb.enable() 
import MySQLdb

print "Content-Type: text/html; charset=utf-8\n"
print "<h1>Hello MySQLdb</h1>"

conn = MySQLdb.connect(host='localhost', user='xxxxxxx', passwd='xxxxxx', db='xxxxxxx')

cursor = conn.cursor ()
cursor.execute ("SELECT VERSION()")
row = cursor.fetchone ()
print "server version:", row[0]
cursor.close ()
conn.close ()
Skripte ohne Datenbank funktionieren.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

andreaszdw hat geschrieben:warum klappt das nicht:
Steht im ``error.log``. Magst du da mal reinschauen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
andreaszdw
User
Beiträge: 24
Registriert: Donnerstag 12. Oktober 2006, 07:28

Hallo,

wo finde ich die error.log?

MfG
Andreas
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Das hängt von deinem Server ab. Bei mir ist sie in ``/var/log/lighttpd/error.log``.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

andreaszdw hat geschrieben:warum klappt das nicht:
Was klappt nicht genau??? Erhältst du ein Traceback von cgitb? Wenn ja, dann posten ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
andreaszdw
User
Beiträge: 24
Registriert: Donnerstag 12. Oktober 2006, 07:28

Hallo,

hier ist ein Auszug aus der error_log:

[Tue Jul 24 21:17:23 2007] [error] [client 84.63.181.165] PythonHandler mod_python.cgihandler: Traceback (most recent call last):
[Tue Jul 24 21:17:23 2007] [error] [client 84.63.181.165] PythonHandler mod_python.cgihandler: File "/usr/lib/python2.3/site-packages/mod_python/apache.py", line 299, in HandlerDispatch\n result = object(req)
[Tue Jul 24 21:17:23 2007] [error] [client 84.63.181.165] PythonHandler mod_python.cgihandler: File "/usr/lib/python2.3/site-packages/mod_python/cgihandler.py", line 96, in handler\n imp.load_module(module_name, fd, path, desc)
[Tue Jul 24 21:17:23 2007] [error] [client 84.63.181.165] PythonHandler mod_python.cgihandler: File "/var/www/web526/html/cgi-bin/testmysql.py", line 15, in ?\n conn = MySQLdb.connect(host='localhost', user='xxxxx', passwd='xxxx', db='xxxx')
[Tue Jul 24 21:17:23 2007] [error] [client 84.63.181.165] PythonHandler mod_python.cgihandler: File "/usr/lib/python2.3/site-packages/MySQLdb/__init__.py", line 66, in Connect\n return Connection(*args, **kwargs)
[Tue Jul 24 21:17:23 2007] [error] [client 84.63.181.165] PythonHandler mod_python.cgihandler: File "/usr/lib/python2.3/site-packages/MySQLdb/connections.py", line 151, in __init__\n self.converter[types.StringType] = string_literal
[Tue Jul 24 21:17:23 2007] [error] [client 84.63.181.165] PythonHandler mod_python.cgihandler: TypeError: object does not support item assignment

Was ist da los?

Der Fehler kommt nur bei Skripten mit MySQLdb, andere Skripte laufen.

MfG
Andreas
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

andreaszdw hat geschrieben:Was ist da los?

Der Fehler kommt nur bei Skripten mit MySQLdb, andere Skripte laufen.
So wie ich das sehe, scheint das ein Problem von MySQLdb zu sein.

Mach doch mal ein Skript, in dem die Version von MySQLdb angezeigt wird, etwa so:

Code: Alles auswählen

print MySQLdb.version_info
Was zeigt es an? 0.9.2?

Kannst du MySQLdb aktualisieren oder es aktualisieren lassen? Der Autor von MySQLdb, Andy Dustman hat auf django-users dazu etwas geschrieben, er empfiehlt auch, es zu aktualisieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
andreaszdw
User
Beiträge: 24
Registriert: Donnerstag 12. Oktober 2006, 07:28

Hallo,

wenn ich die Version wie folgt abfragen:

Code: Alles auswählen

print MySQLdb.version_info
bekomme ich folgende Meldung:

(1, 2, 1, 'gamma', 2)

Mfg
Andreas
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

1.2.1 scheint jetzt gar nicht mal so alt zu sein. Du könntest aber trotzdem mal 1.2.2 versuchen. :?

Wie wurde denn das MySQLdb installiert? Der Autor schreibt ja, dass es meistens ein Setup-Problem ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten