Logo
Hoş Geldiniz
Kaldığınız yerden devam etmek için giriş yapın.

Teknik Sorun MariaDB 1064 WHERE NOT EXISTS Hatası Çözümü

Etiketler 3
5cevap 57okunma

Yapay zekâ özeti

MariaDB 1064 hatasının yetki değil, INSERT ... VALUES (...) sonrasında geçersiz WHERE NOT EXISTS kullanımından kaynaklandığı belirtiliyor. Çözüm olarak addon_hooks kayıtlarında INSERT IGNORE kullanılmış ve Telegram konu/cevap hook kayıtları da aynı şekilde düzeltilmiş. homepage_layouts sorgusunda ise tekrar eklemeyi önlemek için LEFT JOIN ve WHERE existing.id IS NULL yaklaşımı kullanılmış.

Avatar
Üye 30 Puan Yeni Üye
18 Ağustos 2026, 20:42
Gizli Profil
MariaDB 1064 WHERE NOT EXISTS Hatası ve Çözümü
Kurulum sırasında şu hatayı alıyordum:
SQLSTATE[42000]: Syntax error or access violation: 1064
You have an error in your SQL syntax
near 'WHERE NOT EXISTS (...)'

Bu hata yetki hatası değil, SQL sözdizimi hatasıdır.
Sorun, bazı kayıtların şu şekilde eklenmeye çalışılmasıydı:
INSERT INTO addon_hooks (...)
VALUES (...)
WHERE NOT EXISTS (...);
WHERE NOT EXISTS, VALUES (...) ifadesinden sonra bu şekilde kullanılamaz. Bu nedenle MariaDB 1064 syntax error hatası vererek kurulumu durduruyordu.
Sorunu çözmek için şu işlemleri yaptım:
1. addon_hooks kayıtlarını düzelttim.
Eski yapı:
INSERT INTO addon_hooks (...)
SELECT ...
WHERE NOT EXISTS (...);

Yeni yapı:
INSERT IGNORE INTO addon_hooks
(addon_key, hook_name, callable_name, priority, is_active)
VALUES
('external_link_warning',
'render.footer.before_close',
'foriumExternalLinkWarningHook',
100,
1);

Aynı düzeltmeyi Telegram konu ve cevap hook kayıtlarına da uyguladım.
2. homepage_layouts sorgusunu düzelttim.
Eski sorguda yine WHERE NOT EXISTS kullanılıyordu. Bunun yerine LEFT JOIN kullanılarak kayıt daha önce eklenmişse tekrar eklenmemesi sağlandı:
INSERT INTO homepage_layouts (...)
SELECT ...
FROM (SELECT 1) AS seed
LEFT JOIN homepage_layouts AS existing
ON existing.is_system_default = 1
WHERE existing.id IS NULL;
Üyelere özel ek dosyadatabase.zipİndirmek için kayıt ol veya giriş yapGiriş yapKayıt ol
Merhaba Dünya
Bu yetki yalnız konu başlığını düzenler; mesaj içeriği değiştirilmez.
Cevaplar (5)
Avatar
Üye 30 Puan Yeni Üye
18 Ağustos 2026, 20:43
#2
Gizli Profil
konu 2500 karakter fazlalıgından eksık alta yazıyorum devamını
3. homepage_builder_layout_id ayarını düzelttim.Bu kayıt için INSERT IGNORE ... SELECT yapısına geçildi. Böylece ayar daha önce varsa tekrar eklenmeye çalışılmıyor.
4. SQL başlangıç ayarlarını MariaDB uyumlu hale getirdim.
Eski:
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
Yeni:
SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO';
SET time_zone = '+00:00';

Bu değişiklik, ANSI_QUOTES aktif olan MariaDB sunucularında oluşabilecek ek hataları önlüyor.
Önemli not:
Önceki başarısız kurulum tabloların bir kısmını oluşturduysa, aynı veritabanına tekrar kurulum yapılırken table already exists veya duplicate key hataları alınabilir. Bu nedenle yedek alın

Sonuç olarak kurulumun durmasına neden olan ana problem, INSERT sorgularında kullanılan hatalı veya kurulum sistemiyle uyumsuz WHERE NOT EXISTS yapısıydı. Bu yapıların tamamı kaldırılarak SQL dosyası tekrar düzenlendi.
https://www.virustotal.com/gui/file/a5bbfe6901292b099abfd2ef62365ed61703ac9d7ce8a7533a51da305f06a96b?nocache=1
Merhaba Dünya
Mevcut BBCode biçimleri korunur. Seçili metne araç çubuğundan biçim uygulayabilirsiniz.
Avatar
@Admin
Yönetici 1112 Puan Topluluk Elçisi
18 Ağustos 2026, 20:44
#3
Gizli Profil
QuoteWritten by Zeus
MariaDB 1064 WHERE NOT EXISTS Hatası ve Çözümü
Kurulum sırasında şu hatayı alıyordum:
SQLSTATE[42000]: Syntax error or access violation: 1064
You have an error in your SQL syntax
near 'WHERE NOT EXISTS (...)'

