MySQL bugok

Vegyünk egy piszok egyszerű lekérdezést:

SELECT *
FROM news
ORDER BY id DESC
LIMIT 0 , 10

Egy ilyen táblából:

CREATE TABLE IF NOT EXISTS `news` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(5) NOT NULL DEFAULT '0',
`cid` int(5) NOT NULL DEFAULT '0',
`lids` tinytext NOT NULL,
`uri_id` tinytext NOT NULL,
`title` tinytext NOT NULL,
`titletext` text NOT NULL,
`maintext` text,
`stamp` tinytext NOT NULL,
`approved` tinyint(1) DEFAULT '1',
`time` bigint(20) NOT NULL DEFAULT '0',
`views` int(11) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=68 ;

Én nem látok hibát. Márpedig így egy bizonyos mezőt mindig üresen ad vissza: uri_id. Próbáltam átnevezni is, az se számított.
Viszont ha az ORDER BY részt kiveszem vagy ASC-ra állítom, akkor már működik...
Whatta hell?

A másik meglepetés, ami sok időmbe került, az az volt, hogy ha egyazon felhasználóval csatlakozok 2 adatbázishoz ugyanazzal a címmel, akkor random elkezdi mixelni az adatbázisokat a lekérdezésekben. Magamtol sose jövök rá, hogy ha host/ip kettéválasztom őket, vagy másik felhasználóval csatlakozok, akkor már nem akad össze.

Hozzászólások

Ugye a legújabb stabil verzióval és hozzávaló klienssel tesztelted ezt?

en bekapcsolnam a warningokat, es megneznem ugy. bar valoszinuleg nem leszel tole okosabb, a mysqlt ismerve.

Töröltem a táblát, újra létrehoztam (most tinytext helyett varchar), nem csak export-import és kiderült a turplisság is:
Valamiért kitörlődött ennek a mezőnek a tartalma azoknál a soroknál, amiket használtam.
Igen, kitörlődött, mert DELETE parancs _nincs_ a teljes kódban, nemhogy abban ami lefutott. :)

Cserébe levágja a mezőt. :) Ha CSV-t LOAD DATA-val töltöttem be, akkor is tudott viccelni.

Az is külön öröm, hogy a pl. 'szabó' és 'szabo' stringeket egyezőnek veszi sima utf-8-as charsettel is és csak akkor tér észre, ha bináris kollációt mondok neki. A bináris kollációt viszont adott feltételekkel már nem eszi és dob egy errort...

sajnos EZ a szabványos viselkedés... accented karakterek egyezőek. Nálunk nem, de más nyelvekben igen.
ezért kell utf8_hungarian helyett utf8_hungarian2 vagy utf8_bin -t használni, ha magyar cuccot raksz bele.
ez van.

--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.

Oracle termék... ;)

-- "Bízzál Istenben és tartsd szárazon a puskaport!" - Cromwell --
-- Sayusi Ando - http://sayusi.hu --