Error
Error Code: 1010

MariaDB Error 1010: Database Directory Deletion Failed

📦 MariaDB
📋

Description

This error indicates that MariaDB was unable to remove the physical directory associated with a database during a `DROP DATABASE` operation. It typically occurs when the operating system's `rmdir` function fails to delete the database's data directory, often due to underlying file system or permission issues.
💬

Error Message

Error dropping database (can't rmdir '%s', errno: %d)
🔍

Known Causes

3 known causes
⚠️
Insufficient File System Permissions
The operating system user running the MariaDB server process lacks the necessary write or delete permissions on the database's data directory or its parent directory.
⚠️
Database Directory or Files in Use
Another process, application, or even a different MariaDB connection is actively accessing files within the database directory, preventing its deletion.
⚠️
Underlying File System Issues
The file system containing the MariaDB data directory is read-only, corrupted, or experiencing other integrity problems that prevent directory modification.
🛠️

Solutions

4 solutions available

1. Remove Remaining Files in Directory medium

rmdir fails because directory is not empty

1
Check what files remain in the database directory
sudo ls -la /var/lib/mysql/database_name/
2
These might be orphaned files not tracked by MariaDB
# Common orphaned files:
# - .frm files (table definitions)
# - .ibd files (InnoDB data)
# - db.opt (database options)
3
Stop MariaDB and remove remaining files
sudo systemctl stop mariadb
sudo rm -rf /var/lib/mysql/database_name/
sudo systemctl start mariadb

2. Fix Directory Permissions medium

Ensure MariaDB can delete the directory

1
Check permissions on database directory and parent
ls -la /var/lib/mysql/ | grep database_name
ls -la /var/lib/mysql/database_name/
2
Fix ownership
sudo chown -R mysql:mysql /var/lib/mysql/database_name/
sudo chown mysql:mysql /var/lib/mysql/
3
Set correct permissions
sudo chmod 750 /var/lib/mysql/
sudo chmod 750 /var/lib/mysql/database_name/
4
Retry DROP DATABASE
DROP DATABASE database_name;

3. Close Open Connections medium

End all connections using the database

1
Find active connections to the database
SELECT * FROM information_schema.PROCESSLIST
WHERE DB = 'database_name';
2
Kill active connections
-- Kill each connection by ID
KILL <process_id>;
3
Or kill all connections to the database at once
SELECT CONCAT('KILL ', id, ';')
FROM information_schema.PROCESSLIST
WHERE DB = 'database_name';
4
Retry DROP DATABASE
DROP DATABASE database_name;

4. Handle Hidden Files medium

Remove hidden files preventing directory deletion

1
List ALL files including hidden ones
sudo ls -la /var/lib/mysql/database_name/
2
Look for hidden files (starting with .)
sudo find /var/lib/mysql/database_name/ -name '.*' -type f
3
Remove hidden files if found
sudo rm /var/lib/mysql/database_name/.*
4
Retry DROP DATABASE
DROP DATABASE database_name;
🔗

Related Errors

5 related errors