mysql:9928
From: Hirofumi Fujiwara <Hirofumi Fujiwara <fuji@xxxxxxxxxx>>
Date: Thu, 29 Jul 2004 14:57:37 +0900 (JST)
Subject: [mysql 09928] 日本語カラム名を使用した時の参照制約について
藤原です カラム名に日本語を使用した場合、INNODB では参照制約がうまくいかない 場合があるようです。 http://dev.mysql.com/doc/mysql/en/InnoDB_foreign_key_constraints.html にある最初のサンプル、および Paul DuBoisのMySQL本 p.248 を参考に以下の ようなSQL文を作って、テーブル作成を試みました。 ------------------------------------------------------------------------ original SQL statements This works well ------------------------------------------------------------------------ create table parent ( par_id INT NOT NULL, PRIMARY KEY (par_id) ) TYPE = INNODB; create table child ( par_id INT NOT NULL, child_id INT NOT NULL, PRIMARY KEY (par_id,child_id), FOREIGN KEY (par_id) REFERENCES parent(par_id) ON DELETE CASCADE ) TYPE = INNODB; ------------------------------------------------------------------------ child_id is replaced as 子供 This works well ------------------------------------------------------------------------ create table parent ( par_id INT NOT NULL, PRIMARY KEY (par_id) ) TYPE = INNODB; create table child ( par_id INT NOT NULL, 子供 INT NOT NULL, PRIMARY KEY (par_id,子供), FOREIGN KEY (par_id) REFERENCES parent(par_id) ON DELETE CASCADE ) TYPE = INNODB; ------------------------------------------------------------------------ par_id is replaced as 親 This doesn't work ------------------------------------------------------------------------ create table parent ( 親 INT NOT NULL, PRIMARY KEY (親) ) TYPE = INNODB; create table child ( 親 INT NOT NULL, child_id INT NOT NULL, PRIMARY KEY (親,child_id), FOREIGN KEY (親) REFERENCES parent(親) ON DELETE CASCADE ) TYPE = INNODB; mysql> create table parent ( -> 親 INT NOT NULL, -> PRIMARY KEY (親) -> ) TYPE = INNODB; Query OK, 0 rows affected, 1 warning (0.07 sec) mysql> create table child ( -> 親 INT NOT NULL, -> child_id INT NOT NULL, -> PRIMARY KEY (親,child_id), -> FOREIGN KEY (親) REFERENCES parent(親) ON DELETE CASCADE -> ) TYPE = INNODB; ERROR 1005 (HY000): Can't create table './test/child.frm' (errno: 150) ------------------------------------------------------------------------ ujisで実行した場合は、上記のようなエラーになって、作成できませんでした。 後からALTERで制約を加えようとしても、そのときにエラーが発生しました。 なお、utf8 にて実行した場合は、OKでした。 ということは、SQL文のメタデータであるカラム名を取得するとき、何らかの 変換ミスが発生しているのでしょうか? このレベルは調べ難いので、MySQL側で調査してもらえると助かります。また、 日本語カラム名を使いたがっている人もいるので、是非対応して欲しいです。 # 今のところは、日本語カラム名を使わないというのが一応安全策ではありま # すが、あまり望ましいことではないですね。 ------------------------------------------------------------------ 株式会社 タイムインターメディア 藤原 博文 fuji@xxxxxxxxxx 本社 160-0002 東京都新宿区坂町26-27 IPBビル TEL 03-5362-9009 URL http://www.timedia.co.jp/ FAX 03-5362-9008 地図 http://www.timedia.co.jp/company/map/ 新宿線曙橋駅徒歩5分 ------------------------------------------------------------------ ♪ Puzzle Japan http://www.puzzle.jp/ 毎日新作パズルで遊ぼう ♪ ------------------------------------------------------------------
-> 9928 2004-07-29 14:57 [Hirofumi Fujiwara <f] 日本語カラム名を使用した時の参照制約について 9929 2004-07-29 16:30 ┣[<akebi.yaji@xxxxxxxx] 9930 2004-07-29 16:51 ┃┗[Hirofumi Fujiwara <f] 9932 2004-07-30 06:30 ┃ ┗["Shuichi Tamagawa" <] 9931 2004-07-30 05:57 ┗["Shuichi Tamagawa" <] 9934 2004-07-30 14:53 ┗[Hirofumi Fujiwara <f]