2011-06-25 7 views
2

問題は、MySQLデータベースがLinus上にあり、Windows上にMySQL DBが展開されていることです。 DBはInnoDBです。そこで、大文字と小文字を区別するテーブルの名前で問題が発生しました。だから、それはOSの種類からindipendantされている名前PHP MySQL InnoDB Unix Windowsの大文字と小文字を区別するテーブル名

function getTableName($table_name){ 
    $query="select TABLE_NAME from `information_schema`.`TABLES` where table_name 
    like '%$table_name%' "; 
    $result=mysql_query($query,$this->connection); 
    $err_number=mysql_errno($this->connection); 

    if (!$err_number){ 
     $num_rows = mysql_num_rows($result); 
     if ($num_rows==1){ 
      $row = mysql_fetch_assoc($result); 
      return $row["TABLE_NAME"]; 
     }else { 
      return ""; 
     } 

    }else { 
     return ""; 
    } 
} 

: は、私のような解決策を見つけました。しかし、同じことをするMySQLのオプションが存在する可能性がありますか?

答えて

3

は、それが簡潔とTO-点だが、それはInnoDBのために不可欠であるので、私はこの答え(この1のための1)だけでなく、好きlower_case_table_namesオプション

+0

を使用しています。制約名は大文字小文字の区別があり、非常にうまく移行しません。テーブル名を小文字に変更しても、制約は変更されません。このオプションを適用した後でも、すべての制約がすべて小文字であることを確認してください。これは、InnoDBをLinuxからWindowsに移行する際に特に重要です。 – RolandoMySQLDBA

関連する問題