데이터베이스 삭제 오류 ( '.test \'를 rmdir 할 수 없음, 오류 번호 : 17)


124

기본적으로 "mysqladmin -u root -p password"명령을 사용하여 루트 암호를 만드는 방법을 배웠습니다.이 모든 작업은 Windows 명령 편집기를 통해 수행되었습니다. 이제 다음 프로세스는 "SHOW DATABASES;"를 사용하여 얻은 기본 데이터베이스 (정보 스키마, mysql 및 테스트)를 표시하는 것입니다.

그러나 책에 따르면 중복 테스트 파일을 삭제해야했고 다음과 같은 오류가 나타납니다.

데이터베이스 삭제 오류 ( '.test \'를 rmdir 할 수 없음, 오류 번호 : 17)

사용 명령은 다음과 같습니다. DROP DATABASE test;

MYSQL과 PHPMYADMIN을 사용하고 있습니다. 오류없이 파일을 삭제하는 방법에 대한 도움이 있습니까?


MySQL 사용자가 관련 데이터 디렉토리의 소유권을 확실히 갖고 있습니까?
John Parker 2011 년

최신 정보. PHPMYADMIN에서 새 데이터베이스를 만들고 명령 편집기에서 명령을 사용했는데 이번에는 오류없이 작동했습니다. 편집 : Middaparka, 나는 정말로 그 부분을 아직 만지지 않았습니다. 기본적으로 주어진 권한이 무엇인지 모르겠습니다.
Sid

새로운 MySQL 버전은 실제로 데이터베이스 TEST를 삭제하지 않는 것 같습니다. 대신 mysql 디렉토리 / bin에서 "TEST"폴더를 삭제 해보십시오. 학습 과정에 추가 할 수있는 또 다른 솔루션입니다 .....
amenko

답변:


163

데이터베이스는 데이터 디렉토리 (일반적으로 /var/lib/mysql) 아래의 디렉토리로 표시되며 디렉토리는 테이블 데이터 저장을위한 것입니다.

DROP DATABASE명령문은 모든 테이블 파일을 제거한 다음 데이터베이스를 나타내는 디렉토리를 제거합니다. 그러나 테이블이 아닌 파일은 제거하지 않으므로 디렉토리를 제거 할 수 없습니다.

MySQL은 디렉토리를 제거 할 수 없을 때 오류 메시지를 표시합니다.

데이터베이스 디렉토리에서 나머지 파일을 제거한 다음 디렉토리 자체를 제거하여 데이터베이스를 수동으로 삭제할 수 있습니다.


1
감사합니다, Shakti Singh. PHPMYADMIN을 방문하여 '테스트'테이블을 삭제했지만 명령 편집기를 통해 실제로 수행하고 싶었습니다. 나는 같은 파일을 반복해서 삭제하려고 시도했기 때문에 오류가 발생했습니다. 새 DB를 만들고 DROP DATABASE 명령을 입력했습니다.
Sid

2
데이터베이스에 MyISAM 테이블 만있는 경우에만 디렉토리를 직접 제거 할 수 있습니다
nos

내 경우에는 내가 품었다 logoutlogin다시 데이터베이스가 사라 볼 수 있습니다.
Anas Azeem 2013 년

5
파일은 정확히 어디에 있습니까?
Black

데이터베이스 디렉토리에 파일을 만들었습니다. 이 파일을 제거한 후 내 문제가 해결되었습니다.
zahid

37

Mac에 mysql 5.5를 새로 설치할 때 이와 동일한 문제가 발생했습니다. 테스트 스키마를 삭제하려고했는데 errno 17 메시지가 표시되었습니다. errno 17은 일부 posix os 함수에 의해 반환 된 오류로 파일이 존재하지 않아야 함을 나타냅니다. 데이터 디렉토리에서 이상한 파일 ".empty"를 찾았습니다.

sh-3.2# ls -la data/test
total 0
drwxr-xr-x   3 _mysql  wheel  102 Apr 15 12:36 .
drwxr-xr-x  11 _mysql  wheel  374 Apr 15 12:28 ..
-rw-r--r--   1 _mysql  wheel    0 Mar 31 10:19 .empty

.empty 파일을 rm'd하면 drop database 명령이 성공했습니다.

.empty 파일의 출처를 모르겠습니다. 언급했듯이 이것은 새로운 mysql 설치였습니다. 설치 과정에서 문제가 발생했을 수 있습니다.


3
MySQL 버그 # 62443을 참조하십시오 . 이것은 cmake의 제한으로 인해 5.5.11에서 소개 된 MySQL 버그입니다. 당신이 말한 것처럼, 해결 방법은 데이터 \ 테스트 \ .empty 제거하는 것입니다
존 맥카시

2
나를 위해 창문에 있었다 : C : \ WAMP \ 빈 \ mysql을 \ mysql5.5.24 \ 데이터 \ 테스트 \
Máthé Endre-Botond는

34

mysql 설치를 위해 datadir로 이동하고 데이터베이스를 수동으로 rm합니다. 그것은 될 수 있습니다

/usr/local/var/mysql

그때,

rm -R <Your DB name>

설치를 위해 datadir을 확인하려면

vim the mysql.server file and find it there.

7
mysql 5.5.34-0ubuntu0.13.04.1로 Linux mint를 실행 중이며 / var / lib / mysql에 저장합니다. 배포판마다 다를 것이라고 확신합니다.
Craig Schmidt

1
디렉토리가 어디에 있는지 알려 주셔서 감사합니다 !!
Sankalp Singha 2014

나를 위해 일합니다 :)
Pupil

나를 위해 일하려고 RM -R databaseName을 다음 phpMyAdmin을 다시로드
카스 Kandari

23

들어 phpMyAdmin을 로 이동 \ mysql을 \ 데이터 XAMPP 단순히 데이터베이스 폴더를 삭제합니다. 나를 위해 일했습니다!!


12

XAMPP 인 경우 다음을 수행하십시오.

cd /opt/lampp/var/mysql;
sudo su;
rm -rf test;

도움이 되었기를 바랍니다.


+1 마운트 된 XAMPP를 사용하는 경우 Mac에서 잘 작동합니다. 애플리케이션 (마운트 된 xampp 앱)을 통해 터미널을 열고 위의 가이드를 따릅니다.
바비 도끼

이것은 나를 다시 도왔다 :)
Bobby Ax

