At 5:28 -0500 12/29/02, Philip Mak wrote:
sql, table
I'm storing a SHA1 checksum as "varchar(20) binary" in my application.
Other people have addressed other aspects of your message, but I'm
curious why you're using a VARCHAR(20), when SHA1() returns a 40-byte
string.
After running a test, it seems MySQL will strip trailing spaces from a
varchar column, even if it is binary! That means if the last character
of my SHA1 checksum happens to be a space, MySQL will corrupt it.
SHA1() returns a string of 40 hexadecimal digits. There won't be trailing
spaces.
Are you converting the hex string to some other representation before
storing it?
What should I do? It seems I can:
1. Use blob instead of varchar.
Problem: blob type is slower.
2. Make my application pad the checksum out to 20 spaces.
Problem: Increases my code complexity a bit.
3. Wait for MySQL to fix the strip trailing spaces bug.
Problem: That doesn't provide an immediate solution.
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php