Error
Error Code:
1010
MariaDB Error 1010: Database Directory Deletion Failed
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 causesInsufficient 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 available1. 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;