Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

MariaDB Docker - Import .sql mit "mysql" file not found

Featured Replies

Moin zusammen,

ich bin dabei von einem Proxmox Server auf unRAID umzuziehen. Nun ist die MariaDB dran. Die Datenbank konnte ich problemlos exportieren und liegt nun als .sql File vor. Jetzt wollte ich diese im MariaDB (unRAID Docker) wieder Importieren. Leider klappt dies nicht.

 

Ich gebe folgendes ein:

docker exec -i MariaDB-Official mysql -{user} -{password} homeassistant < /mnt/user/appdata/homeassistant.sql

 

Als Fehlermeldung erhalte ich dies:

OCI runtime exec failed: exec failed: unable to start container process: exec: "mysql": executable file not found in $PATH: unknown

 

Hat da jemand eine Idee? Wollte es erst mit PHPmyAdmin hochladen, aber die DB ist 1GB groß und ich bekomme das PHP Upload Limit nicht erhöht.

Solved by Pardasus

8 hours ago, Pardasus said:
"mysql": executable file not found in $PATH

 

Die Fehlermeldung ist eindeutig. Ruf mal nur das mysql executable mit user und password in der Container Console auf. Wenn das klappt importiere einfach in der Container Console.

 

mysql> use homeassistant;

mysql> SET autocommit=0 ; source wo_auch_immer_das_im_container_gemappt_wurde.sql ; COMMIT ;

 

Edited by hawihoney

  • Author

Ich lese die Fehlermeldung so, dass "mysql" im Docker Container nicht gefunden wurde. Ich habe die offizielle MariaDB Version aus dem App-Store genommen.

 

docker exec -i MariaDB-Official mysql -{user} -{password}
OCI runtime exec failed: exec failed: unable to start container process: exec: "mysql": executable file not found in $PATH: unknown

 

Dort steht ja "executable file not found" mit bezug auf "mysql".

2 hours ago, Pardasus said:

Dort steht ja "executable file not found" mit bezug auf "mysql"

 

Und? Hast Du es in der Container Konsole probiert?

 

Unbenannt3.jpg

Edited by hawihoney

  • Author

Ich habe dies immer über die unRAID Console probiert, aber auch über die Console vom MariaDB-Container sagt er mir "msql: not found".

Fehlt die Anwendung vielleicht einfach im Docker?

Edited by Pardasus

  • Author

Ah, ok. Jetzt kommen wir weiter. Den Befehl "mariadb" und "mariadb-dump" kennt er. Wenn ich über "mariadb-dump" aber das .sql File Importieren will, sagt er immer "Access denied for user..." wobei ich mich Problemlos über phpMyAdmin anmelden kann.

  • Author

So, ich habe MariaDB noch mal gelöscht und neu angelegt. Dabei ein zufällig genierte Passwort von Installation Script erzeugen lassen. Nun klappte der Import.... bedingt. Es kamm keine Fehlermeldung mehr, aber er hat nur die Tabellen angelegt, nicht aber mit werten gefüllt. Das bekomme ich aber auch noch raus ;-) 

3 hours ago, Pardasus said:

Wenn ich über "mariadb-dump" aber das .sql File Importieren will, sagt er immer "Access denied for user..."

 

Geht das nicht mit dem mariadb executable? Einfach in der Container Konsole mit -u User -p aufrufen. Dann die beiden Zeilen aus dem Code oben. Schneller geht's nicht.

 

Und es wurden nur Tabellen angelegt? Guck mal in die *.sql Datei. Hast vielleicht nur DDL (Data Description Language) und nicht DML (Data Manipulation Language) gesichert.

 

Edited by hawihoney

  • Author

Die frage kann ich leider nicht vollständig beantworten. Die Datei ist 1GB groß, denke da dürfte die komplette DB sein und nicht nur die Tabellen.

Mittlerweile bin ich auch schlauer geworden, funktionieren tut es aber immer noch nicht.

 

