Thread query wird nicht ausgeführt (8 answers)
Opened by plautzenpa at 2008-01-08 17:45

nepos
 2008-01-09 15:00
#104539 #104539
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Du hast dir anscheinend die Doku nicht genau durchgelesen :)
Der Aufruf von trace() setzt das Trace-Level und liefert das alte Level als Wert zurück.
Wenn das Trace-Level ungleich 0 ist, gibt dir DBI je nach Level mehr oder weniger Informationen aus.
Du packst also einfach den Aufruf von trace() vor deine SQL-Aufrufe dazu. Dann sollten auf STDERR die entsprechenden Trace-Meldungen auflaufen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
my $tabelle = shift;

# Neue Spalten hinzufügen
$sql = "ALTER TABLE $tabelle ADD _email_first_part VARCHAR( 255 ) NOT NULL AFTER email, ADD _email_last_part VARCHAR( 255 ) NOT NULL AFTER _email_first_part";
$dbh->do($sql);
if($DBI::err) { dbError("3084 dbUpdateEmailPartRows (SQL: $sql) (do): $DBI::errstr"); return 0; }

# Index über diese Spalten legen
$sql = "ALTER TABLE $tabelle ADD INDEX ( _email_first_part , _email_last_part )";
$dbh->do($sql);
if($DBI::err) { dbError("3089 dbUpdateEmailPartRows (SQL: $sql) (do): $DBI::errstr"); return 0; }

# Da hier der Fehler ist, trace einschalten
$dbh->trace(2);

# Daten aus der Spalte 'email' erzeugen und in die neuen Spalten einfügen. $sql = "UPDATE $tabelle SET _email_first_part = SUBSTR( email, 1, POSITION( '\@' IN email) ), _email_last_part = SUBSTRING( email, POSITION( '\@' IN email) , LENGTH( email ) - POSITION( '\@' IN email ) +1 )";
$dbh->do($sql);
if($DBI::err) { dbError("3094 dbUpdateEmailPartRows (SQL: $sql) (do): $DBI::errstr"); return 0; }

# Und Trace wieder abschalten
$dbh->trace(0);


Wenn dir das mit STDERR nicht gefällt, dann kannst du die Ausgabe von Trace auch in eine Datei umleiten:
Code (perl): (dl )
$dbh->trace(2,'/tmp/dbi_trace.log');

View full thread query wird nicht ausgeführt