2013-01-18 25 views
7

Próbuję zwrócić kod MD5 zakodowany ciąg wartości z mojej bazy danych, ale po prostu zwraca pusty wynik (nie puste, po prostu puste). Próbowałem właśnie uruchomiony tej kwerendy i uzyskać ten sam rezultat:Funkcja MD5 zwraca pusty wynik

SELECT MD5('test'); 

Próbowałem ponownego uruchamiania serwera MySQL, MySQL Workbench itd Jednak uzyskać ten sam rezultat. Jeśli spróbuję uruchomić to samo polecenie na innej bazie danych/serwerze, to zwraca ciąg hashów dokładnie w porządku.

Co robię źle? Czy jest jakieś ustawienie wyłączone w razie wypadku?

+0

Czy próbował uruchomić kwerendę nad CLI (mysql.exe)? –

+0

Nie, uruchomiłem go w środowisku roboczym mySQL. – JimmyJammed

Odpowiedz

9

Przed MySQL v5.5.3, MD5() zwrócił ciąg binarny.

Domyślnie MySQL Workbench nie wyświetla ciągów binarnych (aby uniknąć przypadkowej błędnej interpretacji); jednak możliwe jest wyświetlanie binarnych wartości ciągu w siatkach wyjściowych: Widok> Edycja> Preferencje> Edytor SQL> Traktuj BINARY/VARBINARY jako nie będący ciągiem znaków.

Alternatywnie, albo uaktualnić serwer MySQL lub przekodować ten wynik nie binarnej zestawu znaków:

SELECT CONVERT(MD5('test') USING utf8) 
+0

Dzięki, że to poprawione! Dziwne, że pokazał wynik podczas korzystania z tego samego Workbencha, ale różne bazy danych/serwery. – JimmyJammed

+0

@JamesHickman: Nie tak dziwnie, biorąc pod uwagę pierwszą linię mojej odpowiedzi ... – eggyal

+0

Ach, myślałem, że to może być spowodowane IDE. Dobre wytłumaczenie! – Leigh