Error al descartar la base de datos (No se puede rmdir '.test \', errno: 17)


124

Básicamente, me enseñaron cómo crear una contraseña de root usando el comando "mysqladmin -u root -p password", esto se hizo a través del editor de comandos de Windows. Ahora, el siguiente proceso fue mostrar las bases de datos predeterminadas (esquema de información, mysql y prueba) que se logró usando "MOSTRAR BASES DE DATOS";

Pero según el libro, tuvimos que eliminar el archivo de prueba redundante y aparece el siguiente error:

Error al descartar la base de datos (No se puede rmdir '.test \', errno: 17)

El comando puesto en uso fue DROP DATABASE test;

Estoy usando MYSQL y PHPMYADMIN. ¿Alguna ayuda sobre cómo soltar el archivo sin errores?


¿El usuario de MySQL definitivamente tiene la propiedad del directorio de datos relevante?
John Parker

Actualizar. Creé una nueva base de datos de PHPMYADMIN y usé el comando en el editor de comandos, esta vez funcionó sin reventar el error. Editar: Middaparka, realmente no he tocado esa parte todavía. No sé, por defecto, cuáles son los permisos otorgados.
Sid

Supongo que las nuevas versiones de MySQL realmente no eliminan la TEST de la base de datos, sino que eliminen la carpeta "TEST" en su directorio / bin de mysql, es solo otra solución para que esto se agregue a su proceso de aprendizaje .....
amenko

posible duplicado de cómo soltar la base de datos
woz

Respuestas:


163

Una base de datos está representada por un directorio debajo del directorio de datos (generalmente /var/lib/mysql), y el directorio está destinado al almacenamiento de datos de la tabla.

La DROP DATABASEdeclaración eliminará todos los archivos de la tabla y luego eliminará el directorio que representaba la base de datos. Sin embargo, no eliminará los archivos que no sean de tabla, por lo que no será posible eliminar el directorio.

MySQL muestra un mensaje de error cuando no puede eliminar el directorio

realmente puede soltar la base de datos manualmente eliminando los archivos restantes en el directorio de la base de datos y luego el directorio en sí.


1
Gracias Shakti Singh. Dejé caer la tabla de 'prueba' visitando PHPMYADMIN, pero realmente quería hacerlo a través del editor de comandos. Supongo que intenté eliminar el mismo archivo una y otra vez, por lo que el error. Creé una nueva base de datos e ingresé el comando DROP DATABASE, ¡funcionó!
Sid

2
Tenga en cuenta que en realidad solo puede eliminar el directorio usted mismo si la base de datos solo tiene tablas MyISAM
nos

En mi caso, tuve que hacerlo logouty luego loginotra vez, para ver la base de datos desaparecida.
Anas Azeem

55
¿Dónde están exactamente los archivos?
Negro

He creado los archivos en el directorio de la base de datos. Mi problema se resolvió después de eliminar estos archivos.
zahid

37

Me encontré con este mismo problema en una nueva instalación de mysql 5.5 en una mac. Traté de soltar el esquema de prueba y recibí un mensaje de error 17. errno 17 es el error devuelto por algunas funciones posix os que indican que existe un archivo donde no debería. En el directorio de datos, encontré un archivo extraño ".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

Una vez que configuré el archivo .empty, el comando drop database tuvo éxito.

No sé de dónde vino el archivo .empty; como se señaló, esta fue una nueva instalación de mysql. Quizás algo salió mal en el proceso de instalación.


3
Ver el error de MySQL # 62443 . Este es un error de MySQL introducido alrededor de 5.5.11 debido a una limitación en cmake. Como dijiste, una solución es eliminar data \ test \ .empty
John McCarthy

2
en Windows para mí fue: C: \ wamp \ bin \ mysql \ mysql5.5.24 \ data \ test \
Máthé Endre-Botond

34

Vaya al datadir para su instalación de mysql y rm las bases de datos manualmente. Puede ser

/usr/local/var/mysql

Luego,

rm -R <Your DB name>

Para verificar datadir para su instalación,

vim the mysql.server file and find it there.

77
Estoy ejecutando Linux mint con mysql 5.5.34-0ubuntu0.13.04.1 y lo almacenan en / var / lib / mysql. Estoy seguro de que es diferente para diferentes distribuciones.
Craig Schmidt

1
¡Gracias por dejarme saber dónde estaba el directorio!
Sankalp Singha

Funciona para mí :)
Alumno

funcionó para mí intente rm -R databasename luego vuelva a cargar el phpmyadmin
Vikas Kandari


12

Si es XAMPP, haga lo siguiente:

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

Espero que esto ayude.


+1 Esto funciona bien en mac, si está utilizando un XAMPP montado en él. abra el terminal a través de la aplicación (aplicación xampp montada) y siga la guía anterior.
Bobby Axe

Esto me ayudó de nuevo :)
Bobby Axe

8

Acabo de encontrarme con este problema con WAMP y el phpMyAdmin que viene con él. Para eliminar la base de datos y hacer que el error desaparezca. EntréC:\wamp\bin\mysql\mysql5.5.24\data\ y eliminé la carpeta de la base de datos en cuestión.

Luego actualicé la página en phpMyAdmin, y la base de datos desapareció.


4

Solo para agregar a las respuestas hasta ahora: en Windows 10, los archivos de datos se guardan aquí ...

C: \ ProgramData \ MySQL \ MySQL Server [mn] \ data

Habrá directorios para cada esquema en su base de datos. Deberá ir dentro del esquema que está tratando de eliminar, eliminar manualmente los archivos superfluos y luego intentar nuevamente el comando soltar.

