MySQLでの日本語使用について

(OS X の方に返信がいただけなかったので、OS X Serverの方が分かる方が多いだろうと、こちらに移動させました。)
MySQLで日本語名のテーブルを作成したいのですが
Create文を実行すると、
"Can't create/write to file './dbname/tablename.frm' (Errcode: 22)"
というエラーが出てしまいます。
(注 dbname:データベース名、tablename:作成しようとしたテーブル名)
ちなみに、カラム名は日本語でもOKのようなのですが、
どうしたら日本語のテーブル名でテーブルを作成できるのでしょうか?
my.cnfにuse-character-set=sjis
を追加しているのですが、これはテーブル名称には関係無いのでしょうか・・・
Mac OS X 10.3.1と
MySQL(mysql-standard-4.0.15-apple-darwin6.4-powerpc)を使用

投稿日 2003/12/01 20:10

返信: 2

2004/01/08 07:27 Community User への返信

完全な回答ではありませんが、考えられることとして参考までにテストしてみてください。
まず、sjisを指定しているようですが、MACのコマンドラインからの日本語はSJISではないので、コマンドラインからCreate文を発行するところで問題が発生しているかもしれません。
カラム名で問題がなくてテーブル名で問題があるのは、テーブル名はディスク内でリアルなファイル名として利用されるためでしょう。
MACでMySQLを運用する時には英字のテーブル名でも大文字小文字でエラーが出たりすることもあります。
sjisではなくてOSとキャラセットを合わせて、なおかつ英字でテーブルを作成した後にOSからファイル名を日本語に直してMySQLを再起動したら日本語テーブル名になるかもしれません。
ファイル名の変更は使われている全てのファイル(普通は3つ)で変更する必要があります。また、grantなどをしている場合は後からやり直す必要があります。
お試しくださいませ

2004/01/09 05:09 Community User への返信

これって Mac OS X の実装上の日本語対応化に関する問題です。
将来的な実装変更に伴う問題発生を考えると、今無理してとりあえず日本語を使う方法を模索するよりは、無難に英数を使う運用で回避して、将来、完全に対応できて、その後の将来に渡って互換性が見えるようになった時点でやっと日本語を使うぐらいがいいと思います。
あえて苦難の道を歩んで MySQL のソースを修正して動くようにしてくれるのは歓迎されるとは思いますけど、MySQL の ML 等で開発者と直接議論するのでなく Discussion Boards でトピック作成してしまうくらいだからそれは無いか。:P
Mac OS 9 以前と違って、Mac OS X ではわざわざ Finder で見せ方を変えて対応してるくらい日本語システムファイルが作られないように回避しているところをみると、バックアップ等の時でもそうですが現状のファイルシステムレベルの日本語名使用は問題を抱える可能性が高くなるように思います。
こちらも Darwin のソースを修正して動くようにしてくれるのは歓迎されるとは思います。:P
カテゴリとしては Mac OS X を使っている以上は Mac OS X のほうでしょう。サーバ的使用法をしているから Mac OS X Server のほうではなくて、Mac OS X Server を使っているとかそういう使い分けをしないと話が見えないと思います。Mac OS X Server で対応されている Case-sensitive HFS+ とかで使っていたり別製品的に挙動や対応が、全く違うかもしれませんし。:P
Mac OS X Server を使っているユーザは、業務等?での経験上、問題解決への意識が高いかもしれません。:P
より高度なサポートを希望するのなら、アップルに連絡を取ってみるとよい対応が得られるかもしれません。
# UTF のテーブル名で値の入出力は SJIS とかすごく実装が面倒そうだ。:P
私のメッセージは私の著作物であり無断引用を禁止します。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

MySQLでの日本語使用について

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。