mysqldump是否存在区分大小写的问题?赢->;linux

mysqldump是否存在区分大小写的问题?赢->;linux,mysql,windows,linux,mysqldump,Mysql,Windows,Linux,Mysqldump,当我使用mysqldump转储带有大写字母的表时,它在我的>dump.sql文件中显示为小写。2006年,我在这里找到了一份报告,差不多有4年了 一个建议是让linux不敏感。如果可能的话,我宁愿不要。将win32 db复制到linux中最简单的方法是什么 根据MySQL手册,您只有有限的选项: 在所有系统上使用小写字母表名称=1。主要缺点 这就是当你使用SHOW的时候 表或显示数据库,您不需要 看到他们原来的名字了吗 信箱 在Unix上使用小写字母\u table\u names=0,在Un

当我使用mysqldump转储带有大写字母的表时,它在我的>dump.sql文件中显示为小写。2006年,我在这里找到了一份报告,差不多有4年了


一个建议是让linux不敏感。如果可能的话,我宁愿不要。将win32 db复制到linux中最简单的方法是什么

根据MySQL手册,您只有有限的选项:

  • 在所有系统上使用小写字母表名称=1。主要缺点 这就是当你使用SHOW的时候 表或显示数据库,您不需要 看到他们原来的名字了吗 信箱

  • 在Unix上使用小写字母\u table\u names=0,在Unix上使用小写字母\u table\u names=2 窗户。这可以保存信箱 数据库和表名的定义。这个 这样做的缺点是你必须 确保你的陈述总是正确的 请参考您的数据库和表名 带上正确的信箱 窗户。如果你转移你的 到Unix的语句,其中的字母大写 重要的是,如果 这个信箱不正确

    异常:如果您正在使用InnoDB表并试图 避免这些数据传输问题, 您应该设置小写字母表名称 在所有平台上设置为1以强制命名 转换成小写


请参阅:有关详细信息。

今天我不得不这样做。我已经有小写的windows db,需要使用区分大小写的表名导入到linux db,因此在not选项中使用lowecase_table_names选项:)

“show tables”似乎显示了经过适当排序的表名,转储文件中的表名转义为“character”。我已使用以下算法成功导入数据库:

  • 我有带小写windows转储的mydb.sql
  • 我启动应用程序在Linux中创建数据库模式,使用区分大小写的名称
  • 然后我在dump中有小写的名称,在mysql数据库中有区分大小写的名称。我使用以下脚本使用sed&awk转换了转储文件:

    #!/bin/bash
    
    MYSQL="mysql -u root -p mydb"
    FILE=mydb.sql
    
    TMP1=`mktemp`
    TMP2=`mktemp`
    
    cp $FILE $TMP1
    
    for TABLE in `echo "show tables" | $MYSQL`; do
      LCTABLE=`echo $TABLE| awk '{print tolower($0)}'`
      echo "$LCTABLE --> $TABLE"
      cat $TMP1 | sed "s/\`$LCTABLE\`/\`$TABLE\`/" > $TMP2
      cp $TMP2 $TMP1
    done
    
    cp $TMP1 $FILE.conv
    
    rm $TMP1
    rm $TMP2
    

    并且垃圾场已正确转换。在Linux中导入后,一切都正常。

    所有这些选项都要求用户在创建数据之前回到时间并配置其数据库小写字母表名称选项。