birde arkada hangi database i kullandığını merak ediyordum hakkat 🙂
Category: mysql
how to select hibernate envers audited dates in mysql
just select dates is easy like this
SELECT FROM_UNIXTIME( revtstmp/1000 ) FROM revinfo;
if you want the detailed data result you can do like this.
SELECT r.rev,FROM_UNIXTIME( revtstmp/1000 ),pa.* FROM revinfo r
left join picture_aud pa on pa.rev=r.rev;
well you just need to change table name up there picture to what ever is your table name is.
mysql select log
normalde gelen her sql in logu tutulmaz ama diyelimki bir uygulama geliştiriyorsunuz ve mysql’den sql hatası geliyor napcaz. o sql i görcez. bende limit ?limit dediğim yerde abuk bir hata geliyor. sonuçda limit ne kadar hata yapabilirimki. windowsda bu işlem biraz zahmetli ki ortamım linux değil. general_log diye bir argüman var mysql dökümantasyonda ama bi türlü yerini gösteremiom windows 7 de log u conf dan veremedim. bu durumda şöyle yapıyoruz
SET GLOBAL general_log = ‘ON’; komutu ile çalışan mysql de sql logu aktif ediyoruz. sonra mysql administrator ile girip baktığımızda aynen sql leri görüyoruz.
bu arada benim hatam ?limit değişkenine string atıyormuşum oda tırnak içinde yazarmış limit ’12’ buda hatayı patlatırmış. neyse logda gördüm düzelttim tıkanana çare =)
sıralı gitmesi gereken verilerdeki eksik id’leri bulmak
database de bir kolonuzun sıralı gitmesi gerekiyor. 1 2 3 4 5 6 7 8 9 gibi sıra sıra olması gereken bir kolonunuz var ama nerden insert yapıyorsanız bu kolona ordan bi şekilde sırayı bozup veri gönderiyorsunuz ve bunu çözme şansınız yok. şimdi ne yapabilirsiniz 🙂
tabiiki arkadaşınıza şunu sorarsınız. olm bu veriler sıralı olmalı ama arada boşluklar var ve öyle bi kayıt tabloda olmadığı için nasıl select ederim bilemiyorum.
bende bunu epey aradım düşündümde bulamadım 🙂 yani olmayan kayıdı nasıl bulabilirsinki bütün database de arama mantığı olan veriler üstünedir 🙂 neyse hemen örnek geliyor
select l.id + 1 as start
from tablo as l
left outer join tablo as r on l.id + 1 = r.id
where r.id is null;
kendinden kendine left outer joinli selectimizde id nin null olduğu yerleri ver ve id her zaman id+1 e eşit olsun diye bir tarama yapan bu mükemmel select sonuç olarak tabloda eksik olan id leri tıkıt tıkır sıralıyor.
duplike verilerin olduğu satırları yakalamak
mysql veya mssql hangi database i kullanıyorsanız kullanın yazılım gelişim sürecinde illaki birgün bir kolona unique vermeniz gerekecekdir ve buda var olan veriler yüzünden problem olacakdır ve tanıdığınıza soracaksınız: aynı verinin/duplikasyon/çoklanan olduğu satırları nasıl bulabilirim ?
mysql için örnek:
select unique_olmasi_gereken, count(*) from tablo
group by unique_olmasi_gereken
having count(*) > 1;
sonra isterseniz o satırların idlerine göre silersiniz örnek
delete from tablo where satir_id in (select satir_id,unique_olmasi_gereken, count(*) from tablo
group by unique_olmasi_gereken
having count(*) > 1;)
tube8.com patladı göstermeliyim :)
tube8 alexa sırası 70 olan bir porno sitedir. akşam üstü son turumu atıom bende 🙂 bakın ne verdi:
Warning: mysql_connect() [function.mysql-connect]: Too many connections in /www/tube8.com/inc/init.inc.php on line 49
Warning: mysql_query() [function.mysql-query]: Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2) in /www/tube8.com/inc/init.inc.php on line 59
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /www/tube8.com/inc/init.inc.php on line 59
Mysql error: Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)
UPDATE videos SET views=views+1 WHERE id=158623
yani neymiş. gösterim adedi tutmak kolay iş değil her boku mysql e yıkmamak da fayda varmış hele bide alexada 70. olcak kadar öküz trafiğin varsa bu yapılan eşşekliktir =)
mysql select count(*) count(field) hangisi ?
bende bunu bilmezdim az evel okurken gördüm. count(*) daha hızlı count(Kolonİsmi) ise bütün tablonun taranmasına sebep oluyor. ondan daha sağlıklı /anlık sonuç veriyor.
yazının devamını okumak isteyen ve gerçek rakamlara ulaşmak isteyen buyursun.
mysql yedekleme
mysql bakımımızı yaptıktan sonra. sıra geldi yedek almaya. corrupt bir tablomuz var her ne kadar tamirde etsek olmadı. mesele değil onsuz yedek alalım.
durmadan mysql yedeklememysqldump --force --lock-tables=false -hHostAdresiAdı -uKullanıcıAdı -pŞifre DatabaseAdı > DosyaAdı.sql
“–force” sayesinde arada problemli tabloda olsa btün database yedeklenicektir.
mysql bakımı
myisam tabloları arada bir çatlar. mysql in öyle bir yapısı var işte 🙂 neyse sonuçta arada bir bakım ister mysql demek buda.
mysql database e nasıl bakım yapılır.
1. yol server da root veya adminsek komut satırındanmysqlcheck -u root -p --auto-repair --check --optimize --all-databases
2. yol serverda root değiliz ve/veya shared hosting bir tane database’i onarcaz.
mysqlcheck -uKullanıcıAdı -pParola -hHostAdresi DB_ADI --auto-repair --check --optimize
bazı tablolar yinede corrupt görünebilir. bu durumda
repair table tablo_adı use_frm;
denenebilir. bazen mysqlcheck “Segmentation fault” veripde göçebilir bu durumda “–auto-repair” yerine “–repair” yapıp deneyebilirsiniz. bu durumda komutumuz şöyle olucak.
mysqlcheck -uKullanıcıAdı -pParola -hHostAdresi DB_ADI --repair --check --optimize
birde işlemi hızlandırmanız gerekebilir ki benim database de çok tablo vardı –fast ve –quick ekledim.
mysqlcheck -uKullanıcıAdı -pParola -hHostAdresi DB_ADI --repair --check --optimize --fast --quick
bu şekilde epey hızlı ve problemli tablolar olsada işine devam etti mysqlcheck ve bütün database bakımı bitti.
mysql’i sun aldı ve mysql sunu bıraktı
aylar önce sun mysql i aldığında herkezin kafasında ulan nolcak mysqli kayıpmı edioz durumu nere gidio gibi sorular vardı. aradan aylar geçdi ve monty(mysql kurucusu ve geliştiricisi) sun’u bırakdı:)
bana sanki sun’a kazık atılmış gibi geldi yaf. sonuçda bunu daha iyi yerlere götürme şansı olan sun’ken adam bırakdı. demekki komuniteye güvenio bu monty adamı bakalım nere gidecek burdan hikaye. bide sidik yarışı olmuş olabilir monty maria yı geliştirmek istiom diyik sanki sun da olmaz başka bişey yap demiş gibi.
yarın bide bakıoz qt cilerde nokia yı bırakıomuş hahaha ne gülerim 🙂