1 名前:NAME IS NULL mailto:sage [2008/01/30(水) 03:49:10 ID:???] 快速 RDBMS、MySQL の総合スレです。 前スレ[MySQL 総合 Part12] pc11.2ch.net/test/read.cgi/db/1190512649/ [関連スレと過去ログ] find.2ch.net/index.php?STR=MySQL makimo.to/cgi-bin/search/search.cgi?D=db&q=MySQL&sf=0&link2ch=on [MySQL Developer Zone] dev.mysql.com/ [MySQL 日本語リファレンスマニュアル] dev.mysql.com/doc/mysql/ja/ [MySQL Internals Manual] dev.mysql.com/doc/internals/en/ [MyNA] www.mysql.gr.jp/ [MLja] lists.mysql.com/mysql-ja ここで質問をする前に、MyNAでのFAQを最初に確認しましょう。 www.mysql.gr.jp/frame/modules/bwiki/?FAQ MyNAでの「心得の条」 www.mysql.gr.jp/frame/modules/bwiki/index.php?%BB%A8%B3%D8%2F%BF%B4%C6%C0 ・関連ツール及びユーティリティ ・関連書籍 >>2 | .| /./ / | | _,,,,||,,,l.,,_ ト / | _ | .| / . | | .| | l .| .,-'|.l .|l .| `|. l ' /´ / / / | | |.| .| , |´ | .| | _|,_ l .| ./ ''`ト ./ / | | |.| | | .| |_,,l-,─-.,_、_ | / .λl,/ / . |. |. || | .| | /::::l ヽ `'' | / , ,.ミ,|´| ./ ,,,__.| .| ヘ .| | .|/ |:i::::::〉., ノl | / .// ∨| / `'' ‐ 、l | .|||l'l:|:|l:::::`':::::i´|| '' / ...:::::l..'' .`ヽ、 |:| ヾl.ヾ::::::::::| .|| ::::::::: l .\_ -''lヾ ヘ:、.ヘ;;_;ノ ノレ .l .ヾ=,,,_ .ヘ ,ヾ_,,=..''´.... _,,, / ヽ .i'`''‐--.〉''´ .ヽ:::::::: _,,, -‐'''´:::::l ./.| drop tableは1日10回な! .\ ヽ`ニ / l. /:::::::::::::::::::::::/ i''ヘ .l `ヽ .l-‐''l / .l:::::::::::::::::_;;-ヘ l ヽ ヘ ./.`iヽ .|ヽ| ./ ,,,,,,,_.ゞ,,, -‐''ヽ. |.| .| ヾ.、.ヽ / /|.| ヽ .| .| /ヽ /:::::ヾ .| ,l '| .l.l '|ヽ.、.ヽ // /./.|,, -'''''''''''''''-.、.'-< .| ヽ /:::::::::lト''´ .| | | .i.| .ヾ.、.ヽ / / /./ ヽ,.` .l ヽ,'ノ/ ヾ_;;;l.l |/ .l l | ヾ.、lヘ ./ .//l i | .ヾ |:::::|.| .|' l// i.|| i.|
655 名前:NAME IS NULL [2008/04/24(木) 14:49:32 ID:6a37T5mr] 質問です ヤフーでもAmazonでも、大きなポータルみたいなサイトを見ると、トップページに 沢山メニューやカテゴリがあります (新着、トピック、ニュース、メール受信数、広告などなど) これは、各領域ごとにSQLの読み込みしてるってことかなと思いますが、一ページに どの程度リクエスト仕掛けていいんでしょう? 全部をまとめて1リクエストで済ませてるわけじゃないですよね? そんなにいっぱい一気に読み込んで大丈夫なの?って気になりますが、、 こういうのはメモリとかCPU性能に依存するものなんですか? 変な質問ですみません 今のところ、1ページ1処理はうまく出来てるんですが、負荷を 沢山かけるものは心配です 参考になるサイトや書籍などあればそれも教えてください お願いします
656 名前:NAME IS NULL mailto:sage [2008/04/24(木) 14:55:16 ID:???] それがノウハウというやつでして
657 名前:NAME IS NULL [2008/04/24(木) 15:17:51 ID:ZBZQUXh5] 質問させて下さい。 table1 --------------------------- no cat name 1 1 わかめ 2 3 だいこん 3 2 にんじん 4 2 にく 5 3 こめ 6 4 かいわれ .... 100 100 にがうり --------------------------- このようなテーブルで各catから一つずつnameを取得したいのですが、 その時に、noの降順を使って取得するにはどのようにすればよいでしょうか? 以下のように取得したいのです --------------------------- no cat name 1 1 わかめ 4 2 にく 5 3 こめ 6 4 かいわれ --------------------------- 上手く伝えられているか不安なのでもう少し書き足しますと --------------------------- no cat name 3 2 にんじん 4 2 にく のようにcatにおいて重複した結果が出たときにnoの降順に従って 4 2 にく だけを取得してほしいのです。 以下のようなクエリを実行したのですが、これではnoの降順を無視してグループ化されてしまいます。 SELECT `no`, `cat`, `name` FROM `table1` WHERE 1 GROUP BY `cat` ; 具体的なテーブル構造は下記になります。 CREATE TABLE `table1` ( `no` int(10) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'No', `cat` int(4) NOT NULL default '' COMMENT 'カテゴリ', `name` varchar(32) NOT NULL default '' COMMENT '名前', `up_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新日時', `del_flg` TINYINT NOT NULL DEFAULT '0' COMMENT '削除フラグ' ) ENGINE = myisam CHARACTER SET ujis COLLATE ujis_japanese_ci COMMENT 'テーブル情報'; どうか宜しくお願い致します。
658 名前:NAME IS NULL mailto:sage [2008/04/24(木) 15:34:13 ID:???] SELECT T1.no, T21cat, T2.name FROM (SELECT max(no) AS no, cat FROM table1 GROUP BY cat) T1 INNER JOIN table1 T2 ON T1.no = T2.no AND T1.cat = T2.cat; とか? 試してないけど。
659 名前:655 [2008/04/24(木) 15:43:59 ID:6a37T5mr] ノウハウってことは社外秘みたいな? ごくごく基礎的な考え方について、まとめてる本なんて知りませんか? すみません、気になるんです。。
660 名前:NAME IS NULL mailto:sage [2008/04/24(木) 15:50:26 ID:???] ああいうでかいポータルは1アクセス毎に動的にSQLを発行しているのではなく、 静的HTMLを一度作る時だけSQLを発行しているから無問題。 SQLの結果をキャッシュしておきたければmemcacheを使え。
661 名前:657 mailto:sage [2008/04/24(木) 16:00:29 ID:???] >>658 レス有り難う御座います。 うおっ結構複雑になってしまいますね・・・ 今から提示して頂いたクエリを一つ一つかみ砕いて勉強してみます。 >>655 660さんもおっしゃっているような感じのことがメインですが WEB+DB PRESS Vol.42にニコニコ動画の技術記事があります。 そこにDBとWEBアプリケーションサーバの大規模運用における勘所みたいなことが結構書かれていて 私は勉強になりました。 お力になれれば幸いです。
662 名前:NAME IS NULL mailto:sage [2008/04/24(木) 16:29:19 ID:???] 分かってると思うけど、T21catはT1.catのtypoね。 試してみたらうまくいったけど、あんまりいい方法ではないよ。 あくまで、答がちゃんと出るレベル。
663 名前:658 mailto:sage [2008/04/24(木) 17:37:55 ID:???] SELECT no, cat, name FROM table1 T1 WHERE NOT EXISTS( SELECT * FROM table1 T2 WHERE T1.cat = T2.cat AND T1.no < T2.no ); とかでもOK
664 名前:NAME IS NULL mailto:sage [2008/04/24(木) 19:47:59 ID:???] >>659 ノウハウは社外秘まではいかないだろうけど、それが飯の種ってもんです。 何でも知ってる人に聞いてみましょう。 本だったらSQLの簡単なものから読んだらいいんじゃないかな。 MySQLに限らず、RDBMS共通で勉強するといいかも。
665 名前:655 mailto:sage [2008/04/25(金) 06:21:05 ID:???] >>660 ありがとうございます、一度読み込んだ後にキャッシュする機能があるんですね それが知れただけでもすごく助かりました >>661 本の紹介、ありがとうございます ニコニコの仕組みは勉強になりそうですね! ぜひ読んでみたいと思います ありがとう >>664 完全独学でまわりに詳しい人いないのでここで聞かせてもらいました またお世話になると思います、よろしくお願いします どうもありがとうございました
666 名前:NAME IS NULL [2008/04/25(金) 22:05:36 ID:mG3NM/VW] 副問い合わせが出来ないサーバ(MySQL4.0.25です)を使うことになったのですが、 副問い合わせをにしたいSQL文があり困っています。 この場合、どういうSQL(関数)で代替するのでしょうか?
667 名前:NAME IS NULL [2008/04/25(金) 22:22:40 ID:c14dphK1] >>666 泥臭いやり方だが、temporary tableかな またはアプリケーション側で処理するとか
668 名前:NAME IS NULL mailto:sage [2008/04/25(金) 23:01:57 ID:???] JOIN
669 名前:666 [2008/04/25(金) 23:09:52 ID:mG3NM/VW] >>667 すみません、、ちょっとやり方が見えないのですが、、 例えば以下のようなSQLの場合、どうなるのでしょうか? SELECT * FROM hoge INNER JOIN( SELECT hoge_id FROM test ) AS test ON hoge.hoge_id=test.hoge_id
670 名前:NAME IS NULL mailto:sage [2008/04/25(金) 23:18:07 ID:???] SELECT * FROM hoge INNER JOIN test ON hoge.hoge_id=test.hoge_id サブセレしなくても普通にこれでいんじゃないの。 それとも例題のために削ってるから?
671 名前:666 mailto:sage [2008/04/25(金) 23:20:34 ID:???] >>670 例題の為に削っているからです。。 実際、副問い合わせが必要な時は、そこでCOUNTしたり WHEREで抽出した値を出したいから、という理由が多いです。
672 名前:NAME IS NULL [2008/04/27(日) 13:21:26 ID:Tqt++e11] すごい初歩の質問なんだけど、 select * from web where name ='2chan' and category = '2chan' and type = '2chan' って漢字で、全部2chan(同一単語)で検索したいんだけど、 where以降を縮める方法ってないですか? PHPのifみたいにフィールド名括弧で括って()='2chan'でもだめだし・・・。 初歩すぎるのか探してもなかなか見つからない。
673 名前:NAME IS NULL mailto:sage [2008/04/27(日) 16:05:58 ID:???] むり
674 名前:NAME IS NULL [2008/04/27(日) 16:24:11 ID:Tqt++e11] >>673 簡潔な回答ありがとうございます。
675 名前:NAME IS NULL mailto:sage [2008/04/28(月) 00:32:12 ID:???] '2chan' IN (name, category, type)
676 名前:NAME IS NULL mailto:sage [2008/04/28(月) 03:35:46 ID:???] TEXTカラムから 文字数1000文字区切り、最後の改行 でデータを取り出したいのですが可能でしょうか? できれば1000文字以下で丸めこみたいです 以下のようにやっては見たのですがどうもすっきりしません。 よろしくお願いします。 SELECT CONCAT(SUBSTRING(TEXT,1,1000),SUBSTRING_INDEX(SUBSTRING(TEXT,1000,1000)," ",1)) AS TEXT FROM hoge;
677 名前:NAME IS NULL mailto:sage [2008/04/28(月) 09:10:45 ID:???] >>675 INはORだろ
678 名前:NAME IS NULL mailto:sage [2008/04/28(月) 10:01:14 ID:???] >>676 1000文字取り出した後はプログラム側で処理してはいかがでしょう?
679 名前:NAME IS NULL mailto:sage [2008/04/28(月) 12:53:41 ID:???] >>671 だったら、そういうクエリを示さないと、解決にならない。
680 名前:NAME IS NULL mailto:sage [2008/04/29(火) 16:57:15 ID:???] Windows にインストールしようとしてバイナリを探して このページを見たところ dev.mysql.com/downloads/mysql/5.0.html ここだと 5.0.51b しかないようです。 b は beta の略ですよね? beta 無しの一つ前のバージョンはどこでダウンロードできるのでしょうか?
681 名前:NAME IS NULL mailto:sage [2008/04/29(火) 17:23:46 ID:???] >>680 それはベータじゃない。リリース版。 ってかいつの間にか5.0.51bになっててきづかなかった。 5.0.51->5.0.51aの時はSSL絡みのバグ修正だったようだけど、 今回のChanges探したんだが見つからない。 bkbitsのほうにも、Enterpriseには5.0.60きてるけど、 Communityには5.0.51aまでしか記載がない。
682 名前:NAME IS NULL mailto:sage [2008/04/29(火) 17:35:14 ID:???] 無償版の「MySQL Community Server」の提供は今後も継続されるが、 無償版と有償版の開発は完全に切り離されることとなり、 無償版と有償版の2つのMySQLはまったく別々の進化を遂げることとなる見通しだ。
683 名前:680 mailto:sage [2008/04/29(火) 18:00:49 ID:???] >>681 レスありがとうございます。 dev.mysql.com/doc/refman/5.1/ja/choosing-version.html ここのバージョンの命名規則に b の意味するところが書いてないようなのですが 51 -> 51a -> 51b は 51 -> 52 にするほどでもない細かい修正だと理解して良いのでしょうか?
684 名前:NAME IS NULL mailto:sage [2008/04/29(火) 19:57:40 ID:???] >>683 その通りです。 個人的にはbetaを意識させるbをバージョンに含むのには反対ですけどね。
685 名前:680 mailto:sage [2008/04/29(火) 20:17:13 ID:???] >>684 なるほど、ありがとうございました。
686 名前:NAME IS NULL [2008/04/29(火) 22:52:30 ID:9aVChAdo] MySQL5.1のインストールで Server Instance Configuration WizardのApply security settingで エラーがでて完了しません mysql.serversテーブルがないようなメッセージが出ています ポートは開放しているはずですが、複数端末で同じようなエラーが出てしまいます いろいろ調べたのですが、対処法がわかりません。 環境はwindowsXP SP2です
687 名前:NAME IS NULL [2008/04/29(火) 22:56:35 ID:vsezzVYU] mysqlのソースコードの解説したサイトとか書籍とか オススメありませんか? ググっても出てこないのでお願いします
688 名前:NAME IS NULL mailto:sage [2008/04/30(水) 00:50:20 ID:???] >>687 俺は読んでないけど… www.oreilly.co.jp/books/9784873113432/toc.html つーか、サイトや書籍を当たるよりもいきなりガシガシ ソースコード読んだ方が速いんじゃないか
689 名前:NAME IS NULL mailto:sage [2008/04/30(水) 01:04:19 ID:???] Linuxもいつかは誰かの所有物になるのかな
690 名前:NAME IS NULL mailto:sage [2008/04/30(水) 01:37:43 ID:???] そんときは、別のオープンソースOSがLinuxの代わりになってるよ。
691 名前:NAME IS NULL mailto:sage [2008/04/30(水) 01:41:19 ID:???] Linux は正式にリーナスの物だけど誰も困ってない そういう事
692 名前:NAME IS NULL mailto:sage [2008/04/30(水) 01:46:55 ID:???] >>688 ありがとうございます なんと身近な本に普通に載ってたんですね…
693 名前:NAME IS NULL [2008/04/30(水) 16:53:35 ID:3+aSlCcR] selectする情報の中にorder byで並び替えた際の順番を入れたいのですが どう書けば可能でしょうか?
694 名前:NAME IS NULL mailto:sage [2008/04/30(水) 17:03:55 ID:???] order byは最後に実行されるから、select句でその情報を取得するのは無理。 SELECT foo AS '2 foo', bar AS '1 bar' FROM Example ORDER BY bar, foo; とでもすればいいんじゃないかな?
695 名前:NAME IS NULL mailto:sage [2008/04/30(水) 17:40:27 ID:???] テーブルレイアウトがないので、、、テーブル名が sample_table で、 プライマリキーは key_a 並べ替えたいカラムを col_a として書きました。 SELECT a.*, b.order_num FROM sample_table a JOIN ( SELECT a.key_a, count(*) AS order_num FROM sample_table a LEFT JOIN sample_table b ON a.col_a > b.col_a GROUP BY a.key_a ) b USING (key_a) ORDER BY a.col_a MySQLでの確認はしてませんので、方言が混ざってそうだったら翻訳しといてください
696 名前:NAME IS NULL [2008/04/30(水) 23:16:14 ID:6t3erPxs] ExcelとMySQLに関する質問です。 Excelで数千行になる正規化されていないデータを、一気にMySQLに入れることってできるでしょうか? 普段、Excelにデータを溜め込んでいるのですが、それをサーバーに置いて、Web経由でデータの抽出ができるようにしたいんです。 もしいまのExcelのデータをすぐMySQLに入れられたら、造作無いのではないかと思っています。 よろしくお願い致します。
697 名前:NAME IS NULL mailto:sage [2008/04/30(水) 23:38:08 ID:???] 列がちゃんと決まってるなら行番号あたりをキーにしたテーブル作って COPY句でも作って突っ込めばいけるんじゃない?
698 名前:NAME IS NULL mailto:sage [2008/04/30(水) 23:49:06 ID:???] CSVで保存すれば、取り込める。 正規化せずに取り込むと後でものすごく後悔しそうないがする。
699 名前:NAME IS NULL [2008/05/01(木) 01:12:40 ID:V4TVtf8T] $sql = "select ホゲ from ホゲホゲ where ホゲホゲホゲ like '%$word%';"; $result = $db->query($sql); if (DB::isError( $result )) { die($result->getMessage()); } while($row = $result->fetchRow()){ echo $row[0]; // 返却データをループ } という感じのプログラムを、テーブル名のみを変更して13行並べているのですが、最後の4つあたりが「DB Error: no such field」というエラーが出て正常に処理されません。 エラーが出ている箇所を上のほうに持ってくると解決するのですが、するとまた下の4つが・・・という感じです。 これって何が原因なのでしょうか?
700 名前:NAME IS NULL mailto:sage [2008/05/01(木) 10:54:47 ID:???] >>699 PHPのモジュールの問題じゃね?
701 名前:NAME IS NULL mailto:sage [2008/05/01(木) 13:42:14 ID:???] >>699 $db にfinishっぽい関数あったら、ループ後に呼んでみるとか
702 名前:NAME IS NULL [2008/05/01(木) 13:59:30 ID:/NYPxvw/] SQLのみを使って mysqlの変数に クエリの結果を代入する方法があれば教えてください
703 名前:NAME IS NULL mailto:sage [2008/05/01(木) 21:04:05 ID:???] 質問です。 cpu:Core2Duo E6320 os:debian sarge db:mysql 5 上記組み合わせで、このサーバをDB専用サーバーとして稼動させた 場合、mysqlのチューニングによってはCPUが最大で50%(1cpu)まで しか使えない可能性ってありますでしょうか?
704 名前:NAME IS NULL mailto:sage [2008/05/01(木) 22:57:20 ID:???] きれーにするーされたな
705 名前:NAME IS NULL mailto:sage [2008/05/01(木) 23:13:07 ID:???] >>702 mysqlの変数って何? ストアドファンクションを作ってるのかな。 >>703 smpのカーネルじゃないとそうなることもあるのかもしれない? 有識者の方お願いします。 >>704 何がしたいのか分かりません。
706 名前:NAME IS NULL mailto:sage [2008/05/02(金) 11:35:50 ID:???] >>702 select @name:=name from hoge; select @name;
707 名前:696 [2008/05/02(金) 19:34:28 ID:gVoO+8Lg] >>697 >>698 どうもありがとうございます。 参考になりました。
708 名前:NAME IS NULL mailto:sage [2008/05/02(金) 22:12:33 ID:???] MySQLの無料版ってなくなっちゃうんですか?
709 名前:NAME IS NULL mailto:sage [2008/05/02(金) 22:14:32 ID:???] 無くならないよ
710 名前:NAME IS NULL [2008/05/03(土) 03:45:01 ID:UXm9qTN+] 質問します カラムの値がNULLのものを削除したくて以下を実行しましたが うまくいきません delete from schedule where `evId` ='' delete from schedule where `evId` =NULL 両方ともだめです 何が原因として考えられるでしょう? 誰かご意見お願いします
711 名前:NAME IS NULL mailto:sage [2008/05/03(土) 04:10:50 ID:???] evId IS NULL
712 名前:NAME IS NULL mailto:sage [2008/05/05(月) 05:16:45 ID:???] データベースのフィールドの順番を変えるにはどんな命令を使うんでしょうか。 例えば A B C D となっているフィールドを A C B D にしたいんですが。
713 名前:NAME IS NULL mailto:sage [2008/05/05(月) 06:08:56 ID:???] 変える必要なんてあるの?
714 名前:NAME IS NULL mailto:sage [2008/05/05(月) 06:15:56 ID:???] データファイル読み込むとき、フィールドの順番とデータの順番が逆になってたんで。 データのほうをいじってもいいんだけど、一応データベースの方も変えられるなら知っておこうと。
715 名前:NAME IS NULL mailto:sage [2008/05/05(月) 11:01:12 ID:???] まあ、速度的な面とかなら。
716 名前:NAME IS NULL mailto:sage [2008/05/05(月) 12:41:16 ID:???] DROP → CREATE
717 名前:NAME IS NULL mailto:sage [2008/05/05(月) 18:14:35 ID:???] >>712 alter table TBL modify B int after C とか?
718 名前:NAME IS NULL [2008/05/05(月) 21:18:24 ID:umNt+46L] 今までパスワードを暗号化せずにそのまま保存していたのですが、 次回の更新ではmd5で暗号化したパスワードを保存し、 その値でログイン出来るようにしたいと思います。 現状のパスワードをmd5化して更新する方法ってありませんでしょうか? MySQLは4.1.22を使っています。
719 名前:NAME IS NULL mailto:sage [2008/05/06(火) 01:21:23 ID:???] >>718 update tbl set col=md5(col)
720 名前:NAME IS NULL mailto:sage [2008/05/06(火) 03:26:20 ID:???] >>1 ちわちわ
721 名前:NAME IS NULL mailto:sage [2008/05/06(火) 14:56:41 ID:???] 巣に帰れ。
722 名前:NAME IS NULL mailto:sage [2008/05/06(火) 19:58:26 ID:???] ホスティング会社が3.23→5.0にうpグレードしやがった。 運用していたDBがオワタw
723 名前:NAME IS NULL mailto:sage [2008/05/06(火) 20:05:41 ID:???] >>722 アナウンス無しで?
724 名前:NAME IS NULL mailto:sage [2008/05/06(火) 20:09:24 ID:???] >>723 アナウンス無しで。 設定はしたから新規のデータは入るようになったけど、 古いデータが破壊されちゃった。 外国の安い会社だから、まぁ自己責任orz
725 名前:NAME IS NULL mailto:sage [2008/05/06(火) 20:29:06 ID:???] データ破壊てw 泣くわそんなん
726 名前:NAME IS NULL mailto:sage [2008/05/06(火) 20:30:12 ID:???] 泣き虫は嫌いだ、じっちゃんも言ってた
727 名前:NAME IS NULL mailto:sage [2008/05/07(水) 00:22:52 ID:???] >>719 遅レスですけど上手くできました。ありがとうございました。
728 名前:NAME IS NULL mailto:sage [2008/05/07(水) 13:33:51 ID:???] 参考サイトをみながらMySQLを勉強している者です。 サイトの説明どおり1ステップづつこなしていたのですが、サンプル用のバックアップファイルをDLしてきて自分の環境で復元するところでつまづいてしまいました。 バックアップファイル内の命令文を1文づつ手作業で打ち込んでいったところ、 CREATE TABLE T01Prefecture ( PREF_CD INT, PREF_NAME VARCHAR(10), PRIMARY KEY (PREF_CD) ); を打ち込んだところで、 ERROR 1005 (HY000): Can't create table 'sampledb040.t01prefecture' (errno: 121) というエラーが表示されました。 テーブルが作成できないというエラーのようですが、原因がさっぱりわかりません。 テーブル名をT10Prefectureに変えると作成できるのですが… どなたかこのエラーの原因をお知りでしたら、ぜひお教え願えないでしょうか?
729 名前:NAME IS NULL mailto:sage [2008/05/07(水) 14:28:12 ID:???] 普通はリダイレクト使ってやるような作業だよね どっかで打ち間違えたんじゃないの?
730 名前:NAME IS NULL mailto:sage [2008/05/07(水) 15:20:47 ID:???] 文字を打ち間違えた場合だと、T01prefectureをT10prefectureに変えても通らないはずだと思うのです。 ググっていくつかのサイトを見てみましたが、以前同じ名前のテーブルを作成した事があるのが悪い…のかな? 同じエラーで悩んでいるらしき人のBlogなどは見つかるのですが、何がどう問題なのか理解が及ばない。
731 名前:NAME IS NULL mailto:sage [2008/05/07(水) 16:37:15 ID:???] >>730 既にその名前のテーブルが存在するなら作れないですよ。
732 名前:NAME IS NULL mailto:sage [2008/05/07(水) 18:27:43 ID:???] DROP TABLE T01Prefecture;
733 名前:NAME IS NULL mailto:sage [2008/05/07(水) 22:32:39 ID:???] バックアップファイル内に予めテーブルを削除する文も入っているんです。 後出しでホントすみません。 ttp://mysqlweb.net/category/4037459-1.html のリンクにある040backup.zipというファイルなのです。 前のステップでsampledb040を使った練習があったけど、やはりこれのデータが変な風に残っているのでしょうか?
734 名前:NAME IS NULL mailto:sage [2008/05/07(水) 23:16:52 ID:???] リダイレクトでファイル直接流してみなよ
735 名前:728 mailto:sage [2008/05/08(木) 14:39:58 ID:???] ご、ごめん。 最初は参考サイトにあるとおりリダイレクト(でいいのかな? Mysql -u ユーザー(root) -p データベース名 <"パス")とやってたのです。 それでテーブルを作成できませんというエラーがでるので1行づつ手打ちしてみたのです。 後出しばかりでホントごめん。 人に相談するには早すぎました。まともな説明ができるようになるまでは独学でがんばります…
736 名前:NAME IS NULL mailto:sage [2008/05/08(木) 21:38:34 ID:???] >>735 drop したあと、ほんとにdropできてるか確認してみるとか? テーブルの作成権限がないだけかもしれないけどMySQLのその辺は 詳しくないので、もしそうなら他の人にお任せします。
737 名前:NAME IS NULL mailto:sage [2008/05/09(金) 13:39:41 ID:???] MySQLのトリガーって他のテーブルに対して処理できないって本当ですか?
738 名前:NAME IS NULL mailto:sage [2008/05/10(土) 11:00:09 ID:???] >>737 うそです
739 名前:728 mailto:sage [2008/05/10(土) 12:14:55 ID:???] MySQLのdataフォルダ内にあるsampledb040フォルダを削除し、データベースを作詞するところからやり直したらテーブルが作成できました。 お騒がせしてすみませんでした。 こんな解決方法で良いのかな…?
740 名前:NAME IS NULL mailto:sage [2008/05/10(土) 20:35:52 ID:???] LOAD DATA LOCAL INFILEを使うときの、ローカルPC側のファイルパスの指定の仕方って、 "c:\hoge\hoge.txt" "c:/hoge/hoge.txt" これ以外に指定方法ってあるんでしょうか。 どちらでやっても、not found (Errcode: 2) になってしまいます><
741 名前:NAME IS NULL mailto:sage [2008/05/10(土) 21:25:53 ID:???] hogeディレクトリーにhoge.txtが本当に存在してるかい?
742 名前:NAME IS NULL mailto:sage [2008/05/10(土) 21:26:01 ID:???] >>740 \の場合は\\と書かないとダメな気がする
743 名前:740 mailto:sage [2008/05/10(土) 21:42:07 ID:???] >>741 存在してます。 >>742 \\でやってみましたが、同じくnot foundでした。 ちなみに、xserver(共用レンタルサーバ)上のDBにLOADさせようとしているんですが、 気になっているのが、LOADするファイルはUTF-8なんです。 ところが、xserverのMySQLのcharacter setはujis、character setsは latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5 で、utf8がないんですよね。 phpMyAdminで、ALTER TABLE テーブル名 CHARACTER SET utf8; を指定した後に 実行しても結果は同じエラー。 phpでプログラムを組んで、クエリ発行前に"SET NAMES utf8"をやっても同じエラーでした。 ためしに、LOADするファイルをujis、テーブル側もALTER TABLEやSET NAMESでujisに設定してやってみましたが、同じエラーでした。 MySQLのバージョンは4.0.27です。 いろいろ調べてるのですが、解決策が見つからなくて。
744 名前:740 [2008/05/10(土) 23:10:59 ID:/V9T+N7z] 解決しました。 結局、not foundになった理由はわからないんですが、 phpMyAdminの「インポート」からLOADできました。 数時間前まで「インポート」画面には、 「インポートするファイルの形式」は"SQL"しか指定できなかったのですが、 不思議なことに、先ほどみたら"CSV"が指定できるようになっていて、 そこから入力ファイルを指定してLOADできるようになりました。
745 名前:NAME IS NULL [2008/05/10(土) 23:32:01 ID:ZRD2El4R] extの中に、 php_mysql.dll php_mysqli.dll コピーしましたが、phpinfo()でMYSQL動きません。 プロンプトからは動きます。 extennsion_dir=c://php/etc extension=php_mysql.dll extension=php_mysqli.dll しました。 dllのバージョンは、phpにあわせなければだめですか? php5.1なのですが、 dllは5.2です。 5.1のダウンロードはどちらで行えばいいんでしょうか? restart &再起動を行いました。
746 名前:NAME IS NULL [2008/05/10(土) 23:46:05 ID:ZRD2El4R] /etc じゃなくて/ext の間違いです。
747 名前:NAME IS NULL mailto:sage [2008/05/10(土) 23:49:19 ID:???] >>745 copy C:\php\libmysql.dll C:\windows\system32
748 名前:NAME IS NULL [2008/05/11(日) 01:49:34 ID:I11LIJS2] system32の中に libmysql.dll コピーしてもだめでした。 php5ts.dll php5apache2.dll をコピーしてもだめでした。
749 名前:NAME IS NULL [2008/05/11(日) 03:10:53 ID:ymTwAShD] Windowsを使わなければ良い
750 名前:NAME IS NULL [2008/05/11(日) 17:12:51 ID:Lz+kCEMO] Debian上でMySQL5.0を使用しています。 DBに対して発行された全てのSQLをログ出力したいのですが、 MySQLでそういった処理は可能でしょうか?
751 名前:NAME IS NULL mailto:sage [2008/05/11(日) 18:22:01 ID:???] log = /var/log/・・・
752 名前:NAME IS NULL mailto:sage [2008/05/12(月) 01:10:50 ID:???] innodbのデータファイルをテーブルごとに作成する方法ってありますか?
753 名前:NAME IS NULL mailto:sage [2008/05/12(月) 01:26:19 ID:???] innodb_file_per_table
754 名前:NAME IS NULL mailto:sage [2008/05/12(月) 16:10:28 ID:???] >>743 >>646 にも書いたけど、4.0系はutfサポートしてません。4.1以降です。
755 名前:NAME IS NULL [2008/05/12(月) 20:15:57 ID:8xhRTUUy] 質問させて下さい。 table1 --------------------------- name ねこ いぬ うさぎ かめ .... ぞう --------------------------- このようなテーブルで特定の名前を検索し、結果ヒットしなかった名前だけを取得したいのですよがどうのようにしたらよいでしょうか? 例:ねこ、パンダを検索 => パンダを取得 SELECT 1 FROM `table1` WHERE `name` = 'ねこ' ; このようなクエリをループで数回発行し、取得もできるのですが、できれば1回のクエリで取得したいのです。 ドキュメントを見ていると、 `name` IN ( 'ねこ', 'パンダ' ) として何かすればできそうかなとも思ったのですが上手くかけません。 どうか宜しくお願いします。
756 名前:NAME IS NULL mailto:sage [2008/05/12(月) 20:34:25 ID:???] >>755 つまり条件で使用されなかった名前を得たいわけですよね。 通常だと、`name` IN ( 'ねこ', 'パンダ' ) でヒット分を出して アプリ側で消し込むのが通常かと。
757 名前:NAME IS NULL mailto:sage [2008/05/12(月) 21:43:28 ID:???] >>765 レス有り難う御座います。 う〜んやっぱりどちらにしてもアプリ側の処理に頼るしかないのかな。 もう少し自分で粘ってみます。
758 名前:NAME IS NULL mailto:sage [2008/05/12(月) 22:12:00 ID:???] NOT EXISTSを使ってできそうな予感
759 名前:NAME IS NULL mailto:sage [2008/05/12(月) 22:21:02 ID:???] ごめん、やっぱり純粋なSQLじゃ無理だわ 検索条件を表示するようなクエリが記述できないからね 例 'ねこ', 'パンダ'で検索したときに、 ねこ パンダ を取得するSQL ・・・不可能
760 名前:NAME IS NULL [2008/05/12(月) 22:24:42 ID:a2zzvFoH] 初めまして。 Windows2K上で「MySQL入門以前」という書籍を見ながらMySQLをインストールしています。 Apache、PHP、MySQLのインストールは終わり、mysqldをサービスとして登録し終わり 再起動すると、MySQLサーバが起動していません。 #書籍で言うと65ページ付近です コマンドプロンプトから cd c:\mysql\bin で移動し C:\mysql\bin>mysql と打ち込むと ERROR 2003: Can't connect to MySQL Server on "localhost" (10061) と表示され、接続できません。 コントロールパネル>管理ツール>サービス でMySQLを確認すると 「スタートアップの種類」は「自動」となっていますが、「サービスの状態」が「停止」となっています。 「開始」をクリックすると 「ローカルコンピュータのMySQLサービスを開始できません。」 「エラー1067:プロセスを途中で強制終了しました」 と表示されます。 色々検索してみて、コマンドプロンプトから C:\mysql\bin>net start mysql と打ち込んでも 「システムエラー 1067が発生しました」 「プロセスを途中で強制終了しました」 と表示され、先に勧めない状態です。 同じ書籍で同じようなエラーを対処された方はいらっしゃいませんでしょうか。 どうかご教示ください。
761 名前:NAME IS NULL mailto:sage [2008/05/12(月) 22:38:21 ID:???] oshiete1.goo.ne.jp/qa803697.html
762 名前:NAME IS NULL mailto:sage [2008/05/12(月) 22:39:45 ID:???] d.hatena.ne.jp/yzn/20060922
763 名前:NAME IS NULL mailto:sage [2008/05/13(火) 00:16:15 ID:???] >>761-762 そちらのページを拝見して、サービスの削除・サービスの再インストールを 行いましたが駄目でした。MySQLのアンインストールからやり直してみようと思います。
764 名前:NAME IS NULL [2008/05/13(火) 15:44:20 ID:NUBRvh8U] PHP上からMySQLでinsertすると、Duplicate entry '〜' for key 2 PHP MyAdmin やプロンプト上からinsert行うと、普通にinsertできるのでしょうか?
765 名前:NAME IS NULL mailto:sage [2008/05/13(火) 15:47:34 ID:???] キーが同じならどこからでも無理だろ
766 名前:NAME IS NULL mailto:sage [2008/05/13(火) 18:50:11 ID:???] +-----+-------+ | key | title | que1| | 1 | test | test | | 7 | test | test | +-----+-------+- というテーブルがあり、titleからkeyを取り出したいのですが、 select que1 from question where title ='test';ではqueは取り出せるのに select key from question where title ='test';では構文エラーになります。 主キーは取り出せないんでしょうか?
767 名前:NAME IS NULL mailto:sage [2008/05/13(火) 18:52:43 ID:???] keyは予約語だからでは? `key` とかしてみる。
768 名前:NAME IS NULL mailto:sage [2008/05/13(火) 18:54:18 ID:???] ありがとうございます! 無事取り出せました。
769 名前:NAME IS NULL [2008/05/13(火) 21:39:29 ID:NUBRvh8U] キーはインクリメントされるので、 異なってるはずなんですが。
770 名前:NAME IS NULL [2008/05/13(火) 21:40:40 ID:NUBRvh8U] `key`は基本だとおも。
771 名前:NAME IS NULL [2008/05/13(火) 22:04:51 ID:NUBRvh8U] 質問日本語になってなかったので、再度質問します。 日本語できなきゃ、SQLできませんね。えへ! テーブルに登録されていない ユニークな列 brandに 日本語文字列'あしっくす' をinsertしようとしているのですが、 あしっくす という文字列が登録されていないのに、 Duplicate entry 'あしっくす' for key 2 とエラー表示されるのはなぜなんでしょうか?
772 名前:訂正 [2008/05/13(火) 22:07:10 ID:NUBRvh8U] 質問日本語になってなかったので、再度質問します。 日本語できなきゃ、SQLできませんね。えへ! テーブルに登録されている ユニークな列 brandに 日本語文字列'あしっくす' をinsertしようとしているのですが、 あしっくす という文字列が登録されていないのに、 Duplicate entry 'あしっくす' for key 2 とエラー表示されるのはなぜなんでしょうか?
773 名前:訂正 [2008/05/13(火) 23:31:32 ID:NUBRvh8U] カタガナとひらがな で重複すしてました。
774 名前:NAME IS NULL mailto:sage [2008/05/14(水) 03:58:48 ID:???] ◆6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催 system-trading.jp/news/index.php?cID=3 5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。 デモトレードの優勝者には賞金三百万円がプレゼントされます。 ▼トレード部門 初期資産500万円で、デモ取引のトレード収益を競っていただきます。 www.fx-gp.com/about/ ▼賞金総額 ■社長特別賞(シストレソフト買取価格) 10,000,000円 ●シストレソフト部門賞 1位300万円 2位100万円 3位50万円 ●トレード部門賞 1位300万円 2位100万円 3位50万円 ●前期MVP賞 50万円 ●後期MVP賞 50万円
775 名前:NAME IS NULL mailto:sage [2008/05/15(木) 05:20:29 ID:???] dev.mysql.com/doc/refman/5.1/ja/mysql-insert-id.html 「マルチ列INSERTステートメントの場合」とか書いてあるけど、 このページ内ほとんど ×列 ○行 じゃないかな。
776 名前:NAME IS NULL [2008/05/15(木) 08:30:54 ID:/PcvCBei] MYSQLとPHPがどうマニュアルどおりやっても、 phpinfoでMYSQLが認識されない。dllに応じてapacheの対応バージョンが異なるらしいんだけど、 本当ですか?
777 名前:NAME IS NULL mailto:sage [2008/05/15(木) 09:58:14 ID:???] ビルドからやってんの?
778 名前:NAME IS NULL mailto:sage [2008/05/15(木) 13:04:45 ID:???] mysql5.0.27を使っているんですが、型の制約として、 num = num - 5 とかやっても 0未満にはならないようにとか、そういった制約ってありますか? 入れるときにチェックしないとだめでしょうか?
779 名前:NAME IS NULL [2008/05/16(金) 16:40:06 ID:V7rySszX] 質問です 文字コードがutf8のデータベースから、eucのデータベースへ中身を 移動させるのって難しいですか?もちろんMysqlです 管理ツールはphpMyadminを使おうと思ってるんですが、、 蓄積されている情報をEUCに書き換えるような作業が必要になるんでしょうか? カンタンな手順や専用のツールなんてあるんでしょうか? どなたか教えてください よろしくお願いします
780 名前:NAME IS NULL mailto:sage [2008/05/16(金) 17:59:07 ID:???] Alter Table
781 名前:NAME IS NULL mailto:sage [2008/05/17(土) 09:05:01 ID:???] >>779 insert into euctable select * from utf8table;
782 名前:NAME IS NULL [2008/05/17(土) 19:33:10 ID:dhQBeSfs] GPLの意味がいまいち分かりません。。。 改変したら公開が義務付けられるそうですが、 今のところそういうことをする予定はありません。 「無償版を使うなら、これをしなければいけない、 またこれはやってはいけない。」 というのは他に何がありますか? 商用ライセンスとの違いはなんでしょうか? サポートを受けられる、というだけのことですか? 「こういうことをやりたいなら、商用版を買うしかない。」 ということはありますか?
783 名前:NAME IS NULL mailto:sage [2008/05/17(土) 19:36:46 ID:???] >>782 バレてはいけない
784 名前:NAME IS NULL mailto:sage [2008/05/17(土) 20:31:20 ID:???] BINARY型ってどういうときに使うんですか?
785 名前:NAME IS NULL mailto:sage [2008/05/17(土) 21:19:27 ID:???] >>784 バイナリーファイル、たとえばdocやxlsの先頭100KBを表に入れたいとき。
786 名前:NAME IS NULL mailto:sage [2008/05/17(土) 21:23:16 ID:???] >>784 Winny のハッシュ管理
787 名前:NAME IS NULL [2008/05/17(土) 22:00:06 ID:Zz9EtgnE] データを大量に作りたい場合の作成ツールとか ありませんでしょうか?
788 名前:NAME IS NULL mailto:sage [2008/05/17(土) 22:20:18 ID:???] なんでもいいならランダム関数でも使えば?
789 名前:NAME IS NULL [2008/05/17(土) 22:23:10 ID:Zz9EtgnE] できればおすすめのツールがあればということなんですが。。。 ランダム関数? 勉強不足で。。。 調べてみます。
790 名前:NAME IS NULL mailto:sage [2008/05/17(土) 22:35:01 ID:???] CSVファイルからのINSERTなら何かツールがあるでしょ。 何でもいいからデータを大量に入れたいならランダムを生成する適当な関数作っちゃえばいい。
791 名前:NAME IS NULL mailto:sage [2008/05/17(土) 22:37:54 ID:???] つーかこんなんで悩んでる人がMySQLを何に使うんだ。
792 名前:NAME IS NULL mailto:sage [2008/05/17(土) 22:41:57 ID:???] 初学者は常にいます。
793 名前:NAME IS NULL [2008/05/17(土) 22:59:08 ID:dhQBeSfs] mediawikiを自宅のPCで使ってみようと思ったら、 MySQLも必要だと言われたのさ。 データベースなんて職場のアクセスをいじったぐらいだ。。。。
794 名前:NAME IS NULL mailto:sage [2008/05/17(土) 23:02:21 ID:???] アクセスはRDBMSではないからな〜
795 名前:779 [2008/05/17(土) 23:13:43 ID:4inawo49] >>780-781 ありがとうございます >>780 ALTER TABLE というのは具体的にどうしたらいいんでしょう? >>781 insertでデータを移動させるということでしょうか? データベース自体の動いているサーバーが違うんですが、 その場合はどうしたらいいんでしょうか?
796 名前:NAME IS NULL [2008/05/18(日) 00:12:40 ID:6bXnmuPh] MySQLver5.0.45の公式バイナリをLinuxにインストールしたあと 初めてのログインで mysql -u root を実行したら「root@localhostに権限がありません」的なエラーがでました。 1番始めはrootにパスは設定されてないですよね??? ちなみに mysql -u root -p をやるとPassword入力を求められますが何を入力してもログインできませんでした。。
797 名前:NAME IS NULL mailto:sage [2008/05/18(日) 00:21:56 ID:???] >>795 >ALTER TABLE SQL関連のマニュアルか、リファレンスを読んで下さい。
798 名前:NAME IS NULL mailto:sage [2008/05/18(日) 00:38:19 ID:???] >>795 Alter table tbl convert to charset でもこれは、そのテーブル自体の格納されているデータを変換するもの。 二台別々のDBが動いてんなら、一旦もとのtblからデータを全部dumpして、 それを新しい方のtblに放り込んでやればいいんでない。 (この時に特に変換作業は不要。詳しくはmanual参照。でも多分わかってないとハマりそう) >>796 原因はようわからんが、一旦data_dir以下の全ファイル(インストしたてって言ってるから、重要なデータは入ってないでしょ) を削除して、/usr/bin/mysql_install_db(←RHEL系のディストリの場合。他ディスでは違う場所かも知れん。) を実行してやれば、権限テーブルが再構築されるので、再度mysqldを実行。 >>786 ハッシュ自体を管理するんなら、バイナリな必要ないんじゃない? ハッシュを生成するためのもとのデータを入れるなら、binaryじゃなきゃいかんけども・・。
799 名前:779 [2008/05/18(日) 08:06:53 ID:JfDPw4vM] >>797 どうもです ありがとうございました >>798 詳しい説明ありがとうございました データ移行の本読むべきですね 基本でした ありがとうございました
800 名前:NAME IS NULL [2008/05/18(日) 10:46:41 ID:6+oG6BiD] query browserって データのインポートは出来ないんでしょうか? csvファイルを取り込みたいのですが、 どのような方法がベターでしょうか?
801 名前:796 mailto:sage [2008/05/18(日) 11:08:49 ID:???] mysql_install_dbが権限テーブル作成に失敗していました。 (データベース「MySQL」のusr.MYDファイルを開いてみたら空だった) 原因は/tmpにアクセスする際の パーミション問題(PCLinuxOSのディストリ的な影響)だったので TMPDIR=/tmp/ MYSQL_UNIX_PORT=/tmp/mysqld.sock export TMPDIR MYSQL_UNIX_PORT という形で環境変数を変更してmysql_install_dbを実行したら問題なく動作しました。 >>797-798 ありがとうございました。助かりました。
802 名前:NAME IS NULL mailto:sage [2008/05/19(月) 00:30:52 ID:???] long_query_timeについて質問です。 現在DBI経由で、perlなどからSQL実行していますが この時 long_query_timeに引っかかったクエリーは エラーなり、補足捕捉情報かなにかを返すのでしょうか? またこの時、viewは正しく返ってこない、と考えて良いのでしょうか? MySQLバージョンは、4.0/4.1/5.0になります。
803 名前:NAME IS NULL [2008/05/19(月) 11:48:56 ID:cfRUIA6l] MySQL を CentOS 5.1 で使っています。 一般クエリログを出すようにしているのですが、 このログファイルのローテートは MySQL 自身が やってくれるのでしょうか? それとも logrotate を設定しなければならないのでしょうか?
804 名前:NAME IS NULL mailto:sage [2008/05/19(月) 14:48:36 ID:???] 質問です。 MySQLのソースインストールのconfigureで「--with-readline」オプションがありますが、 この設定はmy.cnf上で後から変更可能でしょうか?
805 名前:NAME IS NULL mailto:sage [2008/05/20(火) 07:40:10 ID:???] >>782 GPLと相容れないプログラムとリンクできない
806 名前:NAME IS NULL [2008/05/20(火) 11:56:52 ID:FPNVgIjN] phpMyBackupPro ってソケット経由では使えないのでしょうか?
807 名前:NAME IS NULL mailto:sage [2008/05/20(火) 21:51:22 ID:???] HEAPテーブルについて、マニュアルには「クライアント間で共有できる」 とありますが、接続毎に隔離されたHEAPテーブルは作れないでしょうか? バージョン4.1です。
808 名前:NAME IS NULL [2008/05/20(火) 22:29:57 ID:GGh+9Iru] PHPでの例ですが $sql = "UPDATE test SET count=count+1 WHERE id='1'"; $res = mysql_query($sql ,$con); if($res==false){ // 実行されない場合の処理 } と言うのをやろうとしたのですが、$resがtrueになります。 もしかして、UPDATEって、登録値が無い場合でもtrueになるのでしょうか? バージョンは4.1.22を使っています。
809 名前:NAME IS NULL [2008/05/20(火) 23:46:08 ID:GuaauZDQ] 質問です、 mysqldumpでダンプを取りたいのですが、 mysqldump -u root test > dump.sql と打つと ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqldump -u root test > dump.sql' at line 1> dump.sql; となります。 サイトをさんこうにしてやっていますが うまくいきません。どこが原因でしょうか? 教えて下さいませ。
810 名前:NAME IS NULL mailto:sage [2008/05/21(水) 00:06:16 ID:???] >>807 接続が切れたときに消えてなくなってもいいのであれば、temporary テーブル。
811 名前:NAME IS NULL mailto:sage [2008/05/21(水) 00:07:10 ID:???] >>809 それ、mysql> プロンプトからやってないか?
812 名前:NAME IS NULL mailto:sage [2008/05/21(水) 00:08:42 ID:???] >>808 falseはSQLの実行エラーの場合です。 updateがあったかは、たしか 影響を受けた行数を取得する 関数があったと思うので実行後にそれを使ってください。
813 名前:NAME IS NULL [2008/05/21(水) 00:33:26 ID:O5tzPctu] >>811 コマンドプロンプトからやってますが何か?
814 名前:NAME IS NULL mailto:sage [2008/05/21(水) 00:53:14 ID:???] MYSQLを導入したんだけどPHPから接続できないですけどどうしてでしょうか? MYSQLの設定を済ませて PHP5のphp.iniの設定では 絵xtension=php_mysql.dllのところを;はずしました。 MySQLの動作もちゃんとしてます。 ですが、 <?php phpinfo() ?> 上で確認したところMySQLの表示してないです。 mySQLのインストールはこちらのURLを参考にしました。 ?vine.1-max.net/MySQL.html ? こちらには、php5-mysqlが乗ってなかったので追加して インストールしました。 どこが悪いのでしょうか? 以下がバーションになります。 LINUX:vinelinux3.2 apache:1.3 場所:/etc/httpd/ php5:5.2 /etc/php5/ MYSQL:4.0 /usr/share/mysql/
815 名前:814 mailto:sage [2008/05/21(水) 02:02:33 ID:???] 自己解決しました。
816 名前:807 mailto:sage [2008/05/21(水) 02:50:01 ID:???] >>810 早速有難う御座います。 temporary テーブルでやってみようと思います。
817 名前:NAME IS NULL mailto:sage [2008/05/21(水) 02:54:27 ID:???] MySQL 5.0.51a Linux版です。 全テーブルに更新時刻と挿入時刻カラムをつけ、 beforeトリガーでこれらを更新しようと考えていますが、 オーバーヘッドはどんなものでしょうか? 用途は中小規模のグループウェアみたいなものです。 もしオーバーヘッドが大きいならtimestampで更新時刻だけ 記録することも考えるのですが、挿入時刻もあった方がいいようなのです。 MySQLで設計するのは初めてで感覚がわからないので、 なんとなくで結構ですので助言をお願いします。
818 名前:NAME IS NULL [2008/05/21(水) 13:12:17 ID:2ndXeLqA] >>813 何お前 ずいぶんと偉そうだな
819 名前:NAME IS NULL mailto:sage [2008/05/21(水) 15:25:29 ID:???] >>813 理解できるようになってから出直せ
820 名前:>>813 [2008/05/21(水) 22:05:35 ID:hrtOIMUi] 出来ましたが何か?
821 名前:NAME IS NULL [2008/05/21(水) 23:17:40 ID:wc8hj2Sl] mysql 4.1.20 CentOS4.1で質問です。 mysql>select * from XXX; を実行し、結果が多い場合、最初の方の結果がスクロールし、コンソールから消えてしまいます。 ls | moreのような感じで、1画面ずつ見たい場合はどうすればよいでしょうか? やり方がわからないので、bashから user$echo "select * from XXX;" | mysql testDB > result.txt のような感じでテキストファイルに落としています。 よろしくお願いいたします。
822 名前:NAME IS NULL mailto:sage [2008/05/22(木) 00:05:25 ID:???] >>821 limit
823 名前:NAME IS NULL mailto:sage [2008/05/22(木) 00:18:02 ID:???] >>821 mysql> pager less
824 名前:NAME IS NULL [2008/05/22(木) 00:18:18 ID:P5ig6HYl] 質問させて下さい。 MySQL5.1を使用しています。 国内IPを判別する為に以下のようなデータを入力したのですがこれを元に phpにアクセスしてきたipを国内かどうか(定義IP範囲に含まれているかどうか)判別したいのですが どのような問い合わせをすれば良いでしょうか? 例えば、58.138.127.1をtable1に対してselectしても一致しないですし。当たり前ですが・・・ table1 --------------------------- ip 58.98.0.0/16 58.112.0.0/15 58.138.0.0/17 58.138.128.0/18 .... このような場合、範囲中にあるIPを全て下記のように生成し、登録してselectさせるしかないのでしょうか? table2 --------------------------- ip 58.138.127.1 58.138.127.2 58.138.127.3 58.138.127.4 .... 純粋なクエリ等の問題ではないのかもしれませんが、いくら考えても良い方法がみつからずほとほと困ってしまいました。 どうかお力添え頂けないでしょうか?宜しくお願い致します。
825 名前:NAME IS NULL mailto:sage [2008/05/22(木) 00:37:04 ID:???] cidrとip表記をごっちゃにしている時点でどうかと思うが、 phpがトリガならmod_geoipでも使ったらどうか?
826 名前:821 mailto:sage [2008/05/22(木) 01:08:34 ID:???] >>822 >>823 解決しました。ありがとうございます!!
827 名前:824 mailto:sage [2008/05/22(木) 01:09:18 ID:???] >>825 レス有り難う御座います。 早速調べてみます。
828 名前:NAME IS NULL mailto:sage [2008/05/22(木) 01:18:09 ID:???] >>824 MySQLのみでうちがやるなら、IPはINET_ATON()で整数保管。 マスクは別フィールドに保管。 比較の際は、IPの整数をマスクサイズでビット演算して比較。 現状のテーブルのままやるのなら、文字列だからMySQLの 正規表現関数を使うのが速度的にも妥当では。
829 名前:NAME IS NULL mailto:sage [2008/05/22(木) 02:19:27 ID:???] みんな文字化け回避するためにカラムごとに文字コード設定してるの?
830 名前:NAME IS NULL mailto:sage [2008/05/22(木) 08:19:01 ID:???] mainichi.jp/enta/geinou/graph/200805/21/?inb=yt ネット証券会社が主催するFX(外国為替証拠金)取引コンテストの発表会が21日、都内で行われた。 コンテストに特別参加するグラビアアイドルの滝沢乃南さん、山本彩乃さん、折原みかさん、山口愛実さん、佐々木梨絵さん の5人が顔をそろえ、シストレに挑戦する意気込みなどを語った。 同コンテストは、自分で作成したトレードソフトの機能を評価する「シストレソフト部門」と、 FX初心者でも安心の仮想マネーを使った取引を体験できる「トレード部門」で賞金総額2000万円を争う。 シストレ優秀ソフトは、最高2000万円までの範囲内で買い取りの可能性もあるという。登録受付は22日から。 仮想取引は6月2日〜09年4月30日までとなっている。 ▼トレード部門 初期資産500万円で、デモ取引のトレード収益を競っていただきます。 https://www.click-sec.com/corp/guide/demo/ www.fx-gp.com/about/ ▼賞金総額 ■社長特別賞(シストレソフト買取価格) 10,000,000円 ●シストレソフト部門賞 1位300万円 2位100万円 3位50万円 ●トレード部門賞 1位300万円 2位100万円 3位50万円 ●前期MVP賞 50万円 ●後期MVP賞 50万円
831 名前:NAME IS NULL mailto:sage [2008/05/22(木) 12:15:32 ID:???] >>824 >>828 PHP側でIPのチェックしたいならPrarのNet_IPv4 pear.php.net/manual/ja/package.networking.net-ipv4.php
832 名前:NAME IS NULL mailto:sage [2008/05/22(木) 12:26:36 ID:???] PrarじゃなくてPearでした。
833 名前:NAME IS NULL mailto:sage [2008/05/22(木) 19:08:36 ID:???] varchar (n)の使用バイト数はn+1とのことですが、それなら 本来は100文字までのデータしか入力しないカラムでも varchar(255)とtinytextの限界で作成しておいて、 アプリ側の入力チェックで100文字制限をするという方針はありでしょうか? 制限を100文字以上に拡張したくなったとき、アプリ側のチェックだけ直して テーブルは変更する必要がなくていいのではないかと思うのですが。
834 名前:NAME IS NULL mailto:sage [2008/05/22(木) 21:54:45 ID:???] >>833 の便乗質問ですが各データ型で使用するバイト長ってどこでわかりますか?
835 名前:NAME IS NULL mailto:sage [2008/05/23(金) 01:26:43 ID:???] >>834 dev.mysql.com/doc/refman/5.1/ja/storage-requirements.html >>833 別に自分のしたいようにすればいいんでね?(自分にとって、管理しやすいほう、扱いやすいほうで) ただ、fixed formatでテーブル作成してるんなら、discには実際使ってない部分の領域も書き込まれるけどね。
836 名前:834 mailto:same [2008/05/23(金) 01:41:31 ID:???] >>835 ありがとうございます!助かりました
837 名前:NAME IS NULL [2008/05/23(金) 21:38:08 ID:Dt8inalF] SQL文だけで、半角カナを全角カナにする方法(関数)って、ありますでしょうか?
838 名前:NAME IS NULL mailto:sage [2008/05/24(土) 02:02:00 ID:???] 搭載物理メモリ48Gのサーバーで、大きな単一テーブル(80G程度)を上手く扱う方法って無いですか? (そのテーブル対して、更新&参照&集計が頻繁に発生すします。) my.conf-hugeを元にいろいろチューニングを試してみたんですが、 io-waitが100%に刺さったまま、ハングしたようになり困っています。 開発当初はoracle案件で、ありきたりのチューニングだけで、問題なく動作していたのですが、 クライアントの方針変更で、急にMySQLで開発することになり、非常に難儀しています。 (ちなみに案件規模は、楽天クラスの商品在庫管理です。)
839 名前:NAME IS NULL [2008/05/24(土) 02:15:08 ID:/LSToqrf] その規模になると、MySQLでは、どうやっても無理。パフォーマンスや安定性の面でもお薦めしない。 クラに泣き付いてでも、オラクルに戻してもらえ。
840 名前:NAME IS NULL mailto:sage [2008/05/24(土) 02:20:15 ID:???] 単一tblって時点で何だかな〜… 大規模すぎてMySQLの範疇じゃないだろ
841 名前:NAME IS NULL mailto:sage [2008/05/24(土) 02:36:57 ID:???] >>839-840 ありがとうございます。でも、それは無理っぽいです。 クライアントのライバル会社が全社的にOpenOfficeを採用したとかで、新聞に載ったらしく、 クライアントの経営トップがそれに対抗して、バックエンドにオープンソース採用の方針を 打ち出したいらしく、私が土下座するくらいでは受け入れられそうにも無いです。
842 名前:NAME IS NULL [2008/05/24(土) 02:49:35 ID:/LSToqrf] かなり痛いトップだな。 コッド博士クラスの優秀なDB開発者を雇ってMySQLを改造してもらえ。
843 名前:NAME IS NULL [2008/05/24(土) 03:34:26 ID:VAruVHOx] バカ相手してても身体壊すだけだから辞めちゃえw
844 名前:NAME IS NULL mailto:sage [2008/05/24(土) 03:39:53 ID:???] >>841 土下座て。 やるだけの事はやってちゃんと検証データとボトルネック、仕組み的に無理ですって事を踏まえた上で それでもなんとかしろと言うならやりますが、紆余曲折、最悪こういう想定事態になりますが よろしいですか?ってクライアントと折衝する人に言ってもらえばどうでしょうか。 自分の仕事は最低限筋の通った理屈を報告して折衝担当者に理解してもらうこと。 もちろん前向きにね。 自分の仕事を理解し、精一杯やるだけやってしっかりとこなした上で無理難題言う上司や客に必要以上の負担を強いられる道理はないでしょ? ただその事を丁寧にビジネス用語で当たり障り無く表現して相手に理解、納得してもらうよう「伝える」努力は必要ですけど。 私もそこまでのデータの運用経験はないけど、微力ながら言わせてもらうと ■ハード面 ・SASでRAID0+1 ファイバーチャネル使えるならそれに越したことはないけど。 => ディスクの読み込み速度が上がって結果的にMySQLの更新・参照・集計早くなります。 => バックアップできます。三世代管理くらいまではしたほうが幸せになれるかも。 => RAIDはライトキャッシュとBBUのついているものを使用 なるべくキャッシュは多い方がいいです。 2GとかつけれるのもあるけどRAIDカード選びは慎重にね。 ディスクはシークタイムがあるから10000rpmのもので秒間16コミットしかできない ライトキャッシュ積むといっぱいコミットできます ・レプリケーション => レプリケーションしているとは思うけど、なんとなくしてなさそうな節があるのでやって見て下さい。 スレーブサーバに参照を掛けるとスレーブの台数分だけ参照はバンバン早くなります。 ただし、マスターと完全同期ではないので入金処理等精度の必要な部分はマスターを使って下さい。 アプリケーション側でのスレーブ参照制御が面倒なら間にLVSでもなんでもいいからロードバランサー仕込むと吉 ・memcacheサーバ => 80G程度ならサーバ10台以内で構築できると思う 更新はライトスルーでMySQLにも書いて単純参照はmemcacheからすると涙でるほど早い。 但しきちんと両方更新されたか確認、制御する仕組みは必要。 ソフト面に続く
845 名前:NAME IS NULL mailto:sage [2008/05/24(土) 04:32:39 ID:???] ■ソフト面 ・設計の見直し => 詳細知らないので絶対とは言えませんが、MySQL用にテーブル設計、運用設計見直した方がいいと思います。 単一テーブル80Gは異常に思えます。 同一テーブルを複数作って分割・分散したり非正規化してみたり。 内部の詳しい人に相談して下さい。詳細知らないと設計はできません。 ・インデックスの見直し => 当然ですがインデックスの付け方と発行クエリでMySQLの速度は1000倍違うこともあります。 複合インデックス、プライマリ、単一ユニーク、複合ユニーク気を付けながらexplainしてチューニング。 ・クエリの見直し => これもexplainしながらチューニング 色々調べてみてください。 => 拡張インサート、INSERT IGNORE等を使うと便利な局面もあるかもしれません。 => 集計は、トリガを使ってインサート時に集計値をインクリメントしたりすると負荷がさけれます。 => DELETEは実行コストが高いので、削除フラグを付けて対応する。一日一回纏めてDELETE処理する等 ・MyISAM、InnoDB => 参照はMyISAM、更新はInnoDB。 ライトスルー、レプリケーションと合わせて使えばパフォーマンス全然違います。 MyISAMはライトロックが有効かもしれません。デッドロックに気をつけて。 ・コンパイル => MySQLはソースからICCでコンパイル。速いっす。 ・文字コード => できればUTF-8。一番苦労しなくて済みます。MySQLの内部コードもUTF-8。 ・チューニング => ケースバイケースなんでなんとも言えませんが tmp_table_size max_heap_table_size は同じ値にしないとダメですよー query_cacheをしてみてください 禁断のチューニング innodb_support_xa = OFF innodb_flush_method = O_DIRECT sync_binlog = 0 innodb_flush_log_at_trx_commit = 2 innodbを使用している場合上記設定だとディスクIOがガンガン減るので更新負荷がガクンと下がります。 ただし、データの保存性は最悪。 予期せぬマシンダウンがあれば復旧できない場合もあります。 ・専門のコンサル => 実現までの早さと質が必要ならMySQLに習熟してる会社にコンサル依頼するのが一番早いような気が・・・ KLABさんにでも頼んでみたら?とふと思いました。 私も規模が大きくなるに連れて運用に悩まされ、夢の中のトイレで自分のションベンの放物線を眺めている時でさえMySQLの事を 考えていた時期が三ヶ月ほどありました。 データもいっぱい壊しました。いっぱい怒られました。あぁ思い出したらトイレに行きたくなってきたのでこれくらいで。
846 名前:NAME IS NULL mailto:sage [2008/05/24(土) 04:38:50 ID:???] 追記:あっSUNが買収してオープンソースでなくなるんじゃなかったっけ?