mySQL DELETE-Befehl will nicht

Marc1975

Neuer User
Mitglied seit
13 Okt 2006
Beiträge
17
Punkte für Reaktionen
0
Punkte
0
Ich kämpfe hier die ganzen letzten Tage mit SQL-Befehlen, die nicht wirklich funktionieren. Meist war es ein Problem mit dem Escapen von irgendwelchen Zeichen, aber dieses Mal finde ich nicht die Lösung..

Code:
[macro-mqueue]
exten => s,1,MYSQL(Connect connid XXXX XXXX XXXX XXXX)
exten => s,n,MYSQL(Query resultid ${connid} SELECT id\,message FROM mqueue WHERE user=${USER})
exten => s,n,MYSQL(Fetch fetchid ${resultid} MESSID MESSAGE)
exten => s,n,Background(/tmp/${MESSAGE})
exten => s,n,MYSQL(Clear {$resultid})
exten => s,n,MYSQL(Query resultid ${connid} DELETE FROM mqueue WHERE id=${MESSID})
exten => s,n,MYSQL(Clear {$resultid})
exten => s,n,MYSQL(Disconnect ${connid})

Der erste SQL-Befehl funktioniert, der zweite nicht. Habe ich irgendetwas übersehen? Ich bekomme im CLI eine Warnung:

Code:
-- Executing MYSQL("SIP/33-087615c0", "Query resultid 1113 DELETE FROM mqueue WHERE id=19") in new stack
Oct 18 16:05:26 WARNING[9860]: app_addon_sql_mysql.c:275 aMYSQL_query: aMYSQL_query: mysql_store_result() failed on query DELETE FROM mqueue WHERE id=19
 
Einen ordentlichen SQL-Server verwenden. MySQL ist Schrott.

Als nächstes solltest du SQL richtig lernen, ist wirklich nicht schwer.
 
Vielen Dank, hilft mir nun sehr weiter. Wenn mySQL Schrott ist, warum bietet mir Asterisk die Möglichkeit, mySQL zu nutzen?
 
Zuletzt bearbeitet:
sagichnicht04 schrieb:
Einen ordentlichen SQL-Server verwenden. MySQL ist Schrott.
Das ist eine unqualifizierte, unsubstantiierte Aussage, die nicht den Tatsachen entspricht. MySQL ist sicher eine kommerziell einsetzbare Datenbank. Nicht umsonst ist SAP-DB darin aufgegangen...

Bezüglich der ursprünglichen Frage: ich würde immer Single-Quotes um Argumente machen... Außerdem: müssen da nicht Spaces gequotet werden?

Siehe: http://www.voip-info.org/wiki/index.php?page=Asterisk+cmd+MYSQL

--gandalf.
 
Ich habe es mittlerweile herausgefunden. An dem SQL-Befehl ist nichts falsch, es funktioniert auch ohne das Quoten (zumindest bei Leerzeichen).

Zwischen den beiden Abfragen disconnecten und wieder verbinden hat geklappt.

Ich bin mir aber immer noch unsicher, wann der Clear-Befehl benötigt wird. Anscheinend immer dann, wenn man Zeilen fetcht. Bei INSERT, UPDATE und DELETE bekomme ich eine Warnung, wenn ich den Clear-Befehl benutze.
 
gandalf94305 schrieb:
Das ist eine unqualifizierte, unsubstantiierte Aussage, die nicht den Tatsachen entspricht. MySQL ist sicher eine kommerziell einsetzbare Datenbank. Nicht umsonst ist SAP-DB darin aufgegangen...
'Schrott' ist sicherlich etwas übertrieben, das MySQL gewisse Macken hat ist aber auch kein Geheimnis. Und SAP-DB ist mitnichten in MySQL aufgegangen, sondern von MySQL gekauft worden und wird als eigenständiges Produkt (MaxDB) verkauft.

Und jeder, der MySQL kommerziell einsetzt sollte sich zumindest mal die Lizenzbedingungen durchlesen. Es hat schon Gründe, daß MySQL, im Gegensatz zu Postgresql, von Asterisk nur über die Addons unterstützt wird.
 
mySQL funktioniert mit Asterisk ausgezeichnet.

clan schrieb:
Und jeder, der MySQL kommerziell einsetzt sollte sich zumindest mal die Lizenzbedingungen durchlesen. Es hat schon Gründe, daß MySQL, im Gegensatz zu Postgresql, von Asterisk nur über die Addons unterstützt wird.

Die Lizenzbestimmungen sollte man sich immer durchlesen, nicht nur wenn man Software kommerziell verwendet.

Auch der gewerbliche Anwender kann mySQL unter der GPL verwenden.

Auch hier gibt es keine Probleme.
 

Statistik des Forums

Themen
246,227
Beiträge
2,248,413
Mitglieder
373,797
Neuestes Mitglied
skypher
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.