2015-03-05 12 views
18

Ich versuche, eine neue Datenbank über bash, die einen Strich in den Namen hat erstellen.Datenbank über Bash mit Bindestrich in Datenbank-Name erstellen

Das ist, was ich versucht:

echo "CREATE DATABASE IF NOT EXISTS db-name CHARACTER SET utf8 COLLATE utf8_general_ci" | mysql -uuser -ppw 

, die mit dem folgenden Fehler fehl:

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the 
right syntax to use near 
'-name CHARACTER SET utf8 COLLATE utf8_general_ci' at line 1 

I Backticks dann hinzugefügt:

echo "CREATE DATABASE IF NOT EXISTS `db-name` CHARACTER SET utf8 COLLATE utf8_general_ci" | mysql -uuser -ppw 

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the 
right syntax to use near 
'CHARACTER SET utf8 COLLATE utf8_general_ci' at line 1 

ich ein bisschen herum gespielt und fand heraus, dass mysql backticks auch ohne einen Strich im Namen nicht mag:

echo "CREATE DATABASE IF NOT EXISTS `dbname` CHARACTER SET utf8 COLLATE utf8_general_ci" | mysql -uuser -ppw 

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the 
right syntax to use near 
'CHARACTER SET utf8 COLLATE utf8_general_ci' at line 1 

Ich bin ein bisschen verwirrt. Was ist hier falsch?

PS: In phpMyAdmin funktioniert es wie erwartet, wenn Backticks

Antwort

23

Hinzufügen Entweder Sie zitieren die Backticks oder einfach nur einfache Anführungszeichen anstatt doppelte Anführungszeichen verwenden, um den Befehl:

mysql -uuser -ppw -e 'CREATE DATABASE IF NOT EXISTS `db-name` CHARACTER SET utf8 COLLATE utf8_general_ci' 

Andernfalls wird die Schale die Backticks erweitern würde zu einer Befehlsersetzung. Überprüfen Sie Folgendes: http://tldp.org/LDP/abs/html/commandsub.html

Beachten Sie außerdem, dass Sie den Befehl echo nicht benötigen. Sie können die Befehlszeilenoption -e von mysql verwenden

+0

Ich wusste nicht, dass Backticks maskiert werden müssen. Vielen Dank! – Fuzzyma

+0

Sie sind herzlich willkommen :) – hek2mgl

+0

irgendwelche Dinge falsch, hat es nicht für mich funktioniert? Befehl ---> mysql -uroot -pmysql -e CREATE DATABASE WENN NICHT EXISTIERT 'mifosplatform-penters' '; –

Verwandte Themen