2012-06-04 15 views
6

Następujący błąd występuje, gdy próbuję przywrócić DB w MYSQL za pomocą putty.Błąd podczas przywracania MYSQL db

Command: mysql -u root -p db1<dbname.sql ;

BŁĄD 1 (HY000) w linii 7904: Nie można utworzyć/zapisać do pliku './ nazwa_bd /db.opt' (Errcode: 2)

Jaki jest tego powód?

Odpowiedz

9

To często oznacza, że ​​plik zrzutu zawiera polecenia, które należy uruchomić w bazie danych, które albo nie istnieje w lokalnym kontekście, lub do którego bieżący użytkownik nie ma dostępu. Otwórz plik dumpfile i spójrz na linię wymienioną w błędzie, aby dowiedzieć się, co się dzieje.

1

Sprawdzaj co Errcode: 2 oznacza

Można użyć narzędzia perror znaleźć to błąd 2 sposoby:

$ perror 2 
OS error code 2: No such file or directory 

Więcej informacji znajduje się w linku @Jocelyn wymienionego w ich Komentarz: http://dev.mysql.com/doc/refman/5.5/en/cannot-create.html

Dowiedz się, co to jest ścieżka ./ punktów do

Teraz wiemy, że plik nie istnieje (lub może nie można go zapisać). Komunikat o błędzie podaje nam względną ścieżkę ./, co sprawia, że ​​jest ona trudna ... Czy nie byłoby to pomocne w pełni kwalifikowana ścieżka? Tak.

Kiedy więc MySQL importuje plik SQL, tworzy pliki tymczasowe w systemie plików. Ścieżka jest zwykle określona przez opcję konfiguracji "tmpfile" w pliku MySQL my.cnf. można szybko znaleźć wartość wykonując zapytanie SQL:

$ mysql -h127.0.0.1 -uroot -p 
# I assume you're now logged into MySQL 
mysql> SHOW VARIABLES LIKE '%tmpdir%'; 

+-------------------+-------+ 
| Variable_name  | Value | 
+-------------------+-------+ 
| slave_load_tmpdir | /tmp | 
| tmpdir   | /tmp | 
+-------------------+-------+ 
2 rows in set (0.00 sec) 

Upewnij się, że katalog jest zapisywalny przez mysql użytkownik

Według tmpdir oznacza to MySQL próbuje utworzyć /tmp/dbnamehere/db.opt. Upewnij się, że ten katalog istnieje i że jest własnością: mysql:mysql. Być może będziesz musiał użyć wartości sudo, aby podnieść uprawnienia wystarczająco wysokie, aby utworzyć kilka katalogów.

$ chown -R mysql:mysql /tmp/dbnamehere 

Nadal nie działa? Spróbuj inne ścieżki domyślne tmpdir

uderzę problemy w moim systemie (Ubuntu 12.04 + Vagrant 1.7.2 + Chef 11.something + opscode mysql cookbook 6.0.6), gdy wartość w tmpdir nie rozważa, czy nie był wyciągany z którym Oczekiwałem.

MySQL został rzeczywiście próbuje utworzyć pliku tymczasowego w jednej z następujących lokalizacji:

  • /var/lib/mysql/dbnamehere
  • /var/lib/mysql-default/dbnamehere

musiałem utworzyć te katalogi i zmienić właściciela do mysql: mysql.

4

wpadłem na ten błąd w pracy, gdy nazwa źródłowa baza danych była inna niż nazwa docelowej bazy danych. Zrzuciłem bazę danych na jeden serwer pod numerem mysqldump db1 > dumpfile i spróbowałem zaimportować ją na innym serwerze pod numerem mysql db2 < dumpfile.

Okazuje się, że dumpfile miał ALTER TABLE db1 ... wypowiedzi, które nie miały znaczenia na serwerze docelowym, gdzie nazwałem bazy danych DB2.

Nie ma chyba bardziej eleganckie rozwiązanie niż to, ale ja po prostu edycji zrzut pamięci na serwerze docelowym i zastąpione DB1 z DB2.

+0

Dla zwięzłości odpowiedź, istnieje kilka opcji dla Ciebie, a nie ciąg zastąpić w edytorze: http://dba.stackexchange.com/a/8892 – Pogrindis

Powiązane problemy