【自分用】URLを管理するシステムを作る
MySQLの話。url文字列をtextのカラムに入れようとしたら
#1170 - BLOB/TEXT column 'url' used in key specification without a key length
というエラーが出た。
TEXT型カラムにUNIQUEキーは張れない
http://www.deftrash.com/blog/archives/2009/11/mysql_keylength.html
http://hamamuratakuo.blog61.fc2.com/blog-entry-963.html
このようにハッシュ値を格納した別カラムにUNIQUEキーを張れば良い。
ハッシュについて勉強。
http://d.hatena.ne.jp/ryster/20110615/p1
>パスワードとかをDBに生で保存するのはほんとやめましょう。
…すみません。
ハッシュの種類
http://sehermitage.web.fc2.com/crypto/digest.html
web上で様々な種類のハッシュ計算ができる
http://good-tool.net/webtool/wt11hash.php
なるべく見ないようにしていたvarcherのサイズ問題
varcher(x)のxはバイト数なのか文字数なのか…
http://togetter.com/li/54358
http://oshiete.goo.ne.jp/qa/1778566.html
ここを見ると半角文字(1バイト文字)と書いてある。あ、でもこれは2005年の質問か。
今はマルチバイト文字数が入るとどこかで読んだはず!
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1197858716
>MySQL5.0.3以降、varcharは文字数です
うん、やっぱりね。カラムに設定してある文字セットの文字数が入るのであって、バイト数は関係ないと。
今回はハッシュ値(1バイト文字)を入れたいのでvarcher(128)
http://kaworu.jpn.org/kaworu/2008-04-02-2.php
mhash?なんだそれ。
http://stackoverflow.com/questions/1996934/in-php-what-is-the-difference-between-hash-and-mhash
「気にするな。mhashはもはや時代遅れだ」
と書いてある気がするので、mhashでなくhashでやることにする。
<?php
$sha512 = hash(sha512, $url);
//128byteのハッシュ値が帰ってくる
?>