8

방금 WAMP와 함께 제공되는 phpMyAdmin 에서이 문제가 발생했습니다. 데이터베이스를 제거하고 오류를 없애기 위해. C:\wamp\bin\mysql\mysql5.5.24\data\문제의 데이터베이스 폴더 로 이동 하여 삭제했습니다.

그런 다음 phpMyAdmin에서 페이지를 새로 고쳤고 데이터베이스가 사라졌습니다.


4

지금까지 응답에 추가하기 만하면됩니다. Windows 10에서는 데이터 파일이 여기에 보관됩니다.

C : \ ProgramData \ MySQL \ MySQL 서버 [mn] \ data

데이터베이스의 각 스키마에 대한 디렉토리가 있습니다. 삭제하려는 스키마 내부로 이동하여 불필요한 파일을 수동으로 삭제 한 다음 drop 명령을 다시 시도하십시오.

데이터베이스에 대한 모든 워크 벤치 변경 사항은이 위치에 저장됩니다. 예를 들어, 데이터베이스 중 하나에서 리버스 엔지니어링 연습을 수행하고이 위치의 .mwb 파일에 저장된 변경 사항을 저장 한 후이 오류가 발생했습니다.


1

sql 디렉토리의 데이터를 삭제할 수 있습니다.

저에게는 Windows 10에서 AMPPS를 사용하고있었습니다. AMPP 설치 디렉토리로 이동했습니다. 나를 위해 그것은 :

D:\Program Files (x86)\Ampps\mysql\data

보조 드라이브에 설치했기 때문입니다.

그런 다음 SQL 클라이언트를 새로 고치면 사라진 것을 볼 수 있습니다.


1

두 가지를 확인해야 할 수도 있습니다.

1- 데이터베이스 폴더의 권한 삭제하려는 데이터베이스는 mysql 프로세스와 동일한 소유자를 가져야합니다.

2- 디렉터리는 비어 있어야합니다 . mysql 데이터 디렉터리로 이동하여 디렉터리가 비어 있는지 확인합니다.

그 후 mysql cli를 연결하고 drop database 명령을 다시 실행하십시오.


1

이것을 통해 선택한 db에서 해당 캐시 파일을 제거한 다음 데이터베이스를 삭제할 수 있습니다.

먼저 선택한 DB를 포함하는 MySQL 데이터 디렉토리를 찾으십시오.

리눅스

  • MySQL의 구성 파일을 엽니 다. less /etc/my.cnf
  • "datadir"용어 검색 : / datadir

  • 존재하는 경우 다음과 같은 행이 강조 표시됩니다. datadir = [path]

  • 해당 줄을 수동으로 찾을 수도 있습니다. 일반적으로 [mysqld] 섹션 제목 아래에 있지만 반드시 거기에서 찾을 필요는 없습니다.

  • 해당 줄이 없으면 MySQL은 기본적으로 / var / lib / mysql로 ​​설정됩니다.

Windows 1. MySQL의 구성 파일을 메모장에 엽니 다 : my.ini

my.ini는 설치된 위치에 관계없이 MySQL 프로그램 폴더에 있습니다. MySQL을 설치하지 않은 경우 Windows "검색"기능을 사용하여 my.ini를 찾습니다. [드라이브] : \ Program Files \ MySQL \ MySQL Server 5.5로 이동하여 수동으로 검색 할 수도 있습니다.

  1. 메모장에서 검색하여 "datadir"이라는 용어를 찾습니다.

  2. 존재하는 경우 다음과 같은 행이 강조 표시됩니다. datadir = [path]

  3. 해당 줄을 수동으로 찾을 수도 있습니다. 일반적으로 [mysqld] 섹션 제목 아래에 있지만 반드시 거기에서 찾을 필요는 없습니다.

  4. 해당 줄이 없으면 [드라이브] : \ ProgramData \ MySQL \ MySQL Server 5.5 \ data에서 찾을 수 있습니다.