Ich gehe in die Console vom Docker-Containter "MariaDB" und erstelle mir direkt dort das Backup von der anderen Datenbank mit:

mariadb-dump --user="xxx" --password="xxx" --host="192.168.178.179" homeassistant > homeassistant.sql

 

Dies dauert auch ein paar Sekunden und raus kommt eine 1GB .sql Datei. Nun Importiere ich die local gespeicherte DB wieder mit:

mariadb-dump --user="x" --password="x" homeassistant < homeassistant.sql

 

Dies dauert aber nur 1 Sekunde und raus kommt dies:

-- MariaDB dump 10.19-11.0.2-MariaDB, for debian-linux-gnu (x86_64)
--
-- Host: localhost    Database: homeassistant
-- ------------------------------------------------------
-- Server version       11.0.2-MariaDB-1:11.0.2+maria~ubu2204

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2023-06-24 20:47:38

 

Und es sind nur die Tabellen erstellt worden. Mysteriös....

  • Author
  • Solution

So, nach vielen hin und her hier die Lösung:

 

MariaDB ist quasi MySQL. Darum finde man oft im Internet Beispiele für "MySQL" welcher der MariaDB Docker Container nicht versteht.

 

Backup einer Datenbank:

mariadb-dump --user="xxx" --password="xxx" --host="192.168.178.179" homeassistant > homeassistant.sql

Der "Host" ist nicht unbedingt notwendig. Hier wollte ich aber ein Backup einer bereits laufenden, externen, MariaDB machen.

 

Importiert wird das ganze dann mit:

mariadb --user="xxx" --password="xxx" homeassistant < homeassistant.sql

Den Befehlt habe ich in der Console vom Docker Container ausgeführt. In meinen Beispiel geht es um eine Homeassistant Datenbank. Die Datenbank muss vorher erstellet werden.

Edited by Pardasus

10 hours ago, Pardasus said:

Importiert wird das ganze dann mit:

 

Genau das hatte ich mehrfach oben geschrieben - sogar in meiner ersten Antwort. Importiere mit den mysql/mariadb executables. xxx-dump erzeugt wie der Name schon sagt einen Dump.

 

  • Author
16 minutes ago, hawihoney said:

 

Genau das hatte ich mehrfach oben geschrieben - sogar in meiner ersten Antwort. Importiere mit den mysql/mariadb executables. xxx-dump erzeugt wie der Name schon sagt einen Dump.

 

Bitte nicht falsch verstehen, ich bin dankbar für deine Unterstützung. Aber in deiner ersten Antwort gingst du davon aus, dass das Problem der Aufruf von "mysql" außerhalb vom Container das Problem war. Dabei ist "mysql" weder innerhalb, noch von außerhalb auffindbar gewesen. Dann haben wir heraus bekommen das ich "mariadb..." eingeben muss und nicht "mysql". 

 

Da ich am Anfang aber noch damit Beschäftigt war heraus zu bekommen warum "mysql" nicht gefunden wird, hatte ich mich ehrlich gesagt nicht weiter mit deiner Lösung beschäftigt wie man Daten wieder zurückspielen kann. Hier scheint es mehrere Wege zu geben.

 

Weg 1 (von mir nicht getestet)

mysql --user="xxx" --password="xxx"
mysql> use homeassistant;
mysql> SET autocommit=0 ; source wo_auch_immer_das_im_container_gemappt_wurde.sql ; COMMIT ;

 

Weg 2

mariadb-dump --user="xxx" --password="xxx" homeassistant < homeassistant.sql

 

Ich denke, wir haben uns 1-2x missverstanden, aber am ende dann doch gemeinsam die Lösung gefunden 👍

Edited by Pardasus

50 minutes ago, Pardasus said:

Dann haben wir heraus bekommen das ich "mariadb..." eingeben muss und nicht "mysql".

 

Auch das hatte ich oben geschrieben - sogar mit Link zur Erläuterung.

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.