MySQL Bilinmeyen Veritabanı Hatası: Büyük/Küçük Harf Duyarlılığı, Migration Öncesi Şema Eksikliği ve Çözüm
lower_case_table_names farkları, eksik CREATE DATABASE adımları ve SQL dump içindeki USE komutlarının tetiklediği 1049 hatası ve idempotent şema kurulumu.
Operasyonel Doğrulama & Güvenilirlik Standardı
Hata mesajı semptomdur, kök neden değildir. Sunucuyu yeniden başlatmadan veya rastgele ayar değiştirmeden önce aşağıdaki "Nedeni ayırt eden tek sorgu"yu çalıştırarak gerçek senaryoyu netleştirin.
▸Belirti
Uygulama başlarken veya bir SQL dump içe aktarılırken işlem reddedilir:
ERROR 1049 (42000): Unknown database 'prod_v2'▸Sahada Ne Görürsün?
CI/CD migration pipeline'ı ilk adımda kırılır veya yeni ortama taşınan uygulamanın veritabanı bulunamaz.
▸Kök Neden Matrisi
| Olasılık | Kök Neden | Açıklama |
|---|---|---|
| %60 | Migration Öncesi DB Oluşturulmamış | Flyway veya Liquibase tabloları oluşturmaya çalışır ancak hedef veritabanı henüz fiziksel olarak mevcut değildir. |
| %25 | Büyük/Küçük Harf Duyarlılığı (`lower_case_table_names`) | Linux sunucularda Prod ile prod farklı kabul edilir; Windows/macOS'tan Linux'a geçerken patlar. |
| %15 | SQL Dump İçindeki `USE` Direktifi | Dump dosyası başka bir veritabanı adına sabitlenmiştir. |
▸ACİL RUNBOOK (0-5dk)
-- 1. Mevcut veritabanlarını listele
SHOW DATABASES;
-- 2. Eksik veritabanını doğru charset ve collation ile oluştur
CREATE DATABASE IF NOT EXISTS prod_v2
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;
-- 3. Uygulama kullanıcısına yetki ver
GRANT ALL PRIVILEGES ON prod_v2.* TO 'app_user'@'%';
FLUSH PRIVILEGES;▸KALICI BLUEPRINT
- 1Standardize Charset & Collation: Tüm şemalar varsayılan olarak
utf8mb4veutf8mb4_0900_ai_ciile oluşturulmalıdır. - 2Migration Pipeline Standardı: CI/CD scriptlerinde şema taşıma çalışmadan önce
mysql -e "CREATE DATABASE IF NOT EXISTS ..."adımı zorunlu kılınmalıdır.
▸Doğrulama
SELECT schema_name, default_character_set_name, default_collation_name
FROM information_schema.schemata WHERE schema_name = 'prod_v2';Diğer Veritabanı Hata Teşhisleri
Kriz anında başvurabileceğiniz diğer doğrulanmış hata rehberleri.
MySQL ERROR 1045 Access denied: root Şifresi Sıfırlama Rehberi
MySQL 1045 hatasının dört nedeni, "using password: YES/NO" ayrımının anlamı ve kilitli kalınca --init-file ile güvenli şifre sıfırlama.
MySQL Deadlock ERROR 1213: Grafiği Okuma ve Kalıcı Önleme
MySQL 1213 deadlock hatasının nedeni, LATEST DETECTED DEADLOCK çıktısını okuma, gap lock kaynaklı kilitlenmeler ve uygulama tarafında retry tasarımı.
MySQL Lock wait timeout exceeded: Bloklayan İşlemi Bulma
1205 lock wait timeout hatasında bloklayan işlemi performance_schema ile bulma, KILL kararını verme ve kilidi kalıcı olarak azaltma yöntemleri.