Cara Import Database MySQL Tanpa Error Table Already Exists

 

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 .sql berisi 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:

  1. Hapus semua tabel lama
  2. Import ulang file .sql
  3. 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.

Post a Comment

Previous Post Next Post