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

mysql:2505

From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Wed, 27 Sep 2000 03:43:35 +0900
Subject: [mysql 02505] Re: mysqldump について

とみたです。

On Tue, 26 Sep 2000 10:27:27 +0900
Tetsuya Watanabe <watanabe@xxxxxxxxxx> wrote:

> 	以下のようにコマンドを打って(***は伏字)実行すると、
> 
> 	mysqldump -h *.*.*.* -u *** -p*** -C --opt *** >> ***.sql
> 
> 	以下ようなエラーが出て、ヘッダー部分を吐き出した後に止まります。
> 
> 	mysqldump: Got error: 1064: You have an error in your SQL s
> 	yntax near '32311 LOCAL */,予約 READ /*!32311 LOCAL */,部屋ID READ /*!3231
> 	1 LOCAL */' at line 1 when using LOCK TABLES

多分、LOCK TABLES 文でエラーになっていると思うので、「--opt」を
省けばうまくいくんじゃないかと思います。

どうやら、実行中のサーバの charset に合わないテーブル名があると
(つまり、サーバが sjis で動いていて、ujis のテーブル名があると)
エラーになるようですが、少なくとも 3.23.x では mysqldump がテーブル名
を `` で括るべきだと思うので、mysqldump のバグと言ってもいいかも。

…ということでパッチです。3.23.22 が手元になかったので、3.23.20 の
mysqldump に対するものです。

---
とみたまさひろ <tommy@xxxxxxxxxx> http://www.tmtm.org
日本MySQLユーザ会 http://www.mysql.gr.jp


*** mysqldump.c.orig	Tue Jun 27 11:29:10 2000
--- mysqldump.c	Wed Sep 27 03:26:28 2000
***************
*** 1118,1121 ****
--- 1118,1122 ----
    char *table;
    uint numrows;
+   char table_buff[NAME_LEN+3];
  
    if (init_dumping(database))
***************
*** 1127,1131 ****
      for (numrows=0 ; (table = getTableName(1)) ; numrows++)
      {
!       dynstr_append(&query, table);
        dynstr_append(&query, " READ /*!32311 LOCAL */,");
      }
--- 1128,1132 ----
      for (numrows=0 ; (table = getTableName(1)) ; numrows++)
      {
!       dynstr_append(&query, quote_name(table,table_buff));
        dynstr_append(&query, " READ /*!32311 LOCAL */,");
      }
***************
*** 1157,1160 ****
--- 1158,1162 ----
  {
    uint numrows;
+   char table_buff[NAME_LEN+3];
  
    if (init_dumping(db))
***************
*** 1168,1172 ****
      for (i=0 ; i < tables ; i++)
      {
!       dynstr_append(&query, table_names[i]);
        dynstr_append(&query, " READ /*!32311 LOCAL */,");
      }
--- 1170,1174 ----
      for (i=0 ; i < tables ; i++)
      {
!       dynstr_append(&query, quote_name(table_names[i],table_buff));
        dynstr_append(&query, " READ /*!32311 LOCAL */,");
      }

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

      2497 2000-09-25 21:39 [<kemi@xxxxxxxxxx>   ] 文字化けについて。                      
      2499 2000-09-26 00:32 ┣[とみたまさひろ <tomm]                                       
      2502 2000-09-26 10:11 ┗[Toyoshima Hiroshi <t]                                       
      2503 2000-09-26 10:27  ┗[Tetsuya Watanabe <wa] mysqldump について                  
->    2505 2000-09-27 03:43   ┗[とみたまさひろ <tomm]