2017-10-23 2 views
0

Ich versuche, eine Funktion zu schreiben (MariaDB 10.2.9).mysql Funktionsfehler in der Syntax

CREATE FUNCTION tesst (host VARCHAR(30)) RETURNS INT(4) 
BEGIN 
DECLARE hwid INT(4); 

SELECT `id` INTO hwid FROM `hardware` WHERE `hostname` = host; 

RETURN COALESCE(hwid, 'HWID not found'); 
END 

Jetzt bekomme ich folgende Fehlermeldung:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 3 

Ich weiß nicht, was der Fehler ist.

EDIT: Es arbeitet mit

delimiter // 
CREATE FUNCTION tesst (host VARCHAR(30)) RETURNS int(4) 
BEGIN 
DECLARE hwid INT(4); 

SELECT `id` INTO hwid FROM `hardware` WHERE `hostname` = host; 

RETURN COALESCE(hwid, 'HWID not found'); 
END // 
delimiter ; 

Und gesetzt:

  1. Führen Sie die folgenden in der MySQL-Konsole:

SET GLOBAL log_bin_trust_function_creators = 1;

  1. Fügen Sie folgende zu der mysql.ini Konfigurationsdatei:

log_bin_trust_function_creators = 1

+1

Haben Sie das Trennzeichen zuvor geändert? Du brauchst. Um zu vermeiden, dass die Funktion beim ersten '' –

+0

Was meinen Sie? Tut mir leid, ich weiß nicht, was Trennzeichen ist/wie ich es benutze. – Tobi

+0

Suche "delimiter" in [dieser Dokumentation] (https://dev.mysql.com/doc/refman/5.7/en/create-procedure.html). Lesen Sie den erläuternden Text unter dem Codebeispiel, das Sie finden. – trincot

Antwort

0

Also tat ich es. https://stackoverflow.com/a/26015334/8821276

  1. Führen Sie die folgende in der Konsole MySQL:

GLOBAL log_bin_trust_function_creators SET = 1;

  1. Fügen Sie folgende zu der mysql.ini Konfigurationsdatei:

log_bin_trust_function_creators = 1

Es funktioniert jetzt, danke!