sql >> Databasteknik >  >> RDS >> Mysql

Hur kör man ett MySQL-kommando från ett skalskript?

Du måste använda -p flagga för att skicka ett lösenord. Och det är knepigt eftersom du inte får ha något mellanslag mellan -p och lösenordet.

$ mysql -h "server-name" -u "root" "-pXXXXXXXX" "database-name" < "filename.sql"

Om du använder ett mellanslag efter -p det får mysql-klienten att fråga dig interaktivt om lösenordet, och sedan tolkar den nästa kommandoargument som ett databasnamn:

$ mysql -h "server-name" -u "root" -p "XXXXXXXX" "database-name" < "filename.sql"
Enter password: <you type it in here>
ERROR 1049 (42000): Unknown database 'XXXXXXXX'

Egentligen föredrar jag att lagra användaren och lösenordet i ~/.my.cnf så att jag inte behöver lägga det på kommandoraden alls:

[client]
user = root
password = XXXXXXXX

Sedan:

$ mysql -h "server-name" "database-name" < "filename.sql"

Angående din kommentar:

Jag kör batch-mode mysql-kommandon som ovan på kommandoraden och i skalskript hela tiden. Det är svårt att diagnostisera vad som är fel med ditt skalskript, eftersom du inte har delat det exakta skriptet eller något felutdata. Jag föreslår att du redigerar din ursprungliga fråga ovan och ger exempel på vad som går fel.

När jag felsöker ett skalskript använder jag även -x flagga så att jag kan se hur det utförs varje kommando:

$ bash -x myscript.sh


  1. Hur laddar man en XML-fil till en databas med ett SSIS-paket?

  2. Konfigurera enkelt webbservern med XAMPP

  3. Varför att använda enhetstester är en stor investering i högkvalitativ arkitektur

  4. Gruppera rader med hjälp av grupp efter klausul i MySQL