dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Home/Hata Teşhis Kütüphanesi/mysql-1146-table-doesnt-exist
MySQL
MySQL 8.4 LTS / 9.7 LTSDepolama & Şema
7 dk okuma
ERROR 1146 (42S02): Table doesn't exist / ERROR 1286: Unknown storage engine

MySQL "Table doesn't exist" — Tablo Ortada Yok, Ama Neden?

lower_case_table_names kaynaklı büyük-küçük harf sorunu, taşınmış .ibd dosyaları ve "Unknown storage engine" hatasında eklenti kontrolü.

İnceleyen:Senior Database Reliability Engineer
Test Edilen Sürümler: MySQL 9.7.4 LTS & 8.4.13 LTS (Debian / Docker) | Tarihsel: MySQL 8.0, 5.7

Operasyonel Doğrulama & Güvenilirlik Standardı

Son Teknik İnceleme: 29 Ekim 2026
Test Edilen SürümlerMySQL 9.7.4 LTS & 8.4.13 LTS | Tarihsel: MySQL 8.0.36, 5.7.44
Gerekli YetkiSHOW TABLES, SELECT on information_schema, RENAME TABLE yetkileri
Risk Seviyesi
MediumYetim .ibd dosyalarının üzerine tablo oluşturmaya çalışmak ERROR 1813 Tablespace exists hatası yaratır
Beklenen Çıktılower_case_table_names ve dosya sistemi hizalaması sonrası tablonun hatasız sorgulanması
Geri Dönüş (Rollback) Planı:Tabloyu eski ismine geri adlandırma veya yedekten tekil tablo tablespace restore etme
MySQL 8.4 Reference Manual: Identifier Case Sensitivity
İlk 60 Saniye Teşhis Protokolü:

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

plaintext
ERROR 1146 (42S02): Table 'app.Siparis' doesn't exist

Bu hata tablonun fiziksel olarak diskte bulunmasına rağmen tetiklenebilir. SHOW TABLES komutunda siparis listelenirken SELECT * FROM Siparis sorgusu Error 1146 veriyorsa sorun veritabanında değil işletim sistemi ile MySQL arasındaki varsayımlardadır.


▸Kök Neden 1: `lower_case_table_names` Uyuşmazlığı (En Sık)

Bu parametre veritabanı ilk başlatılırken (initdb) sabitlenir ve sonradan değiştirilemez:

sql
SHOW VARIABLES LIKE 'lower_case_table_names';
DeğerBüyük-Küçük Harf DavranışıTipik İşletim Sistemi
0Büyük-küçük harfe duyarlıdır (Case-sensitive)Linux varsayılanı
1Küçük harfe dönüştürülür ve saklanırWindows varsayılanı
2Duyarsızdır ancak yazıldığı gibi saklanırmacOS varsayılanı

Geliştirme ortamı Windows (1) olan bir uygulama Siparis yazıp Linux üretim ortamına (0) geçtiğinde siparis tablosunu bulamaz → 1146.

Çözüm:

sql
RENAME TABLE Siparis TO siparis;

Önce tüm tablo adlarını envanterleyin ve uygulama kodlarındaki referansları küçük harfe çevirin.


▸Kök Neden 2: Yetim (Orphan) `.ibd` Dosyaları

Dosya diskte var ancak veri sözlüğünde (Data Dictionary) yoksa:

sql
SELECT table_name FROM information_schema.tables WHERE table_schema = 'app';
bash
ls -la /var/lib/mysql/app/

.ibd diskte mevcut ancak information_schema'da görünmüyorsa dosya hatalı bir kopyalamadan kalmıştır. Tabloyu yeniden oluşturmaya çalışmayın; aksi takdirde `ERROR 1813: Tablespace exists` alırsınız. Kurtarma için .cfg dosyası ile ALTER TABLE ... IMPORT TABLESPACE yürütülmelidir.


▸Kök Neden 3: Yanlış Şema veya Replikasyon Filtresi

Uygulama bağlantısı USE db; komutu göndermiyorsa varsayılan veritabanında arar. Replikasyonda ise replicate-do-db filtresi primary'de tabloyu açarken replica'da atlamış olabilir.


▸İlişkili Hata: ERROR 1286 Unknown storage engine 'InnoDB'

plaintext
ERROR 1286 (42000): Unknown storage engine 'InnoDB'

Bu durumda tablo değil depolama motoru çökmüştür:

sql
SHOW ENGINES; SHOW PLUGINS;

InnoDB DISABLED ise --skip-innodb ile başlatılmış olabilir. Hata günlüğünde (mysqld.log) InnoDB: Cannot allocate memory veya ibdata1 dosya izinlerini kontrol edin.

Diğer Veritabanı Hata Teşhisleri

Kriz anında başvurabileceğiniz diğer doğrulanmış hata rehberleri.

Tüm Hatalar (50)