vreemde error ontdekt in Mysql on InnoDB tabel
voor diegenen die het willen weten ik ontdekte de error
bij het gebruik van`` en ´´ in sql querys de 2de codeert data waardoor een sql query in feite met raw data wordt gevuld zie hier de query:
SELECT * FROM `suppliers` WHERE supplier like ´%bachem%´
Zie hier de response van MySQL:
There is a chance that you may have found a bug in the SQL parser. Please examine your query closely, and check that the quotes are correct and not mis-matched. Other possible failure causes may be that you are uploading a file with binary outside of a quoted text area. You can also try your query on the MySQL command line interface. The MySQL server error output below, if there is any, may also help you in diagnosing the problem. If you still have problems or if the parser fails where the command line interface succeeds, please reduce your SQL query input to the single query that causes problems, and submit a bug report with the data chunk in the CUT section below:
----BEGIN CUT----
eNo1jrtugzAARXd/xR2SpQILUxLAG0JugsSrNg1SpjzqNqhAKCRD/osvyJcVhq73da6QMpMcIUNo
IxYph+PC8bDyiComYyQk3CmORfTJMfzW3bEfdE/r6kS7Swf/lbmwLWttWp7J1mAud2xusT1q3fhY
kOSh3mOOFbWo7Zrna9Pc2+r2MOvrN/lQEpkyEGxEWhjYiYlXVi2SbB/FcTCXSJ4EHDb1KaOM5Nt8
ThmZmhdt6qCM0rQgcZBuOHRr3m9f5nR8JioRi7DAC95kluAw3LuurnQ/HFBuhRT4F1BXPxrPcXk6
ni+6WT7HP8atTMw=
----END CUT----
----BEGIN RAW----
ERROR: C1 C2 LEN: 47 48 58
STR: �
CVS: $Id: sqlparser.lib.php 9317 2006-08-16 17:42:01Z lem9 $
MySQL: 5.0.27-community-log
USR OS, AGENT, VER: Win MOZILLA 5.0
PMA: 2.9.1.1
PHP VER,OS: 5.2.4 WINNT
LANG: en-utf-8
SQL: SELECT * FROM `suppliers` WHERE supplier like ´%bachem%´
----END RAW----
SQL query: Documentation
SELECT * FROM `suppliers` WHERE supplier like ´%bachem%´
MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%bachem%´' at line 1
SELECT * FROM suppliers WHERE supplier like %bachem%
Kan aan mij liggen, maar je verneukt gewoon je query, phpMyAdmin lult wat en het moet opeens een bug zijn? Lijkt me sterk..
Geen backticks gebruiken alleen ' ' voor strings!
??
Of zo:
SELECT * FROM suppliers WHERE supplier = '%bachem%'
LIKE en gewoon = is een geruwelijk groot verschil hoor robert..
'%bachem%´
Vaak (iig bij de vorige versie, ik gebruik zelf wel altijd LIKE) kan je ook gewoon = '%blabla%' gebruiken. Of het nog zo is weet ik niet, maar dat werkte op zich hetzelfde.
ik begrijp natuurlijk dat je geen backticks mag gebruiken maar waar het mij omgaat is de anderen wijzen op de error report die Mysql hierbij geeft Santhe stelt hierover inderdaad een goede vraag waar komt die %bachem%´ vandaan bij het gebruik van backtiks thats the topic
hmmm maakt deze eigenschap Mysql nu funerable voor zgn file injections bij het gebruik van backticks in querys ?
Gewijzigd op 01/01/1970 01:00:00 door malick heuvel
ik dacht toch echt dat alleen like mocht.
beiden mogen alleen het verchil LIKE is niet hoofdletter gevoelig en zal dus meer vinden bij een wildcart select dan =
Quote:
MySQL gebruikt het begrip 'database' om aan te geven dat het een verzameling bugs, fouten en blunders betreft. Dat je dan weer eens iets nieuws ontdekt, is niets bijzonders. De meeste fouten van MySQL staan gewoon beschreven in de handleiding, het is normaal gedrag dat er iets niet werkt of dat jij jouw data kwijt raakt.vreemde error ontdekt in Mysql
Dat anderen denken dat ze met deze verzameling ellende een goede en vooral veilige DBMS in huis hebben, dat is hun probleem.
hmmm daar zeg je me wat pgFrank, dat is zeer gevaarlijk. Er zijn ontelbare partijen betrokken bij MySQL en ik heb nog nooit zo een mysql tegenstander als jou gevonden. Gedeeltelijk geef ik je geen ongelijk, maar dit is een ernstig probleem indien het werkelijk een hoop bugs betreft en er risicos zijn dat men data zomaar kwijt kan raken
Maak hier eens:
SELECT * FROM supplier WHERE supplier like '%bachem%'
Het probleem is, zoals mensen eerder al zeiden: het gebruik van rare quotes.
Check dit eerst, daarna kunnen we het nog hebben over dat je natuurlijk veel beter postgresql kunt gebruiken omdat dat nou een maal veel beter is.
Tabel aanmaken met een kolom 'content' van het type VARCHAR(255). Vervolgens slinger je daar een stuk tekst in die meer dan 255 karakters bevat en dat was het dan. Alles wat niet in het veld past, raak je kwijt. Dat ondanks dat je hier een foutmelding op hoort te krijgen. Die kun je wel krijgen, maar alleen in het zeldzame geval dat je STRICT-mode gebruikt. En laat nu vrijwel niemand deze instelling gebruiken omdat dan veel bestaande systemen niet meer werken of heel foutmeldingen gaan geven.
Op Yapf.net vind je een overzicht van heel veel MySQL-ellende wat helemaal niet nodig is. Gebruik een echte DBMS en klaar ben je.
Gewijzigd op 01/01/1970 01:00:00 door malick heuvel