[前][次][番号順一覧][スレッド一覧]

mysql:1824

From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Wed, 29 Mar 2000 00:39:49 +0900
Subject: [mysql 01824] Re: Quoted column name on mysqldump output

とみたです。

At Tue, 28 Mar 2000 18:38:06 +0900,
takeshi@xxxxxxxxxx wrote:

> > mysqldumpでダンプすると、日本語の項目名がquoteされます。
> > それでそのままmysqlにかけると、「You have an error in your 
> > SQL syntax near '`項目名`」と怒られてしまいます。

> mysqldump version 7 から quote が導入された際に、
> multibytes 文字のことが考慮されていないようです。

おや、そういう問題があったとは…。

> MySQL-3.22.27 付属の mysqldump コマンドは version 6.4 で
> この問題は起きないです。
> 
> 古いバージョンの mysqldump コマンドを使用するか、
> 以下のパッチを当てて、quote をつけないように mysqldump コマンドを
> 変更してみてください

やはり正当な方法としては mysqldump を MB 対応にするってもんでしょう :-)
ということでパッチです。

--
とみたまさひろ <tommy@xxxxxxxxxx>


--- mysqldump.c.orig	Fri Feb 11 06:07:42 2000
+++ mysqldump.c	Wed Mar 29 00:08:17 2000
@@ -469,10 +469,22 @@
 
 static bool test_if_special_chars(const char *str)
 {
+#if defined(USE_MB) && defined(USE_MB_IDENT)
+  const char *end;
+  end = str+strlen(str);
+  while (str < end) {
+    int l = 0;
+    if (!isvar(*str) && *str != '$' && (l = ismbchar(str, end)) == 0)
+      return 1;
+    str += l? l: 1;
+  }
+  return 0;
+#else
   for ( ; *str ; str++)
     if (!isvar(*str) && *str != '$')
       return 1;
   return 0;
+#endif
 }
 
 /*

[前][次][番号順一覧][スレッド一覧]

      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>]