Saat melakukan import database MySQL menggunakan terminal (CLI), sering muncul error seperti berikut:
ERROR 1050 (42S01): Table 'attendance' already exists
Artikel ini membahas penyebab error tersebut dan cara paling aman untuk menghapus data lama lalu mengimpor database baru tanpa konflik tabel.
Penyebab Error Table Already Exists
Error ini terjadi karena:
- Database tujuan sudah memiliki tabel
- File
.sqlberisi perintah:CREATE TABLE nama_tabel (...) - MySQL menolak pembuatan tabel dengan nama yang sama
Masalah ini bukan karena koneksi, melainkan karena tabel sudah ada di database tujuan.
Studi Kasus (Contoh Aman untuk Publik)
- Server MySQL:
db.example-host.com - Database tujuan:
app_database_dev - User database:
app_db_user
Perintah import yang dijalankan:
mysql -h db.example-host.com -u app_db_user -p app_database_dev < backup.sql
Solusi Terbaik (Direkomendasikan)
1. Menghapus Semua Tabel Lama (Tanpa Menghapus Database)
Masuk ke MySQL:
mysql -h db.example-host.com -u app_db_user -p
Pilih database:
USE app_database_dev;
Generate perintah DROP TABLE otomatis:
SET FOREIGN_KEY_CHECKS=0;
SELECT CONCAT('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'app_database_dev';
Salin seluruh output query tersebut, lalu jalankan.
Aktifkan kembali foreign key checks:
SET FOREIGN_KEY_CHECKS=1;
2. Import Ulang Database
mysql -h db.example-host.com -u app_db_user -p app_database_dev < backup.sql
Hasil:
- Tidak ada error
already exists - Struktur tabel bersih
- Data baru berhasil diimpor
Alternatif: Edit File SQL Secara Manual
Jika tidak ingin drop tabel lewat database, file .sql bisa diedit.
Contoh sebelum:
CREATE TABLE `attendance` (
Ubah menjadi:
DROP TABLE IF EXISTS `attendance`;
CREATE TABLE `attendance` (
Lakukan langkah ini untuk semua tabel di file .sql.
Export Database yang Benar dari phpMyAdmin
Agar file .sql bisa di-import berulang kali tanpa error, gunakan pengaturan berikut saat export:
Object Creation Options
Centang:
- Add DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER statement
- Add CREATE TABLE statement
- Jangan centang
IF NOT EXISTS
Data Creation Options
Centang:
- Truncate table before insert
- Jangan gunakan
INSERT IGNORE
Format Options
Centang:
- Disable foreign key checks
- Enclose export in a transaction
Dengan konfigurasi ini, file .sql akan aman di-import kapan saja.
Kesalahan Umum yang Perlu Dihindari
- Mengandalkan
CREATE TABLE IF NOT EXISTS - Import database tanpa drop atau truncate
- Mengedit database production tanpa backup
Kesimpulan
Jika ingin mengganti seluruh isi database MySQL:
- Hapus semua tabel lama
- Import ulang file
.sql - Gunakan konfigurasi export yang benar
Metode ini aman, bersih, dan minim error, baik untuk development maupun production.
Artikel ini ditulis berdasarkan praktik umum penggunaan MySQL CLI dan phpMyAdmin.