Cualquier cambio en el banco de trabajo contra una base de datos se almacenará en esta ubicación. Por ejemplo, tuve este error después de un ejercicio de ingeniería inversa en una de mis bases de datos y guardando los cambios que se almacenan en un archivo .mwb en esta ubicación.


1

Puede eliminar los datos en el directorio sql.

Para mí estaba usando AMPPS en Windows 10. Fui al directorio de instalación de AMPP. para mí fue:

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

porque lo tengo instalado en mi disco secundario.

Luego actualice su cliente SQL y verá que se ha ido.


1

Es posible que deba verificar dos cosas.

1- Permiso de Foleder de la base de datos La base de datos que desea eliminar debe tener el mismo propietario que tiene el proceso mysql.

2- El directorio debe estar vacío Ir al directorio de datos mysql y verificar que el directorio esté vacío

Después de eso, conecte su mysql cli y ejecute el comando drop database nuevamente.


1

Ve a través de esto y elimina los archivos de caché correspondientes en la base de datos seleccionada, luego de que puedas soltar tu base de datos

Primero encuentre su directorio de datos MySQL que contenga su base de datos seleccionada

Linux

  • Abra el archivo de configuración de MySQL: menos /etc/my.cnf
  • Busque el término "datadir": / datadir

  • Si existe, resaltará una línea que dice: datadir = [ruta]

  • También puede buscar manualmente esa línea. Por lo general, se encuentra debajo del encabezado de sección de [mysqld] pero no necesariamente tiene que encontrarse allí.

  • Si esa línea no existe, MySQL se configurará por defecto en: / var / lib / mysql.

Windows 1. Abra el archivo de configuración de MySQL en el Bloc de notas: my.ini

El my.ini se ubicará en la carpeta del programa MySQL, que estaría donde se instaló. Si no instaló MySQL, utilice la función de "búsqueda" de Windows para buscar my.ini. También puede buscarlo manualmente navegando a [unidad]: \ Archivos de programa \ MySQL \ MySQL Server 5.5.

  1. Haga una búsqueda en el Bloc de notas para encontrar el término "datadir".

  2. Si existe, resaltará una línea que dice: datadir = [ruta]

  3. También puede buscar manualmente esa línea. Por lo general, se encuentra debajo del encabezado de sección de [mysqld] pero no necesariamente tiene que encontrarse allí.

  4. Si esa línea no existe, entonces probablemente la encontrará en [unidad]: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data.

NOTA: La carpeta "ProgramData" puede estar oculta. Puede que tenga que escribir la ruta explícita en Windows Explore


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

El comando seleccionará el valor solo de la base de datos interna de información_esquema de MySQL y deshabilitará la salida tabular y los encabezados de columna.

Salida en Linux [resultado de la mina]:

/var/lib/mysql

o

mysql> select @@datadir;

en la CLI de MYSQL

y entonces

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

cambiar la ruta en función de su resultado


0

En mi caso, no vi ninguna tabla en mi base de datos en la phpMyAdminque estoy usando, Wamp serverpero cuando revisé el directorio debajo C:\wamp\bin\mysql\mysql5.6.12\data, encontré esto employed.ibdcuando eliminé este archivo manualmente, pude acceder a dropla base de datos phpMyAdminsin problemas sin ningún problema.


0

En mi caso, el problema era un archivo de volcado residual en el directorio de la base de datos. Ese archivo probablemente se generó durante una prueba de script de respaldo en la que había estado trabajando. Una vez que eliminé manualmente el archivo, pude soltar la base de datos.


0

Tuve el mismo problema (mysql 5.6 en mac) con los errores 'can rmdir ..'- al descartar bases de datos. No es posible deshacerse de un directorio de base de datos vacío. Gracias @Framework y @Beel por las soluciones.

Primero eliminé el directorio db de la Terminal en (/ Applications / XAMPP / xamppfiles / var / mysql).

Para más caídas de db, también eliminé el archivo de prueba vacío. En mi caso, el archivo se llamaba NOTEMPTY pero aún contenía 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 primero y luego

sudo rm -rf test/NOTEMPTY

No hay problemas para descartar bases de datos después de eso


0

solo vaya al directorio de datos en mi caso, la ruta es "wamp \ bin \ mysql \ mysql5.6.17 \ data" aquí verá todas las carpetas de bases de datos, simplemente elimine esta carpeta de su base de datos, la base de datos caerá automáticamente :)


0

Me encontré con este problema, y ​​cuando revisé el directorio de la base de datos, había una cantidad de exparchivos (los archivos ibdy frmhabían sido eliminados). Listar los archivos para ver sus atributos (ya que el propietario ya tenía privilegios rw en los archivos)

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

La página del hombre dice

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

En realidad, puede usar chattr -eestos archivos, pero mysql aún no le permitirá soltar la base de datos. rmSin embargo, la eliminación de los archivos permite que la base de datos se elimine limpiamente.


0

Ocurre porque puede haber copiado la carpeta de base de datos de la carpeta / var / lib / mysql de otro servidor a su servidor. Pero no ha copiado estos archivos: / var / lib / mysql / ib_buffer_pool / var / lib / mysql / ibdata1 / var / lib / mysql / ib_logfile0 / var / lib / mysql / ib_logfile1 / var / lib / mysql / ibtmp1 Entonces puede crear una nueva base de datos y tablas que puede eliminar, pero no puede eliminar las bases de datos que ha copiado de otro servidor y tampoco puede explorar la misma base de datos que copió de otro servidor. Entonces también copié esos archivos: ib_buffer_pool, ibdata1, ib_logfile0, ib_logfile1, ibtmp1 después de eso, todo funcionó.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.