win2000にMysql5.0.45を入れスタンドアロンで使っています。
取り込みデータサイズ:2.4G、2800万件のテキストデータをテーブルにインポート(InnoDB)するところまでは出来ているのですが、select~order by でソートをかけようとしたところ
ERROR 3 (HY000): Error writing file 'C:\TEMP\MY10.tmp'(errcode:28)
とでてしまいます。原因がCの空き容量が1G程度しかないため、容量のあるDにテンポラリを移そうと、set session tmpdir = 'D:/MySQL/TEMP' ;
としても、ERROR 1238 read only variable となってしまいます。
また、MySQLadministrator>StartupVariable>InnoDB Paramaters>datafilesからも変更できず行き詰まってしまいました。
調べてはみたのですが、話がwinとlinuxとの間でごちゃごちゃになってしまっています。ご教授いただけないでしょうか。
No.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の指定を入れ、サービスの停止・再起動で変更が反映されることは、私のバージョンでは確認済です。
いろいろありがとうございます。
[mysqld]の件は思い違いで、修正後解決しました。
と思ったらOut Of Memory (Needed 2832908 byte)で落ちています・・・
TEMPのバッファサイズの問題あたりかと思いますが調べてみようと思います。書籍含め資料も少ない設定関連は、とっかかり初心者には高すぎるハードルです。また、質問させていただくかもしれません。
No.2
- 回答日時:
#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' と指定ができないか明日にでも・・・とは考えていましたが。
No.1
- 回答日時:
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の問題などあるようなのでこのレベルでとどめています。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- その他(プログラミング・Web制作) Arduinoに関する質問 4 2023/08/07 21:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコードの登録順がおかしい
-
1の行を固定した上でVBAを用い...
-
並べ替えについて
-
エクセル、並び替え正しくソー...
-
SQLで曜日のソートを月火水木金...
-
リストボックス内を昇順並べる方法
-
上から何番目か。
-
コンボボックスのソートについて
-
Excelのオートフィルタでソート...
-
ファイルの漢数字の順番につい...
-
数字と漢字が混じった日付デー...
-
MySQLで保存できる限界行数
-
Accessでのクエリ・レポートの...
-
Excelの並び替え(文字数と画数...
-
MySQLでカタカナでの並び替えが...
-
becky!での表示について質問
-
ファイルメーカーでソート後の...
-
エクセルの縦列のソートできま...
-
アドレス帳の並べ替えについて
-
SQL ORDER BY の結果について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのソートについて
-
テーブルレーコードをソートし...
-
エクセル、並び替え正しくソー...
-
DOSでフォルダとファイルをテキ...
-
レコードの登録順がおかしい
-
ファイルの漢数字の順番につい...
-
1の行を固定した上でVBAを用い...
-
並べ替えについて
-
上から何番目か。
-
リストボックス内を昇順並べる方法
-
文字型の順番がうまく並ばない。
-
Selectした時のレコードの取得順
-
accessでDISTINCT 句と矛盾
-
アクセスに関して。クエリの並...
-
月末日のみソートしたい
-
ハイフンの入ったデータの並べ替え
-
コンボボックスのソートについて
-
都道府県順、北からソートした...
-
タイトル行を固定してソートしたい
-
SQLのORDERBY句について質問です。
おすすめ情報