참고 : "ProgramData"폴더가 숨겨져있을 수 있습니다. Windows 탐색에 명시 적 경로를 입력해야 할 수 있습니다.


1
mysql -s -N -username -p information_schema -e 'SELECT Variable_Value FROM GLOBAL_VARIABLES WHERE Variable_Name = "datadir"'

이 명령은 MySQL의 내부 information_schema 데이터베이스에서만 값을 선택하고 테이블 형식 출력 및 열 헤더를 비활성화합니다.

Linux의 출력 [내 결과] :

/var/lib/mysql

또는

mysql> select @@datadir;

MYSQL CLI에서

그리고

cd /var/lib/mysql && rm -rf test/NOTEMPTY

결과에 따라 경로 변경


0

내 경우에는 내가 내 데이터베이스에서 어떤 테이블을 참조하지 않았다 phpMyAdmin내가 사용을 Wamp server하지만 아래에있는 디렉토리를 선택한 경우 C:\wamp\bin\mysql\mysql5.6.12\data이 발견 나는 employed.ibd내가이 파일을 삭제하면 수동으로 내가 할 수 있었다 drop에서 데이터베이스 phpMyAdmin문제없이 원활.


0

필자의 경우 문제는 데이터베이스 디렉토리의 잔여 덤프 파일이었습니다. 이 파일은 내가 작업하던 백업 스크립트 테스트 중에 생성되었을 것입니다. 파일을 수동으로 삭제하면 데이터베이스를 삭제할 수 있습니다.


0

나는 데이터베이스를 삭제할 때 'ca n't rmdir ..'- 오류와 동일한 문제 (mac의 mysql 5.6)가있었습니다. 비어있는 데이터베이스 디렉토리는 제거 할 수 없습니다. 솔루션에 대해 @Framework 및 @Beel에게 감사드립니다.

먼저 (/ Applications / XAMPP / xamppfiles / var / mysql)의 터미널에서 db 디렉토리를 삭제했습니다.

추가 db 삭제를 위해 빈 테스트 파일도 삭제했습니다. 제 경우에는 파일 이름이 NOTEMPTY이지만 여전히 0을 포함합니다.

sudo ls -al test
total 0
drwxrwx---   3 _mysql  _mysql  102 Mar 26 16:50 .
drwxrwxr-x  18 _mysql  _mysql  612 Apr  7 13:34 ..
-rw-rw----   1 _mysql  _mysql    0 Jun 26  2013 NOTEMPTY

먼저 Chmod를 사용한 다음

sudo rm -rf test/NOTEMPTY

그 후 데이터베이스를 삭제하는 데 문제가 없습니다.


0

내 경우 데이터 디렉토리로 이동하면 경로가 "wamp \ bin \ mysql \ mysql5.6.17 \ data"입니다. 여기에 모든 데이터베이스 폴더가 표시됩니다.이 데이터베이스 폴더를 삭제하면 db가 자동으로 늘어납니다. :)


0

이 문제가 발생했고 데이터베이스 디렉토리를 체크 아웃했을 때 많은 파일이있었습니다 exp( ibdfrm파일이 제거되었습니다). 속성을보기 위해 파일 나열 (소유자가 이미 파일에 대한 rw 권한을 가지고 있기 때문에)

lsattr *.exp
-------------e-- foo.exp
-------------e-- bar.exp

맨 페이지는 말한다

       The  'e'  attribute  indicates that the file is using extents for mapping the blocks on disk.
       It may not be removed using chattr(1).

실제로 chattr -e이러한 파일을 사용할 수 있지만 mysql은 여전히 ​​데이터베이스를 삭제하도록 허용하지 않습니다. rm그러나를 사용 하여 파일을 제거하면 데이터베이스를 완전히 삭제할 수 있습니다.


0

다른 서버에서 서버로 / var / lib / mysql 폴더의 데이터베이스 폴더를 복사했을 수 있기 때문에 발생합니다. 그러나 다음 파일을 복사하지 않았습니다. / var / lib / mysql / ib_buffer_pool / var / lib / mysql / ibdata1 / var / lib / mysql / ib_logfile0 / var / lib / mysql / ib_logfile1 / var / lib / mysql / ibtmp1 따라서 새 db와 테이블을 만들 수 있지만 삭제할 수 있지만 다른 서버에서 복사 한 데이터베이스를 삭제할 수 없으며 다른 서버에서 복사 한 동일한 데이터베이스를 탐색 할 수도 없습니다. 그래서 나는 또한 그 파일을 복사했습니다 : ib_buffer_pool, ibdata1, ib_logfile0, ib_logfile1, ibtmp1 그 후 모든 것이 작동했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.