- ベストアンサー
MySQLでテンポラリのドライブ変更ができないエラーの解決方法
- Win2000のMySQLでテンポラリのドライブ変更ができないエラーが発生し、解決方法を探しています。
- テンポラリのドライブ変更を試みた際にエラーが発生し、C:ドライブの空き容量が1G程度しかないため、D:ドライブに移そうとしてもエラーが発生します。
- MySQLadministratorの設定からも変更できず、解決策がわかりません。WinとLinuxの違いなども含め、解決方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>MySQL5.0ではMy.iniはMySQL4.0のように[mysqld]で区分されていなかったと思います 私の環境は、MySQL 5.0.19-ntなのですが、My.iniの[mysqld]等のセクションの指定は、MySQL 4.1と同等だと思いますよ? 私の環境のMy.ini(抜粋)は、下記のようになっています。 [mysqld] language=japanese-sjis # The TCP/IP Port the MySQL Server will listen on port=3306 #Path to installation directory. All paths are usually resolved relative to this. basedir="C:/Program Files/MySQL/MySQL Server 5.0/" #Path to the database root datadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/" tmpdir="C:/temp/MySQL/" なお、私の使用バージョンでは、「set tmpdir=値」や「--tmpdir」で「unknown system variable」と矛盾するエラーになってしまいます。 バグがあり、Mysql5.0.45までには修正されたのかも知れませんね。 なお、My.iniにtmpdirの指定を入れ、サービスの停止・再起動で変更が反映されることは、私のバージョンでは確認済です。
その他の回答 (2)
- chukenkenkou
- ベストアンサー率43% (833/1926)
#1回答者です。 tmpdirの変更方法について、回答します。 tmpdirは、ダイナミックな変更(setコマンドでの変更)は、できません。 (1)My.iniまたはMy.cnfのどちらか実際に使っている方の[mysqld]下に、tmpdirの指定を入れる。 (2)MySQLのサービスを停止、再起動する。 これで変更できていると思うので、「show variables like 'tmpdir'で確認してみてください。
補足
詳細を解説いただきありがとうございます。 手元で中身の正確な確認できない中の補足になってしまいますが、 MySQL5.0ではMy.iniはMySQL4.0のように[mysqld]で区分されていなかったと思います。その際の指定の加え方がまったくわからないのですが・・・ mysqld --tmpdir 'D:/TEMP' と指定ができないか明日にでも・・・とは考えていましたが。
- chukenkenkou
- ベストアンサー率43% (833/1926)
Yahoo!知恵袋にも質問していた人でしょうか? 2800万件ものデータをSQLでソートさせることの方が異常であり、インデクスを定義してソート抑止すればいいだけの話では? 「select ~ from t1 order by c1」のようなSQLであれば、c1にインデクスを定義し、「select ~ from t1 where c1>=0 order by c1」のようにc1が全件ヒットする検索条件を指定することで、ソート抑止されると思いますが? order byの指定と同じ構成列のインデクスがあれば、検索条件がなくてもインデクスを利用してソート抑止してくれるRDBMSも少なくないのですが、MySQLは検索条件の指定がないとソート抑止してくれないようです。 なお、実行前にexplainで、インデクスを利用してソート抑止されていることを確認してみてください。
補足
知恵袋に続き、回答ありがとうございます。 ソート件数が異常なのは承知しています。 ただ、そのテーブルをテキストでエクスポートすることを前提にしているのでこのような方法しかないかと。 (これらでクロスをかける可能性があるため、プログラムを組むのではなくこの方法をトライしています。本来はこのデータが5000万件を超えるほどあるのですが、4Gの問題などあるようなのでこのレベルでとどめています。)
お礼
いろいろありがとうございます。 [mysqld]の件は思い違いで、修正後解決しました。 と思ったらOut Of Memory (Needed 2832908 byte)で落ちています・・・ TEMPのバッファサイズの問題あたりかと思いますが調べてみようと思います。書籍含め資料も少ない設定関連は、とっかかり初心者には高すぎるハードルです。また、質問させていただくかもしれません。