Jump to content

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


Pardasus
Go to solution Solved by Pardasus,

Recommended Posts

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.

Link to comment
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
Link to comment

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".

Link to comment

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 ;-) 

Link to comment
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
Link to comment

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....

Link to comment
  • 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
Link to comment
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
Link to comment

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...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...