Bu hata yetki hatası değil, SQL sözdizimi hatasıdır.
Sorun, bazı kayıtların şu şekilde eklenmeye çalışılmasıydı:
INSERT INTO addon_hooks (...)
VALUES (...)
WHERE NOT EXISTS (...);
WHERE NOT EXISTS, VALUES (...) ifadesinden sonra bu şekilde kullanılamaz. Bu nedenle MariaDB 1064 syntax error hatası vererek kurulumu durduruyordu.
Sorunu çözmek için şu işlemleri yaptım:
1. addon_hooks kayıtlarını düzelttim.
Eski yapı:
INSERT INTO addon_hooks (...)
SELECT ...
WHERE NOT EXISTS (...);

Yeni yapı:
INSERT IGNORE INTO addon_hooks
(addon_key, hook_name, callable_name, priority, is_active)
VALUES
('external_link_warning',
'render.footer.before_close',
'foriumExternalLinkWarningHook',
100,
1);

Aynı düzeltmeyi Telegram konu ve cevap hook kayıtlarına da uyguladım.
2. homepage_layouts sorgusunu düzelttim.
Eski sorguda yine WHERE NOT EXISTS kullanılıyordu. Bunun yerine LEFT JOIN kullanılarak kayıt daha önce eklenmişse tekrar eklenmemesi sağlandı:
INSERT INTO homepage_layouts (...)
SELECT ...
FROM (SELECT 1) AS seed
LEFT JOIN homepage_layouts AS existing
ON existing.is_system_default = 1
WHERE existing.id IS NULL;
Üyelere özel ek dosyadatabase.zipİndirmek için kayıt ol veya giriş yapGiriş yapKayıt ol
Merhaba, Katkınız İçin Teşekkür Ederiz. 5 Çark Hakkı Tanımladık Hediye Olarak. Ama Otomatik Kurulumu tekrar denedik bir hata almadık. otomatik kurulum yapmadınız mı? mariadb sürümünüz nedir?
Alper — Forium Platform Geliştiricisi & Yazarı

Forium’un geliştirme, güvenlik ve sistem yönetimi süreçlerinden sorumlu resmî yönetici hesabıdır.

Yönetim • Geliştirme • Güncelleme • Teknik Destek

Geliştirici Profilini Görüntüle
Mevcut BBCode biçimleri korunur. Seçili metne araç çubuğundan biçim uygulayabilirsiniz.
Avatar
Üye 30 Puan Yeni Üye
19 Ağustos 2026, 12:09
#4
Gizli Profil
10.3.39-MariaDB - MariaDB Server bu hocam otomatik install ile yaptım son veritabanı yazdırmaya geldiğinde aldım bu hatayı PHPMyadmin surumumde Sürüm bilgisi: 5.2.1 bu hocam diğer arkadaşlar da aynı sorun olursa en azından çözümü yapabilirler <3
Merhaba Dünya
Mevcut BBCode biçimleri korunur. Seçili metne araç çubuğundan biçim uygulayabilirsiniz.
Avatar
@Admin
Yönetici 1112 Puan Topluluk Elçisi
19 Ağustos 2026, 12:20
#5
Gizli Profil
QuoteWritten by Zeus

10.3.39-MariaDB - MariaDB Server bu hocam otomatik install ile yaptım son veritabanı yazdırmaya geldiğinde aldım bu hatayı PHPMyadmin surumumde Sürüm bilgisi: 5.2.1 bu hocam diğer arkadaşlar da aynı sorun olursa en azından çözümü yapabilirler <3
anladım, sizinki biraz eskiymiş hocam. MariaDB 10.6.23 tavsiye ediyoruz. En Stabil Çalıştıgı olarak. eski sürüm kullanan arkadaşlar için desteginiz için teşekkür ederiz.
Alper — Forium Platform Geliştiricisi & Yazarı

Forium’un geliştirme, güvenlik ve sistem yönetimi süreçlerinden sorumlu resmî yönetici hesabıdır.

Yönetim • Geliştirme • Güncelleme • Teknik Destek

Geliştirici Profilini Görüntüle
Mevcut BBCode biçimleri korunur. Seçili metne araç çubuğundan biçim uygulayabilirsiniz.
Avatar
Üye 30 Puan Yeni Üye
19 Ağustos 2026, 12:31
#6
Gizli Profil
evet haklısınız kendi firmamada yazdım bu durumla ilgili ama en azından gene bu eski sürümden olanlar rahat kurulum yapabilsinler bari :)
Merhaba Dünya
Mevcut BBCode biçimleri korunur. Seçili metne araç çubuğundan biçim uygulayabilirsiniz.
Şu An Bu Konuyu Okuyanlar
Toplam: 1
+ 1 Ziyaretçi
Yanıt yazabilmek için Giriş Yapmalısınız.
0 alıntı seçildi