mysql:1819
From: <takeshi@xxxxxxxxxx>
Date: Tue, 28 Mar 2000 18:38:06 +0900
Subject: [mysql 01819] Re: Quoted column name on mysqldump output
At Tue, 28 Mar 2000 17:36:09 +0900, Kengo Jinno <kengo@xxxxxxxxxx> wrote: > > 神野です。 > > Linuxでmysql 3.22.32 (ujis)を使っています。 > > mysqldumpでダンプすると、日本語の項目名がquoteされます。 > それでそのままmysqlにかけると、「You have an error in your > SQL syntax near '`項目名`」と怒られてしまいます。 > > 具体的には、 > > | create table テスト ( > | english int, > | 日本語 int > | ); > > というようなテーブルを作成し、mysqldump -d でダンプします。 > すると、こうなります。 > > | CREATE TABLE テスト ( > | english int(11), > | `日本語` int(11) > | ); <cut> > それぞれのバージョンは、以下の通りです。 > > | foo:~$ mysql --version > | mysql Ver 9.38 Distrib 3.22.32, for pc-linux-gnu (i686) > | foo:~$ mysqldump --version > | mysqldump Ver 7.1 Distrib 3.22.32, for pc-linux-gnu (i686) > > ・そもそもquoteされてしまうのが、どこかおかしいのでしょうか? > ・このquoteを抑止する方法は無いでしょうか? > --quote-namesの逆のオプションがあればいいのですが。 mysqldump version 7 から quote が導入された際に、 multibytes 文字のことが考慮されていないようです。 MySQL-3.22.27 付属の mysqldump コマンドは version 6.4 で この問題は起きないです。 古いバージョンの mysqldump コマンドを使用するか、 以下のパッチを当てて、quote をつけないように mysqldump コマンドを 変更してみてください --- mysqldump.c.orig Fri Feb 11 06:07:42 2000 +++ mysqldump.c Tue Mar 28 18:31:04 2000 @@ -559,7 +559,8 @@ strpos=strmov(strpos,row[SHOW_FIELDNAME]); if (!tFlag) { - if (opt_quoted || test_if_special_chars(row[SHOW_FIELDNAME])) +/* if (opt_quoted || test_if_special_chars(row[SHOW_FIELDNAME]))*/ + if (opt_quoted) fprintf(sql_file, " %c%s%c %s", QUOTE_CHAR,row[SHOW_FIELDNAME], QUOTE_CHAR, row[SHOW_TYPE]); else if (opt_keywords) -- 村上 毅 takeshi@xxxxxxxxxx
1818 2000-03-28 17:36 [Kengo Jinno <kengo@x] Quoted column name on mysqldump output -> 1819 2000-03-28 18:38 ┗[<takeshi@xxxxxxxxxx>] 1820 2000-03-28 19:18 ┣[Kengo Jinno <kengo@x] 1824 2000-03-29 00:39 ┗[とみたまさひろ <tomm] 1829 2000-03-29 10:08 ┗[<takeshi@xxxxxxxxxx>]