Toon posts:

MySQL geeft ander resultaat na server upgrade

Pagina: 1
Acties:

Onderwerpen


  • PierreAronnax
  • Registratie: maart 2002
  • Niet online
Ik heb een probleem met een SQL query die een ander resultaat oplevert sinds een server upgrade.
Het gaat om MySQL met volgende versie:

root@db1:~# mysql --version
mysql  Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (x86_64) using readline 6.1

Ik weet helaas niet meer wat de versie was voor de upgrade...

Deze (sterk versimpelde) query werkt als verwacht:
SQL:
1
2
3
4
5
6
7
8
9
10
SELECT
    *
FROM
    F_DocumentSets sets
WHERE
    sets.FolderID IN (13536)
GROUP BY
    sets.DocumentID
LIMIT
    0, 30

Dit levert 30 resultaten op, zonder de LIMIT waren dit er 10.176 geweest.

Nu gaat er fout als de volgende query wordt uitgevoerd waarbij 'SQL_CALC_FOUND_ROWS' is toegevoegd:
SQL:
1
2
3
4
5
6
7
8
9
10
SELECT
    SQL_CALC_FOUND_ROWS *
FROM
    F_DocumentSets sets
WHERE
    sets.FolderID IN (13536)
GROUP BY
    sets.DocumentID
LIMIT
    0, 30

Dit levert 1 resultaat op. :? (En soms ook nog een andere rij)

Dit wordt ook bevestigd met:
SQL:
1
SELECT FOUND_ROWS();


Paar dingen die ik heb geconcludeerd:
  • Als de query zonder LIMIT minder resultaten geeft gaat het wel goed (ik weet niet waar dit kantelpunt ligt).
  • Als ik de GROUP BY achterwege laat gaat het wel goed.
  • Als ik SQL_BIG_RESULT toevoeg gaat het wel goed. :?
Ik ga er vanuit dat ik ergens een instellingkje van MySQL moet wijzigen ipv een programmeer fout, maar mijn zoekwerk heeft niks opgeleverd.

Iemand?

Pierre - Motormedia.nl - Motor-Forum.nl - Motorshopper.nl - Motormeuk.nl - Motorstek.nl


  • frickY
  • Registratie: juli 2001
  • Laatst online: 23:54
Als het een instellinkje is, dan is het de sql mode die nu ws. op STRICT staat. Draai ook eens een SHOW WARNINGS?

Die GROUP BY in combinatie met een SELECT * kan goed voor problemen zorgen.
MySQL is normaliter vrij vergevingsgezind, maar in elk ander DBMS zou dit een error geven. Als je de 'SELECT *' vervangt met 'SELECT sets.DocumentID' krijg je waarschijnlijk wel je 30 records?

[Voor 16% gewijzigd door frickY op 05-11-2010 19:39]


  • PierreAronnax
  • Registratie: maart 2002
  • Niet online
frickY schreef op vrijdag 05 november 2010 @ 19:38:
Als het een instellinkje is, dan is het de sql mode die nu ws. op STRICT staat.
SQL mode is '' (leeg, default).
Draai ook eens een SHOW WARNINGS?
Dit geeft geen warnings.
Die GROUP BY in combinatie met een SELECT * kan goed voor problemen zorgen.
MySQL is normaliter vrij vergevingsgezind, maar in elk ander DBMS zou dit een error geven. Als je de 'SELECT *' vervangt met 'SELECT sets.DocumentID' krijg je waarschijnlijk wel je 30 records?
Ik heb mijn query voor dit topic even sterk versimpeld, de originele gebruikt geen * maar geeft netjes alle kolommen op. Maakt geen verschil (ook niet als ik maar één kolom opgeef).

Pierre - Motormedia.nl - Motor-Forum.nl - Motorshopper.nl - Motormeuk.nl - Motorstek.nl


  • PierreAronnax
  • Registratie: maart 2002
  • Niet online
'Opgelost' door de Storage Engine te wijzigen van MyISAM in InnoDB. Ik begin nu eerder te denken aan een bug dan een instelling. Ik heb de buglijst al doorzocht, maar kan niks relevants vinden.

Pierre - Motormedia.nl - Motor-Forum.nl - Motorshopper.nl - Motormeuk.nl - Motorstek.nl


  • frickY
  • Registratie: juli 2001
  • Laatst online: 23:54
Hm. Er is mij ook geen reden bekend waarom dit anders zou werken in MyIsam dan in InnoDB.
Fijn dat je nog even hebt laten weten hoe je het hebt verholpen :Y

  • Razwer
  • Registratie: december 2000
  • Laatst online: 23-09 15:27
PierreAronnax schreef op zondag 07 november 2010 @ 12:32:
'Opgelost' door de Storage Engine te wijzigen van MyISAM in InnoDB. Ik begin nu eerder te denken aan een bug dan een instelling. Ik heb de buglijst al doorzocht, maar kan niks relevants vinden.
meld hem, dan merk je snel genoeg of het een bug of feature is :)

Newton's 3rd law of motion

Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee