1 :
シナイ山 :
04/04/13 10:02 ID:??? このスレッドの執筆時には、まだバージョンもアルファ段階で正式リリースされる まで程遠いが、これから新しい機能を試してみたいとかボラクルに取って代わり 低コストで次世代データベース開発のために利用したいエンジニアは今こいう時だから こそver.5.0に着目したいところだ。 5系がまだアルファ段階だからといって敬遠するの良いが、テストマシン上で独自に開発を して、テストマシン等で実運用するのも一つの道であろう。 開発の成果は、MySQLやOpenBSDに随時報告することが重要だ。
2 :
NAME IS NULL :04/04/13 10:29 ID:by4C3cBC
2グッシ!
3 :
NAME IS NULL :04/04/13 16:12 ID:vsQHurnf
MySQL 5.0 テスト運用ではなく 個人情報(クレジット情報含む)のデータベースとしてバリバリ本稼動させてます
4 :
NAME IS NULL :04/04/13 16:57 ID:by4C3cBC
よっ、漢!
@ITの今日の記事見てきたけど 4.1からユニコード使えたっけ? 4.1か5の区分も棒グラフでわかりづらいのだが・・・。 当方4.1ではJavaでMS932のデータは格納できず Shift_JISのみ格納できると結論付けているが・・・。 認識違いだったらスマソ。
6 :
NAME IS NULL :04/04/13 21:20 ID:+9bcE52b
>>3 どっかの会社から受けたオンラインショッピングでも作ってんの?
8 :
5 :04/04/14 17:29 ID:???
>>7 レスありがとん。実は勘違いしてました。
4.1じゃなくて4.0はおろか3.2356で動かしてた。
音符が入るのに何でかっこ株入らんのかいな?
ってひとりで混乱してた・・・。失礼しました。
9 :
NAME IS NULL :04/04/15 10:32 ID:Cwu6yyaA
5.0使つてみたが、特にこれといつたバグは見つからんかったな。日本語を扱ふときはEUC-JPで良いんだろ。レコード単位でのロックは、だふしたら良ゐのかな。
10 :
5 :04/04/16 17:28 ID:???
>>9 失礼しました。DBのキャラクタセットsjisでした(泣
プログラムでEUC-JPに変換したときと
DBの設定でEUC-JPにしたときの違いなどが認識不足でした。
そのあたりも含めて
総合スレに逝ってログ見て勉強しなおしてきます・・・。
11 :
NAME IS NULL :04/04/18 14:09 ID:sQJEfw06
問題は一つのテーブルにつき何行まで対応しているかだな。
>1 ところでなんでOpenBSDに報告なんですか?
13 :
NAME IS NULL :04/05/06 05:40 ID:ULwWMwcJ
5.0が正式にリリースされるのは何時頃よ。
14 :
NAME IS NULL :04/05/06 06:37 ID:5ufiEJ69
>>13 来週MySQL ABの社長が日本に来るから聞いてみたら。
それより何より、レプリケーションですよ。 マルチマスタが出来ないと、実際の運用が厳しい。 はやく組み込まれないかなぁ
16 :
NAME IS NULL :04/05/19 02:24 ID:1/NWDgMc
MySQL ABは何故、この先一般大衆に広まるまで相当な時間を有するであろ4.1とか5.1を敢えて開発という名目で出したのか分からん。
17 :
NAME IS NULL :04/06/08 22:40 ID:Azn6jyNs
5.0以降は、オラクル並みの機能を備えたDBMSになるのかなぁ。
どうかな? でもSAP DBにある機能は付くんじゃないの?
19 :
NAME IS NULL :04/08/28 17:55 ID:z9RoUx+F
質問させてください。 version: 5.0.1-alpha-standard-log を使用しています。 stored procedureの機能を確かめたくて使ってみたんですが、procedureがcall出来ません。 例) delimiter // CREATE PROCEDURE test() BEGIN SELECT "hoge" as hage; END // delimiter ; -- として、 call test(); としたら、 ERROR 1304 (42000): PROCEDURE hoge.test does not exist となります。 show procedure status; で確認すると hoge DBに test procedureは存在します。 どういう事なんでしょうか? #ちなみにdrop procedureも同様のエラーで動作しません。
delimiter // Drop procedure IF EXISTS test // CREATE PROCEDURE test() BEGIN SELECT "hoge" as hage; END; // call test()//
そろそろβ?
もうベータ
もうそろそろ出そうなふいんきなわけだが、新機能についてまとめてあるページない?
ふーん。 普通のDBMSになるんだなw その分スピードが犠牲になるんだろうなぁ。
新機能を使わなきゃスピードが犠牲になったりはしないんじゃね? そういう感じの拡張になってたはずだけど。
>>25 テーブル形式で各々が使うファイルとロジックが完全に分離されている。
だから、唯一定評のある MyISAM の速度はほぼ昔のままだよ。
といっても SQL の解析ロジックは 4.1 以降拡張されてるけどね。
とりあえずソースファイル嫁。
28 :
NAME IS NULL :2005/11/05(土) 23:07:24 ID:urZZ/Ba6
エクセルVBAでMYSQLと接続する方法を教えてください。 ODBCドライバ使えばできるらしいのですが、 私が持ってるVBAの本にはまるでかかれてません。
>>28 この板から消えろ 馬鹿すぎ
28 名前: NAME IS NULL Mail: 投稿日: 05/11/05(土) 23:07:24 ID: urZZ/Ba6
エクセルVBAでMYSQLと接続する方法を教えてください。
ODBCドライバ使えばできるらしいのですが、
私が持ってるVBAの本にはまるでかかれてません。
50 名前: NAME IS NULL Mail: 投稿日: 05/11/05(土) 23:07:55 ID: urZZ/Ba6
エクセルVBAでMYSQLと接続する方法を教えてください。
ODBCドライバ使えばできるらしいのですが、
私が持ってるVBAの本にはまるでかかれてません。
763 名前: NAME IS NULL Mail: 投稿日: 05/11/05(土) 22:51:01 ID: urZZ/Ba6
エクセルVBAでMYSQLと接続する方法を教えてください。
ODBCドライバ使えばできるらしいのですが、
私が持ってるVBAの本にはまるでかかれてません。
そういえば、いつだかのWindows Updateから、MS-AccessからMySQLのODBC 使えなくなったのって、今は直ってるのかな。 ちょっとまえは、Window UpdateであがってしまったMDACのバージョンを元に戻せ、 という話しか見つからなかったが。 会社で使おうと思ったとき、会社のPCのセキュリティポリシーから、MDACのバージョン 古いのを使うわけにはいかず、MySQLを使うのをあきらめたものもある。
つ M$のいやがらせ
33 :
NAME IS NULL :2005/12/08(木) 20:43:31 ID:q4xs/OQo
マク版エクセル、ダメ元でMySQL繋いだらイケた。 MS製なのにiODBC使ってるのが泣かせる。
mysql-5.1.4-alpha-win32テスト運用中で MyODBC-3.51経由でアクセスしてるんだけど マニュアル読んで、 c:\my.cnf [mysqld] skip-character-set-client-handshake default-character-set=cp932 とかやっても"ソ表"みたいに2バイト目が\な文字が化ける。 良く分らん。
35 :
NAME IS NULL :2005/12/25(日) 06:18:30 ID:CfwKIhPw
grantでユーザを作りました。 use mysql; select USER();してもrootしか表示されず、 作ったユーザが表示されませんでした。 mysql5は故障してますか?
37 :
NAME IS NULL :2006/01/05(木) 23:18:54 ID:DdseHqzl
select count が遅いのですが、仕様ですか?
>>37 where句に何か書いてる?
あと、innoDB? MyISAM?
>>38 innoDB にしてます。 where句は、書いても書かなくても変わりませんでした。
ttp://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html の真ん中へんにあるように、InnoDBはrowの数を保持してないのですよ。
(MyISAMは保持してるので速い)
>To get a fast count, you have to use a counter table you create yourself
>and let your application update it according to the inserts and deletes it does.
とか書かれちょります。
あとは「更新頻度が低いならクエリキャッシュを使え」とか、
正確でなくていいならSHOW TABLE STATUSを使うのもいいんじゃねとか、そんな感じ。
MyISAMのほうが速いのを利用して、レプリケーション先をMyISAMにして
そっちでcount(*)する技もないではない。
お好きな方法をどうぞ。
41 :
37 :2006/01/06(金) 23:41:12 ID:???
>>40 お調べいただいて、ありがとうございます。
LOAD DATA した後に確認したかったんですが、
それほど重要なデータでもないので、しばらくは
SHOW TABLE STATUSで確認することにします。
※重要 我々のファウソダーは15糞ルールというのを守り続けています。 それは15糞以内に、ダウンロード、インストール、使用ができることです。 これ以上かかるようならトイレに流してください。
43 :
NAME IS NULL :2006/01/12(木) 21:40:53 ID:7YlGT1cD
差・共通集合演算は未対応ですか
44 :
NAME IS NULL :2006/03/25(土) 21:53:39 ID:Kbd6Xz91
ISAM可愛いよぼくのISAM
今更ISAMなんて使うんじゃねーよ。 MyISAMの何が不満なんだよ!
いや、マジで困ったんで。。。>今更ISAMな奴
InnoDB可愛いよぼくのInnoDB
>>48 InnoDBはOracleに乗っ取られますた。
>>45 野暮ついでだがそこは
InnoDBの何が不満なんだよ!
のtypoかと思はれ
51 :
NAME IS NULL :2006/05/13(土) 17:55:43 ID:NPZBoiQ0
おっす!オラ悟空 MySQL 4 から MySQL 5 へのデータベースの移行は 一度フルダンプして持って行くことになるのかな?
JavaサーブレットからMySQLに接続するプログラムを作成しているのですが、 上手く接続出来なくて困っています。 以下ソース Class.forName("org.gjt.mm.mysql.Driver"); Connection conn=DriverManager.getConnection( "jdbc:mysql://localhost/user_db", "", "" ); 上記のようなソースで、connがnullになってしまいます。 環境は OS・・・centOS 4.3 jdk・・・1.5.0_06 Apache・・・2.0.54 Tomcat・・・5.5.16 JDBC・・・mysql-connector-java-3.1.12-bin.jar です 御教授の程、宜しくお願いします。
54 :
a :2006/05/20(土) 20:48:09 ID:QcPxt9BR
ユーザー名とパスワードはNULL? あと、接続処理部分だけをコピペしてテスト用のクラスを作って実行して、 そのエラーメッセージは確認した?
C言語で作成したプログラムでデータ挿入、取得しています。 Shift-Jis文字列のデータを挿入し、mysql_fetch_rowで取得しましたが、 Shift-Jis文字ではないものが返ってきているようです。 Shift-Jis文字で取得する方法はないでしょうか?
56 :
55 :2006/05/20(土) 23:49:39 ID:???
解決しました。 プログラムのくだらないバグでした。 とくになんの設定もなく取得できました。
57 :
53 :2006/05/21(日) 13:55:45 ID:???
58 :
NAME IS NULL :2006/06/22(木) 04:15:08 ID:1d2hPd6+
だめだ、MySQLサーバがまたダウンorz どっか年3万以内でMySQLがある程度快適なレンタルサーバ知らない?
356 名前: NAME IS NULL Mail: 投稿日: 2006/06/22(木) 04:15:41 ID: 1d2hPd6+
だめだ、MySQLサーバがまたダウンorz
どっか年3万以内でMySQLがある程度快適なレンタルサーバ知らない?
357 名前: NAME IS NULL Mail: sage 投稿日: 2006/06/22(木) 04:19:30 ID: ???
>>356 ロリ。サーバー1台じゃないが。
358 名前: 356 Mail: 投稿日: 2006/06/22(木) 11:48:29 ID: AgHOUkWe
レスTHX。
実はいま使ってるのがロリ。。。orz
MySQLはさくらとかの方がいいのかな?
359 名前: NAME IS NULL Mail: sage 投稿日: 2006/06/22(木) 13:07:06 ID: ???
>>356 ロリポップはレスポンスが悪いので、移転中です。
移転先はさくら。
年6,000円。
60 :
aux :2006/06/23(金) 10:43:13 ID:o9+fL5i2
FedoraCore5のMySQLのバージョンは調べた結果5.0.18でした これからFC5を使いたいと思っています yum update すると MySQLのバージョンはいくらに更新Sれるでしょうか?
61 :
NAME IS NULL :2006/06/24(土) 10:43:28 ID:l1e0xhoR
おいおい、まだ匿名ユーザ消してないのかよ。 この状況を理解してる? さっさと匿名ユーザを消したソースを配布白。 15分ルールとか言ってるぐらいならくだらんことさせるなよ。
62 :
NAME IS NULL :2006/08/08(火) 04:58:39 ID:Fb/yQmu1
誰か、俺の質問を受けてくれないかな? root のパスワードを設定したんだ。しかし、その後なぜか拒否される。 それで、mysqlを確認してみようと思いmysqlユーザで接続した。 [root@localhost etc]# mysql ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO) [root@localhost etc]# mysql -u mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 to server version: 4.0.25-standard Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show databases; +----------+ | Database | +----------+ | test | +----------+ 1 row in set (0.00 sec) mysql> あれ、mysqlデータベースがないじゃないか! さて、どうしたらいいんだおるか?
64 :
NAME IS NULL :2006/08/09(水) 22:41:11 ID:MhvThrSV
MySQLにあるデータベースのテーブルをAccessでを表示させようとするのですが ODBCでデータソースを作ってテスト接続もOKなのにテーブルを表示しようと するとエラーになります。 MySQLはVersion5でAccessは2002なのですが何か設定でもあるのでしょうか? 教えてほしいです。お願いします。
通りすがりのエスパーですが、何のエラーなのか透視できませんでした
エラーを書くのを忘れていました…。 エラーなのですが ODBC--呼び出しが失敗しました。 [MySQL][ODBC 3.51 Driver]User cancelled.(#0) と表示されます。 どうすればいいのでしょうか?
68 :
NAME IS NULL :2006/09/17(日) 02:16:29 ID:mk6QgbEu
age
69 :
悩み人 :2006/10/19(木) 00:47:56 ID:T6+foHou
PHPからMYSQLに接続したいのですがどうしてもつながりません。 mysql_connect関数を使い接続しようとしたのですが、 Call to undefined function mysql_connect() というエラーが出て、接続できません。誰かわかる方教えてください。
それで充分
断る!
エラーは嫁にしたくない
76 :
NAME IS NULL :2006/10/31(火) 15:21:41 ID:/92qbdm8
質問おねがいいたします。 昇順ソートでnullのレコードを最後にしたいのですが Select * from tablename order by field desc nulls first/last mysqlでは語尾のコマンドが指定できませんか? case文を書いてやらねばならないんでしょうか?
77 :
sage :2006/10/31(火) 15:23:38 ID:/92qbdm8
すみません。descはascの間違いです
使い終わったら mysql_free_result を呼ぶ ってのは 習慣づけた方がいい? どうでもいい?
>>78 すぐ終わるプログラムならどうでもいい。
ずっといすわるプログラムで mysql_free_result を呼ばなければメモリリーク。
httpで受けわたされた title, player, yearをそれぞれデータベースに挿入したいのですが、 下記のやり方ではうまく行きません。 $query = "insert into cds (titel, interpret, jahr)"; $query .= "values ({$_GET['title']}, {$_GET['player']}, {$_GET['year']});"; 恐らく二行目が悪いとは思うのですが…… ご教授お願いします。
php使いって裾野が広いんだなぁとw
cygwinのC言語でmysqlを使いたいのですが質問です。 cygwinのC言語で、winsowsにインストールしたmysql を使いたいんですが、これは難しいでしょうか? ネットで調べているんですが、cygwin環境でmaysqlをビルドして、 Cのライブラリをリンクすればできるようなことが 書いてありましたが、cygwin環境でmysqlをビルドできたという ページが見つかりませんでした。 mysqlのメーリングリストのログもcygwinで検索したんですが、 できてなかったみたいです。 mysql徹底入門でビルドの仕方みて、自分もやってみようと思いますが、 初心者なのでもっと無理と思います。 cygwinのperlからだと難しく無いんですが。PostgreSQLはcygwin版がありますし。 なにか方法ありましたらご教授お願いします。
ところで、MySQL総合スレNo10をたてる人はいないのか? それとも、ここを総合スレNo10で消化するのか?
>>80 どううまくいかないのかの根拠を具体的に提示すること
>>86 ありがとうございます!!!
すごい感謝です。
1ヶ月ぐらいcygwinのc言語からmysql使えたらいいなー。
と思ってました。
cygwinのコンパイルのエラー回避できる方法あるんですね。
違う紹介していただいたページには、mysqlはWIN32バイナリを使うようにして、
コンパイルはライブラリを作って使うためにだけ、にした方が良いともありますね。
っていうことは、cygwinにそのライブラリをリンクしてC言語を使うと、
windowsにインストールしたmysqlが使えるということなんでしょうか。
なんとなく不思議な感じですが、これができるとほんとうれしいです。
とにかく手がかり教えていただいたので試してみます。
89です。 ソースをコンパイルしてライブラリができますが、 それをリンクして、cygwinのgccでmysql徹底入門のサンプルプログラムを コンパイルしたらできました。 windowsにインストールしたmysqlに接続してみると データも正常に追加できました。 cygwin板に引っ越しましたが、ご報告させていただきました。 ありがとうございました。
91 :
NAME IS NULL :2006/11/03(金) 13:39:40 ID:yhlGh22Y
サーブレットからMySQLサーバにアクセスするために、MySQL用のJDBCドライバをインストールしようとして、
?
http://www.mysql.com/downloads/connector/j/ ?から
mysql-connector-java-5.0.4-bin JARファイルをダウンロード
してきましたが、本には%CATALINA_HOME%/common/lib にコピーする
ように書いてあるのですが、該当ディレクトリが存在しません。(古い本のせいでしょうか。)どこにコピーしたらよいのかわからず途方にくれています。どなたか教えてください。よろしくお願いします。
泣けるぜベイベー
94 :
NAME IS NULL :2006/11/03(金) 22:21:31 ID:neaGXfY6
>>93 レスありがとうございます。行ってみます。
95 :
NAME IS NULL :2006/11/04(土) 10:03:36 ID:ww13bNDf
単発の書き込みならロックは不要?
なわけ無いじゃん。
97 :
NAME IS NULL :2006/11/04(土) 10:25:26 ID:ww13bNDf
ロックが不要も何も、MyISAMは書き込みする際にテーブルロックしちゃうぞ
エンジンとして、InnoDBじゃなくてBDBを使うメリットってあるん? パフォーマンスがBDBの方がいいとか?
100 :
NAME IS NULL :2006/11/04(土) 20:29:19 ID:P36/CUPW
>>98 ロックするつうか、クエリーってのは
アトミックなものじゃないのか?
>>99 InnoDBは行レベルロック、BDBはページロック
InnoDBのほうが、その他の機能で人気が高い。
BDBは、導入が早いが不人気で不安定 だったと思う。
InnoDBかMyISAMの2択でええんだな。
その2択でええ。 で、ファイナルアンサーはどちら?
OLTP→InnoDB DSS→MyISAM でええんちゃう?
テーブルのタイプで言えば、 マスタ型→MyISAM トランザクション型→InnoDB ヒストリカル型→MyISAM ってところかな。
107 :
NAME IS NULL :2006/11/05(日) 07:19:49 ID:AbI7e55r
MySQLってデータはどういう形で持ってるの?
所詮ファイル
亀だが、
>>95 のように疑問を思うヤシが
まさか世間に出てるものを書いてないだろうな・・・
110 :
NAME IS NULL :2006/11/05(日) 16:07:32 ID:S8gdmn65
泣けるぜベイベー
>>95 氏はこの5年間に、約150社に対してクライアントサーバーシステムを
納品した実績を持っています。 内その90%は現在も基幹システムとして
順調に稼働しております。
>110≠>95 いや、書いてなければいいんだ。 ま、mysqlなシステムだったらどっちでもええけど
>>112 残り10%はまともに動いていないんだなw
115 :
NAME IS NULL :2006/11/05(日) 17:49:43 ID:S8gdmn65
>>113 こんなところで憂さ晴らしか、
小さいぞ。
総合スレがレベル低くなりすぎて廃スレになったのに、 こっちまで廃スレにするつもりかよ・・・・・ 厨房避けの初心者スレ作らないとダメか?
いや自治に走るのはいいんだが、 myでまともなネタあるか?
最近更新遅いよね。 重大なバグがあるのか?5.1は?? 無理して急がれても迷惑だけどね。
>>119 MySQL Enterprise は名前を変えただけで、いままでのMySQLサーバと同じだから
競合はしないのではないかと思う。
>>120 まぁこれを導入するだけのとこは、
担当するSIがoracleを勧めるんじゃないかなぁ・・・
俺自身はここ1年oracle触ってないけど
1つのテーブル(A)からデータを取得する際、 そこに入っているある値(userだとします)の数字と、 異なるテーブル(B)に入っている数字の値が同じ場合、 Bからidという値とAの値すべてを取りだしたいのですが可能でしょうか? 簡単に書くと SELECT `auto`,`num` FROM `A` SELECT `id` FROM `B` WHERE `user`=(numの値) これを一度に結合して出来ないでしょうか?
>>122 どっちかつーとプログラム板じゃねぇ?
select a.auto,b.id from a inner join b on a.num = b.id
>>123 122じゃないけどサンクス
これってcountすることもできるの?
select a.auto,b.count(id) from a inner join b on a.num = b.id
だとできなかったけど
>>124 group by で集計単位付加
とりあえず自分でSQL書けないヤシは
Accessでテーブル作ってクエリで結合したSQLを参考に。
ACCESSにそんな機能あるのか 確かに、MS系のツールだったら、クリックしていくだけでSQL出て来そうだよなぁ 遅くて汚くても
ビルえもんが作ってくれます
遅くて汚いというより 込入った難しいものは出来ない感じ
やり方はあるのかも知れないけど 「いいよ。もう俺がSQL書くよ」 そんな感じ。
Access使ってる時点で 利用の範囲はたかが知れてる に1票
データベースってC:\mysql\dataでしか作れないの? E:\Web\につくりたいんだが
つくれつくれ
作り方わからなすwwww 参考書でも買ってみるかな
>>133 そうそう
悩めば悩んだ分だけ身につくもんだ
ちなみに参考書も手当たり次第に買うのは非効率
・入門書(インストや設定ファイルの設定法などが載ったヤツ)
・データベース構築法(PHPとの組み合わせがデフォ)
・リファレンス(SQL標準のより種類は少ないがMySQL専門の方がよい)
性格の全く違うこの3分類からそれぞれ自分に合ったヤツを探すべし
Access使ってる時点で MySQLを使わずに付属DB(ジェット何たらだったかな)で ええでないか に100,000,000票
>>131 もしかして、M$のOSは
アメリカではC:¥mysql¥dataがC:$mysql$dataという表記になるのか?
どちらにしても、気色悪い感じだなw
>>134 ある程度PHPをいじれるようになってきたんで、
MySQLとの連携を考えていて・・・
自分にとっては2番目のが良さそう
とりあえず参考書代稼ぐためにバイト探します
通貨記号で区切るのがM$
>>136 そう言われてみると。。。
日本以外のキーボードって「\」ってあるの?エスケープ文字とかどうするの?
エスケープも「/」?
じゃぁ日本でも「\」の他に実は「/」でエスケープできるの?
バックスラッシュ(\)
>>138 /なんて使ったらダメだろ。
そもそも、2バイト文字と1バイト文字の見分けがつかないような環境が胸糞悪い。
/(^o^)\なんてこった
\(^o^)/オワタ
おれは「参考に」 と書いたんだが、思い込みの激しいやつばっかりか・・・
建てんのか? 立てるなら厨房避けスレの方がよさげ
こちらを初心者用としてテンプラに入れるとか。
151 :
NAME IS NULL :2006/11/15(水) 10:12:39 ID:eneRUEqw
おまえら教えてください。 SQLクエリによるアクセスではなくテーブルに直接アクセスすると 速いときいたことあるんですがやり方がさっぱりわかりません。
BerkleyDBなら、それ自体がSQLではないアクセス方法だし。
153 :
NAME IS NULL :2006/11/15(水) 23:33:46 ID:dOhQElQe
トランザクションって Aさんが { トランザクションスタート セレクト とってきたデータを見ていじったりして アップデート コミット } してる間に Bさんが { セレクト } で読むことはできないってことでいいんですよね?
そりゃロックだ。
でわ AさんのセレクトでFOR UPDATEいれたら Bさんからは読めないようにできるんですか? AもBも同じテーブルの同じレコードをセレクトしてるということなんですけど
実際にやってみりゃいいじゃん。
gikoがhoge1かhoge2かhoge3にあるかを 今はこうやってるんですが、もっといい書き方ありますか? (hoge1 like giko) or (hoge2 like giko) or (hoge3 like giko)
>>156 できなかったんですけど
どうやったら
>>153 みたいな
Aさんがいじってる間は
Bさんはいじれない状態にできるんでしょうか?
160 :
NAME IS NULL :2006/11/16(木) 03:14:57 ID:H+GBzCl6
>>157 それだ!
助かりました!ありがとうございます!!
>>159 Bさんのセレクト時も、select * from てーぶる for update ってすれば、
Aさんが終わるまで読めない。
mysql-gui-tools-5.0にしたら MySQL Administratorのバックアップが使えなくなってしまった… オプションいろいろ変えても An Error occurred while executing the backup. Error while analyzing an SQL statement. って出てしまう。。 しかも古いバージョンがもう落とせない。。。
サーバに出てるエラーログを見るのじゃ
>>165 エラーログは何も出てないです…
最新のMySQL Administrator 1.2.5 rc でバックアップツールちゃんと動いてる人いますか?
MySQLのrootのパスワードを忘れてしまいました。 パスワードのリセット方法などの解決手段はなにかありますでしょうか? あればぜひアドバイスをお願いします。
>>167 --skip-grant-tableオプション
やりかた云々はマニュアル参照のこと
(パスワードを忘れた時の方法として項がある)
169 :
167 :2006/11/18(土) 15:01:57 ID:???
>>168 レスありがとうございます。
早速調べてみます。
170 :
NAME IS NULL :2006/11/19(日) 16:10:06 ID:LNEvoLUo
すみません、質問させて下さい。 MySQL 5.0.24で運用しております。 テーブルから一定時間以上前のデータを削除したいと思っているのですが 時間比較の書き方がわかりません。 テーブル構造は下記になります。 CREATE TABLE `c_condition` ( `c_condition_no` int(10) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,# No `c_condition_name` varchar(32) UNIQUE NOT NULL default '',# 状態名 `c_condition_up_date` datetime NOT NULL default '0000-00-00 00:00:00',# アクセス日時 `c_condition_reg_date` datetime NOT NULL default '0000-00-00 00:00:00',# 登録日時 `c_condition_del_flg` tinyint(1) unsigned NOT NULL default '0'# 削除フラグ ) ENGINE=InnoDB DEFAULT CHARSET=ujis; delete from table where `c_condition_up_date` > NOW() と単純に現在日時以前のデータを削除する書き方はわかりましたが、 現在日時より2日前のデータを削除するのは、どのように書いたらよろしいでしょうか? 宜しければお力添えを頂ければ助かります。
MySQL総合スレ じゃないと盛り上がらないね。
5.0.27のソースをmakeしてmake testしたのですが、 ctype_ucs_binlog [ fail ] となってしまいます。 ググってみたのですが、それらしい情報も見つかり ませんでした。何か対策をご存じですか?
.configのオプションは?
>>175 返事ありがとうございます!
--prefix=/usr/local/mysql
--with-charset=ujis
--with-extra-charsets=all
です。
もしかすると最後のallをcomplexにすれば
何か変わるんでしょうか?
うちではそのエラーは出ませんでした
>>177 確認、お手数おかけします。
白箱のDebianにインストールしようとしているのですが
環境によるものでしょうか…。
帰宅後にパラメータ変えてチャレンジしてみます。
179 :
NAME IS NULL :2006/11/24(金) 22:45:18 ID:cOwp2BAT
インデックスだけをあらかじめメモリに読み込んでおくことって出来ないの?
>>179 ご協力いただきありがとうございます。
ちょっとこれ以上追求するのも時間がかかりそう
なのでポスグレのほうでチャレンジすることにしました。
解決しないのはキモチワルイのですが諦めも肝心ですね。。
182 :
NAME IS NULL :2006/11/25(土) 22:53:32 ID:mpEt2PRj
「ほぼ」定型の XML 文書をRDBにマップして格納しようとしています。 具体的には集めてきた RSS/ATOM フィードを RDB に格納して処理しようとしています。 ただし、サイトごとに独自の XML 名前空間に属する要素で拡張されて いる記述があるので、その部分は XML 文書のまま特に解釈せず 格納しようとしています。 このように XML 文書の断片を特に解釈せずに格納するときは、 varchar や blob で格納するのが常套手段なのでしょうか? それとも MySQL には XML 文書の断片を扱うために特に用意された 手段があるモノなのでしょうか?たとえば XPath による 断片の抽出に対応してくれるとか。
183 :
148 :2006/11/26(日) 07:06:56 ID:???
phpmyadminについて質問なんですけど よろしいでしょうか? フィールド型をENUMに設定した フィールドを追加しようとすると必ずエラーが出てしまいます。 エラーが出るのはENUMだけなんですが、 このフィールド型を設定するには 事前に設定等がひつようなんでしょうか?
>>184 エラーが出てるならそれを書かないとだれもわからんだろ。
5.0.27のWin版をインストールしたのでが、WinmysqlAdmin.exeが見当たらないのですが、どこにありますか?
>>186 おまわりさんに聞くと良いんじゃないかな
188 :
NAME IS NULL :2006/11/28(火) 17:13:59 ID:l8ld2DLA
みなさんはDBの定義とかするのにWinmysqlAdminとCUIとphpMyAdminのどれが好きですか?
>>188 phpMyAdmin が好き。
APC 入れればサクサク。
>>186 最近のverにはもうない
4.0あたりまでじゃなかったかな
確かに知らん間になくなったな
192 :
NAME IS NULL :2006/11/28(火) 22:02:56 ID:DZb/Y+nR
Apache2
PHPのアクセレータのひとつ。 pear に入ってたっけ?
120万件のデータが入ったテーブルをalter table作業している最中に、selectかけたらメモリ食いつぶすんだけど。 テーブルのファイルサイズは780Mくらいなのに。2.5Gのメモリを使っても検索されずにout of memory... そもそもalter中にselectするなって事なんですかね?
なんでテーブル変更してる最中にデータ取り出すんだよw
>>192 American Power Conversion
>>192 Armored Personal Carrier
質問させて下さい。 WinXP Pro Sp2 MySQL 5.0.24で動かしています。 CREATE TABLE `vote_total` (# パーソナルデータ `vote_total_fileNo` int(10) unsigned NOT NULL PRIMARY KEY,# ファイルNo `vote_total_judge_yes` int(10) unsigned NOT NULL default '0',# 評価(良い) `vote_total_judge_no` int(10) unsigned NOT NULL default '0',# 評価(悪い) `vote_total_reg_date` datetime NOT NULL default '0000-00-00 00:00:00',# 登録日時 `vote_total_del_flg` tinyint(1) unsigned NOT NULL default '0'# 削除フラグ ) ENGINE=InnoDB DEFAULT CHARSET=ujis; 上記の様なテーブルで情報を入れる際に、 1:`vote_total_fileNo` = 1レコードが在れば`vote_total_judge_yes` + 1をアップデートし、他のカラムはアップデートしない。 2:`vote_total_fileNo` = 1レコードが無ければ、`vote_total_fileNo` = 1と`vote_total_judge_yes` + 1をインサートする。 この処理を1回の接続(一つのsql文)で行いたいと思いまして、mysqlドキュメントを読みつつ、 replaceを使えばいいかなと思ったのですが、replaceを使うと、`vote_total_judge_yes`以外のカラムが初期値に上書きされてしまいます。 そこで色々読みあさっているとWHEN 〜 THEN 〜 ELSEならできるかなと思ったのですが、 少しSQL文が複雑になってしまうので、できればreplace構文のような形式で他のカラムが初期化上書きされないような方法は無いでしょうか? 宜しくお願いします。
すみません # パーソナルデータ ってのは関係ないので気にしないで下さい。
ふむふむ、パーソナルデータね
203 :
NAME IS NULL :2006/12/21(木) 14:11:21 ID:Wc5smalR
だれかご教授お願いします。 ACCESSでMysqlをODBC経由で接続したいのですが、 MYSQLにローカル接続する時は上手く行きましたが、 ネットワーク経由で接続する時に上手くいきません。 [CONNECTER/ODBC]の設定で、恐らくSERVERの項目を 変える必要が有ると思うのですが、DBサーバーの コンピュータ名を入力しても駄目でした。 宜しくお願い致します。
インスコして、mysqladmin ping実行しても10061エラーばっかり/(^o^)\ サービス見ても 自動 開始 で実行されてる/(^o^)\ どなたか御指摘お願いします MySQL 5.1
205 :
204 :2006/12/21(木) 17:37:44 ID:???
追記 mysqladmin ping -u root -p Enterpass:root mysqld is alive と、上記のようにはできました。 また、mysqlshowでもエラーが返ってきます /(^o^)\ナンテコッタイ
206 :
NAME IS NULL :2006/12/21(木) 21:47:53 ID:1hv/v4KN
207 :
sage :2006/12/22(金) 12:31:40 ID:???
質問です。 MySQL5.0系をwin環境で使用しています。 DBの用途はMTブログのみです。 MySQLをインスコしてデフォルトのキャラクターセットで使用していましたが、phpmyadminで文字化けする為文字を2バイト文字の使用できるutfやeucに変更しようと頑張ってます。 もし変更出来たとして、変更前に書き込まれてるデータの文字は変換出来るのでしょうか? 変換されないとすれば、新たにデータベースをutfなどで作り、元のデータをインポートすれば表示されるものなのでしょうか? 何分MySQL初心者なものでして、ご教授願えれば幸いです(´・ω・`)
自動的に変換されない 全部自分で直す
>>204 つまり、rootでログインしてたら実行できるけど、ログインしていない状況では
エラーになる、ということで悩んでるの?それなら、MySQLは正常に動いてると思う。
逆に、その状態が異常だと何処で教わった?
>>203 まず、ネットワーク経由でのアクセスを許可してるよね?
>>208 たいした量じゃなかったんでMTのデータテキストで書き出し
新しいDBにしてから読み込みで解決です。
時間かかったwww
おかげで年越しです。
VC7でMySQL 5.0.33がコンパイルできませぬ。 バイナリ配布してくれなくなったからorz. sql_yacc.cc(13646): warning C4065: switch 文に 'default' はありますが 'case' ラベルがありません。 sql_yacc.cc(27193): warning C4102: 'yyerrorlab' : ラベルは 1 度も参照されません。 c:\mysql-5.0.33\libmysqld\sql_yacc.cc(13759): warning C4700: 値が割り当てられていないローカルな変数 'MYSQLlval' に対して参照が行われました。 C:\mysql-5.0.33\sql\sql_select.cpp(8953): warning C4291: 'void *Sql_alloc::operator new[](size_t,MEM_ROOT *)' : 初期化コードが例外をスローすると、'new' 演算子を使用しているとメモリを解放しません。 C:\mysql-5.0.33\sql\sql_locale.cpp(40): error C3209: '????' : Unicode 識別子は現在サポートされていません。 C:\mysql-5.0.33\sql\sql_locale.cpp(40): error C2146: 構文エラー : '}' が、識別子 '????' の前に必要です。 C:\mysql-5.0.33\sql\sql_locale.cpp(40): error C2146: 構文エラー : ';' が、識別子 '????' の前に必要です。 C:\mysql-5.0.33\sql\sql_locale.cpp(40): fatal error C1075: 左側 中カッコ '{' に対応するものが '\mysql-5.0.33\sql\sql_locale.cpp(40)' で見つかる前に EOF が検出されました。 C:\mysql-5.0.33\sql\sql_cursor.cpp(154): warning C4291: 'void *Sql_alloc::operator new(size_t,MEM_ROOT *)' : 初期化コードが例外をスローすると、'new' 演算子を使用しているとメモリを解放しません。 C:\mysql-5.0.33\sql\sql_cursor.cpp(213): warning C4291: 'void *Sql_alloc::operator new(size_t,MEM_ROOT *)' : 初期化コードが例外をスローすると、'new' 演算子を使用しているとメモリを解放しません。 C:\mysql-5.0.33\sql\net_serv.cpp(286): warning C4101: 'count' : ローカル変数は 1 度も使われていません。 C:\mysql-5.0.33\sql\net_serv.cpp(286): warning C4101: 'ready' : ローカル変数は 1 度も使われていません。 c:\mysql-5.0.33\libmysqld\lib_sql.cpp(285): warning C4244: '=' : 'unsigned long' から 'char' に変換しました。データが失われているかもしれません。 c:\mysql-5.0.33\libmysqld\lib_sql.cpp(829): warning C4244: '初期化中' : 'my_ulonglong' から 'uint' に変換しました。データが失われているかもしれません。 c:\mysql-5.0.33\libmysqld\lib_sql.cpp(1044): warning C4102: 'err' : ラベルは 1 度も参照されません。 C:\mysql-5.0.33\sql\item_cmpfunc.cpp(1795): warning C4101: 'buff' : ローカル変数は 1 度も使われていません。 C:\mysql-5.0.33\sql-common\client.c(1787): error C2373: 'cli_mysql_real_connect' : 再定義されています。異なる型修飾子です。 C:\mysql-5.0.33\sql\sql_locale.cpp(40): error C3209: '????' : Unicode 識別子は現在サポートされていません。 C:\mysql-5.0.33\sql\sql_locale.cpp(40): error C2146: 構文エラー : '}' が、識別子 '????' の前に必要です。 C:\mysql-5.0.33\sql\sql_locale.cpp(40): error C2146: 構文エラー : ';' が、識別子 '????' の前に必要です。 C:\mysql-5.0.33\sql\sql_locale.cpp(40): fatal error C1075: 左側 中カッコ '{' に対応するものが '\mysql-5.0.33\sql\sql_locale.cpp(40)' で見つかる前に EOF が検出されました。 c:\mysql-5.0.33\sql\sql_locale.cpp(40): error C3209: '????' : Unicode 識別子は現在サポートされていません。 c:\mysql-5.0.33\sql\sql_locale.cpp(40): error C2146: 構文エラー : '}' が、識別子 '????' の前に必要です。 c:\mysql-5.0.33\sql\sql_locale.cpp(40): error C2146: 構文エラー : ';' が、識別子 '????' の前に必要です。 c:\mysql-5.0.33\sql\sql_locale.cpp(40): fatal error C1075: 左側 中カッコ '{' に対応するものが 'sql_locale.cpp(40)' で見つかる前に EOF が検出されました。 mysqlserver fatal error LNK1181: 入力ファイル '\mysql-5.0.33\mysqldemb\release\mysqldemb.lib' を開けません。 test_libmysqld fatal error LNK1181: 入力ファイル '\mysql-5.0.33\lib_release\libmysqld.lib' を開けません。
>>213 mysql-5.0.33フォルダをデスクトップに置いてコンパイルした結果をもう一度
教えてくださいw
てすつ
217 :
NAME IS NULL :2007/05/11(金) 01:34:05 ID:hJ+hqO0q
ムーバブルタイプ、MySQLでやろうとしたらこんなん出ましたw Data too long for column 'template_text' at row 1
218 :
NAME IS NULL :2007/05/14(月) 23:43:26 ID:LAW+Ghic
ヴァージョン4と5の違いって何ですか?そんなに違うものですか??
ガッテム!
>>218 全然違う。
ネットで調べればすぐわかる。
つか、なんで今さらそんな話を。。。
そうですか!
>>221 さんは両方とも使ったことが
あるんですね! どっちがよかったですか?
隣の嫁
ジーザス!
複数カラムのJOINって無理ですか? id,flg,reason id,koyo,kousei,kenkou の二つを合体させたいんですが、 flgは無し、アリ、申請中で、reasonは理由です。
>>225 >複数カラムのJOINって無理ですか?
なにを聞きたいのか、全然わからん。
わからんが、とりあえず答をぶっぱなしてやる。
つ LEFT OUTER JOIN
5.0.41にしたらアプリケーションがことごとく動かなくなった。 いろいろ試してみたら5.0.27より後のバージョンでNGになってる。 大幅な仕様変更があったんでしょうか。
228 :
NAME IS NULL :2007/06/13(水) 20:32:35 ID:xGJFXDYi
229 :
NAME IS NULL :2007/06/13(水) 20:45:56 ID:xGJFXDYi
スレ違いかもしれんが、10年以上前に秋葉原で購入した マハーポーシャのパソコンにNetBSDインストールして MySQL5.2を入れて見ようと考えてます。バージョンが安定してないのと ハードのスペックが余りにも古いのでデータベースがきちんと 動いてくれるのか不安です。 用途は、8000人分の個人情報を管理することです。
>>229 スペックで考える前に
8000人分の個人情報を預かる責任として考えろ
>>229 警察から連絡があったでしょ?OSが不正コピーかどうかの確認。
マハーポージャってなに? オウムのやつ?
233 :
NAME IS NULL :2007/06/29(金) 22:17:20 ID:tyr8Qbwe
すみません。 MySQL 5.0.41 をインストールしたのですが、 my.ini を編集しようとして、開こうとしても、他のプロセスによって書き込みが禁止されていますといわれて、編集できません。 mysqladmin -uroot -p**** shutdown で、シャットダウンを済ませたのですが、それでも書き込みが禁止されています。 my.ini はどうやって編集するのでしょうか。
234 :
233 :2007/06/29(金) 23:14:10 ID:???
自己解決しました。 Vistaの変なセキュリティ機能の所為でした。 ファイルの上書きでなんとか書き換えました。
MySQLに接続するために 日本語サーバー対応版 libmysql.dll を探しているのですがSoft Agencyのサイトからは ダウンロードできなくなってるみたいです。。 どこか別のサイトでダウンロードできるところはないでしょうか?
公式の奴はあかんの?
すいません、教えてください。 gcc (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125) e:\MySQL\bin\mysql.exe Ver 14.12 Distrib 5.0.37, for Win64 (unknown) です。 以下のような簡単なプログラムを書いてコンパイルしたところ undefined reference to`_mysq_init'といわれてしまいました。 何が足りないのでしょうか。 ====================ソース========================= #include<stdio.h> #include"mysql.h" int main() { MYSQL *mysql; if(mysql_init(mysql)==NULL) { fprintf(stderr,"Cannot init MySQL"); return 1; } return 0; } ==================コンパイルオプション================== gcc -Ie:/MySQL/include \ -Le:/MySQL/include \ -Le:/MySQL/lib/opt \ -lmysqlclient \ -llibmysql \ test.c
239 :
238 :2007/09/21(金) 20:52:29 ID:???
すいません。 コンパイルオプションに変な改行が入ってますが、 無いものとして考えてください。
つ-lzlib
test.cよりあとに、-lつける -lの順番と位置には意味があるので
242 :
238 :2007/09/29(土) 19:28:09 ID:???
>>240-241 レスありがとうございます。
test.cよりあとに-lをつけたのですが駄目でした。
ライブラリの順番もいろいろ入れ替えてみたのですが。
ところでstringsでmysqlclient.libをみてみたら
以下のようになったのですが、_mysql_init@4の@4とは何なのでしょう?
bash-3.1$ strings mysqlclient.lib | grep mysql_init
_mysql_init@4
_mysql_init_character_set
_mysql_init@4
_mysql_init_character_set
_mysql_init@4
_mysql_init@4
_mysql_init_character_set
_関数名@数字なら、stdcallの関数で、数字は引数のバイト数 stdcallの関数って教えないと駄目じゃないかな。
244 :
238 :2007/09/30(日) 20:29:21 ID:???
>>243 レスありがとうございます。
mysql.hを覗いてみたところ以下のようになっていました。
#ifdef __CYGWIN__ /* CYGWIN implements a UNIX API */
#undef WIN
#undef _WIN
#undef _WIN32
#undef _WIN64
#undef __WIN__
#endif
#if !defined(__WIN__)
#define STDCALL
#else
#define STDCALL __stdcall
#endif
実はCygwinでやっているのですが、Cygwinだと__stdcallが取り除かれるようです。
リンクするライブラリを間違えているということでしょうか。
ためしに無理やり__stdcallを付けてみたら山のようにリンクエラーがでました。
245 :
238 :2007/10/02(火) 07:12:07 ID:???
環境をCygwin&gccからコマンドプロンプト&VCに変えたら 上手くいったのでとりあえずこれでやることにします。 レスありがとうございました。
mysql-test-run 及び make testは失敗するのがデフォルトですか? CentOSのmysql-5.0.48.src.rpmからrpmbuildでrebuildしたんですが、make testの段でエラーになります。 specの中身は、 CFLAGS="-O2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv" CXXFLAGS="$CFLAGS -fno-rtti -fno-exceptions" CC=gcc(ver3.4.6-8) CXX=g++(ver3.4.6.8) ./configure --with-readline --with-openssl --without-debug --enable-shared --with-bench --localstatedir=/var/lib/mysql \ --with-unix-socket-path=/var/lib/mysql/mysql.sock --with-mysqld-user="mysql" --with-extra-charsets=all \ --with-innodb --with-ndbcluster --with-berkeley-db --enable-local-infile --enable-largefile --enable-thread-safe-client \ --disable-dependency-tracking --with-named-thread-libs="-lpthread" とこうなってます。 で、%build(make)セクションは問題なく進んでいるようですが、make testに入ってから、 Logging: mysql-test-run.pl MySQL Version 5.0.48 Skipping ndbcluster, mysqld not compiled with ndbcluster Skipping SSL, mysqld not compiled with SSL Using MTR_BUILD_THREAD = 0 Using MASTER_MYPORT = 9306 Using MASTER_MYPORT1 = 9307 Using SLAVE_MYPORT = 9308 Using SLAVE_MYPORT1 = 9309 Using SLAVE_MYPORT2 = 9310 Using IM_PORT = 9312 Using IM_MYSQLD1_PORT = 9313 Using IM_MYSQLD2_PORT = 9314 Killing Possible Leftover Processes Removing Stale Files Creating Directories Installing Master Database Installing Master Database Installing Slave1 Database mysql-test-run: WARNING: running this script as _root_ will cause some tests to be skipped ======================================================= Starting Tests in the 'main' suite TEST RESULT TIME (ms) ------------------------------------------------------- mysql-test-run: WARNING: Process 8991 died alias [ fail ] ERROR: Failed to start master mysqld 0 Aborting: alias failed in default mode. To continue, re-run with '--force'. Stopping All Servers mysql-test-run: WARNING: caught exit of unknown child -1 mysql-test-run: WARNING: Forcing kill of process 8991 と出て、いきなりFaild出ています。
247 :
246 :2007/10/10(水) 02:46:59 ID:???
そこで、src.rpm中のtar.gzを、自分で展開して、 CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \ ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static (mysql4.1マニュアルにあったまんま)から、makeしてみたんですが、 ・item_cmpfunc.cc:861: 警告: converting of negative value `-0x000000001' to `ulonglong' ・sql_show.cc:1467: 警告: キャストによってポインタから異なるサイズの整数となります。 上の二件警告がでて、コンパイル自体は通るんですが、で、make testとしたら、上と全く同じエラーがでます。 とりあえずmake installして、./script/mysql_install_dbしてから、./bin/mysqld_safe & で起動して、 ./bin/mysql -u root で入って、select,create table,insert,delete 等は一応動いてるようです。 でもそこで mysql-test/mysql-test-runしてみるとやはり上記のエラーが・・・。 途中でこけるんではなくて、いきなり一発目のテストからこけてる。 ちなみに --force オプションつきでやってみると、ものの見事に全てのテストが Faildします。 その時、別のターミナルからtopでプロセス監視してると、mysqld<defunct>が二個くらい出てきては 数秒したら消えるの繰り返しでした。 ’Failed to start master mysqld 0’とあるので、テスト用のmysqldが正常に起動できてない(ゾンビプロセス化) ような気がしますが、mysql-ABや、MLで’Failed to start master mysqld 0’とか’mysql-test-run’とかで 検索かけても、マニュアルには「全てのテストは通ります。」としか書かれてないし、 ggったところ一件だけ同じ症状(ver5.0.41だけど)があったんですが、 そこにも「通る気配がないので、make installして起動さしますた。」ってことになってます。 こちらの皆さんは、ソースからmakeしてmake testとか、script/mysql-test-runとかちゃんと通りますか? あと、rpmからの時は、起動してるとき ps -A | grep mysql で mysqld_safe と mysqld の二つしか プロセスHitしないのに、ソースからmake install して ./bin/mysqld_safe した時は、mysqldプロセスが 八匹くらい常駐してるんですが、これも正常なんですか??
rpmbuildでのtest全失敗はやったことある。 > mysqld<defunct>が二個くらい出てきては > 数秒したら消えるの繰り返しでした。 いっしょいっしょ。 iptablesで塞いでるからかなーとか考えて そのときは深く追求しないで寝てしまった。 あと 関係ないけど5.0.48は大バグがあるから使っちゃだめ。 | MySQL Enterprise 5.0.48 Binaries Withdrawn | After the recently released MySQL Enterprise 5.0.48 binaries | were made available for download, it was discovered that they | are affected by Bug #31001. | | Because of this, it was decided that MySQL Enterprise 5.0.48 | binaries should be withdrawn from the MySQL Enterprise Server | download page, and they have now been removed. The previously | released MRU, MySQL 5.0.46, has been made available in its place.
お返事ありがとうございます。 そうですか。 本スレ?でも書いたんですが、5.0.48.src.rpmからではなくて、本家の5.0.45.tar.gzからmakeしても、全く同じ症状がでてます。 ちなみにtop監視してて気づいたこと、mysqld<defunct>以外にndb-なんちゃらってのが出てきては消えを繰り返してたので、 クラスターエンジン(?)がらみかなーとかとも考えてみたんですが、よくわかりません。 > あと > 関係ないけど5.0.48は大バグがあるから使っちゃだめ。 うはー、さっきBug#31001をチラッと見に行きましたが、かなり重大っぽいですね。 CentOSのrpmにはいくつかPatchがあたってるようなので、ちょっと調べてみます。
250 :
248 :2007/10/12(金) 02:23:20 ID:???
--with-mysqld-ldflags=-all-static これがついてるとNPTLじゃなくてLinuxThreadになるらしい。 なのでtopとかでスレッド数のぶんプロセスがあがってしまう。 mysql-test-run.plは調べ中だけどrootでやると確実に失敗する模様。 元々mysqldはセキュリティ上root権限ではあがらないため。 明示的に--user=rootとすればあがるのでmysql-test-run.plに パッチをあてて実験中。 SRPMのリビルドの過程ではmake testはしないのが普通なのかなあ。 あらかじめ | export MYSQL_RPMBUILD_TEST=no するとmake testを飛ばすみたいね。
251 :
248 :2007/10/12(金) 03:19:03 ID:???
> 明示的に--user=rootとすればあがるのでmysql-test-run.plに
> パッチをあてて実験中。
test通った。ので原因確定。
結論として、
MySQLのSRPMはrootでなくて一般ユーザでrpmbuildすべし。
一般ユーザでrpmbuildしたらパッチなくてもtest通った。
参考
http://memo.blogdns.net/rpmbuild.html ねる
252 :
290 :2007/10/12(金) 04:30:42 ID:obmx5Aip
>>250 ,251
わざわざ検証ありがとうございます。
実はこっちでもちょっと前に、一般ユーザーでテスト通りました。
mysql-test/var/log/master.errに
’Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!’
ってあったんで、マニュアルの"Security"部分眺めながら、--user=rootでやっみたんですが、それでもFailedになったんで、
sudo -u mysqlでやって、今までとは違うエラー内容(mysql-test/var/以下にファイル作れません)でたので、
chmod 775 -R mysql-test/でやってみてテスト進みました。
ぬわんてこった〜〜!!って真剣思った。
rpmbuildかける時はずっとrootでやってたんで、まさに灯台本暗しとゆうかなんとゆうか・・・。
> --with-mysqld-ldflags=-all-static
> これがついてるとNPTLじゃなくてLinuxThreadになるらしい。
> なのでtopとかでスレッド数のぶんプロセスがあがってしまう。
これは知らなかった。これもサンクスです。
あと、Centの5.0.48には、当該のPatch当たってなかった。
さすがにorder by desc と asc で並びが同じ(w)ってのはまずいですね。(myisamはちゃんとなるみたいだけど)
これから一般ユーザーでrpmbuild試してみようと思いましたが、眠いので明日にします。
253 :
246 :2007/10/12(金) 04:34:39 ID:???
すいません。
>>252 は246の間違いです。
しかもあげてしまった・・・orz。
mysqlの文字列の型で、charとvarcharとtextとありますが、 それぞれ、どのような文字列の場合に使用するものなのでしょうか? たとえば、高速化をはかりたい場合はcharで、ディスクの容量を節約したい場合は、varcharで といった具体に目的に応じて、使用する型を選ぶと思うのですが、 その判断方法を教えていただきたく、ごきょうじゅお願い致します。
固定長・・・・・・・・CHAR 可変長・・・・・・・・VARCHAR 256文字以上・・・TEXT でいいんじゃね?
MySQLのVARCHARは64KB入るよ。 CHARは余った末尾は空白埋めされる。 VARCHRは空白埋めされない、末尾に空白を入れても削られる。 TEXTは空白埋めされないけど、末尾に入れた空白はそのまま残る。 なので CHAR:何か固定桁のIDを入れる VARCHAR:何かの名前を入れる(末尾の空白はいらない!) TEXT:文章を入れる(末尾に空白を残したい人がいるかもしれない!) っていうのがお作法じゃね? 性能差はたぶん測定不可能だと思う。
>>256 5.0からvarcharの末尾空白は削られなくなったというような話をどっかで聞いたような気がする。
ほんとだorz しらんかった
259 :
>>254 :2007/10/16(火) 23:55:06 ID:???
ありがとうございます。 結局、varcharとtextはでもどっちでもよいという話ですね。
MySQLって、primary keyをselectすると、 そのレコードの全てのカラムのデータをひっぱってくるという話を 聞いたことがあるのですが、これは事実でしょうか? 事実とした場合、4000文字程度のデータが入るカラムをtext型として データベースに追加することを考えた場合、 既存のテーブルに追加すると性能が落ちる気がするので、 同じprimaryキーの別のテーブルを新しく作成して、 そこにtextのカラムを追加したほうがいいのかなと考えたのですが、 この考え方はあっていますでしょうか? よろしくごきょうじゅお願いします。
263 :
>>260 :2007/10/18(木) 00:48:15 ID:???
>>261 ありがとうございます。読んでみますm(_ _)m
変則的な使い方だと思うのですが、ビューについて質問させてください。 <条件> 共通のカラムをもった別のテーブルを2つ以上用意する。 (カラムは共通のもの以外にもある可能性がある。例として共通カラム:ID,NAME) <質問1> これらのビューを作成するときには、 create or replace view view_name as select ID,NAME from * where 条件式; で作成可能でしょうか? <質問2> 上記SQL文でビューに組み込まれるテーブルは少なくともID,NAMEカラムを持っていることが条件となり、 ID,NAMEカラムの片方だけを持つテーブル→ビューには組み込まれない。 ID,NAMEカラム以外にもカラムを持つテーブル→ビューに組み込まれる。 となるのでしょうか? <質問3> 元のテーブルのデータがUPDATE,INSERT等で更新し、ビューを意図的に更新しない時ビ MySQLではビューの検索ではどのような挙動になるのでしょうか? 具体的には、 NAMEフィールドが更新された→検索に引っかかるのは更新前の文字列か更新後の文字列か? レコードが削除された→検索には削除されたレコードも引っかかるのか? 以上です。 よろしくお願いします
5がいかに人気が無いか分かるな
MySQL5系からトリガという機能が追加されたらしいのですが、 このトリガって具体的にどのようなシチュエーションで利用されるものなのでしょうか? (#トリガの説明聞いただけでは、いまいち何の役にたつのかわからないのです。。)
QueryBrowserで、右側のテーブル名ダブルクリックすると、上のクエリ窓に SELECT * FROM [テーブル名] [テーブル名のイニシャル] が出ますよね? それで、ある一部のテーブル名だけ SELECT * FROM '[テーブル名]' [テーブル名のイニシャル] とシングルクオートで囲まれて出てきます。 このせいでアプリケーションでの検索ができません。 何が原因でしょうか?テーブル作成時もほかのテーブルと同じように作ったのですが・・・
277 :
>>273 :2008/02/15(金) 00:04:23 ID:???
280 :
NAME IS NULL :2008/04/01(火) 02:32:51 ID:S2Hxl9dE
DELETE FROM userlist;してしまった…。バックアップが見つからないorz
281 :
NAME IS NULL :2008/05/07(水) 15:09:18 ID:lgbIt4VH
自宅のパソコンでPHPやJavaを勉強してるんだけど。 MySQLにPHPやJavaから接続したいんだけど、 PHP用のデータベースはEUC-JP、Java用のデータベースはWindows-31Jにしたいんだけど データベース作成のときのCREATE DATABASE構文でCHARACTER SET CP932 とかUJISとかに すればひとつのMySQLの中で別々の文字コードを持ったデータベースってできるの? 教えてえろい人。
でけるよ
283 :
NAME IS NULL :2008/05/07(水) 20:05:47 ID:NtT1LWDm
shutdownして再び動かそうとしたら プロセス残ってるよとか言う意味のエラーが出て起動できねえ糞
>>284 pid ファイルが残ってるんじゃないの
>>285 pidファイル探したが見つからなくて途方に暮れてる
287 :
286 :2008/05/08(木) 02:08:34 ID:???
リブートしたら治るかなあ
289 :
286 :2008/05/08(木) 02:54:58 ID:???
linuxです MySQL3と4を共存させてます
strace してみて、エラーメッセージ直前でどんなシステムコールを発行しているか 見てみると良いかもね。特に fstat とか open 辺りを中心に。pid ファイルなら それで見つかると思う。 あとは普通に mysqld のエラーログを端から眺めてみるとか。
291 :
286 :2008/05/08(木) 16:22:54 ID:???
それっぽいpidファイル見つかったけど中身のプロセスidは psで確認してみたら動いてるっぽいし…(すでにmysql3が動いてるのでそれの?)
292 :
286 :2008/05/08(木) 16:26:43 ID:???
言い忘れてましたがすでにMySQL3は動いています 起動できないのはMySQL4です
>>292 新しいほう(v4)のcnfで、data_dir、pidの場所、mysql.sockの場所、bindするPort
全て異なる設定にする。
294 :
286 :2008/05/08(木) 17:26:53 ID:???
>/var/lib/mysql4/bin/mysqld_safe -u root -p -P3307 --defaults-file=/var/lib/mysql4/data/my.cnf --pid-file=/var/lib/mysql4/data/mysql4.pid --datadir=/var/lib/mysql4 >Starting mysqld daemon with databases from /var/lib/mysql4 >STOPPING server from pid file /var/lib/mysql4/data/mysql4.pid >080508 17:25:20 mysqld ended orz...
295 :
286 :2008/05/08(木) 17:48:37 ID:???
MySQL4はあきらめてで5を入れて試してみます。 回答してくれた方ありがとうございました。
>>295 > /var/lib/mysql4/bin/mysqld_safe ・・・・
のところの、-u root いらない。(ってか、確かroot権限でmysqldは起動できないはず)
あと、--defaults-file= 指定するなら、その後ろ側にある各種コマンドラインオプションも.cnfに書いてしまえ。
もうひとつ、予想だけど、/var/lib/mysql4 はほんとにdatadirかな?/var/lib/mysql/dataではなくて?
297 :
286 :2008/05/08(木) 19:30:41 ID:???
>もうひとつ、予想だけど、/var/lib/mysql4?はほんとにdatadirかな?/var/lib/mysql/dataではなくて? そのとおりでした。/var/lib/mysql4/dataでした ただ、そのへんを直しても同じエラーでこけるっす・・・
>>297 もう少しエスパーしてみる。
そのPathからして、多分ソースから、--prefix=/var/lib/mysql4 としてコンパイル&インストールしたんだと思われるけど、
まず、動いてるほうのmysql3を止めてから、4のほうを起動出来るか試してみる。(cnfは二つ目起動させる設定で)
それで起動出来なければ、単独とか2つ同時起動とか関係ない。そもそも起動の仕方が間違ってる。
で、予想としては、mysql権限テーブルが作成されていないとか、datadir以下のパーミッション絡みかな。
ここら辺は詳しくは、本家のmanualなりdocument見てくれ。
ここいらがわかってないと、5.0入れても多分起動できない。
逆に、上の段階で起動出来てしまったら、原因ようわからん。(オレではお手上げ)
ちなみに、ウチの環境で、
>>293 の通り即席でやってみたら、2つ同時起動はできた。(v4とv5でだけど)
ちゃんと別々に動作してるのも、ps と それぞれにconsolから接続して確認した。
299 :
286 :2008/05/08(木) 22:11:46 ID:???
すみません、上司と相談した結果MySQL4をアンインストしてMySQL5を入れることになりました それでmysqld_safeで無事起動できました 結局大本の問題は解決できませんでしたが色々相談に乗ってくださってありがとうございました
エスパーですまん。 なにがなんだかわからん。 同じテーブルをアクセスしているが PHP経由は大丈夫で 突然、JDBC でおかしくなった。 昨日までOKだった。 OS再起動までした。 以下、mysql.log 080602 21:23:40 5 Connect root@localhost on 5 Query SET NAMES ujis 5 Init DB test 5 Query select * from tab1 order by number 5 Quit --------------------------------------------------------------------↑ PHP で接続 --------------------------------------------------------------------↓ JDBC 080602 21:29:04 6 Connect root@localhost on test 6 Query 闃爿931,蹌/..%#4/2蹣!6!逡鉐鉚琥爛6)3)/.篁36.逎6)3)/.=珸 閠 玻!2)!",%.!-%瓔膃!.'5!'%艢燹2)!",%.!-%瓔瑯.%472)4%4)-%/54艢燹2)!",%.!-%瓔瑯).4%2!#4)6%4)-%/54艢燹2)!" ,%.!-%瓔瑯7!)44)-%/54艢燹2)!",%.!-%瓔瑯#(!2!#4%23%4#,)%.4艢燹2)!",%.!-%瓔瑯#(!2!#4%23%4#/..%#4)/.艢燹2)!" ,%.!-%瓔瑯#(!2!#4%23%4艢燹2)!",%.!-%瓔瑯#(!2!#4%23%43%26%2艢燹2)!",%.!-%瓔瑯48)3/,!4)/.艢燹2)!",%.!-%瓔瑯42!.3!#4)/.)3/,!4)/ 以下 カット なにか ヒントでいいからお願い。
経過 他のJDBC アプリでログが出力されていたので アプリのソースってことがわかりました。 しかし、ゴミになるってことはなに?ソースを追うしかないのか?
自己れす 解決 connect まではログにでているので、select 文を べた書きにしてうまく流れたので 元に戻して 確認。 jdbc のバージョンがでるところからおかしくなっていたのでJDBCなのか? そうなのか?
質問させて下さい。 これまで、Linux上で動作させていたphpスクリプトをWindowsに以降しようとしているのですが phpからMySQLにINSERT文を行ったのですが、文字化けしてしまいます。 どうすれば直りますでしょうか? ・WindowsXP(Pro) ・php-5.2.5-Win32.zip ・mysql-5.0.45-win32 1※ mysql> SET CHARACTER SET SJIS; Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'character_set%'; | Variable_name | Value | character_set_client | sjis | character_set_connection | latin1 | character_set_database | latin1 | character_set_filesystem | binary | character_set_results | sjis | character_set_server | latin1 | character_set_system | utf8 | character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\c
304 :
303 :2008/06/07(土) 04:09:00 ID:???
続きです。 2※phpスクリプト内部でINSERT文を実行する前に次のコードも入れています。 mysql_query('set character set sjis',$dbHandle) 3※組み立てられたSQLを画面上に print(""); で確認すると正常に日本語が入力されています。 4※MySQLのデータ操作を行う際にCSEも使っているのですが、CSEよりテーブルを開き直接日本語 を登録すると、その値は正常に日本語で登録されています。しかし、phpにて一覧出力すると ??? という 具合に文字化けしてしまいます。 あと、追加で質問させて頂きたいのですが、コマンドラインからMySQLを再起動するには 何というコマンドを実行すればよいのでしょうか?ぐぐっても中々ヒットしませんでした。 因みに、GUIツールとして MySQL Query Browserを使用しているのですがここから再起動とかも出来る のでしょうか?
>>303 ,304
まず、my.iniの設定から見直してみよう。
その show variables の結果から、サーバがLatin1で起動されてるのが分かる。
create databaseやcreate table時の指定が分からんからなんともだが、そのまま作成したとしたなら、
仮に、"set names cp932"したところで、変更されるのは"connection"と"client"のみ。
なので、mysqldがデータを受け取った時に、内部の保存コードである"latin1"に変換をかけてしまう。
そこで、当然cp932(ms-sjis)はlatin1にマップ出来ないので文字列が壊れる。
回避策は、以下の件とも絡むので後述。
> コマンドラインからMySQLを再起動するには
の件だけど、恐らく、
>>303 のpathから見て、インストーラでデフォルト設定でinstallしたんだろうけど、
それだと多分、Windowsのサービスに登録されてるはず。その場合はDos窓から、
nat start mysql (mysql5かも?) で起動、
net stop mysql (同上) で停止。
多分自動起動になってると思われるから、Winを立ち上げると同時に起動してるはず。
コントロールパネル→管理ツール→サービスからでも起動、停止が行える。
(QueryBrowser等GUIツールは使ったことないんで、ようわからん。すまん)
起動だけなら、install_pathのmysqld-nt.exeをダブルクリックか、Dos窓から、直接そのmysqd-nt.exeを叩けばよい。
停止は、install_path/bin/mysqladmin shutdown で。
306 :
305 :2008/06/07(土) 06:46:57 ID:???
続き で、その起動時にオプションで、設定ファイル(my.ini)を読み込ませたり、charset他各種設定オプションを渡したりできる。 サービス登録の場合も、上記の「管理ツール」→「サービス」から、起動時のコマンドラインオプションを設定できる。 なので、charset等適切に編集したmy.iniを読み込ますように起動させればよい。 具体的な設定方法などは、本家のManual等を参照してくれ。 ちなみにWin版のバイナリ版phpは、php_mysql.dllがlatin1でコンパイルされてるので、 上記のことをやってなお、接続時に全てのクエリの前に "set names cp932" 等の処置が必要。 又は、上記の設定ファイル中で書くやり方もある。 それでは、がんばってくれ。
307 :
306 :2008/06/07(土) 06:54:54 ID:???
ごめん。一つうそついてしまった。 php_mysql.dllじゃなくて、正確にはmysqlに付属のlibmysql.dllが、 デフォルトコードLatin1でコンパイルされているの間違い。 (まあ、phpバンドルのlibmysql,dllも同じことなんだけど)
308 :
303 :2008/06/07(土) 15:37:12 ID:???
>>305 さん
ご丁寧にレスありがとございます。
色々とお教え頂いた様に試してみたのですが相変わらず、文字化けしてしまします。
1.my.ini
[client]
default-character-set=sjis
[mysql]
default-character-set=sjis
[mysqld]
default-character-set=sjis
skip-character-set-client-handshake
2.文字コード
mysql> SHOW VARIABLES LIKE 'char%';
| character_set_client | sjis
| character_set_connection | sjis
| character_set_database | sjis
| character_set_filesystem | binary
| character_set_results | sjis
| character_set_server | sjis
| character_set_system | utf8
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\
309 :
303 :2008/06/07(土) 15:43:13 ID:???
続きです。 3.php内部での文字コードの設定部分 mysql_query("SET NAMES sjis"); 4.phpでテーブルより取得した値をsjisに変換した上で画面に出力 while($row = mysql_fetch_array($rs)) { /* 内部文字エンコーディングからSJISに変換 */ $str = $row["NAME"]; print("文字チェック1:[ ".$str." ] <br/>"); $str = mb_convert_encoding($str, "SJIS"); print("文字チェック2:[ ".$str." ] <br/>"); ↓出力結果 文字チェック1:[ ?????l ] 文字チェック2:[ ?????l ]
310 :
303 :2008/06/07(土) 17:57:02 ID:???
自己解決しました。 ・・・MySQLってなかなか一癖ありますね。。。 思わぬ落とし穴がありました。
>>310 どう解決したかを書かないと意味がないだろ。
自分がよければそれでいいのかい?
とりあえず文字コードを多重変換して嵌ってたんだろうと推測しとく。
質問です。 PHPとMySQLの連携を考えており、DBに接続して PHPから表示させることは出来ました。 SELECT文についての質問ですが、今現在以下の通りになっています。 SELECT * FROM wp_posts WHERE ID = 30 OR ID = 190 OR ID = 170 ORDER BY ID DESC これをPHPでwhileを使って縦に順番に表示すると、 ID=190、ID=170、ID=30の順番で書き出されました。 この表示する順番を、一番上からID=30、ID=190、ID=170と、 SELECT文に記述されたIDの順番通りに表示するには、どうすればよいでしょうか? なにかいい案がある方、いらっしゃいましたらご教示下さい。
select * from wp_posts order by (case ID when 30 then -3 when 190 then -2 when 170 then -1 else ID end) asc;
union使えば?
MySQLはXen上では使えないんですか? CentOSのDomU上でMySQL5を使っておりますが、 Buffer I/O error とやらが大量に出てきて、ファイルシステムが落ちます。 再現するのはMySQLが動いている時だけなので、MySQLが原因とみて間違いないと思います。 ディスクもディスクイメージも壊れていませんが。。。メソメソ
>>316 configureのときに--skip-bdbだったかな。
318 :
316 :2008/07/14(月) 00:34:32 ID:???
>>319 です。自分でも調べてみようかと思いソースを覗いてみたら crypt=4 (or "sha1") で
SHA1 が使えたみたいなのでこれを使ってみることにします。
# と思ったら Web に書いてないだけで README に書いてあったorz
321 :
NAME IS NULL :2008/08/02(土) 18:51:16 ID:ag3OZJze
4に戻したいですぅ
gooでも質問したのですがこちらでも質問させてください。 CentOS 4.6 に MySQL 5.0系をインストールして port 80番で運用したいと考えています。 ところが、ポート80を指定して起動させると 以下のエラーになり、起動できませんでした。 mysqld started InnoDB: Started; log sequence number 0 43655 [ERROR] Can't start server: Bind on TCP/IP port: Permission denied [ERROR] Do you already have another mysqld server running on port: 80 ? [ERROR] Aborting 80番を使用する http は停止させており、 iptables を停止させてもダメでした。 別のシステムで CentOS をインストールした直後のものに MySQL をインストールしても同じ状態でした。 ちなみにMySQL 4.1 系では同じ条件下の環境で my.cnf の[mysqld] で「 port = 80 」を 指定するだけで起動できました。 MySQL は CentOS のサイトからSRPMパッケージを取得し、 i686オプションを指定してリビルドしたものを使用しています。 今まで行ったのは次の通りです。 ・コンフィギュアオプションをデフォルトでインストール。 my.cnf の[mysqld] で「 port = 80 」を指定。 ・specファイルのコンフィギュアオプションに 「--with-tcp-port=80」を指定してリビルド。 サーバの環境は以下の通りです。 CentOS 4.6 MySQL 5.0.54(SRPM から RPM を作成してインストール) インストールしたパッケージ mysql-libs-5.0.54-1.el4.centos mysql-5.0.54-1.el4.centos mysql-devel-5.0.54-1.el4.centos mysql-server-5.0.54-1.el4.centos どなたかおわかりの方、情報をお願いできませんでしょうか。 よろしくお願いいたします。
1024未満のポートを使うにはroot権限が必要だから どうしても80番を使いたければ iptablesのNAT機能を使って80から3306へ変換しなさい 80番を使う動機を推測すると、たぶん外に公開したいのだろうから stunnelやstoneなどのSSLプロキシを使うと更によいと思う
rootじゃないと80番は使えないんじゃ
325 :
NAME IS NULL :2008/11/10(月) 23:47:11 ID:4lZdswNB
DBから値が取得できません。下記の設定のどこがまずいのでしょうか? エラーにもなりません。教えてください。 【web.xml】 <web-app> <resource-ref> <res-ref-name>aiueo</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app> 【server.xml】 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="/testtest" docBase="testtest" > <Resource name="aiueo" auth="Container" type="javax.sql.DataSource" /> <ResourceParams name="aiueo"> <parameter> <name>username</name> <value>myusername</value> </parameter> <parameter> <name>password</name> <value>mypassword</value> </parameter> <parameter> <name>driverClassName</name> <value>com.mysql.jdbc.Driver</value> </parameter> <parameter> <name>url</name> <value>jdbc:mysql//localhost/testdb?autoReconnect=true&characterEncoding=ujis</value> </parameter> </ResourceParams> </Context> </Host>
326 :
NAME IS NULL :2008/12/03(水) 07:14:35 ID:Tn2R8xLf
configureコマンドで、with-mit-threadを指定する場合と指定しない場合で何が違うのでしょうか? 自分の理解としては、with-mit-threadを指定するとOSが提供しているスレッドを使って、 with-mit-threadを指定しない場合は、MySQLが提供しているスレッドの仕組みを使うという認識なのですが、あってますでしょうか? ちなみにOSは、FreeBSD5系なのですが、どっちにしたほうがいいとかありますでしょうか?
327 :
NAME IS NULL :2009/02/21(土) 15:56:28 ID:fHAIG+ux
>MySQLが提供しているスレッドの仕組みを使うという認識 ちがうよ。
MySQL初心者です。 テーブル名が(なぜか)小文字で作成されてしまった様なので テーブル名を大文字に変更しようと思い、次のクエリを実行したのですが 一向に大文字になりません。一体何が原因なのでしょうか? ALTER TABLE test_table RENAME TO TEST_TABLE
PHP5 / MySQL5.0を使用して簡単なデータベース登録 システムを作っているのですがどうやっても 日本語を登録すると文字化けして困っています。 どうすれば日本語が登録出来ますか? ※WindowsXP Pro 【C:\my.cnf】 [client] default-character-set=sjis [mysql] default-character-set=sjis [mysqldump] default-character-set=sjis [mysqld] default-character-set=sjis 【C:\Program Files\MySQL\MySQL Server 5.0\my.ini】 default-character-set=sjis [mysqld] default-character-set=sjis ※基本このファイルの中にある「utf8」は全て 「sjis」に置き換えました。
>>328 OSはlinux? MySQLのテーブル名はそのままファイル名になるから
Windowsみたいにファイル名が大文字小文字区別しない環境だと
MySQLからも区別できないよ
>>329 PHPは使ってないけど、PHPのMySQLライブラリは my.cnf 参照してないって
聞いたことがある。デフォルトの laten1になるはず。
サーバの設定変更していいなら [mysqld] に skip-character-set-client-handshake を書くか
クライアントでなんとかしたいなら接続語に set names cp932 を投げたらいい。
ちなみに sjis は 4.1 以降では使わないほうがいいよ。 より広い cp932 で。
332 :
329 :2009/03/28(土) 22:55:14 ID:???
>>330 >>331 レスありがとうございます。結論から言うと正常に日本語も登録されていました。
しかしCSEでのぞいていた為に文字化けしている様に見えただけでした。
odbcの文字コードの設定を sjis にしたら無事CSEからでも文字化けせずに見る
事が出来る様になりました。
TimeStamp型で定義したテーブルからデータを取得し、取得したデータを として取得するにはどうすれば良いでしょうか? 2009-03-25 14:06:15 ↓ 2009年03月25日 14時06分15秒
日本語でおk
>>333 そういう処理はSQLでやるべきでない。
>>335 いやPHPでやる位ならSQLで一発でやりたいのです。
何か方法はありませんか?
>>336 おまえみたいな人間は生きているべきでない。
>>336 手荷物預かり所で「あのう、このカバンの色を変えたいのですが」と言ってるのと同レベル
339 :
333 :2009/03/30(月) 01:13:56 ID:???
で結局やる方法は無いの?
やる方法はある でも多分PHPで書くより遅い mysql> select concat(year(c1),'年') from (select now() c1) v; +------------------------+ | concat(year(c1),'年') | +------------------------+ | 2009年 | +------------------------+ 1 row in set (0.00 sec)
>>340 ???
てっきりSQLでやった方が速いと思ってたのですがPHPの方が速いのですか?
それはなぜなのでしょうか?
あと、SQLサンクスです。
>>341 ちょっとリファレンスを見てみます。
343 :
NAME IS NULL :2009/04/13(月) 16:46:07 ID:H6WHEd1c
オートインクリメント有りのテーブルにレコードを入れた直後に それが何番に入ったかを知る方法ある?
↑ 口の聞き方に気をつけろ
345 :
NAME IS NULL :2009/04/14(火) 11:11:22 ID:9P4yOkB6
質問させてください。 id(ユニーク)とcount の二つのカラムがあるテーブルがあったとして、 このテーブルに入っているレコードをcountでorder by したあと、特定のid、例えばid=10 の前後5個分のレコード(つまり、id=10を入れて11個のレコード)を取得したいとき、どのようなSQLを発行すればよいでしょうか?? ご教示頂けると幸いです。
ぐぐれかす
>>343 SELECT LAST_INSERT_ID();
348 :
NAME IS NULL :2009/04/21(火) 22:28:27 ID:SBmgavX0
SELECT LAST_INSERT_ID();
買収されてしまいました
どうなるんだろうね つぶされちゃうのかな
今更潰すは、さすがに考えにくいんじゃないの。 ポスグレに持っていかれるくらいなら、撒き餌として残すだろ。。たぶん。
mysqlはoracleの下位バージョンとして開発し その上位バージョンとしてoracleを持ってくることで フリーと商用のシェア拡大を目指す
MySQLの次期バージョンを出したり将来のビジョンを提示したりして 今後も発展するんだ、安心だ、と思わせといて飼い殺す。
oracleもタダで使う方法もあるしな
win版の5.0.77-community-ntですがCSVエンジンを利用するにはどうすれば良いですか? show enginesでNOになってます。
356 :
NAME IS NULL :2009/04/28(火) 01:22:42 ID:+/FWF+FK
MySQLのオラクルマスターを作ればMySQLに力を入れる MySQLのオラクルマスターを作らないならMySQLに力を入れない
357 :
NAME IS NULL :2009/04/28(火) 08:46:32 ID:aHnBfSXl
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; にして、mysqlを二個立ち上げて、両方から BEGIN; して、片方で適当にINSERTしてコミットしてないのに、もう片方からは SELECTするともう見えてるんだけど、これでいいのでしょうか? テーブルはInnoDBで作ったけど。
よくないよ どこか間違ってるよ
359 :
NAME IS NULL :2009/04/28(火) 09:00:39 ID:aHnBfSXl
>>358 最初に両方からSelectをやっとくと、その後片方がINSERTしたのがもう片方からすぐに
見えるんだけど、なにか間違ってるんでしょうか?
■セッション1 mysql> set transaction isolation level serializable; Query OK, 0 rows affected (0.00 sec) mysql> select * from test; Empty set (0.00 sec) ■セッション2 mysql> set transaction isolation level serializable; Query OK, 0 rows affected (0.00 sec) mysql> select * from test; Empty set (0.00 sec) ■セッション1 mysql> begin; Query OK, 0 rows affected (0.00 sec) mysql> insert into test values (1); Query OK, 1 row affected (0.00 sec) ■セッション2 mysql> select * from test; Empty set (0.00 sec) みえないよ?
>>359 テーブルが InnoDB じゃなくて MyISAM になってるとか。
362 :
NAME IS NULL :2009/05/01(金) 01:09:50 ID:vXvzRfg3
すいません質問させてください。
http://q.hatena.ne.jp/1179443422 このページと同じ質問なのですが、やはり3番のsqlがベストなのでしょうか??
「特定のカラムの値がそのテーブルの特定の条件のもとで最大値を有しているレコードをselectする」というのが割と簡単にできるのではないかと思っていたのですが、
ここの回答のように副問い合わせするのが一番無難な感じなのでしょうか?
order by xx desc limit 0, 1
も試してみましたが、全レコードをsortするためか、副問い合わせを使ったものよりレスポンスが遅めでした。(レコードが10万件くらいある。。)
アドバイス頂けると幸いですm(_ _)m
>>362 Table構成がそのはてなの質問と同じとして、id及びgoods_idに
複合インデックスが貼ってあり、それがユニークか、Hit率がテーブル全体のレコード数より
十分少なければ、order by descが早いんでないかな。
もっと言うと、INDEX(id,goods_id,date)で複合インデックスがあればなおよし。
でなくて、idとgoods_idの値が、レコード全体の多くにHitしてしまう場合は、
そこにあるようにサブクエった方が早そうな感じ(もちろんdateにインデックスが貼ってあるとして)。
質問ですが、 以下の感じでやろうとしてます select 学生id ,出席日数,出席率 from 学生名簿 left join (select sum(出席) as 出席日数 , sum(round(出席数/365,2)) as 出席率 ,学生id from 出席簿 where 学生id in ( select 学生id from 学生名簿 order by 学生名 limit 0,50) group by 学生id) as 出席データ on 出席データ.学生id=学生名簿.学生id order by 学生名 limit 0,50 学生名簿(カラム):学生id(primarykey),学生名 出席簿(カラム):学生id,日付,出席(enum(1,0)) limitができれば高速になるんですが、ないとusingfilesortになります。 mysqlでサブクエリにlimit発行できないので、なにかいい方法があればご教授願います。
俺なら、状況に応じて以下のどれかで対応する。 ・クエリキャッシュをアテにする ・バッチで予め計算しちゃう ・クエリを分割する ・テーブル分割をやめる ・全部抜いてから計算する ・そもそも高速化する必要があるか考える
なあ、ちょっと真剣にマジで教えてほしい あるデータベースのプライマリキーをキャラクタ属性で設定することのデメリットって何だと思う? キーはINTにすんのが検索も早そうだし、多分そうなのかも知れんが納得できる理由がはっきりしない まあCHARだとコレーションで正しくソートされない可能性があったりCOUNTが正しくされないのかも知れないけど 現場レベルでは盲目的に数値型にしてるような気もすんだよね 何か論理的な理由を聞かせてもらえないか?
>>366 あんたの現場がすべてではないよ。
単にDB設計をさぼってるだけで、
安易に一意になるものということで連番振ってるだけでしょ。
>>364 >( select 学生id from 学生名簿 order by 学生名 limit 0,50)
一見するとこれいらないと思うんだが。
370 :
NAME IS NULL :2009/05/02(土) 23:21:14 ID:iDaEn/bV
3つのテーブルをjoinするときに、 A left join B on A.id=B.id left join C on B.id=C.id というふうにするのと、 (A left join B on A.id=B.id ) left join C on B.id=C.id というふうに括弧で囲むのとって、どちらのやりかたが適切とかありますか?
変に括弧とかかかないで 最適化はMySQLに任せてしまったほうがいい・・・はず
372 :
NAME IS NULL :2009/05/03(日) 22:18:47 ID:EMVU4nk/
すみません。今日はじめてXAMPPからMySQLをインストールしたんですが デフォルトでパスワードが無い状態なので、掛けようと思うのですが、 掛け方はいろいろ書いてあるのですが、みんなどこに書いているのかが分かりません。 コマンドプロンプトかと思って入力しても、エラーがおこるのですが どこに入力したらよろしいのか教えてください
>>370 絶対に括弧で囲まないとだめ。
joinするときの結合キーがそのテーブルのprimary keyなら結果は同じなんだけど、
そうでない場合、括弧で囲む場合と、そうでない場合で結果がかわる。
なぜかというと、括弧なしの場合、AとBをjoinした結果フェッチする行数が存在しない場合でも、
BとCのleft joinを行うからだ。
374 :
NAME IS NULL :2009/05/04(月) 06:11:39 ID:pQt/LC0v
質問です。 バイナリログがうまく書き込めないんです。 以下のようなログが出てます ---------------------------------------------- /home/mysql/data$ mysqlbinlog mysql-bin.000008 /*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; mysqlbinlog: File 'mysql-bin.000008' not found (Errcode: 13) # End of log file ROLLBACK /* added by mysqlbinlog */; /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; ---------------------------------------------- 何か原因として考えられることはありますか?
>>374 mysql-bin.000008 かそれが置いてあるディレクトリにパーミッションがない。
376 :
NAME IS NULL :2009/05/05(火) 19:52:00 ID:+Yc0J8ac
バイナリログに、いつもファイルの最後にこんなのがでるんだけど。 ROLLBACK /* added by mysqlbinlog */; これ、何かわかる人いますか?
読んでそのままでは?
378 :
NAME IS NULL :2009/05/05(火) 22:20:56 ID:+Yc0J8ac
>>377 コメントを訳すと、mysqlbinlogによって追加されました、となるけど、
なんで追加するのかなーと。なんでROLLBACKする必要があるのかと。
>>370 A left join ( B left join C on B.id=C.id ) on A.id=B.id
381 :
NAME IS NULL :2009/05/11(月) 12:33:48 ID:gPGRNLrz
ネットワーク越しに接続させたいので、ユーザXXXに10.1.1.1から接続できるように設定したいと思ってます。 userテーブルにはXXXがlocalhostから接続できるという設定の行があるので、それを流用したいとおもっている のですが、そんなこと可能でしょうか? 自分でINSERT文を書くのはできれば避けたい('Y'とか'N'が多すぎるし)のですが、普通は自分でINSERT文を 書くべきなのでしょうか? よろしくお願いします。
382 :
NAME IS NULL :2009/05/11(月) 13:00:22 ID:gPGRNLrz
例えば、ストアドプロシージャを書いて、その中でSELECTの結果を保存して、 一部を書き換えて、INSERTの引数として使うこととかってできますか?
383 :
362 :2009/05/11(月) 16:32:24 ID:l33ZsoDq
お礼遅れてすいません。ありがとうございます。 やはり自分のところではorder by よりmaxのサブクエリを使った方が早いみたいでした。
384 :
NAME IS NULL :2009/05/11(月) 19:39:27 ID:gPGRNLrz
selectの結果を保存するのは出来ない気がしてきたので、ストアドプロシージャの練習を兼ねて 書いてみました。 DELIMITER // CREATE PROCEDURE net_user_enable(IN myhost CHAR(64), IN myname CHAR(64), IN mypassword CHAR(64)) BEGIN -- 1: USERテーブルにユーザとホストの組み合わせを追加 INSERT INTO mysql.user VALUES (myhost,myname,PASSWORD(mypassword),'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','',0,0,0,0); -- 2: dbテーブルにホストを追加 INSERT INTO mysql.db VALUES (myhost,'%',myname,'Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); FLUSH PRIVILEGES; END // DELIMITER ; -- こんな感じで使ってね。 CALL net_user_enable('localhost','hoge','hogeのパスワード');
385 :
NAME IS NULL :2009/05/12(火) 00:12:08 ID:v5EaLHhs
CREATE FUNCTIONで関数定義するとき、SELECT文を使えないのでしょうか? CREATE FUNCTION hogefunc(num INT) RETURNS INT BEGIN SELECT "hogehoge"; RETURN 2; END// こう書いても受け付けてくれません。
database「hogedb」の中にテーブル「hoge」「age」「sage」を作ったのだが、 うち一つはselect時にselect * from hogedb.hogeのようにデータベースを指定しないとエラーになる。 なんで?? エラー内容; RROR 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 'hoge' at line 1
Workbenchでテーブルを作成しました。ここからCREATE文のスクリプトを作成することは出来ますが ついでにInsert文のスクリプトも作成することは可能でしょうか? (テーブルのタブに「Inserts」というのがあり、ここで投入用のデータをエディタで書けるのだが、ここからどうすればスクリプトに落とせるのか不明) 知ってたら教えて下さい
388 :
386 :2009/05/17(日) 08:59:05 ID:???
389 :
386 :2009/05/17(日) 10:38:07 ID:???
予約語だった。。。知らなかった ちくしょー!!
390 :
NAME IS NULL :2009/05/17(日) 20:25:32 ID:vKUcKlyZ
ユーザーがグループに所属していて、グループもまた別のグループに所属しているような階層構造になっている場合、 どうやって所属情報をDBに入れるのが賢いの? 上位グループに所属するユーザーを抽出するクエリがつくりにくいんだけど
RDBMS向きじゃないね。
>どうやって所属情報をDBに入れるのが賢いの? MySQL捨ててPostgreSQLに入れるのが賢い。
何の問題も無いだろ
Postgresは現行VerでもOracle風のconnect byが使える。 もうすぐ出る次期VerではSQL99準拠のWITH RECURSIVEも 使えるらしい。
日本語でおk
ツリーってDB入れるの無理だろ
398 :
NAME IS NULL :2009/05/19(火) 02:33:18 ID:WKjGD5xV
dumpが出来ないです mysqldump -u root hoge > c:\backup\dump.sql とMysqlコマンドに入力すると Unknown command '\b'. -> となるだけでdumpできません Cドライブにbackupファイルも作ってありますが、何か足りないのでしょうか?
随分なスロークエリの悪寒。。しんどいね。。
>>398 mysqldumpはmysqlクライアント上のコマンドじゃなくて
単体のプログラムだ
>>399 再帰が無いSQLで書く技を使えば他のSQLに乗り換えるときコード修正不要?
他のSQLにも色々あるしなぁ。 シンプルなselectひとつ取っても、 例えばSQLiteでは使えるカラム名が MySQLでは予約語だったりするしなぁ。
>>404 キーワードじゃない語は全部ちゃんと
クォートすれば。
気本棚
407 :
NAME IS NULL :2009/05/23(土) 17:45:10 ID:2SizHsxE
始めてデータベースを移転するのですが教えてください mysqldumpでやったのですが Aserver からBserverに全てのデータを移転するのですが 先ずAserver で mysqldump -A -u root -p a234abc --opt > dump.sql rsync -avz -e ssh /root/mysqldump/ Bserver:/root/mysqldump/ でAserverのdump.sqlをBserverに移して Bserverに入って cd /root/mysqldump mysql -u root -p 1234abc < dump.sql としたのですがpasswd を聞いてくるのでパスワードを入力しても ERROR 1049 (42000): Unknown database '1234abc' とエラーが出ます間違った操作をしているのでしょうが何が悪いのか 解りませんどなたか教えていただけませんか Aserverはmysql4.1ですBserverはmysql5.0 です
1234abcなんかしらないとエラーが言っている
先に create database 1234abc; をする
410 :
NAME IS NULL :2009/05/24(日) 11:57:46 ID:zGV2NEj3
便乗質問です。 mysqlってダンプファイルの中身見て、ロード先のDBに必要な データベースがなかったら自動的に作成してくれるもんじゃないの?
ダンプファイルってつまり単なる普通のSQLの塊だから データをINSERTする前にテーブルをDROPしてCREATEするだけ。 それがダンプしたSQLの先頭にあるかないかの問題で、 MySQL側がどうこう言うことではないと思うが。 ダンプするツールが対応するか、もしくは手書きすべきだ。
412 :
NAME IS NULL :2009/05/30(土) 23:42:08 ID:59hmKSc9
すごい初心者な質問なのですが… phpMyAdminのインストールってデータベースを作った後からでも 大丈夫なのでしょうか? XREAでWordpressを使ってます。 MySQLからエントリーの中身をエクセルに落としたいのですが、 phpMyAdminをまだインストールしてませんでした。 XOOPSだと後からインストールすると問題ありな記事を読んだので ちょっと不安になってしまいまして… よろしくお願いします。
>>412 まったく問題ないと思うけど。。。
単なるPHPコードだよ? 何かあるわけない。
助言をいただきたいのですが…。 SELECT t1.id, t1.data, t1.update FROM table_name t1 WHERE t1.update = (SELECT MAX(t2.update) FROM table t2 WHERE t1.id = t2.id) これは、重複するidを持つレコードが複数あるテーブルから、 更新日updateの一番大きいレコードだけをかいつまんで取得するSQL文です。 ここにさらに条件を加え、各idの「一番小さいupdate」をキーにソートしたいのですが、 効率の良いSQL文が書けません。 アドバイスをいただければありがたいです。 (グループ化とかいいつつ、結局GROUP BY使わない方法でやってますが…;)
idと更新日のペアがタブっていたらどうするの?
SELECT t1.id, t2.data, t1.max_update AS update FROM (SELECT id, MAX(update) as max_update, MIN(update) as min_update FROM table_name GROUP BY id) t1, table_name t2 WHERE t1.id = t2.id AND t1.max_update = t2.update ORDER BY t1.min_update
>>415 idと更新日のペアは一意になるようになっています。
>>416 ありがとうございます!
とても勉強になります。
PHP から MySQL を使っています。 SELECT で varchar(2000) の値を取得するときのことなのですが、 PHP 側ではこの値の冒頭200文字程度しか利用しないと分かっているとき、 はじめから SUBSTRING で値を削って取得するメリットは小さいでしょうか? 一般に MySQL で余計な関数を使うと処理が遅くなると聞きますので、 こういった文字列処理は値を取得しておいてPHP側でしたほうがよいですか? なんとなく、あらかじめ削っておけばメモリの消費が抑えられるのではないかという考えがよぎって迷っています。
グループ化についてもう一つ助言をいただきたいのですが…。 GROUP BY AAA, BBB これは、AAAとBBBが同一のものをグループ化すると理解しています。 そうではなく、AAAでグループ化して、さらにそれをBBBでグループ化する、 のようにGROUP BYを入れ子にするには、どのようなクエリを書けば実現できるのでしょうか?
>>418 考え方による。
大規模なwebアプリなら、圧倒的にPHP側で処理すべきと思う。
あなたの力量にもよるけど、突き詰めると、DB側で処理するメリットは無い。
DB側で処理すれば、結果セットが巨大でもデータ転送が速く、かつ省メモリ。
しかし、データが永続的に増える条件下での削減量はたかが知れてる。
DB側で処理すれば、PHPコードがシンプルになる。
しかし、マルチバイト文字の扱いが微妙だし、潰しが聞かない処理(リクエスト、関数、etc)が増える。
DB側で処理すれば、クエリキャッシュが効けば1回限りの処理で済む。
しかし、処理済みデータをオンメモリキャッシュしたほうが、もっと速い。
DB側で処理すれば、PHP側の処理が軽くなる。
しかし、DBよりPHPのほうが簡単にスケールできる場合が多い。
こんな感じでいかがかしら。
>>419 SELECT * FROM (SELECT * GROUP BY AAA) GROUP BY BBB
ただしAAAでグルーピングした時点でBBBの内容は不定になっている。
これで目的が達成できているか、不明。
>>419 >AAAとBBBが同一のものをグループ化
えー、そうだっけ?
GROUP BY AAA, BBB がそうだろ?
>>419 GROUP BYを入れ子にって、いったいどういう結果を期待してんの?
勝手な言葉で質問しても解釈がまちまちだからごらんの有様だよ。
accessから移植したいんだけど、最後に;をつけるだけでおk? create tableなんかはtype=InnoDB;つけないとだめ?
データ型そんなに互換性ないだろう 全部見直さないとダメ
access使うようなのがトランザクション処理が必要なのだろうか… myisamでいい気がするがなあ
>>428 大幅に見直すのはcreateのところだけじゃ不十分かな?
select,insert,updateの構文は;つければ使えない?
selectで、○番目と○番目のレコードを取得、ってしたいんですが、 limitで複雑な指定できませんよね? サブクエリを駆使するしかありませんか? イメージとしては、こんな感じに指定したいんです。 SELECT * FROM table LIMIT (0, 1 AND 5, 1)
>>430 見直しが極めて望ましい。
DBは意外と互換性がないので。
>>431 UNIONがおすすめ。
(1つ目のクエリ LIMIT 0,1) UNION (2つ目のクエリ LIMIT 5,1)
いくつ繋げてもindex効くし、綺麗。
>>433 ありがとうございます!
各クエリともLIMIT部分以外が同一であっても、
やはりクエリの数だけ走査しなおしてしまうのですよね?
SELECT SUM( p.point ) FROM point_table p GROUP BY p.id ORDER BY SUM( p.p.point ) DESC LIMIT 100 これは、各idのもつpointの合計値を、pointの多い順に上位100件取得するクエリです。 ここで得られるpointの合計値を求めたいのですが、 上のクエリをどのように修正すれば良いのでしょうか?
>>434 つ EXPLAIN
また、一時テーブルをつくる方法も。
>>436 なるほど、一時テーブルですか。検討してみます。
ありがとうございます!
>>430 そのまま移植して動かして見てエラーが出たらなおせばいい
MySQL を勉強中なのですが、クエリの最適化について悩んでいます。 SELECT d.date, i.ip, n.name FROM update_log d LEFT JOIN update_log i USING(id) LEFT JOIN update_log h USING(id) WHERE d.id = 100 AND i.ip IS NOT NULL AND n.name IS NOT NULL ORDER BY d.date DESC, i.date DESC, n.date DESC LIMIT 1 『条件』 ・update_log テーブルから、指定した id に該当するレコードのdate, ip, nameを取得する ・ただし、ip, name の各項は NULL 値が入っている可能性がある ・NULL 値ではない、もっとも date が大きいレコードを各項について取得する 上記クエリだと、取得にかなり時間がかかってしまうため、 よりよいクエリを発行したいのですが、よいアイディアが生まれません。 助言いただけましたらうれしいです。
nとhが混ざってね? それは置いといて、クエリよりインデックスの張り方の問題じゃないかな。 それぞれのテーブルに複合インデックスを張れば 普通に激速になりそうな気がする。
いや、よく見るとクエリも変? LEFT JOINいらなくね? 違うか?
それ自己結合する意味あんの? 条件の1つ目と3つ目なんて違う話だし
レスありがとうございます。
>>440 すみません、一個所 n が h になっていました。
インデックスは EXPLAIN 見ながら貼り直したりしてみたのですが、
特に変化はみられませんでした。
>>441 >>442 それぞれの値を取得するために、
3つばらばらにシンプルなクエリを発行したほうが良いということでしょうか?
すみません、そもそもクエリが条件に合致していませんでした。 SELECT d.date, i.ip, n.name FROM update_log d LEFT JOIN update_log i ON (i.id = d.id) LEFT JOIN update_log n ON (n.id = d.id) WHERE d.id = 100 AND i.ip IS NOT NULL AND n.name IS NOT NULL ORDER BY d.date DESC, i.date DESC, n.date DESC LIMIT 1
サブクエリ使ってください select l1.date, l1.ip, l1.name from update_log l1 where id = <入力値> and date = ( select max(l2.date) from update_log l2 where l1.id = l2.id and l2.ip is not null and l2.name is not null )
>>445 それだと全フィールドがnullのレコードが選択されるんじゃね
アドバイスありがとうございます。 いろいろ試した結果UNIONでつなげることで落ち着きました。 はじめのクエリだとなぜだめなのかが、よくわかりません。 500行のテーブルに対して10秒近くかかってしまっていました。 クエリのどこに原因があるのか、おわかりになる方いましたら、 ぜひ教えてください。m(_ _)m
二つのDATETIME型の差をTIMEDIFF関数を使って求めたのですが、838時間以上は丸められてしまいます。 正確な秒数を求める方法はありますか?
>>448 time型ではそれ以上の時間は扱えない。
あるレコードを DELETE するのと あるレコードの主キーを UPDATE するコストっていうのはあまり変わらないですか?
全然違う。 DELETEは重い。頻度にもよるけど、リアルタイムで叩くなら、最もやってはいけない事。 一方、主キーを書き換えるのもヘン。主キーは唯一のレコードを特定するのに用いるべきで、 途中で書き換えてよいデータでは基本的にない。
コストがかかるのはindexがある場合のそのメンテと、外部キーの参照先になっている 場合とかだろ。deleteそのものはinsertとそんなに違うわけじゃない。 ところで、コストが全然違うと言いたいのか、どっちもコストがかかると言いたいのか どっちなんだ。
感じ悪いスレだな
固定長のテーブルなら気にしない
うん ただupdateにくらべてdeleteが死ぬほどおもいのはたしか
MySQLの全文検索って日本語対応してますか? n-gram検索ですか?それとも分かち書きされたワード検索ですか?
分かち書きされたワード検索。 日本語も分かち書きすれば一応使える…けど普通はSenna使う
そうなんですか。 ググったら、Sennaもワード検索と、あと2-gramをサポートということなんですね。 2-gramがあれば完全に自由な文字列でも検索できるのかな。 Debianではsennaのパッケージが見付からないのが残念です。
Windows XP SP3 MySQL 5.1 です、root のパスワードを忘れてしまいました Google でMysql パスワード 忘れたで検索しますが、的確なすべがわかりません ご教示願います。
>>460 さん
ありがとうございます。
掲示していただいたURL
「root パスワードを忘れたときの 伝家の宝刀:1」ここに書かれている
mysqld-nt にパラメータを付加し起動する方法を、試すのですがWindows版MySQL 5.1 にmysqld-nt.exe が無いので
お手上げになっている状況です。
>>461 ちょっと考えれば分かるだろうけど、タスクマネージャで現在実行中のファイル名とか確認しましょうぜ。
ちなみにウチでは、テスト用ユーザーをたくさん作ったあと、権限テーブル初期化する時なんかは、
>>460 のサイトにある宝刀:2の方法でいつもやってるな。
まあ失いたくない情報なら、その時点でファイルのコピー取るなり、mysqlDB(ディレクトリ)以下のテーブルの
dump取っとくことをお勧めする。
何、インストール時にそんなバックアップなんか取ってないって?
それなら本家行って、初期状態のをとってくればよろしい。
ちょっとした事、教えてください。 on duplicate key update で insertした時、insertした内、何件がinsertで、何件がupdateだったとかって 判りますかね? そういうのが知りたい場合は on duplicate keyを使うべきではない?
466 :
NAME IS NULL :2009/08/15(土) 22:23:31 ID:JM2SHLWw
MySQLの設定について教えて下さい。 BLOB型にVB.NETから格納しようとINSERT文を使っても MySQL側の制限のせいでbyte配列の0番目の(63)しか格納できません>< ご回答よろしくお願いします。 環境 Ubuntu9.04 MySQL 5.0 VB.NET(mysql.data.dll使用)
>>466 スキーマ、SQL文とか
制限があると判断した根拠がないとな。
別ファイルにテーブル定義を作成してます(10テーブル)、そのファイルを MySQL に読み込ませて、新規テーブルを作成したいのですが、具具ってもコマンドが分かりません、教えてもらえないでしょうか。
>>469 mysql dbname < filename
mysqlの正規表現で文字列の部分抽出や置換はできないのでしょうか。 たとえば、下記のtema列値をタグを正規表現で除去して表示することは出来ますでしょうか? (どんなタグが入るか不明のため、正規表現で除去したいと思っています。) 低レベルな質問ですみませんが、お分かりになられる方が居られましたら ご教授よろしくお願いいたします。 sid | tema ---------- 1 | <b>その1</b> 2 | <I><b>その2</b></I> 3 | <b>その3</b>
regexp ? rlike ? よく判んね w
>>472 mysqlじゃ無理。おとなしくプログラムで対処するしかない。
MacOS X Leopard から SnowLeopard への以降に伴い、 MySQLを5.0(x86)から5.1(x86_64)にアップグレードしました。 このとき、データベースファイルはそのままコピーできるものなのでしょうか。 それともmysqldumpとかを使った方がいいのでしょうか。 5.0から5.1への移行における、おすすめのデータファイル移行方法を教えてください。 よろしくお願いします。
CPU違うならdumpしなきゃだめよ。 dumpだけでいいかはしらん。
MySQL で 5時間前 や 5時間後 を算出するにはどうすれば良いでしょか? AddHour(2)とかって関数は無いのでしょか? SELECT SYSDATE() + 5 / 24 FROM TEST_TABLE としているのですが変な値が返って来ます。
急な停電のためmysqlのデータベースファイルが壊れてしまったのですが myisamなテーブルはrepairで復旧できたのですが innodbの場合はrepairしようとするとエラーが出てしまうのですが何か復旧方法ってありますでしょうか?
UPS使ってないシステムなんてしらん
とりあえず現状をバックアップしてさらに壊したときに対応できるようにする。 んで innodb_force_recovery を6に。
483 :
NAME IS NULL :2009/10/21(水) 20:25:16 ID:G/42etG5
すいません。ここじゃないかもしれませんが知ってたら教えてください。 mysql workbench5.1.16 OSX版を使用していますが、 カラムの型をdouble (16,9)とかにしてもただのdoubleになってしまいます。 なんなんですかいったい。DBデザイナーだとちゃんといくのに。設定で回避できたりしないでしょうか??
484 :
NAME IS NULL :2009/10/21(水) 23:05:05 ID:nmNVAfvz
MySQLでテーブルのカラムはいくつくらいまで作成しても大丈夫ですか? 50〜100個とか普通は作成しないでしょうか。
486 :
NAME IS NULL :2009/10/21(水) 23:45:02 ID:nmNVAfvz
>>485 回答有難うございます!
InnoDBの場合は1000カラムまでで、これは速度はほとんど低下しないと期待してもよいのでしょうか?
1000カラムのうちLOBがいくつあるかによる LOBが増えれば増えるほど遅くなるよ
488 :
NAME IS NULL :2009/10/22(木) 23:09:09 ID:tsxw+rRJ
>>487 画像みたいなのを入れなければいいんですね。想像以上に作成できるカラムの数が多くて驚いています。
有難うございました。
489 :
NAME IS NULL :2009/10/23(金) 12:29:40 ID:tEyJFZiS
>>483 user define typeで個別に作ると対応できるみたい。不便。
質問です。 Windows XP で 5.0.45 を使用して、毎日 mysqlimport コマンドをバッチ処理で実行していますが 昨日までは正常に動作していたのに、今日のジョブが5時間以上経っても終わりません。 show processlist で見てもプロセスは存在しません。 現在何が起きているのかを確認する方法はないでしょうか?
とりあえずエラーログをみる
492 :
490 :2009/10/24(土) 20:53:52 ID:???
>>491 エラーログファイルは見てみましたが、何も吐いていませんでした。
半日経っても終わらないので kill しましたが、一件もロードされておらず
テーブルロックが掛かっているような感じにも思えますが、テーブルを更新するのは
そのバッチ処理のみなのでそれもないし・・・
kill した後に手動で mysqlimport コマンドを発行したら、あっという間に正常終了しました。
何だったのだろう・・・ よく分かりませんが、再現待ちとします。
ありがとうございました。
素人丸出しの質問かもしれませんが、MySQLを使う必要が生じてしまったのでお願いします。 同一テーブル構成のTBL-A、TBL-Bがの2つがあります。 テーブルレイアウトは、 基準日 int(8) 社員番号 int(10) 構成 int(10) だとします。 TBL-AとTBL-Bを比較し、以下のことをSQLでやりたいんですが、何か関数等あるんでしょうか? (1)社員番号がTBL-Aに在ってTBL-Bに無い場合-->TBL-Bに該当レコード追加 (2)社員番号が両方に存在し、TBL-Aの基準日がTBL-Bの基準日以降の場合-->TBL-Bの該当レコードをTBL-Aで上書き (3)社員番号が両方に存在し、TBL-Aの基準日がTBL-Bの基準日以前の場合-->何もしない (4)社員番号がTBL-Bに在ってTBL-Aに無い場合-->何もしない
なんでこういう人っていつも仮定口調なの?
MySQLとAccess連携でプロト作ってるんだが、どっかにMySQLの主にストアドを 綺麗にまとめてるサイト無い?
うちの会社で余ったWinXPのproにMySQL5.1入れて、ポート開けて20人位の同時アクセスさせているのだが、 今のところ全然問題なく使えてる。バックアップも問題ない。 ココで質問。 1.このまま使っててもOK? 2.今更だがMySQLって、ポート3306開けときゃサーバじゃなくても同時アクセスで使えるモノなの? ※やってみたら出来た。っていう素人さんなのでプロからのアドバイスを希望します。
>>496 XPProで、その利用方法はライセンス違反
>>498 不特定多数か社内限定かは
異なるだろうけど、結果は同じ?
thx
ライセンス違反のわけねーだろ。アホかい。
501はたぶんMySQLのライセンスとWindowsのライセンスの区別がつかない程度のしったか
ON DELETE CASCADE を参照先テーブルに適用してますが、下記のエラーが出ます。 下記のエラーいがいに何が問題になっているか知る方法はありますでしょうか。 SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`db`.`table`, CONSTRAINT `table_ibfk_10` FOREIGN KEY (`table_id`) REFERENCES `table` (`id`))
ただのチラ裏です・・・ 客用にCOREi3のWin7機を買ったんだが、クラサバシステムのODBC3.51でつないだらエラーの出るテーブルが出た 2台だけだったんで持ち帰りつないでみようとしたら全部つながらなくなった pingは通るのに何だ?ってパニック よく考えたら鯖に使ったXPのファイアーウォールが邪魔してただけだった・・・ で、ODBCを2.51にしたらとりあえず全部つながった このまま行っちゃう予定 よく考えたら36時間程メシ食ってないお 食ったら寝て明日の昼休みの時間に納入してくる
>>503 「mysql error 1451」とか「mysql Cannot delete or update a parent row」でぐぐってみた?
結局のところ、制約の子が残ってるから消せない/更新出来ないよってことなんだが、
・ON DELETE CASCADE をしているつもりで出来てないってことはないか?
(子側をshow create tableなんかで確認)
・他に同じ(親)テーブルを、外部キー制約の参照先にしてるテーブルは無いか?
を確認してみるべし。
かねやんからエクスポート後、再度かねやんからインポートした時、 文字列が空欄になるんだけど、この現象って文字化けなの?
ファイアーウォールかもね
508 :
NAME IS NULL :2010/08/14(土) 23:40:51 ID:WQmEq40c
age
windowsXPにxamppでMySQL5.1を入れたけど、どうやっても文字化けする。。。 ネットの情報かなり試したんだけど、5.0までと違うのか、まったくダメ。 5.1で同じような状況になった方はいませんか?
自分の設定も晒さないで何を言っておるのかね
MySQLでビューって遅いと聞きますが、どういった点が遅いのでしょうか。 「商品一覧テーブル(product)」と「商品カテゴリテーブル(category)」があり、 product.category_cd = category.category_cdを他:1で結びつけています。 「商品カテゴリテーブル」にはカテゴリ名カラムがあり、 商品検索のときに商品名とカテゴリ名両方検索できるようにしたいと思っています。 すでに構築されたプログラムの改変のため、JOINが非常にし辛いソースとなっていて、 ビューを使うとコストが抑えられると思っているのですが、遅いと聞くので使用していいか戸惑っております。 商品の修正もそこそこありで、検索もそこそこ使うといった感じです。 この場合、ビューを使ってよいものでしょうか。
MySQLはSELECT対象にVIEWを使うか
VIEWの内容をSELECT文の中に展開して書き込むかで
実行計画が変わることがある。
どちらが速いかはケースバイケース。
ただ
>>511 のパターンではその前に
双方のcategory_cd列にINDEXが作ってあるかどうかが重要。
まずINDEXがあることを確認した上で、
VIEWのありなしで検証してみるのをオススメする。
C APIについて詳しい人います?
>>513 オライリーのMySQLクイックリファレンスを見れ
C APIについても載ってる
515 :
NAME IS NULL :2011/09/27(火) 11:48:59.25 ID:X5ySfYA0
xmappインストールしてmysql起動しようとしても 開始押したらすぐに停止する 解決策わかる人いる?
>>516 なんかのエラーで停止してるんじゃない
ログみてみたら
x86の64-bit版と32-bit版とは、 ・実行速度 ・使用メモリ量 において、どのくらい違うものでしょうか。 なにか資料へのポインタでも頂けたらと思います。 なおOSはDebian Linuxです。 期待する解答例 ・経験則で言うと、メモリ消費量は64-bit版の方が20%多い ・intのサイズが異なるので、intのカラムが多いとメモリ消費量が多くなるが、charだと変わらない ・実行速度は64bit版のほうが速いはずだが、ぶっちゃけSQLのチューニングのほうがよっぽど大事だから気にすることはない
>>518 バッファ上はMySQLのデータ型の分しか消費しないから、32bit、64bitで変わらない。
ていうかintはx86_64でも4バイトじゃね。
実行速度はCPUによる。
例えばCore 2のときは64bit動作でMacro-OPs Fusionという機能が効かなくて
あまり速くなかった。Nehalem以降は64bitの方が速いと思う。
実際の性能はデータをメモリ上にどれだけキャッシュするかが勝負なので、
32bitだと仮想メモリ4GBの壁があるので64bitの方が断然有利。
参考になります。
>>519 >バッファ上はMySQLのデータ型の分しか消費しないから、32bit、64bitで変わらない。
なるほど。メモリ消費量に違いはない(あったとしてもわずか)ということですか。
>実行速度はCPUによる。
>例えばCore 2のときは64bit動作でMacro-OPs Fusionという機能が効かなくて
>あまり速くなかった。Nehalem以降は64bitの方が速いと思う。
それは知りませんでした。
x86_64のほうがレジスタ数が増えた分、速いと思ったのですが、必ずしもそうではないんですね。
Nehalemというのは、Core2DuoではなくCore i3とかi5とかいうやつですね。
じゃあサーバのCPUの種類を調べてみる必要がありますね。
>実際の性能はデータをメモリ上にどれだけキャッシュするかが勝負なので、
>32bitだと仮想メモリ4GBの壁があるので64bitの方が断然有利。
使ってるのが安いVPSなので、そこまでメモリを利用できません。
たいへん参考になりました。ありがとうございました。
521 :
NAME IS NULL :2012/01/28(土) 23:36:15.52 ID:cD3RmStW
Strutsで郵便番号検索をするしくみを作っています。 JavaからMySQLへアクセスし郵便番号検索する仕組みになっているのですが、 まれに「NullPointerException」がでて原因が追究できず困っています。 郵便番号を入力するテキストボックスがあり、 横にある「郵便番号検索」のボタンをクリックすると 入力された郵便番号に相当する住所が住所のテキストボックスに表示されます。 どなたか何か原因として考えられること教えていただけませんか? (環境) Java Version: 1.6 MySQL: 5.0.77 OS: CentOS 5.3
ソースも見せずに「原因として考えられること」なんて聞いたら 百個や二百個じゃ済まないだろ
>>521 まずは例外発生時のスタックダンプを晒してみろ。
ぬっ、、、、ぬるぽぉ!
■━⊂( ・∀・) 彡 ガッ☆`Д´)ノ
526 :
NAME IS NULL :2012/01/31(火) 18:27:59.13 ID:MV1gW/hE
windowsで使えるGUIな管理ツールって何がいい? テーブルの中身をエクセルみたいに表示してちょこっと編集 ・・・とかがさっさとできたらいいんだけど。 phpmyadminじゃできないですよね? できたらwebベースじゃないほうがいいです。
Navicat Lite 今フリーバージョンは出てないけどw
>>527 あー、今、それ見てました!
Lite無くなってる(´・ω・`)ショボーン
有料だけどaccessでODBC接続とかが無難なんでしょうか?
529 :
527 :2012/01/31(火) 19:16:16.91 ID:???
>>528 使ったことは無いけど
Workbenchとか?後は知らん
おお、いいかんじっすね。 商用じゃないほう(Community エディション?)はフリーなんでしょうか? 個人事業で使う場合は商用?
Community EditionはGPL。 機能が足りててサポートいらないならそのまま仕事で使って問題ないよ。
そうなのですね! あざーっす。
「MySQLってお金払わなきゃ使っちゃいけないの?」って質問するやつは、 確実にお金を払う必要などない人間。 金を払わにゃならんようなやつは、聞かずともわかるようになっている。
MySQLのライセンスが複雑すぎるんだよな
どこが複雑なんだか。
>>535 あんたのようなことを言うやつも金を払う必要はない。
もちろん、サポートしてほしいなら話は別だ。
社内システムなら2行目でNOだろ。4行目まで行かない。
請負でシステム構築する場合は?
542 :
NAME IS NULL :2012/02/06(月) 14:48:21.81 ID:y1W2x5+Z
WoWクラブいきてぇ〜
ねえ教えて インストール後の設定ウィザードでサービスの起動がうまくいきません 応答なしになりますなぜだ
Windowsはムチャムチャ遅いからおすすめしない
conn, cur の関係ってどんな関係なんでしょう? また、conn から curを作成できる理由って何でしょうか?
( ´Д`)y━・~~
548 :
NAME IS NULL :2013/01/05(土) 10:55:30.04 ID:T10q5cOC
犯罪者個人に対して告訴状を違法派遣・偽装請負・偽装出向・多重派遣の被害者が作成(刑事告訴は無料) or 司法書士が代筆(料金は5万円ぐらい)※コピペ歓迎 ↓ 告訴状を【検察の直告班】に郵便局の内容証明付で送付(疎明資料・証拠にはICレコーダー、スマホによる録音が適しています) ↓ 審査 → 不受理 → 告訴状再提出または刑法 第193条で訴えを起こす ↓ 受理 → 告訴事実を認め示談交渉(↓) →示談成立 → 法廷相場50〜100万円の示談金 ※示談拒否が良い ↓ ↓ 事案化← 前科あり ←示談不成立(↓)→ 示談外交渉→ 犯罪者の年収半額×最大懲役年数の和解金支払い※推奨 ↓ ↓ ↓ 起訴 →公判 → 罰金刑=前科(起訴事実を認めてるため)→追討ち民事訴訟 ↓ 審査 → 起訴(強制捜査・留置場)→ 公判 → 懲役刑などの厳罰(反省が認められないため)→追討ち民事訴訟 ↓ 不起訴、起訴猶予 ↓ 検察審査会法第30条(検察審査会へ申し立て)→ 起訴 → 起訴後は同上 刑法 第193条(公務員職権濫用)で検察事務官を刑事告訴 → 同上 ◎告訴→告訴受理→示談交渉→厳罰を求め示談不成立→示談外交渉→和解金支払い・和解契約(公正証書・即決和解で秘密保持契約) ◎偽装請負・出向・違法派遣事件では派遣・出向先両方の代表者、役員、現場責任者に告訴できます。 前科がついた犯罪者が法人の代表であれば公的な入札からの排除、取引先や顧客との契約解除など社会的制裁・批判に晒されることから辞職または解任が妥当、役員・社員であれば懲戒を想定。 ◎事業者内部の加害関係者による刑事告発(刑事訴訟法239条1項)も可能です。 加害者本人、管理間接部門の社員が刑事告発に踏み切る場合も和解金による解決が妥当です。 注意:告訴が受理されない理由 ●3年間(※)の時効が過ぎたもの ※違法派遣 ●同一事実について過去に告訴取消しがあったもの ●関連する民事訴訟を有利に導く目的の場合 ●証拠が希薄なもの ※被害者が契約時に違法派遣・偽装請負・多重派遣と知っていても刑事告訴は有効です。
549 :
NAME IS NULL :2013/01/15(火) 14:16:53.35 ID:lJw9FDu5
パワハラ犯罪にたいする刑事罰(※本投稿のコピペ歓迎です) 人事原則 1 現行法では、社員が仕事を怠けたり、能力不足、就業規則違反、目標を達成できなくても解雇をしたり叱責することは違法です。どんな駄目社員、嘘つき社員、怠け者も定年まで解雇が違法なのが現行の正社員制度です。 2 パワハラは社風にあわない社員、成績の振るわない社員を自主退職に追い込む言わば人事的措置として用いられることが多い。 ※違法な解雇の和解金相場は、労働審判で3ヶ月、通常裁判で1年以上の報酬、さらに社員が和解を拒めば復職が可能です。弁護士への着手金は12〜15万円+20%の和解金、和解拒否なら20〜50万円程度。 人事部・ホットライン・御用組合へ直訴 メリット: 一時的緩和や人事異動 デメリット: 役員へ情報筒抜け、危険分子の烙印(情報漏洩がホットライン直訴者に多いのは人事部の常識)、パワハラ放置で自主退職に追い込まれる 民事訴訟・調停・労働審判 メリット: 損害賠償 デメリット: 裁判費用、解雇措置、民事不介入で刑事事案化を阻止、長期係争、パワハラ上司の継続雇用 刑事告訴 メリット: 1パワハラ上司の解雇・懲戒、または2多額の和解金、1と2どちらでも被害者の雇用は維持 デメリット: 人事異動(出世コースから外れる) ◎録音は一方の当事者が取る限り合法です。※加害者に録音の同意を求める必要はありません。 ◎告訴受理後の和解金は加害者の資産・収入に応じて変えてください。犯罪者の昨年の年収の半額程度×最大懲役年数が妥当です。 ◎パワハラの被害についての告訴は1侮辱罪2脅迫罪3強要罪4威力業務妨害罪5傷害罪の順序で行ってください。警察・検察の協力(犯罪者の自宅・職場の強制捜査、留置所勾留)により罪の立証が楽になります。 ◎刑事告訴した社員を解雇したり処遇面で著しい差別を行うことはないでしょうが、出世や管理職以上の昇進の可能性はあきらめるべきでしょう。 ◎刑事告訴は民事訴訟と違って裁判による被害者への2次被害にありません。検察庁が被害者に代わって訴えをおこすので、無料で、時間と手間も告訴状をかくことと音声録音を残すだけです。 ◎和解契約(公正証書・即決和解)では告訴した事実は秘匿事項となります。犯罪者が秘密保持契約を違反した場合の損害賠償金は、最低5000万円〜にしましょう。
社内システムを Core2Duo-E8400(2GB)で運用していましたが、 機器が故障したため、Atom-D2700(3GB)に入れ替えをしました。予算があまり無かったのです。 ・クライアントは10台程度。 ・innodbのみ使用。 ・一覧表示を多用している。ページング処理をする為、countでレコード総数を取得している。 ・my.cnfはそのまま流用している。 切替直後から、「一覧表の表示が遅い」というクレームが後を絶ちません。 以前は瞬時にページの切替ができましたが、切替後は数秒から30秒程度の 待ち時間が発生しています。 利用者からは、物凄い剣幕で「遅せーんだよ、なんとかしろ!」といわれていますが、 「慣れればいいだろ」とも言えず、解決策を模索中です。 CPUの処理性能が、これ程影響してくるとは思いませんでした。
SQL文を見直す インデックスを工夫する この程度しか思いつかないw
>>550 countが劇遅で、だけど多用せざるを得ない要件なら、countだけを保存するテーブルを作って、
insert/deleteトリガーでcountをプラマイするようにして、それをページ処理するときに参照する
仕組みにすれば?
553 :
550 :2013/05/10(金) 13:41:04.79 ID:???
>551,552 ご回答ありがとうございます。 ご意見を参考に、色々と試して見ます。
mysqlでCPU下げるのは自殺行為
MySQL 5.5を使ってますです。 phpMyAdminを使ってデータベースのエクスポートしたのですが、外部キー制約がエクスポートできません。 外部キー制約も含めてエクスポートするにはどうしたらいいですか?