[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/03 13:28 / Filesize : 292 KB / Number-of Response : 965
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

MySQL 総合 Part15



1 名前:NAME IS NULL mailto:sage [2008/11/24(月) 06:20:30 ID:???]
快速 RDBMS、MySQL の総合スレです。
前スレ[MySQL 総合 Part14] pc11.2ch.net/test/read.cgi/db/1213319883/
[関連スレと過去ログ]
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/refman/5.1/ja/index.html
[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


2 名前:NAME IS NULL mailto:sage [2008/11/24(月) 06:21:39 ID:???]
【関連ツール及びユーティリティ】

[phpMyAdmin] www.phpmyadmin.net/
[phpMyBackupPro] www.phpmybackuppro.net/
[MySQLCC] www.mysql.com/products/mysqlcc/
[MySQL-Front] www.mysqlfront.de/
[mytop] jeremy.zawodny.com/mysql/mytop/
[Common SQL Environment] www.hi-ho.ne.jp/tsumiki/cse_1.html

MySQL ABでの各種GUIツールはMySQL GUI Toolsとして統合されています
(WorkbenchはGUI Toolsから独立しました。)
dev.mysql.com/downloads/gui-tools/5.0.html
・MySQL Administrator
・MySQL Query Browser
・MySQL Migration Toolkit

dev.mysql.com/downloads/gui-tools/5.0.html#Workbench
・MySQL Workbench

【関連書籍】

[MySQL Books]
dev.mysql.com/books/
www.amazon.co.jp/exec/obidos/search-handle-url/ix=books-jp&fqp=keywords%01MySQL
www.amazon.co.jp/exec/obidos/search-handle-url/ix=books-us&fqp=keywords%01MySQL


3 名前:NAME IS NULL [2008/11/24(月) 16:22:57 ID:pg62ATq6]
記念すべき3ゲット!


ルシーン(ルシーン-ja)とsenとアパッチantをダウンロードしたのですがインストール方法が一切分かりません。
windowsなのでexeファイルが無いとお手上げです。
windowsのインストールを詳しく書いたサイト無いでしょうか?

4 名前:NAME IS NULL [2008/11/24(月) 17:07:38 ID:pg62ATq6]
それかmecabのperlモジュールのインストール方法を教えて下さい。
その中のREADMEファイルにはLinuxのインストール方法さか書いてありませんでした。
よろしくお願いします。

5 名前:NAME IS NULL [2008/11/24(月) 20:09:54 ID:pg62ATq6]
過疎?

6 名前:NAME IS NULL mailto:sage [2008/11/24(月) 20:43:03 ID:???]
MySQLと関係ないから誰も絡まないんじゃないの?

7 名前:NAME IS NULL mailto:sage [2008/11/24(月) 21:06:31 ID:???]
全角が含まれない物を検索したいのですが
REGEXP "^[¥x00-¥x7F]*$"では駄目でした。
01でも20でも同様です。どなたか教えてください。

8 名前:NAME IS NULL [2008/11/24(月) 22:59:26 ID:pg62ATq6]
>>6
mysqlで日本語の文字列を正しく早く検索するならmecabやルシーンは必須です。
みんなインストールせずにmysql使ってるのかな?
本当はmysqlの標準fulltextindexで日本語が対応してればいいんだけど。

9 名前:NAME IS NULL [2008/11/25(火) 08:34:56 ID:LcwULAiS]
複数の行を、一行にまとめたいんです
hoge
fuga
piyo

hoge,huga,piyo

文字列版のSUMみたいな関数があれば出来ると思うのですが、
そういうものはないようです
どうすればできますか?

10 名前:NAME IS NULL mailto:sage [2008/11/25(火) 08:55:56 ID:???]
hoge=hoge+fuga+piyo



11 名前:NAME IS NULL mailto:sage [2008/11/25(火) 09:00:40 ID:???]
GROUP_CONCAT

12 名前:NAME IS NULL mailto:sage [2008/11/25(火) 16:59:54 ID:???]
>>8
いっそVMWare-Serverとかで仮想環境作ってLinuxでやるとか

Win系でサーバーいじってないんでわからんです

13 名前:NAME IS NULL mailto:sage [2008/11/25(火) 18:30:20 ID:???]
>>11
それが4.0系で使えればなぁ…

14 名前:NAME IS NULL mailto:sega [2008/11/25(火) 21:48:21 ID:???]
削除フラグってどういう名前にしてる?

15 名前:NAME IS NULL [2008/11/26(水) 01:24:56 ID:5XmocAv7]
オライリーのクックブックに、
varchar binary
のカラムが出てきたので、phpMyAdminで設定しようと思ったのですが、
設定する場所がないようです。バージョンは5.0.51です。
varcharをケースセンシティブにするには、コレーションを
utf8_bin
にすればいいのでしょうか?

16 名前:NAME IS NULL mailto:sage [2008/11/26(水) 11:38:45 ID:???]
workbenchだけど
たかがIDEなのにfkはってテーブルドラッグするとC2Dでもカクカクしまくり
明らかに作りがおかしい


17 名前:16 mailto:sage [2008/11/26(水) 11:53:59 ID:???]
ちなみに、テーブル20
fk10ぐらいかな
後はテーブルエディター表示してるくらい
E6300 メモリ2GB 7900GS

まだまだ良いツールとはいえないな>workbench

18 名前:NAME IS NULL [2008/11/27(木) 00:06:02 ID:AvSF7aUT]
テーブルAとテーブルBがあり、Bの主キーがSerialで、AがBの主キーを参照
するとき、型はどうすればいいんですか?

19 名前:NAME IS NULL mailto:sage [2008/11/27(木) 18:38:26 ID:???]
5.1 GAでた!
dev.mysql.com/downloads/mysql/5.1.html

20 名前:NAME IS NULL [2008/11/27(木) 18:58:20 ID:kyWMw81w]
パスワード忘れて直したいんですが
バグちゃって直せないので設定ごと消したいのですが
どうすればいいですか?suse10.1 mysql5 です



21 名前:NAME IS NULL mailto:sage [2008/12/01(月) 01:46:21 ID:???]

登録が必要らしいけど、MySQLユーザコンファレンス2008
の資料がダウンロードできるみたい。
ttp://jp.sun.com/company/events/mysql/report.html



22 名前:NAME IS NULL mailto:age [2008/12/01(月) 19:37:18 ID:???]
PHPプログラムから外部接続を実装しているのですがコネクション数が1以上にならなくて困っております。
状況はこんな感じです。

Aサーバ(master DB)xxx.xxx.xxx.xxx
Bサーバ(slave DB) yyy.yyy.yyy.yyy

AサーバはWEBサーバも兼ねています。
select文はすべてslaveに
slaveのshow statusの結果、Max_used_connectionsが1となっていました。
netstat -n|grep ':3306'(外部接続のポート)を見てもコネクションが1つしかないようです。

外部接続時の同時接続数を増やすにはどうしたらいいでしょうか?


23 名前:NAME IS NULL [2008/12/02(火) 07:23:01 ID:YOG6P4GK]
MySQLのクエリキャッシュって、
該当のテーブルが少しでも変更されたら、
そのテーブルに関するキャッシュがすべて破棄されるのですか?
それとも、変更された行に関わるキャッシュのみ破棄されるのですか?

24 名前:NAME IS NULL mailto:sage [2008/12/02(火) 07:27:24 ID:???]
つーか
SQLの解釈部分だけキャッシュしてんじゃねーの


25 名前:NAME IS NULL mailto:sage [2008/12/02(火) 09:00:40 ID:???]
該当のテーブルじゃないよ
ひとつでもDMLが走ったら
サーバー全体のクエリキャッシュを破棄する

読み取り専用のDBじゃないと
基本的に役に立たない

26 名前:NAME IS NULL mailto:sage [2008/12/02(火) 15:37:55 ID:???]
えっ・・そうなんですか
それは本当に使い道が限定されてますね
ありがとうございました

27 名前:22 mailto:age [2008/12/02(火) 17:18:56 ID:???]
どなたかお願い致しますm(_ _)m

28 名前:NAME IS NULL mailto:sage [2008/12/02(火) 18:00:01 ID:???]
誰も使ってないから接続数1(自分だけ)なんじゃないの?

29 名前:NAME IS NULL [2008/12/03(水) 07:09:56 ID:Tn2R8xLf]
日本語の設定について質問です。

現在、MySQLの日本語の設定を、CHARSET=latin1として使っているのですが、
普通に日本語を使えています。
でも、これでいいかどうか不安なのですが、シフトジスとかEUCに変更するべきでしょうか。。。?


30 名前:NAME IS NULL mailto:sage [2008/12/03(水) 10:14:44 ID:???]
バージョンによる。
今後はUTF-8にしよう。



31 名前:NAME IS NULL [2008/12/03(水) 12:28:48 ID:G5L2Kaa9]
お助けを!。テーブルから最新5件を取りたいと思っています。
idがオートインクリメントで10件データ入っており(1-10)
SELECT id,name FROM test_tbl WHERE LIMIT 5 ORDER BY id DESC
これで登録された最新を5件取得できたのですが
10,9,8,7,6 という順になってしまいます(DESCなので当然なのですが)
これを6,7,8,9,10として取得できる方法はあるのでしょうか。


32 名前:NAME IS NULL mailto:sage [2008/12/03(水) 17:30:56 ID:???]
select id, name from (select id, name from q31 order by id desc limit 5) q order by id;

33 名前:NAME IS NULL mailto:sage [2008/12/03(水) 21:33:05 ID:???]
こんばんは
現在MYSQL+PHPで本のデータベースを作ってます。

本にも色んな種類があるので別けたいのですが

コンピュータ
PHP
XML
MYSQL


etc

料理
日本料理
フランス料理


etc

とこんな感じに別けたいのですが どのような設計をすればいいのでしょうか?
よろしくおねがいします

34 名前:NAME IS NULL mailto:sage [2008/12/03(水) 22:19:51 ID:???]
>>33
>現在MYSQL+PHPで本のデータベースを作ってます

どこまで作ったの?

35 名前:NAME IS NULL mailto:sage [2008/12/03(水) 22:58:26 ID:???]
今は接続のとこまで作りました^^

36 名前:NAME IS NULL [2008/12/03(水) 23:24:01 ID:KgTn2hhN]
>>30
おれも、latin1で普通に日本語使っているんだが、だめなのか、、、?
そもそも、latin1って日本語の文字コードじゃないはずなのに、なぜ日本語使えてるのかわからん。
でも、使えてるからまぁいいやーって思ってるけど、ちょっと気になるなぁー、、


37 名前:NAME IS NULL mailto:sage [2008/12/04(木) 08:26:18 ID:???]
>>36
MySQL は latin1 として処理している。
クライアントプログラムが SJIS(とかEUC)と思ってそれを入力&表示しているだけ。

困ってないなら別にいいけど、charset はちゃんとしておいた方が無難。

38 名前:NAME IS NULL mailto:sage [2008/12/04(木) 14:51:47 ID:???]
pc11.2ch.net/test/read.cgi/hp/1227615358/より誘導されて参りました.

現在CMSをサーバへインストールしているのですが,MySQLデータベースサーバの設定を行っている際に
Access denied for user'データベースのユーザー名'@'localhost' (using password: YES)と怒られました.

当方の環境ではデータベースのあるサーバがlocalhostではないので,
これを任意のアドレスに変更したいのですが具体的な手順が分かりません.

解決策について,どうかご指導願います.

39 名前:NAME IS NULL mailto:sage [2008/12/04(木) 18:51:18 ID:???]
それはMySQL側でどうこうする話じゃないだろ。

40 名前:NAME IS NULL mailto:sage [2008/12/04(木) 23:06:17 ID:???]
>>38
接続するときにホスト名を指定するといいよ。



41 名前:38 mailto:sage [2008/12/05(金) 00:02:32 ID:???]
>>39
結局は繋ぐほうの問題,ですか.

>>40
わかりました.頑張ってみます.

42 名前:NAME IS NULL mailto:sage [2008/12/06(土) 23:24:37 ID:???]
rootのパスワードを忘れてしまい、下記のようなエラーメッセージが出ました。

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

対応策はググって見つけたのですが、それはすべてリナックス向けで、私の環境は
ウインドウズです。ウインドウズ向けの対策をご存じの方、ご教授いただけないで
しょうか?

どうぞ宜しくお願い致します。

43 名前:NAME IS NULL mailto:sage [2008/12/06(土) 23:51:15 ID:???]
LinuxもWindowsも対策は同じだと思うけど。試してみたの?

44 名前:42 mailto:sage [2008/12/06(土) 23:53:15 ID:???]
申し訳ございません、自己解決しました。

45 名前:NAME IS NULL [2008/12/07(日) 14:10:23 ID:oP/f2X5+]
指定されたデータ型より大きなものを入れた場合にwarningsが発生しますが、
「Data truncated; out of range for column 〜」

以下のようにデータ型「date」の所にそれより大きな文字列を入れてもwarningsが発生しません。
---------------------------
create table test(d date);
insert into test(d) values('2004-01-02 03:04:05');
show warnings;
---------------------------
warningsを発生させる方法はないでしょうか?
宜しくお願いします。

MySQL4.1

46 名前:NAME IS NULL mailto:sage [2008/12/08(月) 18:58:12 ID:???]
MySQL5を使ってるんですが、重いクエリの時は、すべて(4個)のCPUを同時に使ったりしてくれないのでしょうか?
出来れば、4個全部使って欲しいのですが、方法は無いんですか?



47 名前:NAME IS NULL mailto:sage [2008/12/08(月) 19:15:33 ID:???]
MySQL、PostgreSQLにはないよ
Oracleにはあるよ

48 名前:NAME IS NULL mailto:sage [2008/12/08(月) 20:55:27 ID:???]
>>33

49 名前:NAME IS NULL mailto:sage [2008/12/09(火) 00:02:49 ID:???]
>>46
重い原因がCPUなら、ちゃんと使ってくれるはず。
IO負荷で重いんだったらCPUは使いきれない。

50 名前:NAME IS NULL [2008/12/09(火) 01:22:52 ID:PYU51CNx]
カラムの文字列の中の「/」の数を数えたいのですが、
適当な関数がありません
どうしたらいいでしょうか?



51 名前:NAME IS NULL mailto:sage [2008/12/09(火) 01:42:14 ID:???]
関数つくればいいんじゃね?

52 名前:NAME IS NULL mailto:sage [2008/12/10(水) 17:03:55 ID:???]

MySQL5の限界を上げたいのですが、どこをチューニングしればいいのか教えてください。
基本的なチューニングは出来てると思います。

サーバーは、DB専用で4CPU メモリ8GB

max_connections 許容接続数 2000 本
Max_used_connections 過去発生した最大接続数 916 本
(mysql接続のみの数字)

916本で、MySQLに接続が出来なくなってしまいます。
これを2000まで持って行きたいのです。

CPUやメモリは、余裕があります。

アドバイスを下さい。神様。

53 名前:NAME IS NULL mailto:sage [2008/12/10(水) 19:41:16 ID:???]
OSの種類とバージョン
MySQLのバージョン
32bit/64bit
ulimit -aの出力
917本目をつなごうとしたときのエラーメッセージ

ぐらいは書かないと神様でも分からないと思うよ


54 名前:NAME IS NULL mailto:sage [2008/12/10(水) 19:55:29 ID:???]
そうですよね。。
OSはdebian Etch 64bit
Linux db 2.6.18-6-amd64 #1 SMP Fri Oct 10 05:11:18 UTC 2008 x86_64 GNU/Linux

サーバー側:MySQL5.0.32-Debian_7etch8-log
クライアント側:MySQL5.0.32


エラーは出てないですが、WEBサーバーから接続が出来なくなってしまいます。
しばらくしたら、接続出来るようになるのですが・・。

まず、MySQLへの接続なしで、負荷ツールで負荷をかけても問題なく処理されるのですが、
MySQLへの接続をすると、しばらくして接続が出来なくなります。

Apache2とMySQL5のサーバーは物理的に分かれています。


55 名前:NAME IS NULL mailto:sage [2008/12/10(水) 20:58:17 ID:???]
max_connectionsを増やすときは、open_files_limitも増やす必要がある。

sql/mysqld.cc
static int init_common_variables(

 max_open_files= max(max(wanted_files, max_connections*5), open_files_ 
 files= my_set_max_open_files(max_open_files);
 /* ↑ここでulimitのopen files制限に引っかかるなどしてしまうと */
 if (files < wanted_files) {
  if (!open_files_limit) {
   max_connections= (ulong) min(files-10-TABLE_OPEN_CACHE_MIN*2, max_connections);
   /* ↑ ここでmax_connectionsを減らされてしまう。

mysqldのログでこんなのが出てないかも確認してみて。
[Warning] Changed limits: max_open_files: 1024 max_connections: 886 table_cache: 64

でもデータベースに900接続って時点でわりと異常なので
アプリケーションがきちんと切断してるかも確認してください。

56 名前:NAME IS NULL mailto:sage [2008/12/10(水) 22:05:22 ID:???]
ありがとうございます。

早速、ログを見てみましたけど、何も吐き出されてませんでした。

負荷ツールを使ってデータを取ってみたのですが、下記のコマンドで1800まで行って、実際にDBへ繋げたのが140まで下がってきた所でした。
#netstat -an | wc -l 
1800


もしかして、何か根本的におかしいのかな。

アプリ側では、明示的に切断はしてませんが、、スクリプトが終われば、勝手に切断されるんですよね??
PHPとPDOで接続しています。

あと、よく分かりませんが、
Max_used_connections 過去発生した最大接続数 1786 本 まで行きました。
けど、ページが表示されない・・待ちの状態で、DB接続出来なくタイムアウトに。

なんでしょうね・・。

57 名前:NAME IS NULL mailto:sage [2008/12/10(水) 23:21:53 ID:???]
色々調べてみましたが、netstat -anのコマンドで見てみると「ESTABLISHED」だらけになってました。

#netstat -an | wc -l で 140以下になればうまく接続出来るようです。



58 名前:NAME IS NULL mailto:sage [2008/12/11(木) 03:42:57 ID:???]
linux同士でレプリケーションをしているときに、
cronで同期ができているかどうかをチェックするにはどのようにすればいいでしょうか?
レプリケーションができているかどうかを
シェルスクリプトから確認するにはどのように行えばいいでしょうか?

59 名前:NAME IS NULL mailto:sage [2008/12/11(木) 13:37:08 ID:???]

自己レスです

>>56
WEBサーバーからDBサーバーへ接続が出来ないときでも、
DBサーバーからMySQLへアクセスする事が出来ました。

恐らく、ネットワーク周りが原因なのかなぁと。

60 名前:NAME IS NULL mailto:sage [2008/12/11(木) 14:17:19 ID:???]

質問ばかりですいません・・。

mytop で見てると、Userが「unauthent」になっているのが多いのですが、これはどういう意味なのでしょうか?



61 名前:NAME IS NULL [2008/12/12(金) 10:46:46 ID:Wbs0cP7F]
winのMySQL5.1で日本語の値をinsertしようとすると、
insert into hoge values("あああ");
でenterしたあと延々と>で入力を促されて
コマンドが実行されません。

文字コード周りが原因かと思って調べた結果my.iniを書き換えたのですが直りません。
どなたか原因等分かる方居ましたらご教示ください。
show variables like "char%";
を実行した結果は以下のとおりです。
| character_set_client     | utf8
| character_set_connection | utf8
| character_set_database   | utf8
| character_set_filesystem | binary
| character_set_results    | utf8
| character_set_server     | utf8
| character_set_system     | utf8

62 名前:NAME IS NULL mailto:sage [2008/12/12(金) 11:12:54 ID:???]
AUTO_INCREMENTでPRIYMARY KEYである行(行の名前はid)を追加するSQLを
下記のように組みました。

alter table input add column input int PRIYMARY KEY(id) AUTO_INCREMENT;

上記だとエラーだとになります。どこがおかしいのでしょうか?
ぐぐってみてもわからないので質問させていただきました。ご教授頂ければ
幸いです。

63 名前:62 mailto:sage [2008/12/12(金) 11:27:07 ID:???]
タイポがありました。正しくは
alter table input add column input int PRIMARY KEY(id) AUTO_INCREMENT;
です。

64 名前:NAME IS NULL mailto:sage [2008/12/12(金) 12:17:36 ID:???]
>>60
back_log関係あるかなあ?

>>61
Windowsだったら全部utf8ではダメ。以下の設定が基本。
| character_set_client | cp932 |
| character_set_connection | cp932 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | cp932 |
| character_set_server | utf8 |
| character_set_system | utf8 |


65 名前:61 [2008/12/12(金) 18:38:35 ID:HVvqI17v]
>>64
レスありがとうございます。
なんとか分からないなりにその設定になるようmy.iniを書き換えてみたのですが、
テーブルに格納は出来たものの、取り出した時に文字化けしてしまいます。

show variables LIKE 'char%'の結果は>>64のとおりに出来たのですが、
おそらく自分のCLIENT SECTIONとSERVER SECTIONの記述が間違っている部分がある気がします…。
すいませんが、正しいCLIENT SECTIONとSERVER SECTIONの内容を教えて頂けないでしょうか?

66 名前:NAME IS NULL mailto:sage [2008/12/12(金) 19:41:04 ID:???]
[mysqld]
character_set_server = utf8

[client]
default_character_set = cp932

ねんのため一回データベースとテーブルつくりなおしてみて。


67 名前:NAME IS NULL [2008/12/12(金) 23:47:06 ID:EUNHJOeo]
質問します。
最近slow.logなんてものを知ったばかり素人です。

このslow.logが、例えば100MBの時と1KBの時とでは
処理速度に極端な差が出たりするものなのでしょうか?

そりゃ100MBの方が遅くなるだろうというのは感覚として分かるのですが。

68 名前:NAME IS NULL mailto:sage [2008/12/13(土) 00:54:19 ID:???]
スロークエリを吐くこと自体の負荷は
100MBのファイルに100バイト追記するのも
1KBのファイルに100バイト追記するのも変わらんよ。

それはおいといて、
スロークエリログが100MBも出るってことは
そもそもチューニングされてないってことだよね。
そのデータベースは遅いだろうね。

69 名前:NAME IS NULL mailto:sage [2008/12/13(土) 01:12:14 ID:???]
>68
ありがとうございます。
となると、150MBのslow.logを消した昨日辺りから妙に動作が軽いのは
ログのサイズには無関係か……


>100MBも出るってことは
ですよねぇ。

パソコンに詳しいからと言う理由で唐突にサーバ管理を任されてしまい
どこからメンテナンスすればいいものか……。

70 名前:NAME IS NULL mailto:sage [2008/12/14(日) 02:34:41 ID:???]
どなたかお助けください。

max_allowed_packetを4Mにセットした上で、マルチプルインサートを使って
9000件程度のデータを4MB弱のSQL文にまとめて実行しているのですが
Packets larger than max_allowed_packet are not allowed.エラーが
出てしまいます。

登録すべきデータ件数が多いので、出来るだけまとめて登録したいのですが
SQL文が実際にはどのくらいのパケットサイズになるかを見積もるには
どうすればよいのでしょうか? どこまで削れば通るのか皆目見当がつかないもので…orz



71 名前:NAME IS NULL mailto:sage [2008/12/14(日) 05:45:22 ID:???]
max_allowed_packet を 100M とか設定して、通るまで減らしてみたらだめなの ?

72 名前:NAME IS NULL mailto:sage [2008/12/14(日) 11:03:09 ID:???]
>>71
ご指摘ありがとうございます。データ総数が100万件を軽く超えるので
少しでも高速化するため、プログラム内でmax_allowed_packet値を取得して、
それと見比べながらSQL文を構築、限界まで伸ばしてから実行、という
手順を取っています。全件つなげても流石に100MBは行かないと思いますが
限られた範囲で頑張れたらなぁ、と。わがままなのですが。

なお、SQL文を短くするほうで試してみましたところ、
9215件分の 3,825,253byte のSQL文は通りましたが、
9425件分の 3,911,372byte はだめでした。max 4,194,304byte に対して
300KB近くの余裕が必要ということで、MySQL内部での処理時には1件毎に
何らかのヘッダが付いて処理されていると推測しています(流石にSQL
1文に300KBは無いと)。で、そのヘッダサイズが分かれば解決!と
思っているのですが、そもそもこの考えが正しいのか皆目見当が付きません。
MySQL内部でのパケット構造はググってもなかなか見つからないもので
引き続きお知恵をお貸しいただければ幸いです。

73 名前:NAME IS NULL mailto:sage [2008/12/14(日) 13:29:40 ID:???]
そこまでするなら、パケットダンプして確認してみたら?

74 名前:NAME IS NULL mailto:sage [2008/12/14(日) 15:10:59 ID:???]
そのまえに50件ずつINSERTするのと5000件ずつINSERTするので
どれだけ性能差があるのか測ってみたら?

一般的には10〜100件あたりに最適値があるんだぞ

75 名前:NAME IS NULL mailto:sage [2008/12/15(月) 17:21:29 ID:???]
質問です。

mysql4.1までテーブルを作った際に、
数値型のカラムのデフォルト値は、明示しなくても0になりましたが、
現在試している5.0.67ではデフォルト値がNULLになってしまいます。
これは5.0からは明示しなければいけない仕様に変わったんでしょうか?
テーブル作成クエリの例と作成したカラムの内容は以下のとおりになります。

クエリ
create table test_table( col int not null );
カラム内容
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| col | int(11) | NO | | NULL | |
+-------+---------+------+-----+---------+-------+

すみませんが、どなたか教えていただけますよう、よろしくお願いいたします。

76 名前:NAME IS NULL mailto:sage [2008/12/15(月) 19:01:03 ID:???]
sourceコマンドで大量のinsert文を入れてるんだけど
1行目だけ必ずエラーが出る
その1行目を手動で入れるとエラーは出ない
2行目以降は全て正常に入る

なんだろう?
UTF-8に統一しててエンコード問題でもないと思うんだけど

77 名前:NAME IS NULL mailto:sage [2008/12/15(月) 21:36:40 ID:???]
T字型ER手法がメジャー

78 名前:NAME IS NULL mailto:sage [2008/12/15(月) 22:36:59 ID:???]
>>75
SQLモードによるんだそうだ。
dev.mysql.com/doc/refman/5.1/ja/data-type-defaults.html

>>76
BOMがついてるとか?
ためしてないけど

79 名前:75 mailto:sage [2008/12/16(火) 13:26:55 ID:???]
>>78
ありがとうございます。
どの環境でも同じように使うには、
面倒ですが、デフォルト値は明示したほうがよさそうですね。

80 名前:NAME IS NULL mailto:sage [2008/12/16(火) 14:03:07 ID:???]
develとかserverとかclientとかあるけど具体的な違いってなんなの?



81 名前:NAME IS NULL mailto:sage [2008/12/16(火) 14:27:31 ID:???]
>>80
名前の通り。そのまんまの用途だと気づけ。

82 名前:NAME IS NULL mailto:sage [2008/12/16(火) 15:29:50 ID:???]
用途の違いは分かるけど具体的な機能の違いはなんなの?って聞いてるの

83 名前:NAME IS NULL mailto:sage [2008/12/16(火) 18:04:26 ID:???]
全文検索で、特定のレコードだけインデックスしないって出来る?


84 名前:NAME IS NULL mailto:sage [2008/12/16(火) 21:05:36 ID:???]
>>82
clientはサーバになれないし、develがないと MySQL ライブラリを使用するプログラムをコンパイルできない。

MySQL全体を用途毎にわけただけ。

85 名前:NAME IS NULL mailto:sage [2008/12/16(火) 22:16:11 ID:???]
mysql5.01のバッチモードにて、あるテーブルに条件にあるデータが入っていた場合、後続バッチを強制中止させたいのですが。
select 1/count(*) from hoge;
として、レコード0の場合もエラーになりません・・・
set session sql_mode='STRICT_ALL_TABLES';も、insert/updateにしか0除算エラーにしてくれないらしく困っています。

なにかselectでエラーとして中止させる良い方法は無いでしょうか。

86 名前:NAME IS NULL mailto:sage [2008/12/16(火) 22:49:31 ID:???]
>>85
forums.mysql.com/read.php?99,55108,55108#msg-55108
なんかUDFつかえとかちょっとトリッキーみたい。
素直にストアド書くか、C/Perl/Javaとかで書いたほうがよさそう?

87 名前:85 mailto:sage [2008/12/17(水) 11:06:00 ID:???]
>>86
ユーザ定義関数からraiseですか。
割とどんな事でもクエリが落ちない仕様っていうのは、mysqlの利点にもなってるのでしょうね・・・

>素直にストアド書くか、C/Perl/Javaとかで書いたほうがよさそう?

ですねぇ。
ありがとうございました。


88 名前:NAME IS NULL mailto:sage [2008/12/17(水) 14:35:32 ID:???]
これはどういう意味?組み合わせアルゴリズムってjoinの事?

dev.mysql.com/doc/refman/5.1/ja/view-restrictions.html
組合せアルゴリズムを使用して処理されたビューに、
インデックスを使うことは可能です。
しかし、誘導可能なアルゴリズムで処理されたビューは、
その背後にあるテーブルのインデックスを活用することができません
( 一時テーブルの作成中にインデックスを使用することはできます ) 。

89 名前:NAME IS NULL mailto:sage [2008/12/17(水) 15:05:46 ID:???]
index関係調べてるとmysqlなんて使うべきじゃなかったと後悔するな・・・

90 名前:NAME IS NULL mailto:sage [2008/12/17(水) 15:15:57 ID:???]
userテーブルにprofileフィールドやareaフィールドやcategoryフィールドがあったとして
3つ全て別のテーブルへの参照だったとする
この場合、それら3つのフィールドへの全文検索を行うにはどうするか?

正規化したらindex使えなくなるとか無いだろ・・・
他のRDBMSはビューに対してインデックス張れたり
オプティマイザがもっと賢かったりインデックスが強力だったり
こういうところで躓かない高機能さがある



91 名前:NAME IS NULL mailto:sage [2008/12/17(水) 15:18:05 ID:???]
たぶん最善案はprofile,area,category全部に個別に全文インデックス張って
3つサブクエリ発行して積集合を求める方法
他のRDBMSの3倍+α(積集合負荷)の処理時間になりそう

あー

92 名前:NAME IS NULL mailto:sage [2008/12/17(水) 15:41:54 ID:???]
>>91の方法でもクエリされたキーワード(AND)全部含んでないと該当しないから
結局複数テーブル間の検索は出来ないわw

おわった

93 名前:NAME IS NULL mailto:sage [2008/12/17(水) 15:44:20 ID:???]
積集合じゃなくて和集合じゃないか?
オプティマイザがタコいのには狂おしいほど同意するけど

94 名前:NAME IS NULL mailto:sage [2008/12/17(水) 16:05:54 ID:???]
と言うか、結合後のテーブルに対してインデックス出来ないとダメ
テーブルをまたいだインデックスを張れるか、
ビューに対してインデックスを張れないといけない
MySQLには探したところそういった機能は無い(代替になるようなものも)

正規化を崩してパフォーマンスを求める場合がある、と言われる典型的な例だと思う。
MySQLではareaテーブルとか作っちゃいけないんだよ。

95 名前:NAME IS NULL mailto:sage [2008/12/17(水) 16:07:50 ID:???]
昔からある問題のはずなのに未だ解決されてないところを見ると
MySQL自体使わないほうが良いと思ったわ
開発停滞してるだろこれ

96 名前:NAME IS NULL mailto:sage [2008/12/17(水) 17:28:57 ID:???]
新機能の不具合が多すぎて
パフォーマンスまで手が回ってないんだよ。

97 名前:NAME IS NULL mailto:sage [2008/12/17(水) 17:40:55 ID:???]
MySQLって確かC言語(笑)で実装されてるよね
そりゃ開発も停滞するわ
そんなもん普及させるなよな・・・

98 名前:NAME IS NULL mailto:sage [2008/12/17(水) 17:58:35 ID:???]
いや、Cなら普通では。PostgreSQLもCですよ?

MySQLはCとC++のハイブリッド。
ソースを見てグローバル変数のすさまじい数に絶望するといいよ!


99 名前:NAME IS NULL [2008/12/18(木) 09:28:34 ID:PtYRnTev]
SELECT の結果を使って UPDATE でフィールドを更新
することはできるのでしょうか?

UPDATE tbl SET (tbl.a, tbl.b) = (SELECT なんとかかんとか

100 名前:NAME IS NULL mailto:sage [2008/12/18(木) 09:57:44 ID:???]
できた

mysql> update q99 set col2 = (select ename from emp where empno = 7788);
Query OK, 1 row affected (0.15 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from q99;
+------+-------+
| col1 | col2 |
+------+-------+
| 1 | scott |
+------+-------+
1 row in set (0.00 sec)




101 名前:NAME IS NULL [2008/12/18(木) 10:27:09 ID:PtYRnTev]
>>100
確認ありがとう,そしてすんまそん,
俺の言葉足らずで.
>>99 の例みたいに,二つ以上のフィールドを
SELECTの結果で一気に更新したかった.
で,SET 節を (x,y,z) = みたいにまとめて
書く方法があるのかと思って.

102 名前:NAME IS NULL mailto:sage [2008/12/18(木) 10:36:12 ID:???]
timestamp型のカラムの内容を元に、毎日一定の時刻にデータの削除をしたいんですが
このような事は可能でしょうか?
また、可能な場合はどのように設定すれば?


OSはFC6、mysqlは5.1.6です。

103 名前:NAME IS NULL mailto:sage [2008/12/18(木) 11:35:18 ID:???]
>>101
他のRDBMSみたいに
set (col2, col3) = (subquery)って書ければいいのに、
できないね。

こんな変態SQLでできるらしい。

mysql> update q101, (select empno, ename, job from emp where empno = 7788) v_emp set q101.col2 = v_emp.ename, q101.col3 = v_emp.job where q101.col1 = v_emp.empno;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from q101;
+------+-------+---------+
| col1 | col2 | col3 |
+------+-------+---------+
| 7788 | scott | analyst |
+------+-------+---------+
1 row in set (0.00 sec)



104 名前:NAME IS NULL [2008/12/18(木) 12:15:12 ID:PtYRnTev]
>>103
それって,いわゆる updatable view ってやつだよね?
俺も試してみたいんだけど,「アップデート可能な
テーブルじゃないぜ!」って怒られた.

SET 節に field1=(SELECTほげほげ), field2=(SELECTほげほげ)
って書くと UPDATE できるんだけど,無駄に複数回の
SELECT が発生してイヤン.

MySQL でも updatable view が使えるとは知らなかった.
なんか俺のやり方に問題があるんだろうなぁ.

105 名前:NAME IS NULL mailto:sage [2008/12/18(木) 22:30:20 ID:???]
MySQL 5.1はバグが多そうなので、5.0を使用してみようと思ったのですが、
日本語マニュアルは5.0だけないようですね。
5.0は谷間世代で、5.0使ってる人って少ないんですかね?

106 名前:NAME IS NULL mailto:sage [2008/12/19(金) 04:18:27 ID:???]
phpmyadmin のスレってなかったっけ?

「EXPLAINで確認」って、どういう機能?

107 名前:NAME IS NULL mailto:sage [2008/12/19(金) 07:47:20 ID:???]
新機能を除けば、5.0より5.1の方が品質は良い
5.1を使いつつ新機能は当面使わないのが勝ち組

108 名前:NAME IN NULL mailto:sage [2008/12/19(金) 13:44:26 ID:???]
すみません、色々調査しましたがどうしてもうまく行かないので
質問させてください。

下記の様な掲示板データをテーブルに格納しております。
idは自動的に付与され、resはidの記事に対する返答が
あった場合、id(親記事)の番号は入ります。

この構成で、2008-12-18の記事だけ取得するが、
それに関連する返答も取得したい場合のクエリを
教えていただきたいと思います。

下記の構成だと、idの1とidの2が取得できれば良いのですが。。。

┌───┬──┬──────┬────────┐
│id    │res   │ comment   │time     │
├───┼──┼──────┼────────┤
│1     │0    │ あいう     │2008-12-18 00:0 │
├───┼──┼──────┼────────┤
│2    │1    │ かきく     │2008-12-19 00:10│
├───┼──┼──────┼────────┤
│3    │0   │ さしす      │2008-12-19 01:20│
├───┼──┼──────┼────────┤
│4    │3   │ たちつ     │2008-12-19 09:30│
├───┼──┼──────┼────────┤
│5      │3   │ なにぬ    │2008-12-20 10:00 │
└───┴──┴──────┴────────┘

109 名前:NAME IS NULL mailto:sage [2008/12/19(金) 14:02:17 ID:???]
>>107
ふーん、montyは全く逆のこと言ってるね

110 名前:NAME IS NULL mailto:sage [2008/12/19(金) 16:16:13 ID:???]
>>108
select * from tbl_test where DATE(time) ='2008-12-18' or res in(select id from tbl_test where DATE(time)='2008-12-18');
これで出ることは出る



111 名前:NAME IS NULL mailto:sage [2008/12/19(金) 16:46:41 ID:???]
>>118

108です。

ありがとうございます。
とりあえず抜き出せたことだけでも良かったです。

本来ならばデータは大量にあるのでスレッドのように抽出出来れば
いいのですが、こちらはまた考えて見ます。
既にご存知であればお教えください。




112 名前:NAME IS NULL mailto:sage [2008/12/19(金) 16:48:03 ID:???]
失礼
108です

>>111
>>110さんへの返答です。



113 名前:NAME IS NULL mailto:sage [2008/12/20(土) 06:23:55 ID:???]
日本語を入力して、
データーを取り出してみたら、

?????

になってるんだけど、何が悪かったかな?

114 名前:NAME IS NULL mailto:sage [2008/12/20(土) 06:31:07 ID:???]
d.hatena.ne.jp/aoi_273/20071127/1196150017

自己解決した。
UTF-8って入れないと文字化けするみたい。

115 名前:NAME IS NULL [2008/12/20(土) 10:03:24 ID:ca+8LuOv]
SSDの内蔵SATAディスクが出てきたけど、あれにindex (*.MYI ファイル) だけでも格納したら、速くなるだろうか。
誰かやってみた人いませんか。

116 名前:NAME IS NULL mailto:sage [2008/12/21(日) 08:36:09 ID:???]
>>115
起動直後の一発目は速くなるかもしらんけど、
あとはOSのディスクキャッシュが効くだろうから
変わらん気がする。
期待すべきはデータを取り出すほうじゃないかな。

117 名前:NAME IS NULL mailto:sage [2008/12/21(日) 09:07:23 ID:???]
シフトJISにするとSQLインジェクションに対応できないという
記事を読んだのですが、UTF-8でデーターベースを設定していても
シフトJISの文字が入ってきた場合、強制的にシフトJISとして
流通してしまうのでしょうか?

118 名前:NAME IS NULL mailto:sage [2008/12/21(日) 09:10:28 ID:???]
blog.ohgaki.net/set_namesa_mcb_asc

SET NAMESは禁止

MySQLには文字エンコーディングを変更する「SET
NAMES」SQL文が用意されています。(PostgreSQL
も同様のSQL文、SET CLIENT_ENCODINGがありま
す)この機能はSQLコンソールからは使ってよい機能
ですが、アプリケーションからは使ってはならない機
能です。 SQLインジェクションに脆弱になる場合があ
ります。

119 名前:NAME IS NULL mailto:sage [2008/12/21(日) 09:25:06 ID:???]
>>117
文字化けしたデータとして流通するでしょ
知識の問題じゃなく単に分析力の問題じゃん、それ
UTF-8のところにSJIS無理やり流し込むとか文字化けして当然なんだから
気にせずサニタイズしたらいい
ある文章が文字化けしてるのか自然な文章なのかを判別するのは割りと凝った事が必要そう

120 名前:NAME IS NULL mailto:sage [2008/12/21(日) 09:36:16 ID:???]
つまりデーターベースで使われる文字コード自体を
utf-8としておけば、シフトJISの文字コードの文字が
入ってきても、普通にサニタイズすれば問題ないという
ことですね。

強制的にセキュリティを破られるのかと思った。



121 名前:NAME IS NULL mailto:sage [2008/12/21(日) 09:39:34 ID:???]
質問

準備された文=Prepared Statement=バインド変数=プレースホルダー

であってる?

122 名前:NAME IS NULL mailto:sage [2008/12/21(日) 16:30:37 ID:???]
>準備された文=Prepared Statement
これはいいだろうが、二つ目、三つ目の=は変。

バインド変数は プレースホルダにバインドされる変数



123 名前:NAME IS NULL mailto:sage [2008/12/22(月) 04:38:10 ID:???]
MySQL 4.1以降での文字の扱い

MySQLはバージョン4.1以降で文字の扱いが大きく変わりました。

それまでのMySQLは、クライアント側で使っている文字(バイトの並び)
がそのままDBに格納され、取得するとそのまま返ってくるという非常
に単純な挙動でした。従って、クライアント側で使用している文字エ
ンコーディング(符号化方式)がDBで使用する文字エンコーディングと
異なる場合は、クライアント側でDBに合わせて変換を行う必要があり
ました。

しかし、MySQL 4.1以降ではサーバ側とクライアント側にそれぞれ文字
エンコーディングが指定できるようになり、ちゃんと設定すればサーバ
が透過的に変換してくれるので、クライアント側で事前に変換をする必
要が無くなったのです。

ここまでなら便利な機能が増えて良かった良かったとなるのですが、現
実はそうも行かないのでした。

MySQLはサーバもクライアントもデフォルトでlatin1という文字コード(?)を
使用します。latin1というのは名前の通りの文字コードで、漢字とかはか
らっきしダメです。MySQLサーバで何も指定せずにDBを作るとその中の
テーブルでは基本的にlatin1を使う事になりますので、日本向けのサー
ビスでMySQLを使用するなら、大抵はujis(EUC-JP),sjis(Shift_JIS),utf8(U
TF-8)のどれかを指定してDBを作ります。

DBの文字エンコーディングをUTF-8にして、DBサーバに対してクライアン
トとなるアプリケーションからUTF-8のINSERT SQLを発行した場合、問
題なく動きそうですが、MySQLのクライアントは何も設定していなければ
SQLの文字エンコーディングがlatin1だとサーバに通知するので、サーバ
ではlatin1からDBの文字エンコーディングであるUTF-8へ変換するルー
ルを送られてきたUTF-8に適用してしまい、大抵の場合文字化けしてグ
チャグチャになります。

4.1より前のバージョンではこういう変換は行われなかったため、その時
代に書かれたアプリケーションの中には動かなくなるものもあり対策が
必要になりました。

124 名前:NAME IS NULL mailto:sage [2008/12/22(月) 05:19:04 ID:???]
skip-character-set-client-handshake

ってどこに設定するのかな?

125 名前:NAME IS NULL mailto:sage [2008/12/22(月) 08:00:40 ID:???]
「SQLインジェクション対策でプリペアドステートメントを使おう」
って記事をよく見かけるのですが、
プリペアドステートメントの使いかたが
わかりません

126 名前:NAME IS NULL mailto:sage [2008/12/22(月) 08:03:27 ID:???]
jp.php.net/manual/ja/pdo.prepared-statements.php

ここのページに

「アプリケーションで明示的にプリペアドステート
メントを使用するように すれば、SQL インジェク
ションは決して発生しません」

って書いてあるのだが、文字コードに
シフトJISを使っている場合は、
プリペアドステートメントでも通過されて
しまうよね?

127 名前:NAME IS NULL mailto:sage [2008/12/22(月) 09:26:33 ID:???]
SQLインジェクション対策で、
mysql_real_escape_string を使ってエスケープするのと、
preparedstatement と使う方法と、
2種類あるようですが、
どっちを使うべきなのですか?

128 名前:NAME IS NULL mailto:sage [2008/12/22(月) 18:29:38 ID:???]
prepareが使える環境ならprepare

129 名前:NAME IS NULL mailto:sage [2008/12/22(月) 18:29:46 ID:???]
>>126
>文字コードにシフトJISを使っている場合は、

何コード使ってようが、関係ないと思う。

>プリペアドステートメントでも通過されてしまうよね?

「通過されてしまう」とは?

>>127
一般論としては、prepared statement なんだろうけど、
クエリーキャッシュが効かなくなるとかの難点もある。

130 名前:NAME IS NULL mailto:sage [2008/12/22(月) 18:40:36 ID:???]
SJISなら発生するか文字化けするか二択じゃないの?
入力時に文字化けさせて出力時に修正して表示する、とかならあるだろうけど



131 名前:NAME IS NULL mailto:sage [2008/12/22(月) 20:04:52 ID:???]
5.1ではPrepared Statementでもクエリーキャッシュが効いちゃったりなんかしちゃったり
dev.mysql.com/doc/refman/5.1/en/query-cache-how.html

132 名前:NAME IS NULL mailto:sage [2008/12/23(火) 03:56:48 ID:???]
pc11.2ch.net/test/read.cgi/php/1228667259/820

この質問ってどうなの?
レンタルサーバーでmy.cnfが
編集できない、って問題なんだけど。

どうやって回避するのが普通なの?

133 名前:NAME IS NULL mailto:sage [2008/12/23(火) 04:03:18 ID:???]
CREATE/DROP TEMPORARY TABLE と、TEMPORARY TABLE への INSERT/UPDATE/DELETE/SELECT
だけができるようなアクセス権限設定は可能でしょうか?
CREATE TEMPOARY TABLE テーブル名を決め打ちするくらいしか思いつきませんでした。



134 名前:NAME IS NULL mailto:sage [2008/12/23(火) 07:17:53 ID:???]
myisam の場合は、myisampack するとテーブルが ReadOnly になるので、
実質的には temp table しか変更できなくなるけど。


135 名前:NAME IS NULL mailto:sage [2008/12/23(火) 15:00:45 ID:???]
データベース example1 があったとき、このデータベースの default character set を調べるにはどうしたらいいですか。

136 名前:NAME IS NULL mailto:sage [2008/12/23(火) 15:36:02 ID:???]
show create database example1;


137 名前:NAME IS NULL mailto:sage [2008/12/23(火) 16:06:11 ID:???]
>>136
ちょーさんくすです。

138 名前:133 mailto:sage [2008/12/23(火) 17:36:15 ID:???]
どうもありがとうございます >>134

InnoDB 使っているのですが、一時作業用にDATABASEを作っておいて、
そこではなんでもできる権限を付与するのがいいのかなあ。


139 名前:NAME IS NULL mailto:sage [2008/12/23(火) 21:57:04 ID:???]
インストール直後の設定がうまくいかない・・・。

140 名前:NAME IS NULL mailto:sage [2008/12/23(火) 23:49:43 ID:???]
>>132
charset はサーバ単位じゃなくても、データベース/テーブル/カラム単位に設定できるので、好きにしなされ。



141 名前:NAME IS NULL mailto:sage [2008/12/24(水) 03:42:50 ID:???]
質問です。
PHPから操作するときなんだけど,hoge1ていうテーブルをuseするとき,
mysql_selectdb("hoge1");

mysql_query("use hoge1");
って何か違うの?

142 名前:NAME IS NULL mailto:sage [2008/12/24(水) 07:11:15 ID:???]
最終的にそのPHPスクリプトが掴んでいるMySQLサーバーとのセッション上で
use hoge1 と同等の処理を実行するという点では同等だと思います >>141

個人的には MySQL と PHP のどちらに処理を寄せるかの趣味の問題かな、という気が
しますけれども、どちら派が多いのですかね。SQL文レベルでの紛れを嫌うのであれば
PHP上で mysql_selectdb を使う方が無難ですかねえ。

php5-5.2.4 のソースコードを眺めてみましたが、mysql_selectdb の方は最終的に
MySQL C API の mysql_select_db() を呼び出しているようです。

mysql_query の方は(当然ながら)引数として何でもありなので最終的には MySQL C API
の mysql_real_query() を呼び出しているようです。

mysql-5.0-5.0.51 のソースコードを眺めたところでは mysql_select_db() の
mysql_real_query() どちらも実質的には(マクロですが) simple_command()
を発行しているだけかな…最終的にサーバーと通信する際に流れる(MySQLプロ
トコルの)パケットは同じになるような気がします(けど調べ方がわからない)。




143 名前:NAME IS NULL mailto:sage [2008/12/24(水) 08:01:39 ID:???]
>>140
違うよ
データーベース側の文字コードと、
クライアント側の文字コードを、同じとみなす、、
って設定をどうやるのか、って聞いてるの。

明示的に指定しないと、MySQLは、デフォルトで
lation-1を勝手にあてはめやがるから。

144 名前:NAME IS NULL mailto:sage [2008/12/25(木) 11:23:14 ID:???]
WinXPproSP3でMySQL5.0を使用しております

小一時間ほど前からMySQLを始めたのですがバックアップの項目でつまっています
何が間違っているか教えていただけないでしょうか?
mysqldump -uroot -pxxxxxx -hlocalhost test > c:\Documents and Settings\xxxxxx\test.sql
と入力すると
ERROR:
Unknown command '\D'.
Outfile disabled.
Outfile disabled.

と表示されてしまいます
\Dがひっかかってるのは一目瞭然なのですが、教本ではこれでバックアップが出来てるようです
ためしに/Dや\d、/dなどに変えてみても(他の\も/に変えてます)同じようにOutfile Disabledと出てしまいます
何が問題なのでしょうか?

145 名前:NAME IS NULL mailto:sage [2008/12/25(木) 12:18:13 ID:???]
すみません、自己解決しました
MySQLのコマンドラインからじゃなくて、Winにくっついてるほうからなんですね

146 名前:NAME IS NULL mailto:sage [2008/12/26(金) 10:23:55 ID:???]
www.google.co.jp/trends?q=MySQL

MySQL
じわじわ低下しとる

147 名前:NAME IS NULL mailto:sage [2008/12/26(金) 19:38:15 ID:???]
3000レコードほどのデータベースを更新する処理を考えています。

UPDATE hoge SET key = val, key = val, WHERE id = 1
UPDATE hoge SET key = val, key = val, WHERE id = 2

と3000個クエリを発行するのと、

REPLACE hoge (key,key) VALUES (val,val), (val,val)...
としてひとつのクエリで済ませるのではどちらが早いものなのでしょうか。

148 名前:NAME IS NULL mailto:sage [2008/12/26(金) 19:39:02 ID:???]
Syntax Errorですね。上のWHEREの前のコンマは不要です。

149 名前:NAME IS NULL mailto:sage [2008/12/26(金) 19:50:10 ID:???]
それってやってることが違うよね?
UPDATE: 空振りしたらなにもしない
REPLACE: 空振りしたらINSERTする

150 名前:NAME IS NULL [2008/12/26(金) 21:40:18 ID:OVbkJfdS]
突然すみません。
質問させていただきます。
現在MySQLを使っていて以下のようなエラーが出力されました。

・・・・
File "/usr/lib/python2.4/site-packages/MySQLdb/connections.py", line 35, in defaulterrorhandler
raise errorclass, errorvalue
OperationalError: (2013, 'Lost connection to MySQL server during query')

以前はこのクエリーで問い合わせで来ていたのですが現在は上のようなエラーが出力されて
クエリー結果が返ってきません。

どなたかわかる方がいらっしゃったら回答の程よろしくお願いいたします。



151 名前:NAME IS NULL mailto:sage [2008/12/27(土) 00:19:53 ID:???]
>>149
空振りはしない前提です。
UPDATE hoge (key,key) VALUES (val,val)という記法が使えないので、
REPLACEでユニークなキーを指定してやり、UPDATEの代わりにします。
INSERTはたくさん結合させてひとつのクエリにした方が早かったので類推しました。

今は少し忙しいので、暇が出来ればちょっとベンチマークを組んでみます。
誰かご存じの方がおられたらよろしくお願いします。

>>150
クエリが長すぎるのではないでしょうか。
他にもいくつかの理由が考えられますが、
Lost connection to MySQL server during queryで検索するといろいろ出てきます。

152 名前:NAME IS NULL mailto:sage [2008/12/27(土) 19:21:15 ID:???]
>>148
できるよ。
以上。
はい、次。

153 名前:NAME IS NULL mailto:sage [2008/12/27(土) 22:36:05 ID:???]
全部変えたいならWHERE句はずせば1行ですむのでは

154 名前:NAME IS NULL mailto:sage [2008/12/28(日) 00:55:41 ID:???]
>>153
すみません、書き方が悪かったです。
ひとつひとつデータが違うので、その手は使えないのです。


155 名前:NAME IS NULL mailto:sage [2008/12/28(日) 08:37:22 ID:???]
データーベースのエンジンいっぱいあるけど、
自分が調べた範囲ではINNODBが一番よさそうなんだけど、
普通はINNOを選択しておけばいいの?

156 名前:NAME IS NULL mailto:sage [2008/12/28(日) 09:57:30 ID:???]
>>154
だったら id IN() で1000個並べたら1行で済む。

157 名前:NAME IS NULL mailto:sage [2008/12/28(日) 10:55:18 ID:???]
InnoDBでよいよ

158 名前:NAME IS NULL mailto:sage [2008/12/28(日) 13:50:43 ID:???]
オレ、いまだにMyISAMなんだが
時代にとりのこされてるのか?
特に困ったことないけど。

159 名前:NAME IS NULL mailto:sage [2008/12/28(日) 13:55:09 ID:???]
困ってないなら、それでいいやん

160 名前:NAME IS NULL mailto:sage [2008/12/28(日) 17:32:34 ID:???]
トランザクションを使えないのでは?



161 名前:NAME IS NULL mailto:sage [2008/12/28(日) 19:35:36 ID:???]
トランザクションと全文検索が一緒にできるようには
もうならないのかな
結構待ってるんだけど…

162 名前:NAME IS NULL mailto:sage [2008/12/29(月) 11:29:25 ID:???]
@ITのDBセミナー(ORACLE)でMySQLはVerがすぐあがる
そのたびにVerUp作業が入るから・・・と否定的な発言があったけど
実際使ってる人どうですか?

乗り換えを考えています

163 名前:NAME IS NULL mailto:sage [2008/12/29(月) 11:51:40 ID:???]
いまだに4.0.20aですが そろそろ乗り換えた方が良いですか?

164 名前:NAME IS NULL mailto:sage [2008/12/29(月) 11:59:51 ID:???]
テーブルを作り替えなきゃならないのかどうか、GRANT 関連が変わったかどうか、
取り敢えずこの二つは、リリースノートの最初に大書して欲しいものだとは思う。

165 名前:NAME IS NULL mailto:sage [2008/12/29(月) 18:43:27 ID:???]
MySQLのバージョンアップは相当遅い部類だと思うけど。
5.0 2005/10
5.1 2008/11

Oracle
10.1 2004/04
10.2 2005/06
11.1 2007/10

166 名前:NAME IS NULL mailto:sage [2008/12/29(月) 19:02:41 ID:???]
マイナーバージョンアップだと思って痛い目に遭う事を言ってるんじゃないの?
5.0.3 と 5.0.5 とで違うとか聞いたが。

167 名前:NAME IS NULL mailto:sage [2008/12/29(月) 20:29:56 ID:???]
誰かSSDをキャッシュとして利用したZFS上でMySQL動かした人いますか?
blogs.yahoo.co.jp/chototsu_moushinp/44846634.html

168 名前:NAME IS NULL mailto:sage [2008/12/29(月) 20:35:48 ID:???]
SSD,安くなったとは聞いたがそんなことが出来るのか

はてなの全文検索で、DB全部メモリに乗っけるのがこの前話題になってたな
そりゃ早いわ

169 名前:NAME IS NULL mailto:sage [2008/12/29(月) 21:01:23 ID:???]
MySQLの定番ベンチマークって何がいいですか?
DBエンジンによってはファイルシステム次第かもしれませんが。
rawデバイスに乗せるっていうのを誰かやっていたような。

170 名前:NAME IS NULL mailto:sage [2008/12/30(火) 03:54:54 ID:???]
若葉マーク



171 名前:NAME IS NULL mailto:sage [2008/12/30(火) 04:49:37 ID:???]
Mysqlのある要素の最終行の値を取得するクエリがわかりません

select [ある要素] from [table名] where 〜;

こんな感じで取得するクエリを教えてください

172 名前:NAME IS NULL mailto:sage [2008/12/30(火) 05:00:09 ID:???]
【質問テンプレ】
・MySQL5.0
・欲しい結果:最終行のある要素の値
Mysqlのある要素の最終行の値を取得するクエリがわかりません

select [ある要素] from [table名] where 〜;

こんな感じで取得するクエリを教えてください

173 名前:NAME IS NULL mailto:sage [2008/12/30(火) 06:27:57 ID:???]
最終行の定義を述べないと誰も答えられんと思う。

174 名前:172 mailto:sage [2008/12/30(火) 09:34:40 ID:???]
>>173
最終行は未ソートの状態で、一番最後にくる行です
select [ある要素] from [table名];
で一番最後にくる行です

175 名前:NAME IS NULL mailto:sage [2008/12/30(火) 10:47:23 ID:???]
OracleでもMySQLでも未ソート時の並び順は決まってない。
最後に何がくるかは分からない。


176 名前:172 mailto:sage [2008/12/30(火) 12:53:28 ID:???]
>>175
少し条件を変えます
[ある要素]はそのテーブル内での最大値が最終行にくるようになっています
その場合に最大値の値が取得できるようにしたいです

177 名前:172 mailto:sage [2008/12/30(火) 12:58:58 ID:???]
すいません
select max([カラム名]) from [table名];
でいいのですね、ご迷惑をおかけしました

178 名前:NAME IS NULL mailto:sage [2008/12/30(火) 18:12:21 ID:???]
MySQLってもしかして、サーバーのIPアドレスと、
ユーザーIDと、パスワードがばれると、
全然関係ない人から、勝手にサーバーに
アクセスされて、データーベースを使われてしまったりするの?

179 名前:NAME IS NULL mailto:sage [2008/12/30(火) 18:21:04 ID:???]
アクセス元(のIPアドレスとかFQDNとか)で制限掛けてあれば、全然関係ない人からはアクセスされない。
その許可されているアクセス元の別のユーザが、ユーザID/パス盗めば、当然アクセスされる。
でも、MySQL に限らないんじゃないの?

180 名前:NAME IS NULL mailto:sage [2008/12/31(水) 16:42:15 ID:???]
下記のエラーについて質問させてください。

Disk is full writing /var/lib/mysql/db/CBSC.MYI

LOGファイルなら削除で即解決だと思うのですが、
MYIファイルなのでどのように対応したらいいか分かりません。
出来ればMYIファイルを削除せずに下記のエラーが出ないようにしたいのですが、
何か良い対応方法はありませんか?






181 名前:NAME IS NULL mailto:sage [2008/12/31(水) 17:15:38 ID:???]
それインデクスファイルだから、「出来れば削除せずに」どころではなく、そもそもインデクスができてない。
もうディスク増設した方がいいと思う。
どうしても現状のままというなら、まず *.MYI だけ他パーティションに移して、今の場所からは /bin/ln -s 新 旧 と
シンボリックリンク張ってから、myisampack してみるとか。(してる途中で disk full になっても知りませんよ)

182 名前:NAME IS NULL mailto:sage [2008/12/31(水) 17:43:28 ID:???]
とりあえずdf -kでディスク状況を確認する事が先決だと思う。
/var/lib/mysqlに別パーティションをマウントしているならともかく、
/varが丸ごと一つのパーティションに乗っかっているとMySQL以外
にも色々問題が出てきますよ。

183 名前:NAME IS NULL mailto:sage [2009/01/02(金) 09:00:58 ID:???]
HABTMリレーションを編集するときって
トランザクション使って一度全部消してから追加します?
それとも差分を求めて処理します?

auto_incrementのidがどんどんあがっていくのが・・・。
まあ1ユーザに1000回発行し直しても400万ユーザとかにならないと使い切らないんだけど。


184 名前:NAME IS NULL mailto:sage [2009/01/02(金) 17:34:02 ID:???]
>>183
>トランザクション使って
そういう方法もあったか、なるほろ

185 名前:NAME IS NULL [2009/01/03(土) 01:14:49 ID:OWNTkQLX]
ここの人は頭良いんだなぁ
俺はインストールすらできず、2日目だw

186 名前:NAME IS NULL [2009/01/03(土) 03:51:17 ID:OWNTkQLX]
やっとインストールできた。
さぁこれからPHPとAPACHE

187 名前:NAME IS NULL mailto:sage [2009/01/03(土) 18:35:19 ID:???]
>>185
ローカルならXAMPだかMAMPだか使えば

188 名前:NAME IS NULL mailto:sage [2009/01/03(土) 19:22:32 ID:???]
質問です。PHPからMySQLにクエリを送るとき。

型が文字列の変数$hoge を,型が int のカラムに insert したいのだが,

$sql = "INSERT INTO `table` (`column`) VALUES ('$source');"
mysql_query($sql) or die(mysql_error());

としたら,$hoge が""(空文字列)だと 0 が insert されるよね。

空文字列なら NULL が insert されるようにしたいんだが,どうすればよい?

189 名前:NAME IS NULL mailto:sage [2009/01/03(土) 20:14:01 ID:???]
なんかすごくおっかない書き方なんだけど、PHPだとこれが普通なの?

190 名前:NAME IS NULL mailto:sage [2009/01/03(土) 20:39:16 ID:???]
普通はストアド
それだと分かりにくくなるから直書きしてる
全部mysql_real_escapeされてる前提だろ

と信じたい



191 名前:NAME IS NULL mailto:sage [2009/01/03(土) 20:41:46 ID:???]
>>188
とりあえずNULLにしたいだけなら

if($hoge == 0)$hoge = "NULL";
else $hoge = "'$hoge'";

みたいなの書けば解決
DB側からのアプローチは知らん

192 名前:NAME IS NULL mailto:sage [2009/01/03(土) 20:50:17 ID:???]
columnの型がintであるとわかっているのであれば、文字列から整数
への変換はクエリに値を埋め込む前に行っておくべきだと思う。
$sourceの値として空白文字列があり得るような実装がおっかない。

193 名前:188 mailto:sage [2009/01/03(土) 21:18:28 ID:???]
188です。3行目の $source は $hoge の間違い。

>189>190
ごめん,始めたばっかなんで。どうすればよりよい?
ストアドプロシージャは一応勉強したけど,この場合どう使えばいい?
>191
できた。ありがとう。""と''の違いとsqlでの挙動がいまいち分かってなくて。
>192
フォームから入力を受け取ってDBに登録することを考えている。
もし入力がなかったらNULLにしたい。
そういうときは,$source に渡す前に空白文字列はNULLにしとけ,ってことかな。

194 名前:NAME IS NULL mailto:sage [2009/01/03(土) 21:42:29 ID:???]
>>193
ユーザが入力した文字列を直接SQLに埋め込むのはとても危険。
エラーやセキュリティホールの元なので基本的には禁じ手。

なので、$sourceに渡す前に$hogeの内容を適切に処理する必要がある。
色々方法があるけど、今回はcolumnがint型なので、is_numeric関数
で文字列が数値表現かどうか調べて、intval関数でint型の値に変換。
SQLに値を埋め込む時はこの変換したint型の値を、入力された文字列
の代わりに用いる。
これらの処理の合間に入力値が有効範囲か確認してエラーを返したり
入力値が無かったらNULLをINSERTするなどの処理を書けばよい。

さらにprepared statemementを使うと確実。

195 名前:NAME IS NULL mailto:sage [2009/01/03(土) 22:06:32 ID:???]

これ以上はスレチだからwikiなんかを当たって欲しいが
ja.wikipedia.org/wiki/SQLインジェクション

俺はXSS関連はめんどくさいから
$_POST = array_map("hoge",$_POST);
$_GET = array_map("hoge",$_GET);
とかやってるお
hogeでmysql_real_escapeやらhtmlspecialcharsやら処理

196 名前:NAME IS NULL mailto:sage [2009/01/03(土) 22:11:09 ID:???]
あ、ごめんストアドプロシージャならこのスレが正しい

訂正ついでに
プリペアドステートメントでもストアドプロシージャでも
XSS対策には似たような効果を示す。(ただmysqliを使う必要があるが)
ttp://php.s3.to/man/pdo.prepared-statements.html

まあここらへんはだんだん慣れてくるとおもうお

197 名前:NAME IS NULL mailto:sage [2009/01/04(日) 12:43:48 ID:???]
質問です。
phpMyadmin等ツールで一定の時間ごとにオーバーヘッドの解消を行いたいのですが、そのようなことは可能でしょうか?

198 名前:NAME IS NULL mailto:sage [2009/01/04(日) 13:02:40 ID:???]
オーバーヘッドの解消ってなんのこと?

199 名前:NAME IS NULL mailto:sage [2009/01/04(日) 17:57:51 ID:???]
>>198
phpMyAdminで見ると、項目としてあるみたいね。
ttp://oshiete1.goo.ne.jp/qa1155748.html

>>197
cronとかでoptimize tableしたら?

200 名前:NAME IS NULL mailto:sage [2009/01/04(日) 18:02:23 ID:???]
>>197
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1413558214



201 名前:NAME IS NULL [2009/01/07(水) 00:24:22 ID:DIhm5u7H]
ttp://blogs.ricollab.jp/webtech/2008/07/mysql_ndb_cluster/
上記サイトを参考にmySQL Clusterをインストールし、動作確認もとれたのですが、

ttp://www.thinkit.co.jp/article/95/5/
> config.iniを変更したら、まず管理ノードを再起動します。再起動するには、ndb_mgmコンソールにおいて「ノードID RESTART」を実行します。以下は管理ノードのIDが1の場合の手順です。
>
> ndb_mgm> 1 RESTART
>
> ノードが再起動するため、ndb_mgmはいったん接続が切れてしまいますが、しばらくすると自動的に接続を再開します。

SSHで接続した端末上で操作しているのですが、
Node 1 is being restarted
と出てそれっきりで、プロンプトに戻らなくて困っています。
私の環境の管理ノードのIDも同じく1です。何か間違っているのでしょうか、、、

ちなみに管理ノードへの接続も
connect 管理ノードのIPアドレス
と打たないとshowだけでは接続できません。上記動作確認云々はconnectを入力しての確認です。

どなたかアドバイスいただけませんでしょうか?

202 名前:うんこ [2009/01/07(水) 11:48:53 ID:SjBm8/3o]
一つのテーブルに100万レコード入れました。カラムは10。
セレクトは俊足でさすがmysqlと言えますがinsertが遅すぎます。

PHPのループでレコード内容を自動作成して流し込んだのですが
100万入れるのに数時間かかりました。
(PHPのループを止めてからが長い)

このまま1000万レコードを超えたいのですが
もっと高速に入れる方法ないですか?

先にPHPループでtextデータを作って逆ダンプで入れると早いですか?

203 名前:NAME IS NULL mailto:sage [2009/01/07(水) 12:21:48 ID:???]
>>202
複数行INSERTする構文があるからそれで100行ずつ入れてみて。

INSERT INTO tbl_name (a,b,c)
VALUES(1,2,3),(4,5,6),(7,8,9);


204 名前:NAME IS NULL mailto:sage [2009/01/07(水) 12:23:41 ID:???]
あとInnoDBだったらautocommitはOFFにして、
1万行ごとにCOMMITして。

205 名前:NAME IS NULL mailto:sage [2009/01/07(水) 13:58:36 ID:???]
MySQLに限らず、大量にINSERTするときはトランザクションにしたほうが速い。

206 名前:NAME IS NULL mailto:sage [2009/01/07(水) 16:22:56 ID:???]
トランクザションが早いと言うより、同時に行われるロック処理のおかげもある希ガス
ソースは俺

207 名前:うんこ [2009/01/07(水) 16:27:06 ID:SjBm8/3o]
>>203-204
分かりました。今からやってみます。
ようするにPHPループで100回データ作成 → 一回insert って流れですね


あと一つ別の質問なんですが100位カラムがあるテーブルを作ったのですが
当面カラム1〜20位までしか使わないつもりなんです。
しかし後半の20〜100までのカラムの中にnot null属性のものが多数あり、
適当に何かを入れなければレコードが入りません。
かといってnot null属性を解除すると後でまた設定めんどくさいし。

こういう場合、not null属性を無視してinsertできたりすると助かるのですが
そういうSQL文無いですか?

208 名前:NAME IS NULL mailto:sage [2009/01/07(水) 16:39:16 ID:???]
>>207
NOT NULLならデフォルトが空文字列になるはず

209 名前:NAME IS NULL mailto:sage [2009/01/07(水) 16:49:55 ID:???]
default <value>

210 名前:NAME IS NULL mailto:sage [2009/01/07(水) 17:11:44 ID:???]
ご教示お願いします!
カラムにカンマ割データが入っております。

id:val
1:1,2,3,12,211
2:3,2,11,212
3:2,4,111,331

valの中にカンマ割で入れられているデータの中の
任意数値を検索したいのですが

LIKE %11%で検索すると id 1.2.3全部マッチしてしまいます。
こういう場合、どう検索して良いのか教えてください。

REGEXPという手法を使うのでしょうか。
宜しくお願いします。



211 名前:NAME IS NULL mailto:sage [2009/01/07(水) 17:33:22 ID:???]
11だけにしたかったら%,11,% でよくね?

212 名前:NAME IS NULL mailto:sage [2009/01/07(水) 17:43:11 ID:???]
>>211
レスありがとうございます
この「11」は仮の数字です、すいません・・
その場合だと、先頭に入っていた場合、
最終に入ってた場合にマッチされないので悩んでいます。

213 名前:NAME IS NULL mailto:sage [2009/01/07(水) 22:00:28 ID:???]
いずれ使えるから、正規表現は学んでおいた方がいい。
今回の場合は

REGEXP "(^11|,11,|11$)"

214 名前:NAME IS NULL mailto:sage [2009/01/07(水) 22:17:48 ID:???]
>>212
前方なら11,% 後方なら%,11 これらをorでつなげばよくね そういう応用力ないと生きていけないよ


215 名前:NAME IS NULL mailto:sage [2009/01/08(木) 12:39:41 ID:???]
>>210のテーブル自体が良くない気が

216 名前:NAME IS NULL mailto:sage [2009/01/08(木) 12:51:17 ID:???]
まあそれはその通りだな

217 名前:NAME IS NULL mailto:sage [2009/01/09(金) 12:24:44 ID:???]
おい、おまえらは何のデータベース作ってんだ?
入れる内容が無いんだが
ネットで拾えるデータベースに流用できるエクセルのファイルとか教えろや
郵便番号とか誰でもつくってそうなつまんねーもんつくりたくねーから
おもしろいの教えれ

218 名前:NAME IS NULL mailto:sage [2009/01/09(金) 12:33:30 ID:???]
株のデータなんかいいんじゃない?

219 名前:NAME IS NULL mailto:sage [2009/01/09(金) 13:24:59 ID:???]
>>217
kazina.com/dummy/
これでも入れとけ

220 名前:NAME IS NULL mailto:sage [2009/01/09(金) 13:39:06 ID:???]
>>215
ん、そういった場合 IDで紐付けして別テーブルに
id:x_id:val
1:1:1
2:1:2
3:1:3
4:1:12
5:1:211
6:2:3
7:2:2
8:2:11
9:2:212
こういう感じで入れテクって事かな?





221 名前:210 mailto:sage [2009/01/09(金) 13:43:16 ID:???]
>>213
ありがとございます。
>>214
それだと 1 の時にまずい事になるのです。

222 名前:210 mailto:sage [2009/01/09(金) 13:49:47 ID:???]
追記 213さんのも 前方^スタートと 
最終適応の$のみなので、121の検索で当たっちゃう予感。
やはり カンマ割りで入れるのが間違いなのかな?

223 名前:210 mailto:sage [2009/01/09(金) 13:59:13 ID:???]
やりたかった事書きます。

フォームからのチェックボックス値を保存しておきたかったのです。
radioとは違い複数あるためどうしようか考えていました。

PHPで行っているのですが、フォームから来た 配列をそのまま implode( ',', 配列) として入れちゃえ
んで、読み出したら explodeだと、安易に考えてました。

出来たのは良いけど、検索できない・・と こんな状況であります。
アドバイスお願いします。


224 名前:NAME IS NULL mailto:sage [2009/01/09(金) 14:56:55 ID:???]
インサートするときダブルクオートでくくっておくとかじゃダメ?

225 名前:NAME IS NULL mailto:sage [2009/01/09(金) 15:21:28 ID:???]
REGEXP "(^11,|,11,|,11$|^11$)"
これでどうだ

226 名前:NAME IS NULL mailto:sage [2009/01/09(金) 16:04:18 ID:???]
>>214
これはひどい

227 名前:210 mailto:sage [2009/01/09(金) 16:46:03 ID:???]
>>225
きたっ キタキターッ
いけました! REGREPすごいな 勉強します。
11と1の複合を探したいときは こんな感じでいいのですね

((REGEXP "(^11,|,11,|,11$|^11$)")AND(REGEXP "(^1,|,1,|,1$|^1$)" ))

ありがとうございましたっ!

228 名前:210 mailto:sage [2009/01/09(金) 17:04:26 ID:???]
WHERE `val`
REGEXP '(^11,|,11,|,11$|^11$)'
AND `val`
REGEXP '(^1,|,1,|,1$|^1$)'

こうでした。 ありがとうございました

229 名前:NAME IS NULL mailto:sage [2009/01/09(金) 20:46:21 ID:???]
>>220
そっちの方がいいね

230 名前:NAME IS NULL mailto:sage [2009/01/10(土) 00:47:27 ID:???]
',' . implode( ',', 配列) . ','
として
%,11,%
で検索するのはどうか



231 名前:NAME IS NULL mailto:sage [2009/01/10(土) 01:56:06 ID:???]
>>228
これ、データの件数増えたら物凄く重そうだな・・・

232 名前:NAME IS NULL mailto:sage [2009/01/10(土) 03:53:18 ID:???]
1{1,2}

233 名前:NAME IS NULL mailto:sage [2009/01/10(土) 08:12:42 ID:???]
それ、1111… にもマッチするが。

234 名前:NAME IS NULL mailto:sage [2009/01/10(土) 08:16:50 ID:???]
ttp://www.irori.org/tool/mregexp.html は速いし便利。
create function する権限が要るけど。

235 名前:NAME IS NULL [2009/01/10(土) 13:21:16 ID:AcQDe3FM]
統計で

カラム1 に 県名
カラム2 に 人口
が入ってて

東京区内 8000000
横浜 3500000

って入っていた場合
ボタンを押すとどちらかが選ばれるとして
単純にselectすると東京と横浜が半々の確率で出てしまうのですが
横浜が選ばれる確率を東京の半分位まで下げたいのですが
(つまり人口に応じてselectしたい(東京:横浜=8000000:3500000))
SQL文だけでできますでしょうか?

236 名前:NAME IS NULL mailto:sage [2009/01/10(土) 15:00:28 ID:???]
東京区内レコードを800万個、横浜レコードを300万個インサート。

237 名前:NAME IS NULL mailto:sage [2009/01/10(土) 18:29:43 ID:???]
ここらへん
ttp://d.hatena.ne.jp/llamerada/20080413/1208073687

238 名前:NAME IS NULL mailto:sage [2009/01/10(土) 22:20:18 ID:???]
MySQLであるテーブルのカラムの一部が以下のようになっているとします.
ここから,県名の多いものを上位3つ取得するのってどうすればいいですか?

神奈川
埼玉
神奈川
栃木
埼玉
栃木
茨城
埼玉
茨城
埼玉
埼玉
茨城



こういう感じで全国の県名がたくさん


239 名前:NAME IS NULL mailto:sage [2009/01/10(土) 23:20:46 ID:???]
>>238
SELECT COUNT(*), 県名 FROM 全国 GROUP BY 県名 ORDER BY COUNT(*) DESC LIMIT 3;
かな。

俺も今MySQL勉強中なんだけど、SQL書くとき、大文字で書いてる?小文字?
Oracle 使う人が皆大文字だったから、今はそれに倣って俺も大文字にしてるけど。


240 名前:NAME IS NULL mailto:sage [2009/01/11(日) 00:41:14 ID:???]
テーブルやフィールドと区別付けるために、全部大文字にしてる。



241 名前:NAME IS NULL [2009/01/11(日) 00:51:45 ID:RhaXLY0U]
Perlで、処理に要した時間、例えば 5 rows in set (0.02 sec) なら0.02を
取得する方法はありませんか?

242 名前:238 mailto:sage [2009/01/11(日) 01:30:26 ID:???]
>>239さんありがとうございました

私はSQL文を直接打つ場合は全部小文字です。
プログラムから使用するときは>>240さんと同じ理由で大文字にしてます。

243 名前:NAME IS NULL mailto:sage [2009/01/11(日) 06:02:53 ID:???]
>>241
$handle->execute() の前後を Time::HiRes で測る、というのではだめ?

244 名前:NAME IS NULL mailto:sage [2009/01/11(日) 12:16:43 ID:???]
[tbl1]
id
1
2
3

[tbl2]
id | name | number
1 | 山田 | 18

[tbl3]
bango | name | getup
2 | 橋本 | 15時半

[tbl4]
num | name | memo
3 | 富永 | 遅刻しやすい


tblをベースに
id | name
1 | 山田
2 | 橋本
3 | 富永

のように取得したいのですが、何か良い方法はないでしょうか。

245 名前:NAME IS NULL mailto:sage [2009/01/11(日) 12:19:47 ID:???]
tbl2 に id=2 or 3,(tbl3 に id=1 or3, tbl4 にid=1 or 2)の人はいるのか、いないのか。

246 名前:NAME IS NULL mailto:sage [2009/01/12(月) 11:38:43 ID:???]
as で名前を変えたselect文をunionするとか

247 名前:NAME IS NULL mailto:sage [2009/01/12(月) 11:41:56 ID:???]
つか項目数同じならいいか、unionでtbl1以外を全部まとめてtbl1とjoin

248 名前:NAME IS NULL mailto:sage [2009/01/12(月) 21:12:33 ID:???]
すみません。
オフライン環境でCGI動作テストをしようと
考えているのですが、この場合、MySqlを
どこか特殊なフォルダにインストールしないといけないとか
設定ファイルを書き変えないといけないとかありますか?

CGIからデータベースの読み出しテストをしたいと考えています。

249 名前:NAME IS NULL mailto:sage [2009/01/12(月) 22:03:02 ID:???]
アクセス権限だけ確認して
あとは普段のままでいいと思うけど

250 名前:NAME IS NULL mailto:sage [2009/01/12(月) 23:38:21 ID:???]
>>243
ありがとうございます。
DBIで取得できないだろうかと考えましたが、
やはり自前で測るしかなさそうですね。



251 名前:NAME IS NULL [2009/01/14(水) 13:39:21 ID:F5yNKiWV]
MySQL5.1を使用しています。

MySQLでSQL-Serverのtimestamp(rowversion)型に相当するものはありませんか?
目的は、楽観ロックの実装です。

よろしくお願いします。


252 名前:NAME IS NULL mailto:sage [2009/01/14(水) 15:40:57 ID:???]
文字列検索のとき、半角を含めないで抽出する方法はありませんか?

DB内「山田 雄一」

検索ワード「山田雄一」→Hit

253 名前:NAME IS NULL [2009/01/14(水) 20:05:07 ID:4hR9j4JG]
mysql4を使用しています。webprog版から誘導されて着ました。
amazonのこの商品を買った人はこんな商品も買っています。について
実装してみたいのですが、
www.phppro.jp/qa/1239
について教えてください。4行目
参考までに4行目をわかりやすく書いてもらえないでしょうか?
といったところ、こっちにいけといわれました。
教えてください。よろしくお願いします。
後そのことについて書いてあるサイトや本があれば勉強
したいので買いたいと思います。
よろしくお願いします。

前スレ
pc11.2ch.net/php/#3
>>628からです。


254 名前:NAME IS NULL [2009/01/14(水) 22:55:53 ID:LMJsYGpi]
INSERT SELECT DELETE UPDATE などをまとめて呼ぶ時の呼び方を教えて下さい。

ini exe とかを拡張子=extention みたいに呼ぶ感じです。

255 名前:NAME IS NULL mailto:sage [2009/01/15(木) 00:42:19 ID:???]
>>254
クエリ

256 名前:NAME IS NULL mailto:sage [2009/01/15(木) 00:51:48 ID:???]
>>249
ありがとうございます。試してみます

257 名前:NAME IS NULL mailto:sage [2009/01/15(木) 06:46:22 ID:???]
>>254
ttp://blog-it.izlo.net/?eid=524517
IZLOのIT技術記録 [DB] SQLの区分け (DML,DDL,DCL)


258 名前:NAME IS NULL mailto:sage [2009/01/15(木) 09:23:55 ID:???]
cpuの違いによるパフォーマンスの違いを知りたいのです
詳しいサイトとかあったら教えてください。
i7 と Quad どちらにするか悩んでます

259 名前:NAME IS NULL mailto:sage [2009/01/15(木) 10:44:29 ID:???]
データベースは、一般的にはIO-boundなアプリケーションなので、
メモリを沢山積んでキャッシュが沢山使えることの方が、cpuの性能よりもよく効くことがある。
悩んでいるのがお金のことなら、cpu のグレードアップより、メモリに使うことをお勧めしますが。


260 名前:NAME IS NULL [2009/01/16(金) 15:25:13 ID:C4jLoYAu]
WindowsXPでmysqlの5.1を使用しており、[プログラムの追加と削除]でアンインストールしました。
その後、windowsインストーラーで再度インストールしようとしたら、
下記のところでエラーとなりました。

インストール先のフォルダを選びinstallのボタンを押した所で
Error 1305.Error reading from file c:\......\mysql_server.msi.
Verify that the file exists and that you can access it.
と表示されretryボタンを押しても
Internal Error2755,1622,c:\......\mysql_server.msi
と表示されてしまいます。
どうしたら再インストールできるのでしょうか?



261 名前:NAME IS NULL mailto:sage [2009/01/17(土) 06:24:13 ID:???]
なぜ未だにphpmyadminで文字化けするのか

262 名前:NAME IS NULL mailto:sage [2009/01/17(土) 09:29:37 ID:???]
>>261
どんな釣りだよ

263 名前:NAME IS NULL mailto:sage [2009/01/17(土) 12:29:05 ID:???]
エンコードがおかしいだけだな

264 名前:NAME IS NULL mailto:sage [2009/01/17(土) 23:00:25 ID:???]
なぜ未だに文字化けをなおさないのか、>>261

265 名前:NAME IS NULL mailto:sage [2009/01/18(日) 05:19:04 ID:???]
ワイルドカードの_のうまい使いどころ教えてくれ

266 名前:NAME IS NULL mailto:sage [2009/01/18(日) 19:03:41 ID:???]
pmaのインポートの最長を伸ばしたい

267 名前:NAME IS NULL mailto:sage [2009/01/18(日) 19:47:08 ID:???]
pmaをとりあえずutf-8に設定して、インポートするファイルも全部utf-8してうまく行く。
でも、shift-jis前提で書かれてるひろってきたファイルで、VARCHAR(10)とかになってると
全角三文字までしか読み込んでくれねぇ
四文字目が?っぽいで表示される
VARCHAR(20)とか増やしてやれば問題なく表示される・・
が、実にめんどくせぇ

268 名前:NAME IS NULL [2009/01/18(日) 22:22:13 ID:iOt6nmH3]
mysql4.1で-oオプションでも修復できない場合は
trancateするかバックアップファイル使うしかないのでしょうか?

myisamchk --safe-recover hoge.MYI
- recovering (with keycache) MyISAM-table 'hoge.MYI'
Data records: 1954768
myisamchk: error: 5 for record at pos 54688288

269 名前:NAME IS NULL mailto:sage [2009/01/19(月) 02:14:35 ID:???]
>>267
そら当たり前だ

270 名前:NAME IS NULL mailto:sage [2009/01/19(月) 09:17:59 ID:???]
RAND()でselectした時が遅すぎる
PHPなどのrand()に頼らざるをえない現実



271 名前:NAME IS NULL mailto:sage [2009/01/19(月) 13:09:29 ID:???]
>>270
1行評価するごとに乱数生成するからな。
ぶっちゃけ全行なめることになったりする。

272 名前:NAME IS NULL [2009/01/20(火) 08:02:26 ID:1xX6/ChS]
プライマリーキーとユニークインデックスは
どちらも重複した値をいれられない機能だけど
どう使い分ければいいの?

273 名前:NAME IS NULL mailto:sage [2009/01/20(火) 14:24:06 ID:???]
プライマリーな所にプライマリーキー
プライマリーじゃなくてユニークなところにユニーク
でいいよ

274 名前:NAME IS NULL mailto:sage [2009/01/20(火) 21:47:40 ID:???]
>>272
プライマリキーにはNULLは入れられない。
あと、InnoDBはプライマリキーを特別扱いする。

275 名前:NAME IS NULL mailto:sage [2009/01/20(火) 23:31:16 ID:???]
説明しにくいんだけど、pmaでテーブルを影響しないフォルダー式にまとめられないかな
左サイドバーにテーブル一覧があるけど、それを

データベース1

・テーブルa
・テストフォルダ
 └テーブル1
 └テーブル2
 └テーブル3
・テーブルb
・テーブルc


みたいな感じでまとめたいんだが

276 名前:NAME IS NULL [2009/01/21(水) 00:00:08 ID:tOxCxYfe]
サーバAで、mysqlクライアントのオプションhを使ってサーバBに接続した場合、
サーバBに接続していることをサーバAで動いているmysqlクライアント上で知る方法はありますでしょうか?

mysqlクライアントで、system hostnameとやっても当然のことながらサーバAが表示されてしまいます。


277 名前:NAME IS NULL mailto:sage [2009/01/21(水) 01:32:07 ID:???]
dev.mysql.com/doc/refman/4.1/ja/example-maximum-column-group-row.html
の「特定のフィールドのグループごとの最大値が格納されているレコード」のサブクエリの流れが分からないのですが、どのような流れになっているのでしょうか。

何故最大値を持ったレコードが表示されるのでしょうか。

特に
WHERE s1.article = s2.article
の部分が複雑怪奇に見えます。

278 名前:NAME IS NULL mailto:sage [2009/01/21(水) 02:12:09 ID:???]
基礎中の基礎すぐる

279 名前:NAME IS NULL mailto:sage [2009/01/21(水) 06:14:59 ID:???]
>>277
「自己結合  SQL」でぐぐってみたら

280 名前:NAME IS NULL mailto:sage [2009/01/21(水) 07:41:56 ID:???]
>>276
show variables like 'host%';




281 名前:NAME IS NULL [2009/01/21(水) 14:45:55 ID:mfrhRDVy]
ルシーンのインストール方法と使い方教えて
必要なのは何と何よ

282 名前:NAME IS NULL [2009/01/22(木) 07:02:33 ID:lsEiWNPR]
MySQLの書籍で、
*.MYIファイルのサイズの総合計が、メモリーを超えないようにする、
というノウハウを読んだのですが、
これが超えた時はどうなるのでしょうか?
使い物にならないほど低速になってしまうのでしょうか?
インデックスがたとえすべてメモリーに載らなくなっても、
少し遅くなる程度で済むのではないかなーとも思うのですが。
最近MYIファイルがだんだん肥大化して心配になってきました。

283 名前:NAME IS NULL mailto:sage [2009/01/22(木) 09:32:49 ID:???]
MYIファイルのサイズなんて制御できないのに
その本は何を意図してそんなことを書いているんだろう

284 名前:NAME IS NULL mailto:sage [2009/01/22(木) 10:07:29 ID:???]
表現は違っていたと思います
サーバパラメータkey_buffer_sizeはmyiファイルがすべて収まる程度が望ましいとか、
そういった表現だったと思います。

285 名前:NAME IS NULL mailto:sage [2009/01/22(木) 11:48:27 ID:???]
メモリ不足でスラッシングが発生したPCを操作したことがあるかい?

286 名前:NAME IS NULL mailto:sage [2009/01/22(木) 15:53:48 ID:???]
メモリ不足云々の前に、そんなでかすぎるインデックスで性能が出るのか気になる。

287 名前:NAME IS NULL mailto:sage [2009/01/23(金) 08:51:19 ID:???]
ファイルアップローダーとかでさAUTO_INCREMENT
で連番してたとき、例えば、

番号
125
124  ←アップロードされると自動で番号がついていく
123
122  ←122がデリートされても、次アップロードされれば126で連番してくれる
121



でも、もし125が一番上にある状態でデリートされたとき、次アップロードされると125になって
ファイル名がかぶるとおもうんだけど、これはどうやって回避するんだろ
デリートしたときintにnull値を入れたらどうなるかなと思ったんだけど、
やり方がわからん。
で、ひとつ考えたのが、ファイル番号と同じ番号を文字型でつける
デリート用のフィールドを追加しようとおもったんだけど、
何かもっと良い方法ないですかね

288 名前:NAME IS NULL mailto:sage [2009/01/23(金) 08:56:36 ID:???]
ファイル名じゃなくてファイル番号だった

289 名前:NAME IS NULL mailto:sage [2009/01/23(金) 09:11:51 ID:???]
max(id)

290 名前:NAME IS NULL [2009/01/23(金) 11:12:15 ID:J9AFOiAf]
>>280
うそつき。
hostなんとかっていう変数なんて存在しない
ちなみにバージョンは5.0だ。




291 名前:NAME IS NULL [2009/01/24(土) 04:26:19 ID:rHkPhZlq]
mysqldumpで出力されたsql(sjis→utf8に自動変換)をmysqlに入れると
何故か文字化けするのですが、どういった原因が考えられるでしょうか?
インポート先のmysqlはutf8で揃えており、エンコーディング関係の各変数は以下です。

character set connection utf8
character set database utf8
character set filesystem binary
character set results utf8
character set server utf8
character set system utf8
character sets dir /usr/local/mysql/share/mysql/charsets/
collation connection utf8_unicode_ci
collation database utf8_general_ci
collation server utf8_general_ci

292 名前:NAME IS NULL mailto:sage [2009/01/24(土) 05:51:42 ID:???]
テーブルわけまくって管理しようとしたけど、
一度のクエリで複数のテーブルにレコード入れるのはmysqlじゃ無理なのか・・

293 名前:NAME IS NULL mailto:sage [2009/01/24(土) 07:12:56 ID:???]
どんなクエリ?

294 名前:NAME IS NULL mailto:sage [2009/01/24(土) 10:41:22 ID:???]
>>293
普通に一つinsertする手順で、
insert〜values
insert〜values



みたいに・・phpmyadmin上でやってみたんだけどエラーがでた
なんか複数 insertでぐぐたりしてたらinsert allなるものが出てきたけど
やり方が悪いのか、できなかった

295 名前:NAME IS NULL mailto:sage [2009/01/24(土) 10:58:05 ID:???]
(カラム名,カラム名,カラム名) VALUES(値,値,値)
でまとめて挿入できるじゃん

296 名前:NAME IS NULL mailto:sage [2009/01/24(土) 12:45:13 ID:???]
テーブル1  テーブル2
カラム1    カラム2
1        10
2        20

ってあったときに、一回でカラム1とカラム2にそれぞれ3と30を入れたいんだ。

  テーブル1
カラム1 カラム2
1     10
2     20

だとinsert テーブル1(カラム1,カラム2) VALUES(.3,30)でいけるけど

297 名前:NAME IS NULL mailto:sage [2009/01/24(土) 13:11:24 ID:???]
joinか

298 名前:NAME IS NULL mailto:sage [2009/01/24(土) 13:11:58 ID:???]
なんで一回?

299 名前:NAME IS NULL [2009/01/24(土) 14:14:21 ID:32C+myFd]
パーティションが試してみたくて、参考書を参考にしてMySQL5.1を入れたんだが、
参考書には、configureで、--with-partitionを指定するとパーティションが入るとあった。
でも、configure --helpみると、--with-partionなんてオプションはない。
どういうことなんだろ?

ちなみに、バージョンは、mysql-5.1.29-rcです。




300 名前:NAME IS NULL mailto:sage [2009/01/24(土) 15:05:46 ID:???]
with-<plugin name> っていうconfigure構文がついてて
いまんとこ--helpでは表示されない模様。



301 名前:NAME IS NULL [2009/01/24(土) 18:15:50 ID:u1WNrIEs]

Winnyの情報流出を管理・指導する国のIPA職員 岡田賢治 主任が違法ファイルDLしまくり感染して流出したドキュメント類。
嫁以外の女とのエッチ写真や、幼女児童ポルノ、違法アプリ所持、違法アプリバラ蒔き証拠など大量に流出。

★郵政省(今の総務省)、日立製作所、博報堂、味の素・・・と凄い流出規模!
ruru2.net/jlab-ruru/s/ruru1232764892388.jpg
★本人は著作権無視で違法ファイルダウンしまくりのくせに、著作権を勉強して知的所有権管理資格持ってるw
ruru2.net/jlab-ruru/s/ruru1232767964337.jpg
★全契約先でこの契約書結んでいるが、秘密保持、情報返還・処分義務の立派な契約違反。
ruru2.net/jlab-ruru/s/ruru1232767993881.jpg
★西武百貨店社員6155名分の個人情報を違法に自宅に持ち帰り流出。
ruru2.net/jlab-ruru/s/ruru1232768015222.jpg
★楽天ショップから個人情報データを違法に自宅に持ち去り大量に個人情報流出!
ruru2.net/jlab-ruru/s/ruru1232768041252.gif
★大量のソニーやマイクロソフト等の大手企業勤務者の流出個人情報! 自民党とか衆議院とかもある。
ruru2.net/jlab-ruru/s/ruru1232768065918.gif
★IPAは自身の流出は画像しか無いと断言しているが大嘘で、IPA役員資料とかも流出している。(IPA資料を無断で自宅に持ち帰り)
ruru2.net/jlab-ruru/s/ruru1232768123179.jpg
★三井リハウス(株)の入居者の口座番号や入金金額等のデータベースもIPA岡田賢治主任が流出
ruru2.net/jlab-ruru/s/ruru1232768311436.gif

国の情報処理推進機構 IPA専門職員として違法アプリばら蒔きの大問題犯罪証拠も流出。
違法アプリやシリアルキーを周囲にわざとバラ蒔いている。(現在も違法ATOKを使用しており、長年違法アプリ等を日常的に使用していた可能性大)
西武百貨店、日立製作所、博報堂、等の各企業向けに作っていたソフト類も違法アプリで作られていた可能性あり。

★Micro Soft VisualC++の違法シリアルキーを知人に教えたメール
ruru2.net/jlab-ruru/s/ruru1232768092277.jpg
★メールソフトRimArts社 Beckyの違法シリアルキー等、内容から見ても長年かなり広範囲にバラ蒔いていたようだ
ruru2.net/jlab-ruru/s/ruru1232768242947.jpg


302 名前:NAME IS NULL [2009/01/24(土) 18:16:13 ID:u1WNrIEs]

大元の流出報告スレ

仁義なきキンタマ ウイルス情報 Part80
changi.2ch.net/test/read.cgi/download/1229742858/546
546 :[名無し]さん(bin+cue).rar :sage :2009/01/04(日) 00:24:59
報告する時は、詳しく的確に、一部だけ報告しないでお願いね

[殺人] Administrator(20081230-101522)のキンタマ.zip 2,263,376,860 09ed98f10653c3fc2555621ceeed6bc33e8f6228
[殺人] Administrator(20081230-101522)のメール.zip 59,426,579 4da9459b30eec31f58b86530dbb48d1cf86ef4be
[写真集][IV] Administrator(20081230-101522)のアルバム.zip 2,205,946,474 9d87cc0e08dc0e3afd959fcead6c48d569787cee

膨大な量のファイル数キンタマ ファイル数 13508 フォルダ数2381
以前勤めてた会社の資料など多数 独立行政法人情報処理推進機構などの資料など無いと思うが
有るかも知れない、あまりにも数が有り過ぎる、メールなどは、古いものばかりメルマガなど膨大な量
個人情報などは、披露宴主席者などの住所、名前、電話、メール 数十人分しかしエロばっかり落としてるな
ちなみに ハメ撮りscr 踏んだみたいね

早稲田実業学校中等部卒業
早稲田実業学校高等部卒業
早稲田大学政治経済学部政治学科卒業
卒論「知的財産権とインターネット技術」
当時の同大学理工学大学院の大川功 賞佳作を受賞
コンピュータ関連会社に入社ソフトウェア開発の仕事を経て
2005年に独立行政法人情報処理推進機構に入社
ソフトウェア・エンジニアリング・センター企画グループに配属
同グループ主任 岡田賢治さん33歳


303 名前:NAME IS NULL [2009/01/24(土) 18:16:42 ID:u1WNrIEs]

IPA職員 岡田賢治 主任の報道記事まとめ【1】

★NHK
s02.megalodon.jp/2009-0105-1642-01/www3.nhk.or.jp/news/t10013365941000.html
★IPA職員が情報流出 ― 私物パソコンでファイル交換ソフトを使用(RBB TODAY) - Yahoo!ニュース
s03.megalodon.jp/2009-0105-1955-03/headlines.yahoo.co.jp/hl?a=20090105-00000007-zdn_ep-sci
★IPA職員Winnyでファイル流出&嫁のブログ祭り - 探偵ファイル
www.tanteifile.com/newswatch/2009/01/05_01/index.html
★IPA職員がファイル交換ソフトでウイルスに感染、写真など流出 - ネットwatch
internet.watch.impress.co.jp/cda/news/2009/01/04/21994.html
★情報流出対策職員“赤恥”…自身半裸写真など流出 - zakzak
www.zakzak.co.jp/top/200901/t2009010510_all.html
★IPA職員がまさかの情報流出 - 「Share」の可能性も「現在本人に確認中」 - マイコミュ
journal.mycom.co.jp/news/2009/01/05/004/
★J-CASTニュース(情報セキュリティ専門家のはずのIPA男性職員の失態)
www.j-cast.com/2009/01/05033141.html
★時事通信社ニュース(古いソフトを探すためと、本人の虚偽と分かるコメント有り!組織ぐるみで隠蔽工作開始か?)
www.jiji.com/jc/c?g=soc_30&k=2009010500683
★CNET JAPAN わいせつ画像や児童ポルノ動画、違法かな漢字ソフトをダウンロード--IPA職員
japan.cnet.com/news/sec/story/0,2000056024,20386070,00.htm
★CNET JAPAN 「IPAとして慙愧に堪えない」--仲田理事が会見で職員の情報流出事件を説明
japan.cnet.com/news/sec/story/0,2000056024,20386085,00.htm
★IPA プレス発表 当機構職員のパソコンによる情報流出について
www.ipa.go.jp/about/press/20090106.html
★INTERNET WATCH  IPAが職員の情報流出で記者会見。
 昨日の組織ぐるみ隠蔽工作から、2ちゃんねらーの追撃で違法ファイルの使用と児童ポルノ動画を一転して認める!。
internet.watch.impress.co.jp/cda/news/2009/01/06/22018.html


304 名前:NAME IS NULL [2009/01/24(土) 18:17:04 ID:u1WNrIEs]

IPA職員 岡田賢治 主任の報道記事まとめ【2】

★毎日.jp わいせつ画像やかな漢字ソフトをダウンロード--IPA職員、ファイル交換ソフトで
mainichi.jp/life/electronics/cnet/archive/2009/01/06/20386070.html?link_id=RLD03
★@IT IPA職員のPCからの情報流出、事実関係を説明
www.atmarkit.co.jp/news/200901/06/ipa.html
★IT PRO IPA職員がファイル交換ソフト利用で、個人情報含む1万6000件を流出
itpro.nikkeibp.co.jp/article/NEWS/20090106/322322/
★マイコミジャーナル IPA職員の情報流出で緊急会見 - 前職時代の取引先企業情報など1万件超
journal.mycom.co.jp/news/2009/01/06/055/
★探偵ファイル IPA流出騒動職員の妻、不正転売と薬事法違反疑惑
www.tanteifile.com/newswatch/2009/01/06_01/index.html
★live doorニュース 「指導する側」のIPA職員がWinnyでウイルス感染、個人情報が流出。
news.livedoor.com/topics/detail/3962545/
★秒間SUNDAY IPA職員がファイル交換ソフトでウイルス感染!エッチ後画像など大流出
www.yukawanet.com/sunday/2009/01/ipawinny.html
★楽天(ショップ) IPA職員のパソコンによる情報の流出について
www.rakuten.co.jp/stellina/946713/
★西武百貨店 IPA職員のパソコンによる当社の情報の流出について(IPAに怒り爆発w)
www2.seibu.co.jp/common/images/pdf/20090107.pdf
★探偵ファイル ポエムに企画書…IPA職員の情報流出事件続報!
www.tanteifile.com/newswatch/2009/01/07_01/index.html
★探偵ファイル IPA騒動に急展開、驚愕の流出情報の数々
www.tanteifile.com/newswatch/2009/01/08_01/index.html
★ZAKZAK 流出事件のIPA職員ばかりか妻は薬事法に違反★
www.zakzak.co.jp/top/200901/t2009010701_all.html
★つこうたIPA職員 チャイルドポルノコレクターだった
www.technorati.jp/post/1S_jIJkf5a8hD3fMmxghB%2BYuGJfDPiYu%2BYizu8vv1oY%3D


305 名前:NAME IS NULL [2009/01/24(土) 18:17:26 ID:u1WNrIEs]

IPA職員 岡田賢治 主任の報道記事まとめ【3】 アサヒ芸能 週刊誌に岡ちゃんと純子と仲良く掲載
※違法アプリ、変態児童ポルノ等のダウンを認めながら給与支払い停職3カ月の国民を馬鹿にした処分!

★探偵ファイル IPA流出事件職員の妻の転売業者、薬事法違反が確定★
www.tanteifile.com/diary/2009/01/08_02/index.html
★アサヒ芸能 週刊誌 ネット情報セキュリティ相談窓口職員の裸画像が流出 恥写真!&島○純子も
ruru2.net/jlab-ruru/s/ruru1232772605296.jpg
★IPA職員に停職3カ月の懲戒処分 「Winny」「Share」情報流出で
www.itmedia.co.jp/news/articles/0901/19/news085.html
★情報流出のIPA職員、停職3カ月の懲戒処分
internet.watch.impress.co.jp/cda/news/2009/01/19/22131.html
★IPA、情報流出対策本部を設置
www.itmedia.co.jp/enterprise/articles/0901/19/news077.html
★経過を報告するIPA仲田理事
image.itmedia.co.jp/enterprise/articles/0901/19/ipa.jpg
★IPA職員が収集、流出した とんでもない「反社会的」情報
www.j-cast.com/2009/01/20033932.html
★プレス発表 当機構職員のパソコンによる情報流出等について
www.ipa.go.jp/about/press/20090119.html
★情報流出のIPA職員、停職3カ月の処分に
japan.cnet.com/news/sec/story/0,2000056024,20386662,00.htm
★IPA職員の懲戒処分を発表 - 私物PCからの大量情報流出問題で
journal.mycom.co.jp/news/2009/01/19/018/index.html
★IPA流出騒動の職員、処分の実質は3ヶ月の有給休暇
www.tanteifile.com/newswatch/2009/01/20_01/index.html
★IPA流出職員 停職3ヶ月"有給休暇"処分にネット住民激怒!
uratan.jp/hotnews/2009/01/7869/


306 名前:NAME IS NULL [2009/01/25(日) 03:25:47 ID:vKPBjHFd]
2ちゃんねるのスレッドを定期的にMySQLのDBに保存して、統計を取ったりしてみようと考えています。
まずはどこか1つの板だけから始めて徐々に範囲を広げていくつもりです。
テーブルの構成をどのようにするか考え中ですが、皆様のご意見をいただきたく思います。

ちなみに、今ざっくりと考えているのはこんな構成です。
(1)スレッドタイトルの保存は1板1テーブル(dat番号、スレタイ、レス数)。
(2)スレッドの保存は1テーブル(レス番号、名前、メール、日付・ID)。

ここで特に気になっているのが、スレッド保存テーブルの構成です。
(A)1スレッド1テーブルか、それとも(B)全スレッドを1テーブルにまとめた方がよいのか、
もしくはそれ以外の構成がよいのかということです。
今のところ、読込が早そうだと思い、(A)を採用しています。
統計を取ることが主目的ですが、メンテナンスやパフォーマンスの観点からアドバイスがあればご教授ください。

ちなみにニュー速では1年間で約30000スレッド、2000万〜3000万レスになるそうです。

307 名前:306 [2009/01/25(日) 03:34:13 ID:vKPBjHFd]
すみません。タイプミスしてしましました。>>306の7行目は

×(2)スレッドの保存は1テーブル(レス番号、名前、メール、日付・ID)。
○(2)スレッドの保存は1スレ1テーブル(レス番号、名前、メール、日付・ID)。

です。

308 名前:NAME IS NULL mailto:sage [2009/01/25(日) 03:45:04 ID:???]
table_cacheとの絡みを考えると
MySQLで30,000テーブル作るのはあまり良くない。

よくアクセスされるテーブルが高々100個とかいうのなら別だけど、
30,000テーブルを全部スキャンするとか、
大勢のクライアントがそれぞれのテーブルに満遍なくアクセスすると、
MySQLはしんどい。


309 名前:NAME IS NULL mailto:sage [2009/01/25(日) 03:53:02 ID:???]
自分なら、スレッド保存テーブルを板ごと、月ごとに作るかな。
news_dat_200901
news_dat_200902
みたいな。1テーブル250万レコード、これを1年間保存。
あとは5.1のパーティショニング機能を使えば
テーブル名をアプリで意識する必要がなくなるのでよりCOOLに。

310 名前:NAME IS NULL mailto:sage [2009/01/25(日) 04:00:45 ID:???]
既にあるDBからER図を作ろうと思ったのですが、DBDesigner4でエラーが出て使えませんでした。
ソフトを紹介してください。

みなさんは何を使っていますか?



311 名前:NAME IS NULL mailto:sage [2009/01/25(日) 04:00:55 ID:???]
ともあれ1レコード1レスになると思うのだけど、その上でどんなクエリを
走らせるのかが気になる。本当にSQLが必要な処理なのか。
場合によってはMySQL上には板・スレ・dat名の関連だけを保存して、
統計処理などはファイルシステム上のdatファイルに対して直接行った
方がよい場合もあるかと思う。
あるいはdatをMySQLに入れるにしても1レコード1スレにするとか。

312 名前:306 [2009/01/25(日) 04:31:12 ID:vKPBjHFd]
>>308-311
皆さん、早速のレスありがとうございます!
それぞれとても参考になるご意見で、ホント勉強になります。。

>>308さん
確かにtable_cacheを考えると、そうかもしれませんね〜。
実際に複数テーブルを一気にスキャンとかそういうこともありうると思います。
たとえば、ある一定期間中に立ったスレッドからあるキーワードを含む書き込みを検索とかそういう場合ですね。
大勢のクライアントがアクセスするということは想定していませんが、
何万もテーブルを作るのは現実的ではなさそうですね。

>>309さん
なるほど、そういう考え方もありますね〜。
パーティショニング機能というのは私の勉強不足で知りませんでした。
今調べてみましたが、複数のテーブルを1つに見せる手法なのですね。
ただ、今使っているサーバのバージョンは4.0だそうです。
現在は使えませんが、将来のバージョンアップを見据えて試しにやってみてもいいかなと思いました。

>>311さん
今のところ考えているのは、条件に当てはまる言葉の抽出です。
いろいろ考えていますが、たとえばある時期に流行している言葉を探し出すとか、
注目されているレスを探し出すとかそういうものです(本レスなら308、309、311に+1ずつカウントとか・・)。
そんな時に検索・抽出が比較的容易なSQLを使おうとを考えました。

1レコード1スレという発想は思いつきませんでした。
横に伸ばすという考えですね。それだとレコード数は比較的少なく済みそうですね。

皆様、いろいろご教授くださいましてありがとうございます!
製作の参考にさせていただき、いろいろ試してみようと思います。


313 名前:NAME IS NULL [2009/01/25(日) 10:22:31 ID:D/HP+Xv5]
なかなか面白いテーマだね。
>>311の言う通り、全てをSQLに頼らなくてもいいかもね。
逆にSQLが必要な統計処理って何かな?

314 名前:NAME IS NULL mailto:sage [2009/01/25(日) 12:31:34 ID:???]
横に伸ばす・・・?
1スレごとに1テーブル・・・?
RDB使う意味なくね?

315 名前:NAME IS NULL mailto:sage [2009/01/25(日) 12:43:48 ID:???]
>>310
MySQL Workbench
www-jp.mysql.com/products/workbench/

DBからのリバースは有償版がいるけど。

316 名前:NAME IS NULL [2009/01/25(日) 23:48:17 ID:Vz6vQdtB]
質問させてください。
テーブルに入った「A」「B」「C」というデータを
「C」「A」「B」の順で並び替えするにはどうしたらいいでしょうか?

317 名前:NAME IS NULL mailto:sage [2009/01/25(日) 23:53:42 ID:???]
並び順などありません

318 名前:NAME IS NULL mailto:sage [2009/01/26(月) 00:09:52 ID:???]
>>316
order by

319 名前:316 [2009/01/26(月) 00:26:48 ID:zX/nxwDR]
>>318
ありがとうございます。
でも思い通りの自由な順番で並び替えしたいです…

320 名前:NAME IS NULL mailto:sage [2009/01/26(月) 00:36:04 ID:???]
>>319
であればその「並び順」をカラムの値として持たせるしかない。

IDX DATA
2 "A"
3 "B"
1 "C"

出力するときはIDXでORDER BY、並び替えしたいときはIDXの
値を書き換える。
テーブル内のレコード順に意味はない(ORDER BYで明示的に
並べ替えを指定しない限り、どのような順で出力されるか保証
されていない)というのは関係データベースの基本概念。
この辺りはExcelとかの表とは異なるので頭を切り換える必要
がある。



321 名前:NAME IS NULL mailto:sage [2009/01/26(月) 00:47:52 ID:???]
timeバージョンのDATE_SUBっぽい関数ない?
TIME_SUBあるのかなと思ったら、なくてaddtimeがあったんだけど
加える関数だから、できるのかどうか。
今から過去10分間のデータを検索したい
みたいなことをやりたいときはどうやるんでしょうか

322 名前:NAME IS NULL mailto:sage [2009/01/26(月) 01:04:01 ID:???]
SUBTIME

323 名前:316 [2009/01/26(月) 01:17:10 ID:zX/nxwDR]
>>320
ありがとうございます。しかしながら
ttp://okwave.jp/qa2374879.htmlや
ttp://q.hatena.ne.jp/1189526421など
いろいろ方法はありそうですが
もっと簡単な方法(C,A,B)←こんな感じ(括弧で括って「,」で順番を決める。)
ど忘れしましたが以前ソートできた記憶があります。思い出せない…

324 名前:NAME IS NULL mailto:sage [2009/01/26(月) 01:41:30 ID:???]
リファレンス見ればいいだろ

325 名前:NAME IS NULL mailto:sage [2009/01/26(月) 02:28:31 ID:???]
select * で、このフィールドだけはいらないっ
てやりたいんだけどどうすればいい?
-フィールド名なんてやってみたけど無理だった

326 名前:NAME IS NULL mailto:sage [2009/01/26(月) 02:29:20 ID:???]
>>322
ありがとうございます
あれからいろいろとやっていて
between とcastでなんとかできました

327 名前:325 mailto:sage [2009/01/26(月) 02:35:46 ID:???]
フィールドじゃなくてカラムだった

328 名前:NAME IS NULL mailto:sage [2009/01/26(月) 06:11:56 ID:???]
横着すんな。必要なカラムは明示的に全部列挙しろ。

329 名前:NAME IS NULL mailto:sage [2009/01/26(月) 06:45:25 ID:???]
>>328
おまえのようにまともに答えられないくせにレスするやつが一番うざい
2chから消えろ人間のクズ

330 名前:NAME IS NULL mailto:sage [2009/01/26(月) 09:34:23 ID:???]
datetimeから今日の分だけのデータを取り出すのってできる?
datetimeは0000-00-00 00:00:00だから"2009-01-26%"でlike検索したら
26日のは抽出できたけど、これをdate(now())でしようと思ったらどうもうまくいかない
where datetimeカラム = date(now())
とかで日付検索してくれるのかと思ったら普通の文字検索とかわらん・・
今、処理されたときのdateでやるにはdatetimeの他にdateだけのカラム作るしかない?
datetimeだけでできたらそれに越したことはないんだけどな



331 名前:NAME IS NULL mailto:sage [2009/01/26(月) 09:40:55 ID:???]
とおもったら
WHERE TO_DAYS(NOW()) - TO_DAYS(datetimeカラム) <= 1
でできた

332 名前:NAME IS NULL mailto:sage [2009/01/26(月) 10:30:26 ID:???]
>>329
>>328が一番親切な答えだけどな。
実際、全部ほしい時も*は使わない。

333 名前:NAME IS NULL mailto:sage [2009/01/26(月) 10:46:52 ID:???]
where句の条件にインデックスが使われるかどうかについて質問します。

create table company(
id integer primary key auto_increment,
name varchar(100) not null unique,
index company_name_index(name)
);

create table employee(
id integer primary key auto_increment,
name varchar(100) not null,
company_id integer not null references company(id),
index employee_company_id_index(company_id)
);

というテーブルがあって、

select employee.* from employee, company
where employee.company_id = company.id and company.name = ?
order by id limit 0, 10

というselect文を実行しているのですが、いろいろ調べた結果、
このselect文の where company_id = ? がボトルネックのようでした。
employeeテーブルにはcompany_idでインデックスをはっているし、company.name もユニークキーだし、
十分高速に実行できるように思います。
しかし、もしかしたらテーブルを結合したときはインデックスが使われないのかもしれないと思い、
質問させていただきました。この推測は間違っているでしょうか。
よろしくお願いします。


334 名前:NAME IS NULL mailto:sage [2009/01/26(月) 11:02:02 ID:???]
まず explain してみよう

335 名前:333 mailto:sage [2009/01/26(月) 15:19:31 ID:???]
>>333の続きです。
テーブルを結合するかわりに、テーブルを別々に検索するとかなり速くなりました。
つまり
select employee.* from employee, company
where employee.company_id = company.id and company.name = ?
order by id limit 0, 10
をやめて
select id from company where name = ?;
select * from employee where company_id = ? order by id limit 0, 10;
に変更したんですけど、こっちのほうがだいぶ高速でした。
テーブルの結合ってしないほうがいいんでしょうか。

>>334
説明するってことですか?何を説明すればいいでしょうか。
足りない点があればご指示ください。

336 名前:NAME IS NULL mailto:sage [2009/01/26(月) 15:26:20 ID:???]
いや、、、SQLのEXPLAINだよ・・・

337 名前:NAME IS NULL mailto:sage [2009/01/26(月) 15:55:03 ID:???]
explain select .... とやると、index が使われてるかどうか、全件なめたりしてるかどうか、とかの情報が出る。
select ... のところには、select 文の内容をそのまま書く。
但し、(使ってるみたいだが) prepared statement は書けないから、place holder の処に適当な実値を入れて。


338 名前:NAME IS NULL mailto:sage [2009/01/26(月) 22:10:13 ID:???]
下記サイトは どんなテーブル構造になってるんでしょうか?

ご存知の方よろしくおねがいします

ttp://www.ffxiah.com/item.php?id=4098

339 名前:NAME IS NULL mailto:sage [2009/01/26(月) 22:28:01 ID:???]
知るかよ

340 名前:NAME IS NULL mailto:sage [2009/01/26(月) 22:29:48 ID:???]
>>339
そうですか。
素人ですね



341 名前:NAME IS NULL mailto:sage [2009/01/26(月) 23:34:17 ID:???]
>>336,337
ありがとうございます。explainとは基本事項なんですね。お恥ずかしい。
実際にやってみると、company に対しては using where と出てきますが、
employee に関してはそれが出てきませんでした。
で、2つに分割したあとのほうでは、company にも employee にも using where と出てきました。
(インデックスはどの場合も使われているようです)
よくわからないですけど、joinしたときはwhereが一カ所にしか使われないとか、
そもそもMySQLではインデックスがselect文ごとに1つしか使われないとか
そんな制限があったりはしませんよね?
こういうことってマニュアルに書いてあるんでしょうか。

342 名前:NAME IS NULL mailto:sage [2009/01/27(火) 00:12:24 ID:???]
Extra列の前にkey列を見なさい。
見方が分からないならここにコピペしなさい。

343 名前:NAME IS NULL mailto:sage [2009/01/27(火) 02:03:50 ID:???]
ルー語を想像しながら読むと楽しくなる

344 名前:NAME IS NULL [2009/01/27(火) 03:33:12 ID:M7ovlZjo]
別のサーバのテーブルのコピーを、limitで区切りながら順次しようと思うのですが
order byを指定しなくても、テーブルに何の変更もしなければ、
selectで取り出される順番は必ず同じと考えていいのでしょうか?

345 名前:NAME IS NULL mailto:sage [2009/01/27(火) 05:05:23 ID:???]
>>344
order byつけたくないの?
いくつかのシチュエーションで統計情報が更新されて
SQLの実行計画が変わる場合があるから、同じだとは保証できない。

それ以外に順番が変わる要因がないかどうか調べて
同じことを保証するにはMySQLのソースを隅から隅まで読まないといけない。
全部読みきる労力 > order byによる性能劣化


346 名前:NAME IS NULL mailto:sage [2009/01/27(火) 06:41:11 ID:???]
そうなんですか
そういうことならorder byを入れようと思います
ありがとうございました

347 名前:NAME IS NULL mailto:sage [2009/01/27(火) 21:39:32 ID:???]
質問です。
mysql -u root -p pass でコマンドプロンプトから操作はできるのですが、
phpmyadminのトップ画面にいくと
”ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: N O)”
と怒られてしまいます。

設定ファイル(config.inc.php)をみても
$cfg['Servers'][$i]['controluser'] = 'root';
$cfg['Servers'][$i]['controlpass'] = 'pass';
これでいいと思うのですが・・・よろしくお願いします

348 名前:NAME IS NULL mailto:sage [2009/01/27(火) 21:45:51 ID:???]
mysql> status
--------------
mysql Ver 14.12 Distrib 5.0.67, for Win32 (ia32)

Connection id: 27
Current database:
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.0.67-community-nt MySQL Community Edition (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 43 min 46 sec

Threads: 1 Questions: 26 Slow queries: 0 Opens: 13 Flush tables: 1 Open tab
les: 0 Queries per second avg: 0.010
--------------

mysql>

ちなみに環境はWindowsXPです。

349 名前:NAME IS NULL mailto:sage [2009/01/28(水) 01:10:33 ID:???]
>>342
>Extra列の前にkey列を見なさい。
>見方が分からないならここにコピペしなさい。
どうもありがとうございます。お言葉に甘えて、explainの結果を貼付けます。

mysql> explain
-> select employee.* from employee, company
-> where employee.company_id = company.id and company.name = 'AAA'
-> order by id limit 0, 10;
+----+-------------+----------+------+---------------------------------+---------------------------+---------+---------------------+------+----------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------+------+---------------------------------+---------------------------+---------+---------------------+------+----------------------------------------------+
| 1 | SIMPLE | company | ref | PRIMARY,name,company_name_index | name | 302 | const | 1 | Using where; Using temporary; Using filesort |
| 1 | SIMPLE | employee | ref | employee_company_id_index | employee_company_id_index | 4 | example1.company.id | 2 | |
+----+-------------+----------+------+---------------------------------+---------------------------+---------+---------------------+------+----------------------------------------------+

(keyの値は、companyがname、employeeがemployee_company_id_indexです)。


mysql> explain
-> select id from company where name = 1;
+----+-------------+---------+------+-------------------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+------+-------------------------+------+---------+------+------+-------------+
| 1 | SIMPLE | company | ALL | name,company_name_index | NULL | NULL | NULL | 3 | Using where |
+----+-------------+---------+------+-------------------------+------+---------+------+------+-------------+

(keyの値は、companyがnullです)。


mysql> explain
-> select * from employee where company_id = 1 order by id limit 0, 10;
+----+-------------+----------+------+---------------------------+---------------------------+---------+-------+------+-----------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------+------+---------------------------+---------------------------+---------+-------+------+-----------------------------+
| 1 | SIMPLE | employee | ref | employee_company_id_index | employee_company_id_index | 4 | const | 1 | Using where; Using filesort |
+----+-------------+----------+------+---------------------------+---------------------------+---------+-------+------+-----------------------------+

(keyの値は、employeeがemployee_company_id_indexです)。


350 名前:NAME IS NULL mailto:sage [2009/01/28(水) 01:53:34 ID:???]
さんざんやったsetupscriptからダメ元でやったらなぜかできました
なんでだろう・・・



351 名前:NAME IS NULL mailto:sage [2009/01/28(水) 02:19:00 ID:???]
むー
結合したSQLで両テーブルともちゃんとインデックス使ってるじゃん
これでどうして遅いんだ?
limitしないと100万件とかヒットする巨大データとか?

352 名前:NAME IS NULL mailto:sage [2009/01/28(水) 02:22:31 ID:???]
んーまてよ
nameインデックスとcompany_name_indexインデックスがあるのか

show create table company\G と
show create table employee\G を見せてほしい

353 名前:NAME IS NULL [2009/01/28(水) 02:23:20 ID:IteHUFPa]
たとえインデックスをorder byに使っていても、
limit x,yのxがでかいとクエリーが遅くなるのってバグですか?

354 名前:NAME IS NULL mailto:sage [2009/01/28(水) 02:35:59 ID:???]
バグじゃないよ
遅くならないDBMSがあったら教えてほしい

355 名前:NAME IS NULL mailto:sage [2009/01/28(水) 03:27:41 ID:???]
>>351,352
何度もありがとうございます。以下が結果なんですけど、何か分かりますでしょうか。
もしかして、MyISAMだと制限があるとか?

mysql> show create table company¥G
*************************** 1. row ***************************
Table: company
Create Table: CREATE TABLE `company` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `company_name_index` (`name`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
1 row in set (0.32 sec)

mysql> show create table employee¥G
*************************** 1. row ***************************
Table: employee
Create Table: CREATE TABLE `employee` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(100) NOT NULL,
`company_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `employee_company_id_index` (`company_id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)


356 名前:NAME IS NULL mailto:sage [2009/01/28(水) 03:36:16 ID:???]
UNIQUE KEY `name` (`name`),
KEY `company_name_index` (`name`)

なんで同じの二個作ってるの
UNIQUEじゃない方消そう

でも参照性能自体は特に問題ないはずだなー
速い遅いって何ミリ秒の話をしてる?
でも今日は寝る

357 名前:NAME IS NULL mailto:sage [2009/01/28(水) 05:53:24 ID:???]
遅くなるのはfilesortになってるからだろうな。
試しにorder byしないと応答速いんじゃね?


358 名前:NAME IS NULL mailto:sage [2009/01/28(水) 11:34:17 ID:???]
>>357
おっしゃる通りです。
order by がないとすごく速いです。

Oracleだとヒント文をSQLに付加できるそうですが、MySQLでもそのような機能があるのでしょうか。


359 名前:NAME IS NULL mailto:sage [2009/01/28(水) 12:48:18 ID:???]
てか、order byせずにlimitする用途なんてある?

360 名前:NAME IS NULL mailto:sage [2009/01/28(水) 14:12:30 ID:???]
ソートが遅いんだったら、
パラメータのsort_buffer_sizeを増やしてみる。
デフォルト2MBなので、まずは20MB(20971520)とか。

MySQLでもOracleのヒント句のように
インデックスを使わせたりテーブル結合順を制御することはできる。
だけど現状最適なので、ヒント句を書く内容の候補がない。



361 名前:NAME IS NULL mailto:sage [2009/01/28(水) 19:22:35 ID:???]
同じ属性のフィールドを複数同時に加えることってできませんか?

alter table tbl add a,b int

みたいな感じでやってもエラーだったんですけど
地道に一個ずつやるしかないですか?

362 名前:NAME IS NULL mailto:sage [2009/01/28(水) 20:33:59 ID:???]
alter table tbl add (b int, c int);
これでできたよ

363 名前:NAME IS NULL mailto:sage [2009/01/29(木) 00:49:00 ID:???]
>>362
できました! ありがとうございます!

364 名前:NAME IS NULL [2009/01/29(木) 12:25:57 ID:+j0hmr7x]
MySQL3.23.58で、2つのフィールド値を判定してデータの重複登録を禁止したいのですが、
フィールド名「address1」「address2」に、たとえば値のセット「東京都」「足立区」のようなデータが
すでにテーブル「my_area」に登録されていたらinsertを禁止したいのですが、
1つのクエリーでどのように書いたらよいでしょうか?
サブクエリーが使えないのでどうしたものかと悩んでいます。 よろしくお願いします。

365 名前:NAME IS NULL [2009/01/29(木) 12:50:45 ID:+j0hmr7x]
ちなみに、「address1」「address2」ともユニーク属性はありません。

366 名前:NAME IS NULL mailto:sage [2009/01/29(木) 13:18:25 ID:???]
3.23って複合インデックスないんだっけ?あるよね?

mysql> create unique index t_c1c2 on t (c1, c2);
Query OK, 9 rows affected (0.17 sec)
Records: 9 Duplicates: 0 Warnings: 0

mysql> insert into t values (5, 'a');
Query OK, 1 row affected (0.00 sec)

mysql> insert into t values (5, 'b');
Query OK, 1 row affected (0.00 sec)

mysql> insert into t values (5, 'a');
ERROR 1062 (23000): Duplicate entry '5-a' for key 't_c1c2'



367 名前:NAME IS NULL [2009/01/29(木) 14:14:19 ID:+j0hmr7x]
>>366
できました!複合インデックスというものがあったんですね。。
create unique index my_area_address on my_area (address1, address2);
でいけました! ありがとうございます!

368 名前:NAME IS NULL mailto:sage [2009/01/30(金) 20:24:16 ID:???]
あのテーブルはいくつでも結合する事が可能なんでしょうか?
結合するテーブルが多いほど処理速度が遅くなると考えていいのでしょうか?

369 名前:NAME IS NULL mailto:sage [2009/01/30(金) 23:42:59 ID:???]
いくつ結合するつもりなん?

370 名前:NAME IS NULL mailto:sage [2009/01/31(土) 01:04:34 ID:???]
61個。

mysql> select count(*) from t t0
-> inner join t t1
-> inner join t t2
-> inner join t t3
-> inner join t t4
-> inner join t t5

-> inner join t t69
-> ;
ERROR 1116 (HY000): Too many tables; MySQL can only use 61 tables in a join


> 結合するテーブルが多いほど処理速度が遅くなると考えていいのでしょうか?

Yes。
うちの開発では
「テーブル結合はOracleは5つまで、MySQLは3つまでにしてください」
って言ってる。



371 名前:NAME IS NULL mailto:sage [2009/01/31(土) 03:13:41 ID:???]
わざわざ作ったんかwwww

372 名前:NAME IS NULL [2009/02/01(日) 23:52:57 ID:uL0IgRTd]
person_list テーブルは

id | person_name
1 あまぼー
2  ういき
3  筋肉
4  うへへ
5  きゃべつ

client_list

id |  client   | person_id
1  トヨタ      1
2   日産      2
3   スズキ     3
4   ホンダ     4
5   日野      5
6   ダイハツ    6

上記の表だと トヨタには あまぼーさんが乗ってますが
トヨタに あまぼーさんと うへへさんが乗ってたらどうすればいいのでしょうか?

client_list のフィールドに person_id2 とか作ったら正規化されてませんよね?


373 名前:NAME IS NULL mailto:sage [2009/02/02(月) 00:21:44 ID:???]
正規化って言葉を知ってるならどうすればいいかくらいすぐ分かるだろうに

374 名前:NAME IS NULL mailto:sage [2009/02/02(月) 00:22:02 ID:???]
>>372
あったまかてぇなぁ〜

375 名前:NAME IS NULL mailto:sage [2009/02/02(月) 01:52:55 ID:???]
何故トヨタ日産がclientかよくわからないけど、

・client_listリレーションからperson_idを削除
・新たにperson_idとclient_idの2属性を持つリレーションを作成

376 名前:NAME IS NULL mailto:sage [2009/02/02(月) 12:25:40 ID:???]
MySQLにはクエリキャッシュ機能がありますが、
あれをオンにすると速くなるのはわかるのですが、
なにかトレードオフみたいなのあります?
いまからクエリキャッシュをオンにしようと思うのですが
気をつけなきゃいけないことがあれば教えてください。

377 名前:NAME IS NULL mailto:sage [2009/02/02(月) 18:00:45 ID:???]
・一発でも更新クエリが流れるとキャッシュ全クリアされる
・サーバサイドPreparedStatementを使っていると役に立たない(5.0)

99.99%が参照のみっていうDBじゃないと意味がない機能。
でもトレードオフはほとんどないです

378 名前:NAME IS NULL mailto:sage [2009/02/02(月) 19:29:51 ID:???]
>>377
当たり前かも知れないけど、あるテーブルが更新されると、
そのテーブルのキャッシュが破棄されるんだよね?

379 名前:NAME IS NULL mailto:sage [2009/02/02(月) 22:27:56 ID:???]
なら更新した直後に自動でキャッシュ作ってくれればいいのに

380 名前:NAME IS NULL mailto:sage [2009/02/02(月) 22:50:07 ID:???]
そういうのはmemcachedの役目だろう



381 名前:NAME IS NULL mailto:sage [2009/02/04(水) 06:25:40 ID:???]
数十人にそれぞれコメント欄としてvarchar(255)を30くらい定義して
新しいコメントが入ったら古いコメントを削除するみたいなことを
やりたいんですが

IDを1つとvarcharを1〜30まで定義しておいて、新しいコメントがきたら
1〜29のvarcharを1つずつ後ろにupdateしてずらし、1に新しいコマンドを
updateする

数十人それぞれにテーブルを作成し、新しいコメントがきたらそれをinsert
そして一番古く作成されたコメントをdeleteする

どっちのほうがいいでしょうか、もしくはもっといい方法がありますでしょうか
最初のほうは処理に時間がかかりそうですし、二つ目はテーブルってそんな
数十人に一個ずつ作るものなのか不安というかなんというか
どうか教えてくださいお願いします

382 名前:NAME IS NULL mailto:sage [2009/02/04(水) 06:43:37 ID:???]
正規化勉強しろと
この後のレスで説教されると思います

383 名前:NAME IS NULL mailto:sage [2009/02/04(水) 06:47:14 ID:???]
>>383
そのお言葉大変ありがたいです。ありがとうございます
正規化勉強してきます

384 名前:NAME IS NULL mailto:sage [2009/02/04(水) 07:26:11 ID:???]
すいません、わかりました
IDと本文(varchar255)一つとTIMESTAMPをフィールドにして
やればよかったんですね
こうやればレコードの数は膨大になりますが、insertとdeleteもできるし
テーブルも一個で済みますね

385 名前:NAME IS NULL mailto:sage [2009/02/04(水) 09:00:11 ID:???]
膨大...?

386 名前:NAME IS NULL mailto:sage [2009/02/04(水) 21:12:43 ID:???]
PDOのfetchの使い方わかんないんで
誰か教えて

387 名前:NAME IS NULL mailto:sage [2009/02/04(水) 23:05:06 ID:???]
いいよ

388 名前:NAME IS NULL mailto:sage [2009/02/04(水) 23:16:55 ID:???]
データーベースから、fetchで情報を取ってきて、
それを画面に表示したいんだけど、なぜか
オプション?が45個もあって、
何をどうしたらいいのか、わからないんです

389 名前:NAME IS NULL mailto:sage [2009/02/04(水) 23:21:53 ID:???]
何オプションって?

390 名前:NAME IS NULL mailto:sage [2009/02/04(水) 23:28:20 ID:???]
ZFS+MySQL+MyISAMではこの程度。
./mysqlbench -U test -P test -c 50 -t 100 testdb
tps (include connections establishing) . : 373.115227
tps (exclude connections establishing) . : 373.576012

がしかし、これに後からSSDをcacheとして加えると。
tps (include connections establishing) . : 1120.192135
tps (exclude connections establishing) . : 1124.534049
くらいまで上がりました。 少し嬉しかった。






391 名前:NAME IS NULL mailto:sage [2009/02/05(木) 07:35:03 ID:???]
varchar(int)のintをどれくらいに設定したらいいかわからないから
とりあえずちょっと多めにしとくか、みたいな自分の性格に影響している値を
入れているのですがそこまでこだわる必要なないのでしょうか?

392 名前:NAME IS NULL mailto:sage [2009/02/05(木) 08:36:48 ID:???]
>>391
男は黙って255

393 名前:NAME IS NULL mailto:sage [2009/02/05(木) 09:22:27 ID:???]
なんのために設定するのかを知らないと意味ないのでは・・・

394 名前:NAME IS NULL mailto:sage [2009/02/05(木) 09:38:58 ID:???]
PHPでやっているんですが
ソートして最小から数えて4番目のレコードを取り出したいとき
whereをつかってピンポイントにそのレコードだけselectできるでしょうか?
それともPHP側でmysql_fetch_arrayでソートしたデータを全部selectして
配列の要素で4を指定して使わないとダメですか?

395 名前:NAME IS NULL mailto:sage [2009/02/05(木) 09:38:59 ID:???]
悩んだら100にしてる

396 名前:NAME IS NULL mailto:sage [2009/02/05(木) 09:42:12 ID:???]
すいません、4番目だったら要素は3入れないとダメですね

397 名前:NAME IS NULL mailto:sage [2009/02/05(木) 09:43:11 ID:???]
>>394

mysql> select * from t order by c1;
+------+------+
| c1 | c2 |
+------+------+
| 1 | a |
| 2 | a |
| 3 | a |
| 4 | a |
| 5 | a |
| 6 | a |
+------+------+
6 rows in set (0.00 sec)

mysql> select * from t order by c1 limit 3, 1;
+------+------+
| c1 | c2 |
+------+------+
| 4 | a |
+------+------+
1 row in set (0.00 sec)


398 名前:NAME IS NULL mailto:sage [2009/02/05(木) 09:47:57 ID:???]
RDBにn番目なんて概念あるの?

399 名前:NAME IS NULL mailto:sage [2009/02/05(木) 09:52:21 ID:???]
「ソートして最小から数えて」だからあるんじゃない?
あーでも同着4位があるとまずいな

400 名前:NAME IS NULL mailto:sage [2009/02/05(木) 10:01:08 ID:???]
なるほど、limitをうまく使えばできるんですね
ありがとうございました



401 名前:NAME IS NULL mailto:sage [2009/02/05(木) 18:18:32 ID:???]
>>391
分からないんだったらtext型にしとけ

402 名前:NAME IS NULL mailto:sage [2009/02/05(木) 19:51:00 ID:???]
正規化をするコツを教えてほしいです。

正規化してる方は、まず非正規化から 第1正規化→第2正規化 としてるんでしょうか?

非正規化から一気に → 第3正規化 とかできませんよね?

ちなみにPHPMYADMINを使用しております。

ご教授よろしくお願いします。

403 名前:NAME IS NULL mailto:sage [2009/02/05(木) 20:01:39 ID:???]
PDOなんだけど、

データーベースの構造が以下の通りで、

ID(プライマリーキー) | name | value
1             |りんご | 3
2             |みかん | 6
3             |すいか |12


このとき、ID=1のレコードの、バリューを取ってきて、
表示する。これだけのことなのですが、PDOのfetchを使って、
どうやって書けばいいですか?おしえてください。

404 名前:NAME IS NULL mailto:sage [2009/02/05(木) 20:35:36 ID:???]
>>402
ケースバイケースだけど自分は第一正規形からいきなり
第三正規形かなぁ。
データ設計がしっかりしていて関数従属性をちゃんと把握
出来ている場合は推移的従属をみつけるのも難しくない。

とりあえず3NFまでざっくりバらしてみてから、データの
挿入や更新とか考えてちょこちょこいじくります。

405 名前:NAME IS NULL mailto:sage [2009/02/05(木) 20:56:43 ID:???]
>>403
宿題は自分でやりましょう

406 名前:NAME IS NULL mailto:sage [2009/02/05(木) 21:50:06 ID:???]
>>404
ありがとうございます。
何か便利なツールとかないんでしょうかね

頭固くて混乱するんですよね。。

407 名前:NAME IS NULL mailto:sage [2009/02/05(木) 22:31:45 ID:???]
正規化で悩んで追求しすぎて
>>403 のような例だと

id | link | attribute | 値
1 | 0 | 0 | name
2 | 0 | 0 | value
3 | 0 | 1 | りんご
4 | 0 | 1 | みかん
5 | 0 | 1 | すいか
6 | 3 | 2 | 3
7 | 4 | 2 | 6
8 | 5 | 2 | 12

みたいなテーブル一本で全部処理しようという発想になったんですが
ありでしょうか?

408 名前:NAME IS NULL mailto:sage [2009/02/05(木) 22:36:52 ID:???]
>>405
わからないなら、無理に書き込みしなくてもよい。

409 名前:NAME IS NULL mailto:sage [2009/02/05(木) 22:56:08 ID:???]
>>407
その解法でいかにして正規化の問題が解決されるのか
説明出来るのであればありかな。

410 名前:NAME IS NULL mailto:sage [2009/02/06(金) 01:00:56 ID:???]
MySQLの「生みの親」、サンを離れる
www.atmarkit.co.jp/news/200902/05/monty.html

うおー



411 名前:NAME IS NULL mailto:sage [2009/02/06(金) 01:51:26 ID:???]
なるほど
ありがとうございました

412 名前:NAME IS NULL mailto:sage [2009/02/06(金) 02:17:38 ID:???]
>>407
アリエネェw

413 名前:NAME IS NULL mailto:sage [2009/02/06(金) 03:08:18 ID:???]
id | link | attribute | 値
1 | 0 | 0 | name
2 | 0 | 0 | value
3 | 0 | 1 | りんご
4 | 0 | 1 | みかん
5 | 0 | 1 | すいか
6 | 3 | 2 | 3
7 | 4 | 2 | 6
8 | 5 | 2 | 12
9 | 0 | 0 | price
10 | 3 | 9 | 100
11 | 4 | 9 | 20
12 | 5 | 9 | 500

になるんですね
わかります

414 名前:NAME IS NULL mailto:sage [2009/02/06(金) 03:10:53 ID:???]
13 | 0 | 0 | unit
14 | 3 | 13 | 個
15 | 4 | 13 | 袋
16 | 5 | 13 | 切
(ry

415 名前:NAME IS NULL mailto:sage [2009/02/06(金) 06:08:27 ID:???]
どうやって集計すんだよ

416 名前:NAME IS NULL mailto:sage [2009/02/06(金) 16:20:02 ID:???]
レプリケーションについての質問です。
host1(m) -> host2(s)にレプリケーションするとき、全てのスキーマじゃなくていくつかのスキーマだけ選んでレプリケーションさせることはできますか?
大事なスキーマだけをバックアップさせたいのですが全部を転送されるともったいない気がしてしまうのです。

417 名前:NAME IS NULL [2009/02/06(金) 17:29:47 ID:b+9/9fzE]
+------+------+
| c1 | c2 |
+------+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | a |
| 5 | b |
| 6 | c |

c2を order by でソートすると
123abc
となるけど
abc123
にソートするにはどうしたらいいのでしょうか?

418 名前:416 mailto:sage [2009/02/06(金) 19:26:59 ID:???]
>>416
解決できるっぽいので自己フォロー。ありがとうZawodny。
dev.mysql.com/doc/refman/5.1/en/replication-rules.html

419 名前:NAME IS NULL [2009/02/06(金) 19:28:15 ID:XeUg53Qq]
MySQL2.23.58で複数のテーブルに対するUPDATEを行いたいのですが、

UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;

のようなものをなんとか1文で可能にできないものでしょうか?
マニュアルには4.0.4以降でサポートと書いてあるのですが、、。
難しければ、なるべく負荷の少ない方法でできればと思っています。
よろしくお願いします。

420 名前:NAME IS NULL [2009/02/06(金) 21:23:51 ID:BQVsxN4d]
BEGIN TRANSACTION;
LOCK items as write, month as write;
UPDATE items SET items.price=month.price
WHERE items.id=month.id;
UPDATE month SET month.price=items.price
WHERE items.id=month.id;
UNLOCK items, month;
COMMIT;




421 名前:NAME IS NULL [2009/02/06(金) 23:22:03 ID:XeUg53Qq]
>>420
すみません、ありがとうございます。  as writeのところでエラーが出てしまいました。
バージョンを書き間違えてました。 MySQL3.23.58です。

やりたいことは、month.idとidが同じitemsのpriceをmonthのものと同じに更新したいのです。
idが1のものに限定すると以下のような感じです。

UPDATE items,month SET items.price=month.price
WHERE items.id=month.id AND month.id=1;

422 名前:NAME IS NULL mailto:sage [2009/02/07(土) 00:01:35 ID:???]
UPDATE items LEFT JOIN month ON month.id=items.id
SET items.price=month.price
WHERE month.id=1;

423 名前:NAME IS NULL mailto:sage [2009/02/07(土) 00:05:58 ID:???]
UPDATE items
SET items.price = (SELECT month.price FROM month WHERE month.id = items.id)
WHERE items.id=1;

424 名前:NAME IS NULL mailto:sage [2009/02/07(土) 01:25:02 ID:???]
なるほど
ありがとうございました

425 名前:421 [2009/02/07(土) 12:42:37 ID:fT3meMS6]
>>422
ありがとうございます。 LEFT JOIN あたりで構文エラーが出てしまいました。

>>423
こちらもありがとうございます。 サブクエリーがサポートされていませんでした。

SELECT price FROM month WHERE id=1;

UPDATE items SET price=$price WHERE id=1;

PHPを使ってこの2つのクエリーで対応することにしました。

426 名前:NAME IS NULL mailto:sage [2009/02/07(土) 14:32:11 ID:???]
SQLを二つに分けると、その間に別処理がとか
考えないとダメ。なるべくトランザクション
を使いなさいよ。

427 名前:NAME IS NULL [2009/02/07(土) 14:54:17 ID:09J3/u2A]
サイボウズラボの中の人が、q4mっていうストレージエンジンを開発してるようだけど、
labs.cybozu.co.jp/blog/kazuho/archives/2008/05/road_to_mq_with_q4m.php
非同期で書き込みたいなら、ブラックホールストレージエンジンをレプリケーションすれば
良いだけに思える。
これを使えば何がうれしいのかよくわからない。

エロい人おせーて。

428 名前:NAME IS NULL mailto:sage [2009/02/07(土) 22:48:19 ID:???]
>>394の質問と微妙にかぶるんだけど、
>>397のは、その一つを取り出すため用に、
一つクエリを送信だけど、
いくつかレコードが出てきたその中の二番目とか
三番目を取り出すことってできますか?
>>397の例でいうと、
mysql> select * from t order by c1 limit 0, 5;
で、6個出てきた中の2と4と6だけ選びたいとなると、
mysql> select * from t order by c1 limit 2, 1;
mysql> select * from t order by c1 limit 4, 1;
mysql> select * from t order by c1 limit 6, 1;
みたいに三回同じことをやって、それぞれで$row['c2']みたいに取り出さないといけないのでしょうか?

429 名前:NAME IS NULL mailto:sage [2009/02/07(土) 22:52:48 ID:???]
$rows[1]['c2'];
$rows[3]['c2'];
$rows[5]['c2'];

430 名前:NAME IS NULL mailto:sage [2009/02/08(日) 09:13:30 ID:???]
>>429
ありがとう
やってみた
できた。
でも、取り出せたのは取り出せたんだけど、
c2のaをいろんな文字に変えてみたら、最初の一文字しか取り出せなっかった・・
例えば、c1の3のc2が、bcdだったとき、bしか取り出せない・・
mysql_fetch_arrayでやってみたんだけど違うのかな・・



431 名前:NAME IS NULL mailto:sage [2009/02/08(日) 09:48:37 ID:???]
日本語でどうぞ

432 名前:NAME IS NULL [2009/02/08(日) 10:45:14 ID:j64qB3ux]
これから勉強しようとインストールしようと思ったら、バージョンいっぱいあるんですけど
どれにしたらいいでつか?

MySQL 6.0.9-alpha リリース (2009-1-20)
MySQL 5.0.75 リリース (2008-12-24)
MySQL 5.1.30-GA リリース! (2008-11-28)

433 名前:NAME IS NULL mailto:sage [2009/02/08(日) 10:47:42 ID:???]
>>428
あーそういうことか。
それだと、429のやり方では無理だよ。
一つ一つ限定して取り出すしかない。

434 名前:NAME IS NULL [2009/02/08(日) 11:03:04 ID:Hpmp89Ld]
>>432
alphaは問題外
5.0シリーズを勧める

435 名前:NAME IS NULL [2009/02/08(日) 11:06:52 ID:Hvuacpzt]
以下のような決済テーブル(実際にはもう少し項目が多いです)があるときについて質問です。

| ID | 店舗ID | 決済種別ID | 商品名 | 金額 | 手数料 | 店舗側ユーザーID | メールアドレス | 電話番号 | テストフラグ | 決済日時 |

管理画面から色々な条件で検索が可能で
検索結果は各カラムでソート可能なものを作っています。

MySQLのインデックスの使われ方を考えると
IDをベースに検索に使用されるカラム毎にテーブルを分けたほうがいいのかなぁと考えています。

例えば以下のような感じです。

| ID | 店舗ID |
| ID | 決済種別ID |
| ID | 決済日時 |

実際に検索する際には結合したVIEWに対してクエリを投げる感じになります。
ただ、ここまで細分化すると結合・更新・挿入時のコストが気になります…。

実際にテストデータが500万件程入っているテーブルで色々試しているのですが
参照時は期待したパフォーマンスが返ってくるのでこのままこの方法でいこうかなぁと考えているのですが、
やめておいたほうがいいような理由があれば是非指摘して頂けると助かります。

宜しくお願いします。

436 名前:NAME IS NULL mailto:sage [2009/02/08(日) 11:29:55 ID:???]
>>417
Order Byでは無理だよ

437 名前:NAME IS NULL mailto:sage [2009/02/08(日) 13:53:37 ID:???]
countって0は表示してくれないのかよおおおおおおおおおおおおおおおおおおお おわたorz

438 名前:NAME IS NULL mailto:sage [2009/02/08(日) 13:57:42 ID:???]
だめだ、HAVING (count(test) >= 0)
で、0も表示してくれるかなと思ったけどだめだった

439 名前:NAME IS NULL mailto:sage [2009/02/08(日) 14:33:47 ID:???]
ifnullでも0が無視される
これはどうしようもない

440 名前:NAME IS NULL mailto:sage [2009/02/08(日) 15:37:49 ID:???]
日記はチラシの裏へ



441 名前:NAME IS NULL mailto:sage [2009/02/08(日) 15:41:17 ID:???]
coalesce(count(test)、0)

442 名前:NAME IS NULL mailto:sage [2009/02/08(日) 15:47:05 ID:???]
>>436
MySQLは
ORDER BY IS_NUM(c2), c2
みたいな書き方出来ないっけ?

443 名前:NAME IS NULL [2009/02/08(日) 17:52:16 ID:v3XpQP14]
5.0でレプリケーション使ってます。
マスタとスレーブで不整合になるケースって、何があるでしょうか?

5.1から実装された、行ベースレプリケーションでは、不整合は一切起きないのでしょうか?

444 名前:NAME IS NULL mailto:sage [2009/02/08(日) 19:01:23 ID:???]
スレーブをついうっかり更新した場合とか
5.1でもスレーブをついうっかり更新したら不整合になるよ

445 名前:NAME IS NULL mailto:sage [2009/02/08(日) 20:49:54 ID:???]
>>443
確実に行を確定できないクエリを投げれば不整合起きるね。
たとえば DELETE文を ORDER BY なしで LIMIT つけて実行したらどの行が削除されるかマスタとフレーブで相違がでる可能性がある。こんなクエリ投げる奴がタコだけど。 行ベースレプリではこのケースでも発生しなくなると思うが未検証。

446 名前:NAME IS NULL mailto:sage [2009/02/09(月) 09:31:53 ID:???]
(SELECT * FROM tbl_A
EXCEPT
SELECT * FROM tbl_B)
UNION ALL
(SELECT * FROM tbl_B
EXCEPT
SELECT * FROM tbl_A);

ms sql で上記の様なSQL文を使っていたのですが、MySQLでは使えないのでしょうか?
代わりとなるSQL文が思いつかなくて困っております。

447 名前:NAME IS NULL mailto:sage [2009/02/09(月) 13:20:46 ID:???]
phpmyadminでは
SELECT * FROM TABELE WHERE TESTDATE = DATE(NOW()) - 1
を計算して表示してくれるんだが、phpで1のところに変数入れたらクエリ送信に失敗する・・

$date = 1;
$sql = "SELECT * FROM TABELE WHERE TESTDATE = DATE(NOW()) - $date";

なんでだと思って、php側で変数使わずに、

$sql = "SELECT * FROM TABELE WHERE TESTDATE = DATE(NOW()) - 1";

ってやったらいける。
これって同じじゃないのか?・・
どなたかおたすけを

448 名前:NAME IS NULL mailto:sage [2009/02/09(月) 13:23:42 ID:???]
echo $sql で何が出る?

449 名前:NAME IS NULL mailto:sage [2009/02/09(月) 13:23:54 ID:???]
var_dump($sql)の結果は?

450 名前:447 mailto:sage [2009/02/09(月) 13:24:25 ID:???]
うおお自己解決
実際は$date = 1;
のところを、$pdate にしてたんだけど
これを、$paとか別のやつに代えたらうまく行った・・
なんでだろう・・



451 名前:NAME IS NULL mailto:sage [2009/02/09(月) 13:29:09 ID:???]
それ解決してないやん

452 名前:447 mailto:sage [2009/02/09(月) 13:29:22 ID:???]
>>448
>>449
$pdateの段階では、
SELECT * FROM TABELE WHERE TESTDATE = DATE(NOW()) - 1
で、ちゃんとできてるのにおかしいなぁっと
で、さっき>>450でやったらできた

453 名前:NAME IS NULL mailto:sage [2009/02/09(月) 13:30:05 ID:???]
>>452
気になるから再現コード出してみてくれ

454 名前:NAME IS NULL mailto:sage [2009/02/09(月) 13:31:50 ID:???]
>>451
まぁたしかに・・
$paでできて、$pdateでなんでできないんだ
>>453
ちょっとまってて、実際にしたやつをかいてみる

455 名前:447 mailto:sage [2009/02/09(月) 13:35:23 ID:???]
あ、すまん。
書こうとおもって上から冷静にみてたら
$pdateを別のところで使ってた
これが原因だたw
おさわがせしました

456 名前:NAME IS NULL mailto:sage [2009/02/09(月) 13:39:46 ID:???]
こいつぅ〜

457 名前:NAME IS NULL mailto:sage [2009/02/09(月) 13:44:23 ID:???]
おかしいときは、まずそのsqlを出力して、
別のツールでそのSQLをコピペして結果を見る。

458 名前:NAME IS NULL mailto:sage [2009/02/09(月) 13:52:32 ID:???]
だから
>echo $sql で何が出る?
>var_dump($sql)の結果は?
って言われてたのに
やらないで嘘の返答してたのね

459 名前:NAME IS NULL mailto:sage [2009/02/09(月) 13:55:39 ID:???]
思い込みが一番の敵だからなあ、デバッグは

460 名前:447 mailto:sage [2009/02/09(月) 13:58:57 ID:???]
echo $sql
と、var_dumpて
or die $sqlで出したのと結果は一緒?
それを>>452で書いたんだけど、違ったのかな。
一応おかしいときにsqlの出力はしてたんだけど。
それをこぴって、phpmyadminとコマンドプロンプトでやったんだけど
できたから、はまってたんだ



461 名前:NAME IS NULL mailto:sage [2009/02/09(月) 14:45:58 ID:???]
はい?前の部分で$pdateに別な値入れてたからだめだったんじゃないの?
>>455は一体何?


462 名前:NAME IS NULL mailto:sage [2009/02/09(月) 14:54:48 ID:???]
はまる前は別の理由でこけてたんだろうな

463 名前:NAME IS NULL mailto:sage [2009/02/09(月) 16:10:49 ID:???]
                             |
                             |
      ∩___∩             |
      | ノ  _,  ,_ ヽ        ((  | プラプラ
     /  ●   ● |         (=)
     |    ( _●_)  ミ _ (⌒)   J  ))
    彡、   |∪|  ノ
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /         ヽ /
   \_,,ノ      |、_ノ


464 名前:447 mailto:sage [2009/02/09(月) 16:49:42 ID:???]
>>461
そうだよ、うまくいかなかったときは、
$pdate=1にしてて、
ちょっと下の方でも、$pdate=<a href='test.php'>test</a>;
みたいに、別の変数として使ってたんだよ。
でも、この状態で、or dieの結果が、
SELECT * FROM TABELE WHERE TESTDATE = DATE(NOW()) - 1
になってたわけ。>>448-449でもsqlの結果はと聞かれたから、>>452で書いてる。
で、-1ってちゃんとなってるのになんで結果が出てこないんだろうと、
>>453
で聞かれたんで、詳しく書いてみようと、もっかいコードを見直してるときに、
>ちょっと下の方で$pdate="<a href='test.php'>test</a>";
を発見して、
>>455
になった。
だから>>461が、たぶん言いたいのは
>>452で、結果が
SELECT * FROM TABELE WHERE TESTDATE = DATE(NOW()) - 1
じゃなくて
SELECT * FROM TABELE WHERE TESTDATE = DATE(NOW()) - <a href='test.php'>test</a>
ってなってないのはなんで?てこと?だろうと思うけど、
それがわからないから>>460で、はまってたんだよ

465 名前:NAME IS NULL mailto:sage [2009/02/09(月) 17:01:47 ID:???]
いやもうわかったから。
そんなに見落としたことを力説しなくてもいいって。

466 名前:NAME IS NULL mailto:sage [2009/02/09(月) 17:05:13 ID:???]
そうか。
>>461が疑問を投げかけてきたので説明したのですが、
君が理解してくるとは、
ありがとうございます

467 名前:NAME IS NULL [2009/02/09(月) 17:11:49 ID:TVFyCyvq]
  ドゴォォォォン!!
        ; '     ;
         \,,(' ⌒`;;)
         (;; (´・:;⌒)/
  /⌒ヽ(;. (´⌒` ,;) ) ’
Σ(;^ω^)((´:,(’ ,; ;'),`
⊂ ⊂    / ̄ ̄ ̄/__
      \/___/


468 名前:もぐもぐ [2009/02/09(月) 20:36:54 ID:2F7+HTw5]
商品テーブル t_shohin の ID=1 の商品の在庫が 10個あるとします。
今、次の2つのプログラムを同時に実行したとします。
このとき、どのような実行順序であっても、最終的に在庫は 9 になりますか?

プログラムA:
BEGIN;
UPDATE t_shohin SET zaiko = zaiko - 1 WHERE id = 1;
COMMIT

プログラムB:
BEGIN;
UPDATE t_shohin SET zaiko = zaiko - 1 WHERE id = 1;
ROLLBACK;



469 名前:NAME IS NULL [2009/02/09(月) 21:02:23 ID:zsedLAyr]
phpMyAdminで日本語を含んだデータベースおよびテーブルを作成すると文字化けします。
php(Shift-JIS)からSQL文をUTF-8にエンコードしてテーブルを作成した場合は文字化けせず
phpMyAdmin上でも日本語が文字化けせずに表示されました。
下記にPHP,MySQL,phpMyadminの設定をのせておきました。
phpMyAdminで文字化けせずに日本語を含んだテーブル等を作成するにはどうしたらいいのでしょうか?

■PHP
バージョン 5.2.6
文字コード Shift-JIS
■MySQLの文字コード
バージョン 5.1
文字コード
 character_set_client | utf8
 character_set_connection | utf8
 character_set_database | utf8
 character_set_filesystem | binary
 character_set_results | utf8
 character_set_server | utf8
 character_set_system | utf8
■my.ini
[mysql]
default-character-set=utf8
[mysqld]
skip-character-set-client-handshake
[mysqldump]
default-character-set=utf8
■phpMyAdmin
バージョン 5.1.3
config.inc.phpに追加した内容
 $cfg['DefaultLang'] = 'ja-utf-8';
 $cfg['Lang'] = 'ja-utf-8';
 $cfg['DefaultCharset'] = 'ja-utf-8';
 $cfg['AllowAnywhereRecoding'] = true;

470 名前:NAME IS NULL [2009/02/09(月) 21:05:18 ID:TVFyCyvq]
■PHP
バージョン 5.2.6
文字コード Shift-JIS



471 名前:469 mailto:sage [2009/02/09(月) 21:33:29 ID:???]
>>470
ありがとうございます。php.iniを
mbstring.internal_encoding = UTF-8
mbstring.http_output = UTF-8
にしたらphpMyAdminからでも日本語を文字化けせずに入力できました。

たびたび質問で申し訳ないのですが、
phpをShift-JISで表示する場合はphpMyAdminの使用はあきらめるしかないのでしょうか

472 名前:469 mailto:sage [2009/02/09(月) 22:15:02 ID:???]
自己解決しました。すいません。

473 名前:NAME IS NULL mailto:sage [2009/02/09(月) 22:34:55 ID:???]
>>464
よう分からん。
説明が下手すぎ。
必要なことだけコードの上から順に説明してくれ。

474 名前:NAME IS NULL [2009/02/10(火) 06:53:10 ID:HMWEDl5O]
ちょと質問です。

create table t1 (
foo decimal(8,4) not null default 0,
...
);

insert into t1 select avg(foo) from t2 ...

ERROR 1265 (01000): Data truncated for column 'foo' at row 1


こんな感じでavg() の結果をそのままinsert したいんだけど
形を floatや real に変えてみてもエラーで挿入できまへん。
キャストしようにも浮動小数点へは対応してないみたいだし、もうワカラン。

どうすればavg() の結果をまんま挿入できるんでしょ?
そもそもavg() の返り値ってどんな形?
よろしくです

475 名前:NAME IS NULL mailto:sage [2009/02/10(火) 07:12:38 ID:???]
>>473
>>461かどうかはわからないけど、もし>>461なら、
>>452で、結果が
>SELECT * FROM TABELE WHERE TESTDATE = DATE(NOW()) - 1
>じゃなくて
>SELECT * FROM TABELE WHERE TESTDATE = DATE(NOW()) - <a href='test.php'>test</a>
>ってなってないのはなんで?てこと?だろうと思うけど、
この部分には同意なの?違うの?

476 名前:474 mailto:sage [2009/02/10(火) 07:29:29 ID:???]
申し訳ない、自己解決。原因は null ですた

477 名前:NAME IS NULL mailto:sage [2009/02/10(火) 10:32:10 ID:???]
>>475
その部分に同意ってなんだ?

478 名前:447 mailto:sage [2009/02/10(火) 11:16:36 ID:???]
>>477
で、あなたは>>461なの?
レスを返してくることから、
>>461なんだろうけど、
その部分には触れないことから、自信がないのはわかります。
つまり、あなたが>>461さんである場合、>>475への返答を濁している
わけなので、そもそも>>461のレス
>461 名前:NAME IS NULL[sage] 投稿日:2009/02/09(月) 14:45:58 ID:???
>はい?前の部分で$pdateに別な値入れてたからだめだったんじゃないの?
>>455は一体何?
について、その意図をお聞かせください。
それでないと話が進まないので。

479 名前:NAME IS NULL mailto:sage [2009/02/10(火) 15:18:10 ID:???]
何なんだよお前は
なんでそう関係ない煽り入れてくんの?
自信って何に対する自信?

480 名前:NAME IS NULL mailto:sage [2009/02/10(火) 15:58:49 ID:???]
                             |
                             |
      ∩___∩             |
      | ノ  _,  ,_ ヽ        ((  | プラプラ
     /  ●   ● |         (=)
     |    ( _●_)  ミ _ (⌒)   J  ))
    彡、   |∪|  ノ
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /         ヽ /
   \_,,ノ      |、_ノ




481 名前:NAME IS NULL [2009/02/10(火) 16:04:56 ID:ZzAFL99e]
SQLというかデータベースずぶの素人なのですが、
Acceessを除くと入門用としてはリファレンスがあふれている・タダで使えるという点でMySQLが一番でしょうか?
MS製と言うことでMicrosoft SQL Serverとどちらか迷ってます

482 名前:NAME IS NULL mailto:sage [2009/02/10(火) 16:09:54 ID:???]
auto_incrementとかlimitとか独自仕様も多いけど
とりあえずMySQLでいいと思う

483 名前:NAME IS NULL mailto:sage [2009/02/10(火) 16:44:10 ID:???]
postgresql と両方使うと、色々わかると思いますよ。
grant とか lock とか、そもそも「独自仕様」しかないわけだし。

484 名前:NAME IS NULL mailto:sage [2009/02/10(火) 17:23:47 ID:???]
ちょっと前まではSQL(SQL92)を学ぶためには、OSSであればMySQL
よりもPostgreSQLの方を薦めていたけれども。
現在はどちらでも大体大丈夫だと思うけど、それでも勉強する上では
共通語(SQL92, 99)の部分と方言の区別はつけて学んだ方が良いよ。

485 名前:NAME IS NULL [2009/02/10(火) 17:27:13 ID:ZzAFL99e]
>>482-483
皆様ありがとうございます!
まずはMySQLで勉強します!

486 名前:NAME IS NULL mailto:sage [2009/02/10(火) 17:59:25 ID:???]
なんだ461は逃げ出したみたいだな。
久しぶりにおもしろいものが見れると思ったのに残念だ。

487 名前:NAME IS NULL mailto:sage [2009/02/10(火) 19:12:47 ID:???]
初学者はいつの時代でも香ばしいんかのう。わしらが若い頃は・・・。

488 名前:NAME IS NULL mailto:sage [2009/02/10(火) 19:18:56 ID:???]
163 名前:名無し~3.EXE[sage] 投稿日:2009/02/10(火) 19:07:04 [夜] ID:ki0WewRT
質問していいですか

164 名前:名無し~3.EXE[sage] 投稿日:2009/02/10(火) 19:08:38 [夜] ID:8lQBGS4f
もう質問してるじゃん

489 名前:NAME IS NULL mailto:sage [2009/02/10(火) 22:10:02 ID:???]
falconってどうなの?

490 名前:NAME IS NULL mailto:sage [2009/02/10(火) 22:49:18 ID:???]
「基礎からのMySQL」
読んでる人いる?



491 名前:NAME IS NULL [2009/02/12(木) 01:16:50 ID:fyVeg0bv]
サーバーAからサーバーBへデータを移そうとmysqldumpしたんですけど、文字化けが発生してしまいます。
文字コードはujis統一で show variables like charの結果は以下のとおりとなります

| character_set_client | ujis
| character_set_connection | ujis
| character_set_database | ujis
| character_set_results | ujis
| character_set_server | ujis
| character_set_system | utf8
| character_sets_dir | /usr/share/mysql/charsets/

ダンプして持ってきたSQL文は秀丸で文字化けなくEUCで確認できるのでインポート時の問題と考えております。

my.cnfは以下のとおりですが、設定に不備がありましたらご指摘いただけないでしょうか

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1
default-character-set=ujis
init-connect=SET NAMES ujis
collation-server = ujis_japanese_ci
skip-character-set-client-handshake
character-set-server=ujis
init-connect='SET NAMES ujis'

[mysql]
default-character-set=ujis

[mysqldump]
default-character-set=ujis

492 名前:NAME IS NULL mailto:sage [2009/02/12(木) 02:53:14 ID:???]
秀丸使えるんなら秀丸でujis保存してからインポートで桶

493 名前:491 [2009/02/12(木) 03:13:28 ID:fyVeg0bv]
>>492

返信ありがとうございます。

一点確認ですがeuc = ujisですよね。
秀丸でsql文を覘いてみると日本語文字列は正常に表示されてますし、エンコードもEUCとなっているので
サーバーAが出力したdumpデータ自体は問題が見つかりませんでした。
よってインポート時の互換問題と思いmy.cnfをアップさせてもらった次第です。


494 名前:NAME IS NULL mailto:sage [2009/02/12(木) 03:33:31 ID:???]
euc-jpは辞めといたほうがいい
SQLインジェクションされるから

495 名前:491 [2009/02/12(木) 04:02:01 ID:fyVeg0bv]
>>494

なるほどです。phpとmysqlで構成しているのですが、見よう見まねでphpで受け取ったデータを
mb_convert_encodingでeuc→eucとして文字コードの整理をしています。

ちょっと話がそれてしまいましたが、mysqldumpの方何かお分かりになりましたら
ご教示いただけると幸いです。

496 名前:NAME IS NULL mailto:sage [2009/02/12(木) 07:19:18 ID:???]
phpからmysqli関数を使ってmysqlに接続したところ
Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2)

というエラーが出ました
/tmp/mysqld.sockというファイルのアドレスの指定が間違っているのが原因だと
思っているのですが、レンタルサーバーなのでmysqld.sockがどこにあるのか
わかりません。

一応phpmyadminは正常に動作しているので、
このphpmyadminからmysqld.sockの場所を探すことはできますか?

497 名前:NAME IS NULL mailto:sage [2009/02/12(木) 11:23:07 ID:???]
>>496
www.hi-ho.ne.jp/tsumiki/book_sup2.html

498 名前:NAME IS NULL [2009/02/13(金) 01:01:48 ID:lbwG1Dxe]
accessテーブルのフィールド構成が
page_id,date

で、ページにアクセスがある度にレコードが追加されます。
SELECT COUNT(*) AS cnt FROM access GROUP BY date ORDER BY date

で、ページ毎の日のアクセス数を抽出できるのですが、
SQLだけでページのランキングまで出すにはどうすればいいのでしょうか?

499 名前:NAME IS NULL mailto:sage [2009/02/13(金) 02:56:17 ID:???]
order byにcntを追加すればいいのでは?
しかし解析ページにアクセスある度に集計か。page_id, cntでいいのでは・・・?

500 名前:NAME IS NULL mailto:sage [2009/02/13(金) 12:37:32 ID:???]
あるテーブルにレコードが存在している場合は UPDATE、
存在しない場合は INSERT をかけたいのですが、
よい方法が見つけられません。

insert ignore を考えたのですが、
primary key はオートインクリメントなので、レコードの存在チェックを
かけたいカラムはプライマリキーではありません。

MS-SQL SERVER だと if exists 構文が使えるのですが、
それと同様の事を mysql で、ストアドを使わずに 1つの SQL 文で実現する
構文がありましたらアドバイスを頂けると…。
(プログラムで select してレコードがあれば update,なければ insert という
事をしなくても、mysql 側で適切に処理させたい…)




501 名前:NAME IS NULL mailto:sage [2009/02/13(金) 12:39:29 ID:???]
>>500
dev.mysql.com/doc/refman/5.1/ja/insert-on-duplicate.html

502 名前:NAME IS NULL mailto:sage [2009/02/13(金) 15:02:29 ID:???]
>>500
>レコードの存在チェックをかけたいカラムはプライマリキーではありません。

503 名前:NAME IS NULL mailto:sage [2009/02/13(金) 17:15:30 ID:???]
ユニークならok

504 名前:NAME IS NULL mailto:sage [2009/02/14(土) 00:22:16 ID:???]
>>491
どの文字がどのように化けるか具体的に。

505 名前:NAME IS NULL mailto:sage [2009/02/14(土) 00:22:38 ID:???]
>>494
それ sjis のことじゃね?

506 名前:NAME IS NULL mailto:sage [2009/02/14(土) 11:51:21 ID:???]
>>491
この条件で文字化けが起きるのはおかしいので、
表示する時の問題な気がする。
例えば、プログラムで表示してるなら、そっちの設定がおかしいとか。

どうでも良いけど、set names 何回するのかとw

>>494
sqlインジェクションとujisは関係ない。set names の問題と勘違いしてるのかな?
blog.ohgaki.net/set_namesa_mcb_asc

507 名前:NAME IS NULL [2009/02/14(土) 13:22:16 ID:XIrU4Fc9]
ossipedia.ipa.go.jp/capacity/EV0604170061/
ここで出てるCore2 HT onで、innodb_thread_concurrency = 20 の時、
著しい性能劣化が起きる現象って、もう解決してるんでしたっけ?


508 名前:NAME IS NULL mailto:sage [2009/02/14(土) 21:37:04 ID:???]
mysqlbenchでコネクション数を1000より大きくしたいのですが。。。
どなたか方法ご存知ありませんか?


509 名前:NAME IS NULL mailto:sage [2009/02/15(日) 10:34:34 ID:???]
>>508
存じております><

510 名前:NAME IS NULL mailto:sage [2009/02/16(月) 16:04:35 ID:???]
>>501
横やりなんだけど
> ON DUPLICATE KEY UPDATE を利用する時は DELAYED オプションは無視されます。
ってあるじゃん。やっぱりそうなると大規模じゃ無理ぽ?みんなどうしてるのかな。



511 名前:NAME IS NULL mailto:sage [2009/02/16(月) 16:05:27 ID:???]
>>490
読んだけど、けども・・・。

512 名前:NAME IS NULL mailto:sage [2009/02/16(月) 16:33:10 ID:???]
>>511
なんだ、はっきり言え

513 名前:NAME IS NULL [2009/02/17(火) 08:55:16 ID:RjANfwsW]
オートインクリメントで0から始める事ってできないんですか?

514 名前:NAME IS NULL mailto:sage [2009/02/17(火) 09:31:00 ID:???]
>>512
他に読むべき本が・・・、あるっ・・・!
初心者向けなのはわかるけど、あまり理系に向いてないというか浮かんでくる疑問が多くてこれ一冊じゃわかった気にならない。

>>513
手動でsequenceのテーブル書き換えるかAUTO_INCREMENTを0にしたらどうかな。結果報告待ってます。

最近こんなのが出て頻繁に落ちるようになっちゃった。メモリ不足なのかな・・・。
090217 9:29:42 - mysqld got signal 11 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.

key_buffer_size=402653184
read_buffer_size=2097152
max_used_connections=18
max_threads=151
threads_connected=12
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 1013224 K
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
うーん。

515 名前:NAME IS NULL mailto:sage [2009/02/17(火) 12:32:07 ID:???]
>>514
OSは何なの?
物理メモリーやスワップはどのくらい?


516 名前:NAME IS NULL mailto:sage [2009/02/17(火) 13:19:04 ID:???]
>>515
返信ありがとう。チューニングのチュの字もわかんないへたれです。
FreeBSD, メモリ4G, スワップ1Gです。

%uname -a
FreeBSD kennedy.l3tp.org 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan 1 08:58:24 UTC 2009 root@driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
%swapinfo
Device 1K-blocks Used Avail Capacity
/dev/ad0s1b 1048576 36 1048540 0%
%dmesg |grep mem
usable memory = 4280016896 (4081 MB)
avail memory = 4122501120 (3931 MB)
%pkg_info -Ix mysql-server
mysql-server-5.1.30 Multithreaded SQL database (server)

key_buffer = 384M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8

# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 384M
innodb_buffer_pool_size = 2000M
#innodb_additional_mem_pool_size = 20M
innodb_additional_mem_pool_size = 512M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 100M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

そこまで高負荷とは思ってないのですが、phpMyAdminでつなぐと頻繁に落ちる気がしてます。

517 名前:NAME IS NULL mailto:sage [2009/02/17(火) 13:30:37 ID:???]
チュの字ってなんか笑える

518 名前:NAME IS NULL mailto:sage [2009/02/17(火) 14:04:01 ID:???]
俺はお前にホの字だこのやろう

519 名前:NAME IS NULL mailto:sage [2009/02/17(火) 15:03:57 ID:???]
こりゃあ御の字だ

520 名前:NAME IS NULL mailto:sage [2009/02/17(火) 17:05:36 ID:???]
お前らのせいで>>516が口をへの字にしちゃったよ



521 名前:513 [2009/02/17(火) 22:05:38 ID:zRRDspbr]
>>514
無理でした。どうやっても1から始まります。
オートインクリメントを使わず毎回自分で+1にするようにします。


522 名前:513 [2009/02/17(火) 22:21:03 ID:zRRDspbr]
オートインクリメントに0が入らないので
select countをして出た値に1をプラスして
insertすることにしました。

でもこれだと処理が2回になるのですが、
selectせず、insertだけで足す方法はないのでしょうか?

updateならcolomn1=column1+1でできるのでselectでもそういうのあればいいなって思って。

523 名前:513 [2009/02/17(火) 22:25:35 ID:zRRDspbr]
間違えた


updateならcolomn1=column1+1でできるのでinsertでもそういうのあればいいなって思って。

524 名前:NAME IS NULL mailto:sage [2009/02/17(火) 23:08:43 ID:???]
アパッチを使いMySQLサーバを立て
別のPCからMySQLモニタでサーバにアクセスすることって可能ですか?

525 名前:NAME IS NULL mailto:sage [2009/02/17(火) 23:51:23 ID:???]
>>524

> アパッチを使いMySQLサーバを立て

意味がわかんない。

526 名前:SQL初心者 [2009/02/18(水) 01:21:54 ID:SEraTn1l]
今ブログを作成しているんですが、ユーザーがサイドメニューにある
カテゴリー一覧から見たいカテゴリーをクリックした際にcategory_idから
コメント数、ブログの内容、カテゴリーの名前をすべて取得するクエリ
で挫折中です(涙)

日記関連のテーブル(topic)
日記につけるカテゴリテーブル(category)
日記に書かれたコメント管理テーブル(comment)
が存在します。

〜topic〜
_______________________________
|topic_id | title | body | category_id | topic_date |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜comment〜
_____________
|comment_id | topic_date|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜category〜
_______________
|category_id | category_name |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

〜完成〜

______________________
| comment(*) | body | title | category_name |
| ̄ ̄12 ̄ ̄ ̄| ̄〜 ̄| ̄〜 ̄ | ̄サッカー ̄ ̄ |
| ̄ ̄11 ̄ ̄ ̄| ̄〜 ̄| ̄〜 ̄ | ̄野球 ̄ ̄ ̄ ̄ |
| ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄| ̄ ̄ ̄ | ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
| ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄| ̄ ̄ ̄ | ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
| ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄| ̄ ̄ ̄ | ̄ ̄ ̄ ̄ ̄ ̄ ̄ |

ご教授お願いします(涙)

527 名前:SQL初心者 [2009/02/18(水) 01:24:22 ID:SEraTn1l]
すみません間違えました。

今ブログを作成しているんですが、ユーザーがサイドメニューにある
カテゴリー一覧から見たいカテゴリーをクリックした際にcategory_idから
コメント数、ブログの内容、カテゴリーの名前をすべて取得するクエリ
で挫折中です(涙)

日記関連のテーブル(topic)
日記につけるカテゴリテーブル(category)
日記に書かれたコメント管理テーブル(comment)
が存在します。

〜topic〜
_______________________________
|topic_id | title | body | category_id | topic_date |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜comment〜
_____________ ______
|comment_id | topic_id| comment_body |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜category〜
_______________
|category_id | category_name |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

〜完成〜

______________________
| comment(*) | body | title | category_name |
| ̄ ̄12 ̄ ̄ ̄| ̄〜 ̄| ̄〜 ̄ | ̄サッカー ̄ ̄ |
| ̄ ̄11 ̄ ̄ ̄| ̄〜 ̄| ̄〜 ̄ | ̄野球 ̄ ̄ ̄ ̄ |
| ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄| ̄ ̄ ̄ | ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
| ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄| ̄ ̄ ̄ | ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
| ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄| ̄ ̄ ̄ | ̄ ̄ ̄ ̄ ̄ ̄ ̄ |

ご教授お願いします(涙)


528 名前:NAME IS NULL [2009/02/18(水) 02:44:18 ID:1PYDVjnF]

$a = mysql_query("select * from topic where category_id='サッカー'");
これでtopic_idを出す
$b = mysql_query("select count(*) from comment where topic_id='サッカー'");
これで数を数える

ループ{
print $bのコメント数 | $aのボディ | $aのタイトル | カテゴリネーム
}

これで

______________________
| comment(*) | body | title | category_name |
| ̄ ̄12 ̄ ̄ ̄| ̄昨日俺は ̄| ̄うまい! ̄ | ̄サッカー ̄ ̄ |
| ̄ ̄ ̄ ̄ ̄| ̄サッカー好きじゃねーって ̄| ̄ドリブル ̄ | ̄サッカー ̄ ̄ ̄ ̄ |
| ̄ ̄ ̄ ̄ ̄ ̄| ̄昨日はうんこを ̄ ̄| ̄ハゲ ̄ ̄ | ̄ ̄サッカー ̄ ̄ ̄ ̄ ̄ |
| ̄ ̄ ̄ ̄ ̄ ̄| ̄Jリーグって ̄ ̄| ̄ ̄包茎 ̄ | ̄ ̄サッカー ̄ ̄ ̄ ̄ ̄ |
| ̄ ̄ ̄ ̄ ̄ ̄| ̄変態だよね、 ̄ ̄| ̄バカ ̄ ̄ | ̄ ̄サッカー ̄ ̄ ̄ ̄ ̄ |

と一覧がでるから全カテゴリをこの同じ繰り返しで出せばいいと思う


529 名前:NAME IS NULL [2009/02/18(水) 02:49:27 ID:1PYDVjnF]
間違えた

$b = mysql_query("select count(*) from comment where topic_id='$aから得られたtopic_id'");

530 名前:NAME IS NULL mailto:sage [2009/02/18(水) 05:39:36 ID:???]
select
NC.NUMCOMMENT AS NUMCOMMENT,
T.BODY AS BODY,
T.TITLE AS TITLE,
C.CATEGORY_NAME AS CATEGORY_NAME
from
TOPIC T,
CATEGORY C,
(select TOPIC_ID, count(*) as NUMCOMMENT
from COMMENT group by TOPIC_IC) NC
where
NC.TOPIC_ID = T.TOPIC_ID
and
T.CATEGORY_ID = C.CATEGORY_ID

(注意点)
俺は酔っぱらっている。



531 名前:NAME IS NULL [2009/02/18(水) 09:16:59 ID:u+jMSbf+]
  ,,..-----;-----、_   
,r'''´      ;;、ミ  ,)
;;::::::    彡 i'   ̄ヽ
;;::::::::   彡ノ    |       
;;:::::::::    /    ^|_     ィ'ミ,彡ミ 、
;;:::::  / ヽ | U    |_・)   ミf_、 ,_ヾ彡  < 俺は酔っぱらっている。
i;;;;;; ,i( `.|  J   |      .ミ L、 t彡
\;;/' ヽ_ヽ     / ,>     ヽ∀ ノ
 ∧ヽ、  i      >      /<V>ヽ
';;;;;;`、 \ \___」        ||   | |
;;;;;;;;;;;;\  `ーイ          (L,_O
;;;;;;;;;;;;;;;; \ /7           | | |
;;;;;;;;;;;;;;;;;;; `'`i;;l          _L」L」
;;;麻生;;;;;;;;  i';;i           ̄

532 名前:NAME IS NULL mailto:sage [2009/02/18(水) 10:19:19 ID:???]
>>531
小泉じゃねーかYO!中川じゃねーんかYO!

533 名前:NAME IS NULL mailto:sage [2009/02/18(水) 10:24:41 ID:???]
>>522
INSERT INTO (・・・) SELECT ・・・
が使えるんじゃ?

つかオートインクリメントの数字そのものは気にするものじゃないよ。
どうしてもというのなら、自分でストアド書いたほうがマシかもね。

534 名前:SQL初心者 [2009/02/18(水) 12:22:50 ID:SEraTn1l]
>>530
すみません、やってみましたがうまくいきません。
@category_id を元にtopicテーブルからtopic_idを取得
Atopic_idを元に、commentテーブルからコメント数を取得という流れなんですが
@の結果、topic_idが複数あるためにAでつまずいてしまいます。

頭悪くてすみません

535 名前:NAME IS NULL mailto:sage [2009/02/18(水) 13:33:05 ID:???]
要は次のものを取得したいという事で良いのかな?

・あるcategory idを持つ記事全てに対して付けられたcomment数の合計
・あるcategory idを持つ記事のbodyとtitle全て

だとすれば、これはクエリをcomment数を求めるクエリとbodyとtitleを
求めるクエリの2つに分けるのが、その後のアプリの実装も含めて結果的
には一番楽だと思う。

select
COUNT(*) AS NUMCOMMENT,
CA.CATEGORY_NAME AS CATEGORY_NAME
from TOPIC T, CATEGORY CA, COMMENT CM
where
T.CATEGORY_ID = CA.CATEGORY_ID AND
T.TOPIC_ID = CM.TOPIC_ID and
T.CATEGORY_ID = ???
group by CATEGORY_NAME

select
T.BODY AS BODY, T.TITLE AS TITLE,
CA.CATEGORY_NAME AS CATEGORY_NAME
from TOPIC T, CATEGORY CA
where
T.CATEGORY_ID = CA.CATEGORY_ID and
T.CATEGORY_ID = ???

536 名前:NAME IS NULL [2009/02/18(水) 19:30:37 ID:2QJzYceD]
table A と table B があって
table A に B への参照があります
A の row を B の column (bhoge) の値で sort するとき
select * from A left join B on B.id = A.b order by B.bhoge
見たいにすれば良いと思いますが
B の column (bhoge) の copy を A にも bhoge として持っておいて
select * from A left join B on B.id = A.b order by A.bhoge
とすると速くなりますか?

537 名前:NAME IS NULL mailto:sage [2009/02/18(水) 21:45:06 ID:???]
結局ソートで一回、結合で一回インデックスを読みに行くことで
実現されるから、大事なところにインデックス貼っておけばそうは
変わらないと思う。
あとはAとBのレコード数と、制約条件などの有無でも変わってくる
はずなので、具体的にはデータ依存としか言いようがない。

あとLEFT JOINを使っているけど、NULLを含む列をORDER BYに
使ったとき並び順は実装依存なので。明確に外部結合が必要で
無い限り内部結合を使った方が無難です。

538 名前:NAME IS NULL mailto:sage [2009/02/18(水) 21:45:41 ID:???]
ストアドプロシージャの初歩的な書き方について質問です。
プロシージャ内でテーブル名を変数に入れてクエリするにはどうしたらよろしいでしょうか?
具体的には
-----------------------------------------------------------------------
delimiter //

CREATE PROCEDURE table_count (OUT count INT , IN table_name text )
BEGIN
SELECT COUNT(*) INTO count FROM table_name;
END;
//

delimiter ;
-----------------------------------------------------------------------
のようなことをしたいのですが、table_nameを変数として展開せずにtable_nameというテーブルを探しにいってしまいます。
どう書いたらよろしいのでしょうか?

よろしくお願いします。

539 名前:NAME IS NULL [2009/02/19(木) 03:28:15 ID:VMuYz+8z]
ちょと質問です

SELECT * FROM
(SELECT ...略) AS t1 JOIN
(SELECT ...略) AS t2 JOIN
# 上の t1, t2 を使いたい
(SELECT * FROM t1 JOIN t2 ON ...略) AS t3
ON ...略;

コメントのまんまなんですが、そんなテーブルシラネって言われてしまいます
t1と t2 を使って更に集計を行い、t1,t2,t3 の結果を得たいのですがどのように書けばよいのでしょうか?
よろしくです


540 名前:539 mailto:sage [2009/02/19(木) 03:43:15 ID:???]
自己解決スマソ
更にサブクエリとすれば良かっただけでした



541 名前:NAME IS NULL mailto:sage [2009/02/19(木) 16:53:51 ID:???]
質問です

複数のカラムを1つのカラムに見立てて
ユニーク制約をかけることって出来ないのかな?
複数カラムの全レコードを通して一意の値を持たせたいんだけど。

動作的には空テーブルに
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 1 , 2 , 3 );
が成功したとき、

INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 3 , 1 , 2 ); も
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 4 , 4 , 5 ); も
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 4 , 5 , 3 ); も
失敗するような感じになって欲しい。
成功するのは
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 4 , 5 , 6 );
のように、c1,c2,c3とおして全く使用されていない値だけで
組み合わされた時だけにしたい。

UNIQUE (c1,c2,c3)みたいな表制約だと、c1,c2,c3の組み合わせの値が
同一のときだけしか制約されないので、これじゃないと言う事だけは
判ったんだけど。

やっぱりプログラム側で事前に重複チェックするしかないのかな?


542 名前:NAME IS NULL mailto:sage [2009/02/19(木) 16:55:22 ID:???]
昇天してしまったマシンからデータベースのバックアップを取りたいと
思っています。(マザーボードが死んだ)ディスクは生きているのですが、
適当なマシンにディスクをマウントしてバックアップをとる場合、mysqldumpを
使ってバックアップなどできるのでしょうか?os bootcdからrescueモードで
できればと考えています。OSはCentOS5です。

よろしくお願いします。


543 名前:NAME IS NULL [2009/02/19(木) 18:01:48 ID:p33S2AI3]
>>542
OSに関係なく可能。


544 名前:NAME IS NULL mailto:sage [2009/02/19(木) 18:45:23 ID:???]
>>541
それどんなシステムなの?

545 名前:541 mailto:sage [2009/02/19(木) 19:01:29 ID:???]
一件づつにユニークなナンバリングがされたアイテムを3つ用意して
それを登録してもらうんだけど、間違って同じ番号を複数入力されると
既に出来ている参照系に大きな影響が出てしまって
困るので、こういう風にしたいなぁと。

本当なら正規化してテーブル分けて云々するのがスジなのも
わかっているんだけど、よんどころない事情でそれも出来ないんだ

546 名前:NAME IS NULL mailto:sage [2009/02/19(木) 22:07:07 ID:???]
>>541
トリガぐらいしか思い浮かばないな、俺の頭じゃ
該当テーブルの BEFORE INSERT/UPDATE/DELETE で
CREATE TABLE selected (識別子 型 UNIQUE); なテーブルにも反映させる

547 名前:NAME IS NULL mailto:sage [2009/02/19(木) 22:41:59 ID:???]
c1, c2, c3 に入れる値を
任意の自然数nの代わりに
2の(n-1)乗になる数字を入れる

つまり
>>541
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 1 , 2 , 4 );
が成功したとき、

INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 4 , 1 , 2 ); も
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 8 , 8 , 16 ); も
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 16 , 32 , 4 ); も
失敗するような感じになって欲しい。
成功するのは
INSERT INTO t1 ( c1 , c2 , c3 ) VALUES ( 16 , 32 , 64 );
・・・
と置き換える


548 名前:NAME IS NULL [2009/02/20(金) 09:34:39 ID:lOvt94Rw]
time型の時間を、足したり平均をとったりっていうのはできるのでしょうか?
例えば,8:12:01+2:13:29 = 10:25:30 みたいな感じです.

549 名前:NAME IS NULL mailto:sage [2009/02/20(金) 09:44:10 ID:???]
time型はそのためにある

550 名前:NAME IS NULL mailto:sage [2009/02/20(金) 09:54:26 ID:???]
>>549

開始時刻 | 終了時刻 | 経過時間
16:33:00 | 16:23:00 | 00:10:00
10:40:00 | 10:31:00 | 00:09:00
12:33:00 | 09:21:00 | 03:12:00
13:15:00 | 11:14:00 | 02:01:00
13:19:00 | 10:41:00 | 02:38:00

経過時間は,timediff関数を使って求められたのですが,
経過時間の合計や平均の出し方が分からないんです。



551 名前:NAME IS NULL mailto:sage [2009/02/20(金) 09:55:41 ID:???]
集計関数使えば?

552 名前:NAME IS NULL mailto:sage [2009/02/20(金) 10:03:58 ID:???]
>>551
入力は↓のようにしてるんですが,
select jikan1, jikan2, timediff(jikan1,jikan2) from テーブル名;

この場合、集計関数はどこで使えばよいのでしょうか?
初心者ですいませんorz

553 名前:541 mailto:sage [2009/02/20(金) 11:13:02 ID:???]
>>546
ヒントアリガト。でもv4.1での実装なんでトリガはだめなんだorz

>>547
俺の頭の悪いのが問題かも知れんが、ちょっとイミフ


やっぱり素直にプログラム側で重複チェックを実装することにするヨ


554 名前:552 [2009/02/20(金) 12:08:39 ID:lOvt94Rw]
たびたびすみません。

(入力)
select jikan1, jikan2, timediff(jikan1,jikan2) from テーブル名;
(出力結果)
終了時刻 | 開始時刻 | 経過時間
16:33:00 | 16:23:00 | 00:10:00
10:40:00 | 10:31:00 | 00:09:00
12:33:00 | 09:21:00 | 03:12:00
13:15:00 | 11:14:00 | 02:01:00
13:19:00 | 10:41:00 | 02:38:00


create table 出力結果のテーブル名 select jikan1, jikan2, timediff(jikan1,jikan2) from テーブル名;
↑のように入力して出力結果のテーブルを作りました.

そして,経過時間の平均を出そうと思って↓のように入力したんですが,
Unknown column 'jikan' in 'field list'というエラーが出ましたorz
どなたか経過時間の平均の出し方を教えてください。

(入力)
  select AVG(timediff(jikan1,jikan2)) from 出力結果のテーブル名;

555 名前:NAME IS NULL mailto:sage [2009/02/20(金) 12:50:37 ID:???]
5.1の目玉的な機能であるパーティショニングだけど、
FULLTEXTインデックスが使えないのね

データがすごい量で増えていくので、パーティショニング機能は
使いたいけど、全文検索するカラムがある場合は
そこだけ別テーブルで管理って感じなのか?

556 名前:NAME IS NULL mailto:sage [2009/02/20(金) 12:51:14 ID:???]
ver4のデータをver5に移す時はどのような手順を踏めば良いですか?


557 名前:NAME IS NULL mailto:sage [2009/02/20(金) 22:52:04 ID:???]
初心者です。勉強でc++(visual studio)上からmysqlを操作する方法を探していますが、
方法を記載してるサイトがありましたら教えていただけないでしょうか?


558 名前:NAME IS NULL mailto:sage [2009/02/21(土) 00:47:56 ID:???]
質問です。
blog_articlesというテーブルの中に、timeというキーがあります。
timeはYYYY-MM-DD HH:II:SSというフォーマットになってます。

timeの、YYYY-MM-DDの部分だけで、重複削除してレコードを取り出したいのですが、
どのようなクエリ送信を行えばよいでしょうか?

559 名前:NAME IS NULL mailto:sage [2009/02/21(土) 15:23:04 ID:???]
>>558
GROUP BY LEFT(time,9)
で良くね?

560 名前:NAME IS NULL mailto:sage [2009/02/21(土) 15:23:51 ID:???]
10だったな
まあどうでもいいや



561 名前:NAME IS NULL [2009/02/21(土) 16:06:43 ID:fHAIG+ux]
>>516
バグなんじゃない?
5.0なら大丈夫だと思う。

562 名前:NAME IS NULL [2009/02/21(土) 22:35:24 ID:HL3mV4aG]
not nullなenumに、''も代入できるのですが
どういう仕組みになってるのでしょうか?

563 名前:NAME IS NULL mailto:sage [2009/02/22(日) 12:22:40 ID:???]
Oracleとは違うのだよ、Oracleとは。

564 名前:NAME IS NULL [2009/02/22(日) 22:25:17 ID:dnKXa8Bx]
DBに関しての質問です。
Yahooオークションのようなサイト作ろうと思ってます。
カテゴリーのテーブルはどのように作るべきでしょうか?
categoryテーブルを1つだけでよいのか?
それともcategory1,category2...と分けるべきなのか?
よろしくお願いします。

565 名前:NAME IS NULL mailto:sage [2009/02/22(日) 22:29:04 ID:???]
悪いこと言わんからもうちょっと基礎的な勉強してからにすれ

566 名前:564 mailto:sage [2009/02/22(日) 22:40:02 ID:???]
>>565
予想通りのレスありがとうございます。
一応、知ってる人だけレスください^^;


567 名前:NAME IS NULL mailto:sage [2009/02/22(日) 22:59:39 ID:???]
「カテゴリー」の定義にもよるけど、集品を分類するための単純なタグ付け
程度の意味合いであれば普通は一つ。
あとは商品とカテゴリーの対応関係が1:NかN:Nかに応じて商品テーブル
にcategory_idのカラムを付けるか商品vs.カテゴリーの対応表を作るか、
お好きなように。あと、

>category1,category2...と分けるべきなのか

という選択肢は、RDBを多少なりとも勉強した人間であれば脊髄反射的に
>>565と同様の感想を持つ程度に珍妙である事は覚えておいて損はない。
基礎的な本でスキーマとインスタンスの区別から勉強した方が良いよ。

568 名前:NAME IS NULL mailto:sage [2009/02/22(日) 23:04:42 ID:???]
>>564
どう作ろうがそれこそ自由なので一概に言えないが
やっぱり検索の事を考えるとテーブルは一つかな。
カテゴリの数だけテーブル作るのもめんどくさいし。

でも自由なんで、自分で実験をして自分が使いやすい方を決めた方がいい。


569 名前:NAME IS NULL [2009/02/22(日) 23:16:08 ID:lnWvifHg]
colomn1とcolomn2があって、colomn1に数字の1と2が入ってます。
colomn2に1、2、3が入っていて、colomn1が1、colomn2が1、2のレコードを検索する場合は
select * from table where colomn1='1' and (colomn2='1' or colomn2='2');
っていう書き方でいいんですか?


570 名前:564 mailto:sage [2009/02/22(日) 23:16:38 ID:???]
>>567
もうちょっと簡単に教えてください。
ネラーって難しい言葉を羅列して賢く見せたい人多いけどそんなのどうでもいいです。

>>568
カテゴリの数ではなく深さでテーブルを追加するべきではと思っています。
ジャンルによってカテゴリの深さも違いますし後で増えたときすぐ対応できますから。

1つってことは何種類のカラムを作るべきでしょうか?
category_id INT
category_name VARCHAR
この2種類で良いのでしょうか?
ちなみに自分としてはRDBを用い複数のテーブルを作るべきだと思ってます。
※作り方は自由と言われたらそれまでですが正解を導き出したいので皆さんに助けを求めています。



571 名前:NAME IS NULL mailto:sage [2009/02/22(日) 23:36:48 ID:???]
>>570
前提知識が無いままにここで聞いても時間の無駄。
悪いけど、RDBを使うレベルまでに到達していないから、
あなたにはSQLはまだ使えない。

勉強して出直してきてくださいな。

掲示板でなんでも手取り足取り教えてくれると思うな。

果実とおんなじなんだよ。
育てずに果実だけ得るなんてことはできなくてね。

572 名前:NAME IS NULL mailto:sage [2009/02/22(日) 23:41:07 ID:???]
>>570
いちいち一言カチンと来るが釣られてやる。バカの壁に叫ぶようなものか。

スキーマとインスタンスという言葉はRDBを知らない人にとっては全く
馴染みがないものなので腹が立つのは判る。
ただこれはデータベース設計における基本的な考え方なので、正解が
欲しければまず勉強してもらわないと始まらない。

すごく意訳をすればスキーマとは未来永劫変化しないもの、とか構造。
というか、そういう意気込みで設計するもの。
インスタンスとはデータの出し入れとかその日の気分で変化しうるもの。

で、テーブルの定義は「スキーマ」に属する。カテゴリが増えたり深さが
変化する度にテーブルを増やしたり消したりするのは、世間一般的には
良い設計ではないし、検索や運用も大抵は困難という経験則がある。

なので、カテゴリ数が増減したり深さが変化してもテーブルの定義を
いじったりテーブルの追加削除を行う必要が一切無い、まずはそういう
テーブルを考えてみること。これがスタート地点。大原則。黙って従え。

ちなみに深さありのカテゴリ表を作りたいのであれば、大抵は次のような
テーブルがら設計を考え始めると思う。無論他の方法もある。

category_id INT
category_name VARCHAR
parent_id INT

573 名前:564 mailto:sage [2009/02/23(月) 00:19:31 ID:???]
>>572
その作りで、1番上のカテゴリに属するデータがいくつ入ってるとかわかりますか?
下位カテゴリから上位カテゴリを取得することは可能ですが
上位カテゴリから下位カテゴリ(末端)を取得することは不可能ですよね?


574 名前:NAME IS NULL mailto:sage [2009/02/23(月) 00:23:05 ID:???]
>>572
いちいち相手しないで放っとけや

575 名前:NAME IS NULL mailto:sage [2009/02/23(月) 00:31:08 ID:???]
>>574
おまえこそいちいち気にすんなやw

576 名前:NAME IS NULL mailto:sage [2009/02/23(月) 00:33:55 ID:???]
>>573
SQL92の範疇では苦手な類だけど、全然可能だよ。
SQLの教本には必ず出てくる類の問題。
"SQL 階層問い合わせ"、で検索してみるとよし。

>>574
いぢっているだけなので、飽きたら止めます。

577 名前:NAME IS NULL mailto:sage [2009/02/23(月) 01:12:21 ID:???]
一つのテーブルにカラムってPCのスペックにもよるでしょうけど何個くらい追加して大体大丈夫なもんなんでしょうか?
テーブル

カラム1 カラム2 カラム3 カラム4・・・・
データ データ  データ  データ
 ・     ・     ・      ・
 ・     ・     ・      ・
 ・     ・     ・      ・


このカラムがもし40個くらいだと、多すぎって笑われちゃうレベルですかね?

578 名前:NAME IS NULL mailto:sage [2009/02/23(月) 01:45:26 ID:???]
正規化した上で必要なら別にいいのでは

579 名前:564 mailto:sage [2009/02/23(月) 05:09:25 ID:???]
>>576
おい!騙したなこの野郎!
MySQLには階層問い合わせがないらしいじゃない。
Oracleじゃないんだよここは。
ストアド・プロシジャで作るしかないのかな?

580 名前:569 [2009/02/23(月) 05:15:21 ID:w5zz97q8]
だれか>>569を教えて下さい。




581 名前:NAME IS NULL mailto:sage [2009/02/23(月) 05:27:02 ID:???]
>>580
いいって何が?それでできなかったの?

582 名前:564 mailto:sage [2009/02/23(月) 05:46:36 ID:???]
>>569
それでいいよ。

583 名前:NAME IS NULL [2009/02/23(月) 06:27:26 ID:ScHu02j5]
カラムが40個とか50個とか、現場ではざらにあると思うが(それが良いかどうかは別にして

584 名前:NAME IS NULL [2009/02/23(月) 06:38:04 ID:w5zz97q8]
>>581
>>582
なんか結果が違ったので。勘違いかな。もうちょっと確認してみます。

585 名前:NAME IS NULL mailto:sage [2009/02/23(月) 07:45:29 ID:???]
>>579
中途半端に調べて人を嘘つき呼ばわりするな。

階層問い合わせ機能(WITH RECURSIVE)がSQL99からの標準。
それ以前のSQL92の時代は階層の深さの上限を仮定してクエリを組み
立てることで階層問い合わせを実現していた。ちょっと面倒。

だから「SQL92の範疇では苦手な類」と書いた。
しかし苦手だが出来ない訳じゃない。これは自己結合(知らない言葉
だからって腹立てるなよ)の典型的な応用例で、ちゃんとしたSQLの
解説本には必ず例が説明されている。

珍妙なテーブル定義やストアド等の聞きかじりの技術を持ち出す前に
基本を学べ。基本を。

586 名前:NAME IS NULL mailto:sage [2009/02/23(月) 10:29:55 ID:???]
>>578>>583
はい
一応このテーブル一つで管理したいデータでして、
特に問題なさそうなのでこのままやってみることにします
ありがとうございました

587 名前:NAME IS NULL mailto:sage [2009/02/23(月) 10:49:37 ID:???]
>583
それって、正規化が出来てないか、手抜いてるんじゃ・・・。>カラムが40個とか50個

588 名前:564 mailto:sage [2009/02/23(月) 11:05:24 ID:???]
>>585
WITH RECURSIVE kanri AS (
SELECT * FROM category WHERE category_id = '2'
UNION ALL
SELECT category.* FROM kanri,category WHERE category.parent_id = kanri.category_id
) SELECT * FROM kanri;

syntaxエラーが出てできませんがなにか…orz

589 名前:NAME IS NULL mailto:sage [2009/02/23(月) 11:57:15 ID:???]
おいおい
WITH RECURSIVEはMySQLで使えないってオチか?

590 名前:NAME IS NULL mailto:sage [2009/02/23(月) 13:29:37 ID:???]
>>589
書き方が中途半端だったが、MySQLはまだWITH RECURSIVEを
サポートしていない。だからSQL92の範疇でやる基本的な方法を
まず学べと言った。親切な自分がポインタを示すとだな、

www.mysql.gr.jp/mysqlml/mysql/msg/12071

これのAdjacency List(連接リスト)モデルが、階層の深さの上限を
仮定してクエリを組み立てる古典的なやり方。
これが基本。SQLの解説書にも必ず出ている。だから文句言う前に
ちゃんとした解説書でまずこれを勉強しろ。理解して使いこなせ。
WITH RECURSIVEだって発想の基本的な出発点はここだから。

ついでにこの記事には「ネストセット」という方法も書いてあるが、
ちょっと頭の体操が必要な上にちゃんと理解していないと更新で
はまる。せっかち君には正直お勧めしたくない。危険すぎて。
だからまず連接リストモデルをどうにかすべし。



591 名前:NAME IS NULL mailto:sage [2009/02/23(月) 14:23:33 ID:???]
WHERE の条件に bit 演算入れられますか?

592 名前:NAME IS NULL [2009/02/23(月) 14:33:36 ID:ERf3D8yz]
>>591
muri

593 名前:NAME IS NULL mailto:sage [2009/02/23(月) 17:55:39 ID:???]
MySQL - 4.0.27
MySQL - 5.0.45

下のようなテーブルで、日付とIDを記録しています。
COMEDATE | ID
-----------+-------
2009-02-21 | 10010
2009-02-21 | 10005
2009-02-22 | 10001
2009-02-22 | 10002
2009-02-22 | 10003
2009-02-22 | 10004
2009-02-22 | 10005
2009-02-23 | 10001
2009-02-23 | 10002
2009-02-23 | 10006
2009-02-23 | 10007
2009-02-23 | 10008

このデータから、特定の期間内のID種類数を求めるには
どうしたらよいでしょうか?

上記の場合であれば、9種類のIDがありますので、
9を求められればと思います。

出来れば、サブクエリの利用できる環境と、
そうでない場合のSQLを教えていただけると助かります。


594 名前:NAME IS NULL mailto:sage [2009/02/23(月) 18:25:03 ID:???]
SELECT count(DISTINCT id) FROM table WHERE comedate BETWEEN '2009-2-21' and '2009-02-23'
とか。
ってバージョンの違いわからないのでやってみて。

595 名前:NAME IS NULL mailto:sage [2009/02/23(月) 18:29:20 ID:???]
サブクエリバージョンは、、、
SELECT count(id) FROM (SELECT DISTINCT id FROM table WHERE comedate BETWEEN '2009-2-21' AND '2009-02-23') AS t;

596 名前:NAME IS NULL mailto:sage [2009/02/23(月) 21:41:13 ID:???]
>>594
ありがとうございました。
なぜか、固定観念でGROUP BYが必要だと思い込んで四苦八苦していました…


597 名前:NAME IS NULL [2009/02/24(火) 22:55:41 ID:2Mz+JFgK]
| 日付 | 作業 | 時間 | 名前 | 役職 |
------------------------------------------------
| 2007/9/7 | 開始 | 8:00:00 | 田中 | ヒラ |
| 2008/9/7 | 終了 | 17:48:00 | 田中 |   |
| 2008/9/7 | 開始 | 9:30:00 | 佐藤 | 課長 |
| 2008/9/7 | 終了 | 17:00:00 | 佐藤 |   |
| 2008/9/7 | 開始 | 9:00:00 | 青木 | 部長 |
| 2008/9/7 | 終了 | 17:00:00 | 青木 |   |
| 2007/9/7 | 開始 | 8:00:00 | 山田 | ヒラ |
| 2007/9/7 | 終了 | 17:23:00 | 山田 |   |

このテーブルから、ヒラである田中と山田のデータだけを抽出した結果を表示させたいんです。
つまり、↓のようになる感じです。

| 2007/9/7 | 開始 | 8:00:00 | 田中 | ヒラ |
| 2008/9/7 | 終了 | 17:48:00 | 田中 |   |
| 2007/9/7 | 開始 | 8:00:00 | 山田 | ヒラ |
| 2007/9/7 | 終了 | 17:23:00 | 山田 |   |

どなたかお願いします。

598 名前:NAME IS NULL [2009/02/24(火) 23:29:11 ID:WKUZdeXE]
MySQL3.23.58で、自己結合(?)の問題で悩んでいます。

掲示板の書き込みデータであるcontentテーブルに主キーのidと、レス元を表すparentidがあります。
たとえばid=100のレス書き込みデータから、そのスレッドのデータをparentidを元に芋づる式に取り出したいのですが、
どのように記述したら良いでしょうか。 ちなみに最初のレスはparentid=0です。 バージョンの関係でサブクエリは
使えません。。

599 名前:NAME IS NULL mailto:sage [2009/02/25(水) 06:07:54 ID:???]
>>579
select
 A.日付, A.作業, A.時間, A.名前, A.役職
from
 T A,
 (SELECT DISTINCT 名前, 役職 FROM T) B
where
 A.名前 = B.名前
AND
 B.役職 = 'ヒラ'

データを見たときにヒラ社員も作業終了時はヒラ以上に
グレードアップするのかと思い少し笑ってしまいました。

600 名前:NAME IS NULL mailto:sage [2009/02/25(水) 13:07:31 ID:???]
sage



601 名前:NAME IS NULL mailto:sage [2009/02/25(水) 13:15:08 ID:???]
>>597
悩む前にやることがあるような気がする

602 名前:NAME IS NULL mailto:sage [2009/02/25(水) 13:27:01 ID:???]
>>597

SELECT * FROM `table` WHERE `名前`='田中' OR `名前`='山田'

じゃダメなのかな?

603 名前:NAME IS NULL mailto:sage [2009/02/25(水) 14:43:14 ID:???]
>>602
ヒラが100人いたら100個連結するわけだね 頑張って

604 名前:NAME IS NULL mailto:sage [2009/02/25(水) 22:20:11 ID:???]
テーブル(A)からテーブル(B)のデータを取り除きたい

テーブル(A)
日付 | 点数
----------------
2009/10/1 | 89
2009/10/2 | 83
2009/10/2 | 90
2009/10/3 | 93
2009/10/3 | 84
2009/10/7 | 79
2009/10/7 | 66
2009/10/8 | 72
2009/10/9 | 80

テーブル(B)
日付 | 点数
----------------
2009/10/2 | 90
2009/10/3 | 84
2009/10/7 | 66

テーブル(A)があり、そこからテーブル(B)のデータだけを取り除き、
テーブル(C)のようにしたいのです。
どなたかよろしくおねがいします。

結果テーブル(C)
日付 | 点数
----------------
2009/10/1 | 89
2009/10/2 | 83
2009/10/3 | 93
2009/10/7 | 79
2009/10/8 | 72
2009/10/9 | 80


605 名前:NAME IS NULL mailto:sage [2009/02/26(木) 02:05:31 ID:???]
取り除くって、削除? それとも、単にselectしたくないだけ?

606 名前:NAME IS NULL mailto:sage [2009/02/26(木) 02:08:18 ID:???]
ところで、mysqlって・・sennaとかいうやつ使わないと、全文検索ってまだ出来ないんでしたっけ?

607 名前:NAME IS NULL mailto:sage [2009/02/26(木) 02:08:47 ID:???]
↑日本語の全文検索です。

608 名前:NAME IS NULL mailto:sage [2009/02/26(木) 07:15:04 ID:???]
>>606
できないか?というと、like '%ほげ%' とかでできなくもない。
けど速度の面で現実的ではない。

609 名前:NAME IS NULL mailto:sage [2009/02/26(木) 11:07:12 ID:???]
>>604
バージョンは?
EXCEPTもMINUSも使えないなら、NOT EXISTS か NOT INで

610 名前:NAME IS NULL mailto:sage [2009/02/26(木) 19:31:13 ID:???]
FAQかも知れませんけどご存知の方がいたらご教示下さい。

OS Windows2000Pro SP4
mysql Ver 14.14 Distrib 5.1.30, for Win32 (ia32)

コマンドプロンプトでmysqlを実行すると日本語のカラムの表示が文字化けします。

ServerとClientのキャラクタセットが違っていると文字化けが発生するそうですが
statusの出力結果は

Server characterset: cp932
Db characterset: cp932
Client characterset: cp932
Conn. characterset: cp932

とServerとClientのキャラクタセットは同じになっています。

ちなみに化けるのはコマンドプロンプトでmysqlを実行した時だけで
MySQL Query Browserやコマンドプロンプトでmysqldumpを実行した時は
正しく表示されます。

何が悪いのしょうか?



611 名前:NAME IS NULL [2009/02/27(金) 01:23:36 ID:b9B0cCFt]
MySQLのライセンスについて質問です

Linxu,Apache,MySQL,PHPの環境を商用利用する場合、
GPL汚染だのなんだの言われている関係で
Enterpriseライセンス購入して使用するのが無難と言われていても、
法的に罰することが確実に出来る訳ではないという解釈でよいですか。

つまり、Sunが商用利用の場合はライセンス買えといっていても
community版を使用していればSunのルールに多少引っかかってても
現時点では明確でないしライセンス費用を払う義務は
発生しないのかなと考えています。
発生するのが明確になった段階でライセンスを買えば良いのかなと

調べれば調べるほど良く分からなくなるんで誰かアドバイスください。
ちなみに、mixiなどでは購入しているのかなど
事例ベースで教えていただけると助かります・・・。



612 名前:NAME IS NULL mailto:sage [2009/02/27(金) 01:34:37 ID:???]
>>610
show create table テーブル名\G
で、テーブルやカラムの charset を確認してみては?

あとは、select hex(カラム名) from テーブル名 とかで、
本当に自分が思っている文字コードで文字が格納されているか確認するとか。


613 名前:NAME IS NULL mailto:sage [2009/02/27(金) 12:29:34 ID:???]
レプリケーションって・・どのくらいパフォーマンス下がるんですか?
もしパフォーマンスに影響が出ないなら、バックアップとして使おうかなと思ったりしているんですが…

614 名前:NAME IS NULL mailto:sage [2009/02/27(金) 16:42:12 ID:???]
更新の量次第だけど、たいしたことないよ。

615 名前:NAME IS NULL mailto:sage [2009/02/27(金) 18:03:43 ID:???]
最大値や最小値だけでなく、2番や3番の値も取得したい

テーブルA
名前|受けた月|点数
------------------
佐藤|1月|520
佐藤|3月|584
佐藤|7月|598
佐藤|9月|556
佐藤|11月|645
田中|1月|490
田中|3月|480
田中|7月|400
田中|9月|441
田中|11月|477

佐藤と田中のベスト3の点数を↓ように出力させたいんです。
max(点数)で1番の点数を表示させるのはできたんですが、
2番3番が上手くいきません。

名前|1番|2番|3番
----------------
佐藤|645|598|584
田中|490|480|477

バージョンはMySQL5.0です。


616 名前:NAME IS NULL mailto:sage [2009/02/27(金) 19:31:17 ID:???]
2つのクエリで、php等でループさせれば出来ますね。

クエリ1
select distinct 名前 from table A;

クエリ2
select score from table A where 名前 = クエリ1 order by score DESC limit 3;

1つのクエリでも出来るんでしょうね。私はやり方知らないけど・・・orz

617 名前:NAME IS NULL mailto:sage [2009/02/27(金) 19:51:26 ID:???]
>>615
なんか・・できたっぽい・・ちょっと乱雑ですが・・・

select distinct tableA.name, max(a.score), b.score, c.score
from tableA left join tableA as a on(tableA.name = a.name) left join tableA as b on(tableA.name = b.name) left join tableA as c on(tableA.name = c.name)
where b.score = (select score from tableA where b.name = tableA.name order by score desc limit 1,1) and c.score = (select score from tableA where c.name = tableA.name order by score desc limit 2,1)
group by tableA.name;

tableAはテーブル名に置き換えて、nameは名前に・・scoreは点数です。

618 名前:NAME IS NULL mailto:sage [2009/02/27(金) 19:59:28 ID:???]
>>611
GPL汚染って理解していないんじゃないかな。
GPLライセンスでも利用する自由はある。
ただ改造したりリンクするプログラムを
つくったらソースを公開する義務が
発生するだけ。ライセンスをもっと勉強
しようよ。


619 名前:NAME IS NULL mailto:sage [2009/02/27(金) 21:06:37 ID:???]
>>617
すごい、できました。
ありがとうございます。

でも、できれば↓のように2回しかテストを受けていない人がいる場合、
NULLもしくは空白になるようにお願いしたいんです。

鈴木|3月|684
鈴木|11月|677

(出力)
名前|1番|2番|3番
----------------
佐藤|645|598|584
田中|490|480|477
鈴木|684|677|NULL

620 名前:NAME IS NULL [2009/02/27(金) 21:43:15 ID:ul7MM1le]
>>619
IF文かなにか使えば出来ると思います。
IF文 MYSQLで検索
ここから先は自分で頑張って見てちょ
検索+研究が一番身につくよ…がんばってラララ



621 名前:NAME IS NULL [2009/02/27(金) 21:51:14 ID:8GxHVVkR]
>>619
select
 A.NAME as NAME,
 max(A.SCORE) as SCORE_1,
 max(B.SCORE) as SCORE_2,
 max(C.SCORE) as SCORE_3
from
 SCORE as A
 LEFT JOIN SCORE as B ON A.NAME = B.NAME AND A.SCORE > B.SCORE
 LEFT JOIN SCORE as C ON B.NAME = C.NAME AND B.SCORE > C.SCORE
group by
 A.NAME

622 名前:NAME IS NULL mailto:sage [2009/02/27(金) 21:53:29 ID:???]
体裁をちょっと間違ったので再掲。

select
 A.NAME as NAME,
 max(A.SCORE) as SCORE_1,
 max(B.SCORE) as SCORE_2,
 max(C.SCORE) as SCORE_3
from
 SCORE as A
 left join SCORE as B on A.NAME = B.NAME and A.SCORE > B.SCORE
 left join SCORE as C on B.NAME = C.NAME and B.SCORE > C.SCORE
group by A.NAME

623 名前:NAME IS NULL [2009/02/27(金) 22:16:28 ID:ul7MM1le]
>>622
それだとスコアが100点を2回取った人が一回しか表示されなくないですか?

624 名前:NAME IS NULL mailto:sage [2009/02/27(金) 22:23:42 ID:???]
そう言う仕様なら。

select
 A.NAME as NAME,
 max(A.SCORE) as SCORE_1,
 max(B.SCORE) as SCORE_2,
 max(C.SCORE) as SCORE_3
from
 SCORE as A
 left join SCORE as B on
  A.NAME = B.NAME and
  A.MONTH != B.MONTH and
  A.SCORE >= B.SCORE
 left join SCORE as C on
  B.NAME = C.NAME and
  A.MONTH != C.MONTH and
  B.MONTH != C.MONTH and
  B.SCORE >= C.SCORE
group by
 A.NAME

625 名前:NAME IS NULL mailto:sage [2009/02/27(金) 22:34:37 ID:???]
>>624
なるほど・・・それにしてもきれいな書き方ですね。
join構文で条件を複数指定出来るって知りませんでした。
勉強になりました。

626 名前:NAME IS NULL [2009/03/01(日) 08:59:38 ID:R7fc700l]
マイSQLとポストグレースSQLはどちらがお勧めでしょう。
無償の環境でwebを立ち上げたいと思っています。

627 名前:NAME IS NULL mailto:sage [2009/03/01(日) 15:22:30 ID:???]
MySQLのスレで聞いたって答えは決まってるだろう

628 名前:NAME IS NULL [2009/03/02(月) 04:58:48 ID:cpirGesA]
DBモデリングツールのMySQL workbench使ってる人、使い心地や完成度はどうですか?
リバース/フォーワードエンジニアリングが出来る$99の商用版買っちゃおうかと
思っているのですが経験者の方いれば感想おしえてください。
www-jp.mysql.com/products/workbench/features.html
↓MySQL workbenchのデモとか
www-jp.mysql.com/products/workbench/demo.html

629 名前:NAME IS NULL mailto:sage [2009/03/02(月) 09:35:33 ID:???]
普通に便利だよ。
ちなみにOSS版でもフォワードは*.sql吐けばいいし
リバースもmysqldump --no-dataの出力を読めるので、
実は商用版いらなかったりするのはここだけの話。

630 名前:NAME IS NULL mailto:sage [2009/03/02(月) 10:31:15 ID:???]
SELECT * FROM table WHERE C = 1;
のようにC が 1を全部参照できるのはいいのですが
これをあえて、C = ALL みたいにして、
SELECT * FROM table
と同じ振舞いをするようにしたいです。
そういった方法があればよろしくおねがいします。



631 名前:NAME IS NULL mailto:sage [2009/03/02(月) 10:35:41 ID:???]
C = C

632 名前:NAME IS NULL mailto:sage [2009/03/02(月) 10:39:28 ID:???]
>>631
なんと!
それでできるのですか
さっそく試して見ます!!

633 名前:NAME IS NULL mailto:sage [2009/03/02(月) 10:40:24 ID:???]
CがNULLのときはだめだよ

634 名前:NAME IS NULL mailto:sage [2009/03/02(月) 10:46:29 ID:??? BE:404158638-2BP(258)]
>>631,633
なるほど、一応null値は入れないデータなので、
今やってみたところ思い通りの操作ができました
ありがとうございました!

635 名前:NAME IS NULL mailto:sage [2009/03/02(月) 10:58:33 ID:???]
おれは 1 = 1 でやるけど

636 名前:NAME IS NULL mailto:sage [2009/03/02(月) 11:30:52 ID:???]
C = までは確定なんでしょう。
インジェクションの的だけどな。

637 名前:NAME IS NULL mailto:sage [2009/03/02(月) 13:09:24 ID:???]
ttp://www.youtube.com/watch?v=zog4rxsVWrQ&fmt=18

638 名前:NAME IS NULL mailto:sage [2009/03/02(月) 13:42:58 ID:???]
>>629
MySQL Workbenchの商用版、稼働中のMySQLサーバに直接接続しての
リバース/フォーワードエンジニアリングや同期ができるのって
やっぱりsql文を経由して同期するよりも便利・ミスが少ないかなあ
って思いました。それが理由で購入するってのもありですよね?

639 名前:NAME IS NULL mailto:sage [2009/03/02(月) 13:56:04 ID:???]
そりゃもちろんありですよ
ER/Winとかより遥かに安いしね

いまのところ日本法人のサポートが
超優秀なのも加点ポイント

640 名前:NAME IS NULL [2009/03/02(月) 16:16:39 ID:wMiEYv34]
MySQL Connector/ODBC の 3.51系 と ODBC 5.1系はどうちがうの?

今度の案件で使う MySQL Server が 5.0 なのだが、自分のPCには ODBC 3.51 がインストール済みだった。
↓によると、3.51 ドライバでも MySQL Server 5.0 にもつながるそうなので、3.51 をそのまま使おうと思っているのですが・・・
www.s-style.co.jp/mysql_news/mysql_news2007/2007111401.html



641 名前:NAME IS NULL mailto:sage [2009/03/02(月) 23:33:15 ID:???]
>>612
レスが遅れましたがアドバイスありがとうございます

テーブルやカラムにはcharsetを指定していませんがデータベースのcharsetをcp932に指定しています。
「select column_name,character_set_name from information_schema.columns」を実行すると
カラムのcharcter_set_nameにはcp932が設定されています
select hex(カラム名) from テーブル名も試してみていますがcp932(シフトJIS)で格納されています。

説明不足でしたが、mysqlの起動時に--t=hogeを指定しsqlの実行結果をテキストファイル
に落とすときちんと出力されているんです。
例えばデータが「あいうえお」だとテキストファイルには「あいうえお」と出力されているのですが
コマンドプロンプトの画面には「、ヲィ」と表示されるのです。
あいうえおはシフトJISだと82a0・82a2・82a4・82a6・82a8ですが
2バイト文字として認識されず2バイト目の文字だけが表示されているようです。

もう少し調べてみますが心当たりがあれば教えていただけると助かります。

642 名前:NAME IS NULL mailto:sage [2009/03/03(火) 16:29:39 ID:???]
641です

mysqlをバージョンダウン(5.1.30→5.0.77)したところ日本語の文字化けが直りました。
5.1.30はOSをXPにしても同じ現象が発生するのでmysqlのバグかもしれません。

アドバイスを頂いた方、ありがとうございました。

643 名前:NAME IS NULL mailto:sage [2009/03/03(火) 18:52:09 ID:???]
これかなあ?
bugs.mysql.com/bug.php?id=36279

644 名前:NAME IS NULL mailto:sage [2009/03/04(水) 12:15:14 ID:???]
phpMyAdmin使ってる人・・・

Googleでログインされた状態のページが検索結果に出てるって知ってた?
これ・・セキュリティー上かなりヤバいので、自分のサイトが載ってないかチェックをお勧め

Googleで下記を入力して検索
intitle:phpMyAdmin "Welcome to phpMyAdmin***" "running on * as root@*""

くれぐれもいたずらはしないように!!!

645 名前:NAME IS NULL mailto:sage [2009/03/04(水) 15:43:15 ID:???]
2つのテーブルからデータをとる場合でどちらかのテーブルに該当するレコードがあったら返してほしいのですが、どちらが空の時返してくれません。
left join だとleftのテーブルにない場合(rightには該当レコードあり)空が帰ってきます。

select name from dog left join cat on where dog.category = cat.category and sex = 1
where dog.category = 1;

どちらかが空でないときカラムをかえしてもらうにはどうかけばいいでしょうか?

646 名前:NAME IS NULL mailto:sage [2009/03/04(水) 16:03:04 ID:???]
切ないことにMySQLではFULL OUTER JOINがサポートされていない。
なのでLEFT OUTER JOINで書いたクエリとRIGHT OUTER JOINで
書いたクエリをUNIONするしかない。二度手間。
今も昔も標準SQLのサポートが半端なMySQLを選んだ我が身の不幸
を恨むがよい〜

あとJOINをする必要(結果テーブルの中でdogのカラムとcatのカラム
を横に並べる必要)は本当にあるのかな?
単にdogテーブルとcatテーブルからcategoryが指定値の行を検索
するだけで良いのであれば単にUNIONするだけで良いと思う。

647 名前:NAME IS NULL mailto:sage [2009/03/04(水) 22:30:22 ID:???]
mysqlツールで何がお勧めですか?
見やすくてできれば日本語でわかりやすいものがいいんですが

648 名前:NAME IS NULL mailto:sage [2009/03/04(水) 23:10:16 ID:???]
>>645
テーブルをサンプルとして例を挙げないと、何をしようとしているか分かりづらい
構文は色々な書き方があるから、やり方はあるはずだよ

649 名前:NAME IS NULL [2009/03/05(木) 02:24:30 ID:8flqGIdl]
初歩的な質問はこのスレでいいのでしょうか??

少し前までOracleを使っていましたが、仕事の関係で新たにMySQLも使い始めました。

Oracleには、wrapやlinesize・pagesizeの設定を変更する事ができましたが、
MySQLではこれらの設定はDBへ接続している間に限って変更する事は可能でしょうか?
可能であれば、どのようなコマンドで実行すればよいか、方法を教えてください。

650 名前:NAME IS NULL mailto:sage [2009/03/05(木) 04:56:47 ID:???]
>>649
それはDB本体じゃなくてsqlplusの機能だよね
で、mysqlコマンドにはないと思う



651 名前:649 mailto:sage [2009/03/05(木) 07:31:31 ID:???]
>>650
仰る通り、sqlplusの機能でした。すみません。
該当コマンドはなさそうですか。

ありがとうございました。

652 名前:NAME IS NULL mailto:sage [2009/03/06(金) 13:43:03 ID:???]
得られた行セットに対して1から通し番号を付加するにはどうしたらいいですか?
id value
a 100
b 200
c 300
d 400
に対してwhere value >= 300して
c 1
d 2
のような結果がほしい感じです


653 名前:NAME IS NULL mailto:sage [2009/03/06(金) 15:05:06 ID:???]
順位をつけるってことか?
だったら自己結合使えば

654 名前:NAME IS NULL mailto:sage [2009/03/07(土) 16:58:11 ID:???]
すみません、質問です。

過去5年分の家計簿データがあったとします。
その5年間の年毎のトータル支出金額を抽出したいのですが、
SELECT SUM(金) FROM 家計簿テーブル GROUP BY 年
としてしまうと、
2004年 100万円
2005年 110万円
2006年 120万円
という風に抽出されますよね?
即ち、それぞれの年の1〜12月までのデータが集計され、結果が出ます。

でも、こうではなくて、それぞれの年の4月〜翌年3月までのデータを集計し、抽出したいのです。
2004年度 100万円
2005年度 110万円
2006年度 120万円
のような感じでしょうか。

'2008-04' <= DATE_FORMAT(年月日, '%Y-%m') AND DATE_FORMAT(年月日, '%Y-%m') <= '2009-03'

とかすると年度の集計はできますが、過去のデータの全ては抽出できず困っております。

何か良いアプローチがあればご教授の程宜しくお願い致します。


655 名前:NAME IS NULL mailto:sage [2009/03/07(土) 18:29:52 ID:???]
年じゃなくて年度で入れる

656 名前:NAME IS NULL mailto:sage [2009/03/07(土) 19:19:29 ID:???]
>>655
ありがとうございます。

まず月だけ抜き取って3以下なら無理やり年を前年に書き換える形で対応できました。

657 名前:NAME IS NULL mailto:sage [2009/03/07(土) 22:23:28 ID:???]
>>652
こんなのはどう?
set @c=0;
select id,@c:=@c+1 from hoge where value >=300;


658 名前:NAME IS NULL mailto:sage [2009/03/11(水) 21:45:07 ID:???]
MySQL5.1.32ですが、おもにphpmyadminでの操作ですが
テーブルT1のid(INT)に一気に1から500までの数字を入れる方法を
教えてください。

659 名前:NAME IS NULL mailto:sage [2009/03/11(水) 22:06:39 ID:???]
>>658ですが
SET @id =0;
SELECT p_id, @id := @id +1
FROM T4
WHERE p_id <=500;
だと書きこまれません


660 名前:NAME IS NULL mailto:sage [2009/03/11(水) 22:43:47 ID:???]
>>658ですが、訂正です
SET @id =0;
SELECT p_id, @id := @id +1
FROM T1
WHERE p_id <=500;
だと書きこまれません



661 名前:NAME IS NULL [2009/03/11(水) 22:57:22 ID:s7mi32pR]
ちなみにp_idはオートインクリメント型です。

662 名前:NAME IS NULL mailto:sage [2009/03/12(木) 05:44:27 ID:???]
なんでINSERTしないでSELECTしてるの?

663 名前:NAME IS NULL mailto:sage [2009/03/12(木) 07:34:43 ID:???]
>>658です。
すんませんコピペ間違いでした。
SET @a =0;
INSERT INTO T4 (p_id,id,res_time,flag,time_stamp)
SELECT p_id, (@a := @a +1) as id,res_time,flag,time_stamp
FROM T4 WHERE p_id <=500;
「SQL は正常に実行されました」
「戻り値は0でした」というメッセージがでます。



664 名前:NAME IS NULL mailto:sage [2009/03/12(木) 08:11:09 ID:???]
オートインクリメントなら別にいらなくね?

665 名前:NAME IS NULL [2009/03/12(木) 08:29:24 ID:hVykgf0t]
>>664
いらないって、何がですか?

666 名前:NAME IS NULL mailto:sage [2009/03/12(木) 09:38:26 ID:???]
やりたいことがさっぱりわからん
500レコードはすでに入っていて、id列だけを更新するってこと?

667 名前:NAME IS NULL [2009/03/12(木) 10:10:48 ID:hVykgf0t]
いいえ、空のT4テーブルに一気に500レコード追加したいのです。

668 名前:NAME IS NULL mailto:sage [2009/03/12(木) 10:39:35 ID:???]
元が0件だったら
INSERT INTO T4 SELECT FROM T4
したって何も起こらないでしょう?

で、phpMyAdminと10分ほど戯れたけどちょっと無理だと思った。

ストアド作ってphpMyAdminから叩くか、
元データ用意してLOAD DATA INFILEするか、
普通にプログラム書いてINSERTするか
だと思う

669 名前:NAME IS NULL mailto:sage [2009/03/12(木) 12:45:33 ID:???]
あるフィールド(INT型で同じものはない)に、
1、2、3、5、6…というようにレコードがあるのですが、
その中でぬけている一番小さい整数、ここでは、4になりますが、
これを見つけるのに効率のよい方法はどのようなものがあるでしょうか。

接続型アクセスでやっているので、1から順にループさせると、数が多く
なったときに大変だ と思いまして…。


670 名前:NAME IS NULL mailto:sage [2009/03/12(木) 13:07:25 ID:???]
set @a = 0;
select val from (select @a := @a + 1 val, id from tbl order by id) tbl_v where val != id limit 1;

あまり自信はないけど



671 名前:NAME IS NULL mailto:sage [2009/03/12(木) 13:26:59 ID:???]
>>669
自分自身と差分取ればいいよ
SELECT chiko+1 FROM unko WHERE chiko NOT IN (SELECT chinko-1 FROM unko) LIMIT 1;

672 名前:NAME IS NULL mailto:sage [2009/03/12(木) 13:52:05 ID:???]
select
 min(R.VAL) + 1
from
 (select VAL from T
  union select 0 as VAL from dual) R
where
 not exists (
  select * from T S
  where S.VAL = R.VAL + 1
 )
and
 R.VAL != (select max(VAL) from T)

FROM句のサブクエリーのunion以降は(整数列の開始値-1)。
例えば開始値が0なら「union select -1 as VAL from dual」とする。
開始値関係なく単に整数列の歯抜けをチェックしたいのならfrom句の
サブクエリーは取っ払ってfrom T Rとすればよい。
調べたいカラムにはindexはっとくように。

673 名前:NAME IS NULL mailto:sage [2009/03/12(木) 14:29:38 ID:???]
ありがとうございます。
やはり、こういう事を思いつくというのは、経験でしょうか…。

これから、実験してみます。


674 名前:NAME IS NULL mailto:sage [2009/03/12(木) 15:31:01 ID:???]
カラムa, b, cが重複しているレコードを自分自身のテーブルから見つけるにはどうすればいいか教えて下さい

675 名前:NAME IS NULL mailto:sage [2009/03/12(木) 15:33:26 ID:???]
各ユーザーにアクセスするホストを追加しようと思っているのですが、
各ユーザーのパスワードがわからないためどうしようか迷っています。
IP帯とかではなく、IPだけを増やしたいんですが、良い方法はないでしょうか。

mysql.user内のユーザーをコピーして、ipアドレスを変更して追加し、
mysql.db内にも同様にipアドレスを変更したものを追加してみたのですが、
うまくいきません。

ユーザーをダミーのパスワードで追加し(grantコマンド)、パスワードの部分を前のIPのものに変更
すると大丈夫なのですが、上記の二つのテーブルを変更しただけじゃだめなんでしょうか?

flush privileges; はやっています。



676 名前:NAME IS NULL mailto:sage [2009/03/12(木) 16:53:09 ID:???]
>>674
select a, b, c from table_name group by a, b, c having count(a) > 1;

677 名前:NAME IS NULL mailto:sage [2009/03/12(木) 17:13:48 ID:???]
>>675
そんなはずないだろうと思って試してみたら、フツーにできたよ。
mysql.userのレコード追加とflush privilegesで接続確認できた。
もちろんmysql.dbにレコードないと、information_schemaとtestしか参照できないけど。

678 名前:NAME IS NULL mailto:sage [2009/03/12(木) 17:43:59 ID:???]
>>677

phpMyAdminからだと出来ませんでした。。。
直接叩いたら出来ました。ありがとうございます!


679 名前:NAME IS NULL mailto:sage [2009/03/12(木) 21:22:44 ID:???]
>>668
>>658です。
ストアドしてみました。結果phpMyAdminから実行できました。

//500レコード作成
DELIMITER $$
DROP PROCEDURE IF EXISTS display$$
CREATE PROCEDURE CreateNo(no int)
BEGIN
DECLARE counter INT DEFAULT 0;
simple_loop: LOOP
SET counter=counter+1;
INSERT INTO T4 (id) VALUES(counter);
IF counter=no THEN
LEAVE simple_loop;
END IF;
END LOOP simple_loop;
END$$
DELIMITER ;
call CreateNo(500);

//削除
TRUNCATE table T4;

680 名前:NAME IS NULL mailto:sage [2009/03/12(木) 22:01:34 ID:???]
>>658
やればできる子だったのか
ちょっと感心した



681 名前:NAME IS NULL mailto:sage [2009/03/12(木) 22:17:54 ID:???]
>>680
>>658です。
遠回りばかりしていますが
がんばります。
よろしくおねがいします。

682 名前:NAME IS NULL [2009/03/13(金) 12:44:54 ID:t21kErVu]
ちょっと質問なのですが、
PHPで一つのデータを別々のテーブルに同時にinsertしたいのですが
そうすると、table1とtable2はクエリOKでtable3はエラーという事もありますよね。

そうなるとtable1とtable2のデータは入っていても意味がないので現状は消してます。

そこでtable1とtable2とtable3に間違いなく入るか確認してから入れたいのですが
そういう事はできますか?

683 名前:NAME IS NULL mailto:sage [2009/03/13(金) 14:00:25 ID:???]
InnoDBでトランザクションを使えばOK
begin;
insert ...
insert ...
insert ...
commit;

684 名前:NAME IS NULL mailto:sage [2009/03/13(金) 14:28:57 ID:???]
トランザクションの解説書に出てきそうなくらいの典型例すぎる…。
俺ら試されてるのかとも思ったぞw

685 名前:NAME IS NULL [2009/03/13(金) 14:59:07 ID:t21kErVu]
>>683-684
ありがとうございます。トランザクションについて勉強してみます。
で、それをPHPでクエリ送るには
mysql_query("Bigin;insert〜insert〜;insert〜;Commit;");
って一行でクエリ送ればいいんですか?

686 名前:NAME IS NULL mailto:sage [2009/03/13(金) 16:48:32 ID:???]
それはさすがに
mysql_query begin php
で一回ぐぐってくるべき

687 名前:NAME IS NULL [2009/03/13(金) 19:46:55 ID:t21kErVu]
ググったら分かった。

688 名前:NAME IS NULL mailto:sage [2009/03/15(日) 01:40:15 ID:???]
トランザクション使うと、インサートの速度はどの位落ちますかね?

innodbの時点で比べ物にならないんじゃ無いかと思って
避けてしまっている自分がいます…

689 名前:NAME IS NULL mailto:sage [2009/03/15(日) 05:49:24 ID:???]
測ればいいじゃん

690 名前:NAME IS NULL mailto:sage [2009/03/15(日) 09:33:30 ID:???]
MyISAM:INSERTごとにディスクに書き込む
InnoDB:COMMITのときにまとめて書く
なので上手な人がチューニングすればトランザクション使ったほうが速い



691 名前:NAME IS NULL mailto:sage [2009/03/15(日) 09:44:44 ID:???]
チューニングも何も、ある程度の量以上なら普通にトランザクションのが速い

692 名前:NAME IS NULL mailto:sage [2009/03/15(日) 14:49:59 ID:???]
688ですが、多分僕が気にしすぎなんでしょうね。
今度テストでもしてみます。
ありがとうございました。

693 名前:NAME IS NULL mailto:sage [2009/03/15(日) 15:04:42 ID:???]
なんか初めてっぽい人ほど変なところで速度を気にする傾向が
ある気がする。>>688もそうだし初めてのスキーマ設計っぽいのに
ジョインすると速度が遅くなるから云々いう人とか。

素人考えで下手に小細工を試みるよりはまずちゃんと正規化もして
トランザクション等DBに備わる標準的な機能を使って実装した方が
とりあえず速度は出る。そういう風にRDBMSは設計されている。
パフォーマンスチューニングはその後に心配した方がよい。

694 名前:NAME IS NULL mailto:sage [2009/03/15(日) 16:16:02 ID:???]
>>693
確かにそうですよね。
大体webの場合、そこまでパフーマンスが問題になる事は稀ですしね。

695 名前:NAME IS NULL mailto:sage [2009/03/15(日) 21:05:37 ID:???]
mysql のコマンドプロンプトで何を入力しても

'>
'>
'>


っていう状態になってしまったんですが、この状態から脱出するにはどうしたいいんでしょうか。

696 名前:NAME IS NULL mailto:sage [2009/03/15(日) 21:33:40 ID:???]
' を入れる



697 名前:NAME IS NULL mailto:sage [2009/03/16(月) 02:27:55 ID:???]
質問です。
PHP+MySQLでタグ検索実装を考えています。

blogテーブル内のtagsというキーに、以下のような文字列データを格納しています。

1: PHP,MySQL
2: PHP5,CakePHP
3: PHP,Smarty

ここで、「PHP」で検索したときは、完全一致する1と3だけが返ってくるようにしたいのです。
処理をPHPに任せれば、正規表現等で行けると思うのですが、スマートにMySQLだけで処理できればと考えています。

どなたかよろしくお願いします。

698 名前:NAME IS NULL mailto:sage [2009/03/16(月) 04:08:50 ID:???]
>>697
正規化

699 名前:NAME IS NULL [2009/03/16(月) 08:42:37 ID:Y73NIwKY]
自宅鯖と開発マシンがあるんだけど
鯖にあるDBのレコードに開発マシンにあるレコードを加えたい。
重複しているレコードは入れずに、開発マシンにだけ入っているレコード移したいんですが
どうやるのが一番簡単ですか?

ようするに双方のレコード足したいんですけど。

700 名前:NAME IS NULL mailto:sage [2009/03/16(月) 08:48:10 ID:???]
>>699
primaryで重複しているなら、単にINSERTすればいいかと



701 名前:NAME IS NULL mailto:sage [2009/03/16(月) 13:50:33 ID:???]
申し訳ありません。
適当なスレッドが無かったので、ここで質問させて下さい。

現在JSP+Servlet+MySQLでWebアプリケーションの作成を行っています。
数日前から突然MySQLへの接続が出来なくなってしまいました。

運用を開始してから数日間は普通にselect、insertなどを実行出来ていたのですが、突然MySQLへ繋がらなくなりました。
調査した結果、ServletのgetConnection()でエラーが出ていました。(getConnection()のあるDaoは運用開始時からいじっていません)
JDBCに原因があると思い、バージョンを変更しましたが、接続出来ません。
また、MySQLに問題あると思い、一度アンインストールし、入れなおしましたが、やはり接続出来ません。

いろいろ調べてみましたが、どうしても分かりません。
どなたか原因が分かる方がいたら是非教えてください。

◆エラーメッセージ
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Last packet sent to the server was 0 ms ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

702 名前:NAME IS NULL mailto:sage [2009/03/16(月) 14:11:53 ID:???]
コネクション使い切ってんじゃないの?
解決策はともかく、原因調べるためにアプリケーションサーバのほう再起動してみては

703 名前:NAME IS NULL mailto:sage [2009/03/16(月) 14:31:58 ID:???]
>>701
WebサーバからDBサーバへ、コンソール経由で同じ接続情報で試してみよう。
それで接続できないようなら、JDBC以前の問題。

704 名前:NAME IS NULL [2009/03/16(月) 19:58:25 ID:zTmfjesn]
今あるテーブル構成を↓な感じでメモを付加して管理したいのですが、
何かいい方法はありませんか?

ナンバー データ型  メモ
no     int     オート
name   verture  顧客名
date    int     登録日

エクセルにテーブル構成だけ出力できたらいいんですがやり方がわからず…。
手書きやコピペで全部抜き出すのは量的に無理です。
かねやんやPHPmyAdminなんかのツールでメモをつけれるならそれでもOKです。

705 名前:NAME IS NULL [2009/03/16(月) 20:14:06 ID:pBnb+b7X]
画像出力の仕方がわかりません
PHP-5.2.6
MySQL4.1.22
phpMyAdmin 2.11.4

$query = "SELECT * FROM {$tblname_image_data} LIMIT 5";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
if ($result = mysql_query($query)) {
while ($row = mysql_fetch_array($result)) {
$_view_image[] = $row['image'];
}
}

//var_dump($_view_image[0]); //string(2974) "‰PNG


header("Content-Type: image/png");
imagepng($_view_image[0]);

画像データはphpMyAdmin BLOB型サイズは3KBです。
var_dumpの部分まではうまくいっていると思うのですが、
headerの部分をどうしたらよいのか…

706 名前:NAME IS NULL mailto:sage [2009/03/16(月) 20:15:55 ID:???]
echoでいいじゃん

707 名前:NAME IS NULL mailto:sage [2009/03/16(月) 21:02:43 ID:???]
>>706
できましたーーー!ありがとうございます!

708 名前:NAME IS NULL mailto:sage [2009/03/16(月) 22:07:41 ID:???]
>>697
「PHP,」で検索すれば?

709 名前:NAME IS NULL mailto:sage [2009/03/16(月) 23:29:39 ID:???]
>>698
よくわかりませんが、いろいろ検索して調べてみます。
ありがとうございます。

>>708
ありがとうございます。
しかしそれだと、「PHP」を検索したつもりが、「Cake PHP」にも引っかかる、という事態になります。
また、「Smarty,PHP」となっていた場合、引っかからなくなるという問題もあります。

710 名前:NAME IS NULL mailto:sage [2009/03/16(月) 23:48:00 ID:???]
>>709
select tags from blog where tags regexp '(^|[^[:alnum:]])PHP([^[:alnum:]]|$)';
ただし、1000レコードを超えるテーブルとかだと重すぎて使い物にならないかもしれん。



711 名前:NAME IS NULL mailto:sage [2009/03/17(火) 00:00:58 ID:???]
>>709
いろいろやってみる前に正規化について短めのドキュメントでも
読んでおいた方が良い。DB設計の根っ子の話だから。
基本的にこの手の問題は全文検索インデックスでも使わない限り
ちゃんと正規化しないと全行スキャンになってスピードが出ない。
10000件記事があったら毎度10000件検索するはめになる。

712 名前:NAME IS NULL mailto:sage [2009/03/17(火) 00:15:52 ID:???]
710だが、リファレンスよく読んだら regexp '[[:<:]]PHP[[:>:]]' で済むことに後から気づいた。
とはいえ、みんな言ってるようにDB設計上は邪道なのでsplitされたものを格納することを激しく推奨する。
特にタグ情報とかだと、いずれgroup byで集計したくなる場面が出てきたときに
今の設計のままだと後悔するぞ。

713 名前:NAME IS NULL [2009/03/17(火) 01:05:56 ID:Pn4ItroA]
質問です!

insert文のなかに、selectをいれたいのですが、
やりたいことのイメージとしては、以下の感じ。

insert into hogetbl (no1, no2, no3) values(11, (select max(no2) + 1 from hogetbl), 33);

これだと、文法エラーになるのですが、どのように記述するべきですか?



714 名前:NAME IS NULL mailto:sage [2009/03/17(火) 01:18:35 ID:???]
>>713
insert into hogetbl (no1, no2, no3) select 11, max(no2) + 1, 33 from hogetbl;

715 名前:NAME IS NULL mailto:sage [2009/03/17(火) 01:25:51 ID:???]
どなたか>>704をお願いします。

716 名前:NAME IS NULL mailto:sage [2009/03/17(火) 01:53:53 ID:???]
>>715
MySQL Administratorのテーブルエディタに、フィールドのコメント欄があった気がする。

717 名前:>>713 mailto:sage [2009/03/17(火) 03:15:04 ID:???]
>>714
ありがとうございますー


718 名前:NAME IS NULL [2009/03/17(火) 12:56:35 ID:0rYujEZL]
初歩的なことで申し訳ないですが
以下のようなSELECTで同じ条件式のIFがあるのですが、まとめた方がいいですか?
またまとめるなら、どのように記述したらいいですか?

SELECT aaa, IF(flag=0, bbb, 'b_off') as bbb, IF(flag=0, ccc, 'c_off') as ccc FROM ...
          ~~~~~~~              ~~~~~~~

719 名前:NAME IS NULL mailto:sage [2009/03/17(火) 13:14:07 ID:???]
>>718
条件式の評価がコストの大きいものなら検討の価値はあるが、
flag=0程度ならそのままでいいと思う。

どうしても評価回数を減らしたいのなら
SELECT aaa, IF(flag_zero, bbb, 'b_off') as bbb, IF(flag_zero, ccc, 'c_off') as ccc FROM
(select aaa, bbb, ccc, flag=0 as flag_zero from ... ) as t;
という感じか。かえって遅くなりそうだな。

720 名前:NAME IS NULL mailto:sage [2009/03/17(火) 13:30:24 ID:???]
>>719
ありがとうございます!




721 名前:701 mailto:sage [2009/03/17(火) 17:21:28 ID:???]
>>702
アプリケーションサーバーはもちろん、PCを再起動しても接続出来ません。
コネクションについても調べてみましたが、やはりコネクション自体はひとつしか使っていませんでした。
show processlistで確認。

>>703
>WebサーバからDBサーバへ、コンソール経由で同じ接続情報で試してみよう。
とはどういうことでしょうか?
現状ローカルPC内で開発しております。

違うプロジェクトを作成し、そこからアクセスしても繋がりません。
いろいろ調べてみると、どうやらclose()の仕方が悪かったのではと思います。
運用開始してしばらくは正常に接続できたので、その間にコネクション?が一杯になり
アクセス出来なくなったのではと勝手に思っておるのですが、このコネクション?の解放方法
が分かれば教えてください。

ただ、そうするとMySQLをアンインストールして入れ直したのにコネクションが解放されてない
ということで問題だと思うのですが・・・・ともかくいろいろ調査したのですが、原因がさっぱり
分かりません。どうかお助け下さい。

722 名前:NAME IS NULL mailto:sage [2009/03/17(火) 17:44:04 ID:???]
そのローカルで別の手段でMySQLにアクセスしてみるってことだよ。
最初の問題と後のでは理由が違う気がするが。
再インストールした時点で設定変わっちゃってないか?

もうちょっと環境を詳しく書いてくれないか、もしWindowsならFWとかも。

723 名前:NAME IS NULL mailto:sage [2009/03/17(火) 19:59:08 ID:???]
>>722
>そのローカルで別の手段でMySQLにアクセスしてみるってことだよ。
コマンドプロンプト上からはアクセス出来ました。selectもinsertも問題なく実行出来ました。
だからJDBCに問題があると思ったのですが。

>もうちょっと環境を詳しく書いてくれないか、もしWindowsならFWとかも。
はい。

OS:Windows VISTA SP1
DB:MySQL 5.0.67
サーバー:Tomcat 5.5、6.0
JAVA:JDK 1.6
JDBC:5.1.7、5.0.8
など

ファイアウォールについてはOS、ウィルスソフトともオンになっています。
試しにどちもらオフで実行してみましたが、やはり接続出来ませんでした。

ここはDB、Tomcatとも新しく入れ直した方良いでしょうか?postgreSQLとか。
仮に新しく入れ直しても接続出来ない(getConnection()でエラーが出る)場合は、何が原因だと思いますか?
やはりJDBCですかね?

724 名前:NAME IS NULL mailto:sage [2009/03/17(火) 20:14:15 ID:???]
>>723
>>703 で指摘してあるように、確実に同じ接続情報で試してみた?
Java側で
DriverManager.getConnection("jdbc:mysql://mymachine/");
としてるなら、コンソールでは
> mysql -hmymachine
みたいにしないと同じ接続情報にはならないよ。

725 名前:NAME IS NULL mailto:sage [2009/03/17(火) 21:05:52 ID:???]
>>724
え、そうなんですか?

自分は「スタート」-「すべてのプログラム」-「MySQL」-「MySQL Server 5.0」-「MySQL Command Line Client」
から実行した結果なんですが。

Java側は以下になっております。

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp", "root", "1028");

つまり上記の場合、コマンドプロンプトで
mysql -localhost:3306/myhp -u root -p 1028
という風に接続してみろってことですね。

わかりました。やってみます。

726 名前:NAME IS NULL mailto:sage [2009/03/17(火) 21:10:54 ID:???]
>>724
実行してみました。

ただし、「mysql -localhost:3306/myhp -u root -p 1028」では出来なくて、
「mysql localhost:3306/myhp -u root -p 1028」としたら実行出来ました。

実行したらステータス?がズラッと出てきたんですが、これって接続出来てるのでしょうか?

Variables (--variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
--------------------------------- -----------------------------
auto-rehash TRUE
character-sets-dir (No default value)
default-character-set sjis
comments FALSE
compress FALSE
database (No default value)
delimiter ;
vertical FALSE
force FALSE
named-commands FALSE
local-infile FALSE
no-beep FALSE
host (No default value)
html FALSE
xml FALSE
line-numbers TRUE
unbuffered FALSE
column-names TRUE
sigint-ignore FALSE
port 3306
prompt mysql>
quick FALSE
raw FALSE
reconnect TRUE
shared-memory-base-name (No default value)
socket (No default value)
ssl FALSE
ssl-ca (No default value)
ssl-capath (No default value)
ssl-cert (No default value)
ssl-cipher (No default value)
ssl-key (No default value)
ssl-verify-server-cert FALSE
table FALSE
debug-info FALSE
user root
safe-updates FALSE
i-am-a-dummy FALSE
connect_timeout 0
max_allowed_packet 16777216
net_buffer_length 16384
select_limit 1000
max_join_size 1000000
secure-auth FALSE
show-warnings FALSE

727 名前:NAME IS NULL mailto:sage [2009/03/17(火) 21:59:42 ID:???]
>>726
引数間違えてる。
mysql -hlocalhost -P3306 -uroot -p1028 myhp

728 名前:NAME IS NULL mailto:sage [2009/03/17(火) 23:29:39 ID:???]
>>727
ありがとうございます。
今試してみたんですが、正常に接続出来ました。
またselect、insertも正常に実行できました。
実行結果は以下となります。

C:\>mysql -hlocalhost -P3306 -uroot -p1028 myhp
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.0.67-community-nt MySQL Community Edition (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

上記、「Your MySQL connection id is 13」とありますが、このid is 13というのは
原因に関係してますでしょうか?と思いましたが関係ないですよね。

やはりコマンドプロンプト上からは正常に接続できるのでJDBCの問題なんでしょうか?
どうかアドバイスをお願い致します。

729 名前:NAME IS NULL mailto:sage [2009/03/18(水) 00:37:12 ID:???]
>>728
idが13なのは別に問題ない。勝手に番号が振られる接続識別子かと。
コマンドラインで問題ないなら、Javaから接続するときの固有問題なのかねぇ。
あとは、接続文字列を "jdbc:mysql://localhost:3306/myhp?autoReconnect=true" にして
試してみるとかかなー。

730 名前:NAME IS NULL mailto:sage [2009/03/18(水) 10:21:35 ID:???]
>>729
>あとは、接続文字列を "jdbc:mysql://localhost:3306/myhp?autoReconnect=true" にして
試してみるとかかなー。

以下内容で試してみましたが全て同じエラーが発生しました。

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp?autoReconnect=true");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp?autoReconnect=true", "root", "1028");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp?autoReconnect=true&user=root&password=1028");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp?user=root&password=1028&autoReconnect=true");

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)



731 名前:701 mailto:sage [2009/03/18(水) 10:32:37 ID:???]
>>729
すみません途中で送信してしまいました。

上記エラーですが、3回接続を試みてみたけど、databaseとconnectionが繋がらない。諦めてください。
っていう意味ですかね?

う〜〜ん・・・一体どうしたら良いのか・・・・・
いっそのことOSを初期化するのが近道な気がしてきました。

ひょっとするとeclipseの設定が悪いんですかね?
一度eclipseを入れ直して、もう一度試すか検討してみます。

732 名前:NAME IS NULL mailto:sage [2009/03/18(水) 10:52:32 ID:???]
まあ一番問題なのは、原因も分からないうちから再インストールを繰り返すところだけどな。
そこまで入れなおししちゃうと要因が複数になっちゃってる可能性もあるし、
いったんクリーンにして1からやってみるのがいいかもね。

733 名前:NAME IS NULL mailto:sage [2009/03/18(水) 11:10:23 ID:???]
>>732
はい。そうしてみます。

eclipse、tomcat、mysql、jdbc、java、全部一度アンインストールして入れ直して試してみます。

長々とお付き合い頂き、ありがとうございました。

734 名前:NAME IS NULL mailto:sage [2009/03/18(水) 11:11:24 ID:???]
すみません。
教えてください。

group by でSUM()関数使用すると、結果が「0」のレコードは表示されませんけど。
「0」は「0」で表示させる方法はありますか?


735 名前:NAME IS NULL mailto:sage [2009/03/18(水) 11:57:37 ID:???]
COALESCE(SUM(何とか),0)とか

736 名前:NAME IS NULL mailto:sage [2009/03/18(水) 11:59:29 ID:???]
ただ、結果が0なのではなくて0件で1度も足してないだけだと思うけどね。

737 名前:NAME IS NULL mailto:sage [2009/03/18(水) 14:15:53 ID:???]
>>735-736
どうもです。
後で確認してみます。

738 名前:NAME IS NULL [2009/03/18(水) 14:30:46 ID:hWkoscSI]
int型の列に0.5を入れたら、1が入っていました。

いったいどういうことなんでしょうか?

739 名前:NAME IS NULL mailto:sage [2009/03/18(水) 14:39:37 ID:???]
>>738
varchar型にすれば、ちゃんと"0.5"って入ってくれるよ。

740 名前:NAME IS NULL mailto:sage [2009/03/18(水) 15:02:45 ID:???]
>>739
0じゃなくて1が入ったことに怒っているのかな?



741 名前:NAME IS NULL mailto:sage [2009/03/18(水) 15:37:40 ID:???]
四捨五入されちゃうのかな。

742 名前:NAME IS NULL mailto:sage [2009/03/18(水) 17:12:25 ID:???]
整数型だもんな

743 名前:NAME IS NULL mailto:sage [2009/03/18(水) 17:46:29 ID:???]
>>738
醤油ぅこと〜

744 名前:NAME IS NULL [2009/03/18(水) 17:48:19 ID:vZZn9tSK]
早くライたんの腋を体験したい

(;´Д`)ハアハア
005.shanbara.jp/game/html/final-fantasy-xiii-20080826034702444_2/




745 名前:NAME IS NULL mailto:sage [2009/03/18(水) 22:47:55 ID:???]
SUN死亡か

746 名前:NAME IS NULL mailto:sage [2009/03/19(木) 02:12:27 ID:???]
米IBM、サン・マイクロシステムズ買収で交渉
jp.reuters.com/article/technologyNews/idJPJAPAN-37047020090318

MySQLどうするつもりかな


747 名前:NAME IS NULL mailto:sage [2009/03/19(木) 07:57:53 ID:???]
どうもせんだろ。おいしく頂くだけでは?
DB2とはうまく棲み分けできそうだし。


748 名前:NAME IS NULL mailto:sage [2009/03/19(木) 10:58:40 ID:???]
SUNってそんなやばかったんか

749 名前:NAME IS NULL mailto:sage [2009/03/19(木) 11:00:32 ID:???]
eclipse 沈没で netbeans 浮上?

750 名前:NAME IS NULL mailto:sage [2009/03/20(金) 09:39:55 ID:???]
むしろ、その逆。





751 名前:701 mailto:sage [2009/03/20(金) 11:57:03 ID:???]
>>732
一旦すべてクリーンにして再度実行してみました。
以下ファイルをダウンロードし直してインストールしたのですが、同じエラーが発生してしまいました。

DB:MySQL 5.0.67
サーバー:Tomcat 5.5
JAVA:JDK 1.5
JDBC:5.1.7

これはやはりレジストリにデータが残っているせいか、ハードウェアの問題だと思うのですが、
どうでしょう?


752 名前:701 mailto:sage [2009/03/20(金) 11:58:39 ID:???]
エラー内容は以下になります。


com.mysql.jdbc.CommunicationsException: Communications link failure

Last packet sent to the server was 0 ms ago.
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1070)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2120)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:723)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:298)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at top.Dao.open(Dao.java:22)
at top.Counter.access(Counter.java:59)
at top.InitDisplay.doPost(InitDisplay.java:64)
at top.InitDisplay.doGet(InitDisplay.java:31)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
Caused by: com.mysql.jdbc.CommunicationsException: Communications link failure

Last packet sent to the server was 0 ms ago.
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1070)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:335)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2043)
... 25 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:520)
at java.net.Socket.connect(Socket.java:470)
at java.net.Socket.<init>(Socket.java:367)
at java.net.Socket.<init>(Socket.java:209)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
... 26 more

ちなみに全てローカルで実行しています。


753 名前:701 mailto:sage [2009/03/20(金) 12:02:33 ID:???]
いろいろ調査したのですが、さっぱり原因がわかりません。

そもそも最初は問題なく動作していたのです。

ある日突然繋がらなくなりました。(getConnection()でエラーが発生)

もちろん接続周りはいじっていません。

大変申し訳ありませんが、どうか助言をお願い致します。


754 名前:NAME IS NULL mailto:sage [2009/03/20(金) 12:17:45 ID:???]
>>751
>以下ファイルをダウンロードし直してインストールしたのですが、同じエラーが発生してしまいました

良かったじゃん
絞込み出来て

755 名前:NAME IS NULL mailto:sage [2009/03/20(金) 12:18:50 ID:???]
>>751
なんでOSを再インストールしなかったんだ?

756 名前:NAME IS NULL mailto:sage [2009/03/20(金) 12:19:02 ID:???]
最初に動いていたものが動かなくなったのに、JDBCだけを疑うのはおかしいだろ。
OSパッチ当てたとか、JREをアップデートしたとか、その辺が原因だろ。


757 名前:NAME IS NULL mailto:sage [2009/03/20(金) 12:25:46 ID:???]
>>723
OS:Windows VISTA SP1
DB:MySQL 5.0.67
サーバー:Tomcat 5.5、6.0
JAVA:JDK 1.6
JDBC:5.1.7、5.0.8

>>751
DB:MySQL 5.0.67
サーバー:Tomcat 5.5
JAVA:JDK 1.5
JDBC:5.1.7

環境変えるなってww

758 名前:701 mailto:sage [2009/03/20(金) 12:34:48 ID:???]
わかりました。
やはりOSを再インストールすることにします。

長々お付き合い頂きありがとうございました。


759 名前:NAME IS NULL mailto:sage [2009/03/20(金) 12:40:29 ID:???]
OSパッチはともかく、JREをホイホイ上げるのはまずい。
上げるのなら、きちんと検証しないと。


760 名前:NAME IS NULL mailto:sage [2009/03/20(金) 12:48:59 ID:???]
ここまで他力あてにされると釣りかと思うが
エラーメッセージ見ないでマジレスすると
どこが原因なのか絞り込みしないと話にならない
MySQL側なのかJDBC側なのかそれ以外なのかさっぱり分からん
違うサーバーかVMがあるならそっちにMySQL入れて
自分のJDBC環境から繋がるのかどうか調べろ
それから上にもあったが自分でMySQLに繋いだときに
どこまで上手くいってるのか再確認すること



761 名前:NAME IS NULL mailto:sage [2009/03/20(金) 14:57:42 ID:???]
エラーだけ見ると通信エラーなんだけど
たしかにこれだけでは分からない


762 名前:NAME IS NULL mailto:sage [2009/03/20(金) 16:22:24 ID:???]
ユーザー名とパスワードが空欄になってるユーザーが
いつの間にか登録されてたんですがどうやったら削除出来ますか?
2つ登録されていてホストはLocalhostとLinuxのサーバー名になってます
DROPでやってみましたがユーザー名が空欄なので指定出来ませんでした・・・

763 名前:NAME IS NULL mailto:sage [2009/03/20(金) 16:24:36 ID:???]
空欄だから''@localhostでいいんですね・・・自己解決しました・・・

764 名前:NAME IS NULL mailto:sage [2009/03/20(金) 18:08:26 ID:???]
>>760
個人的に大ボケ掘ったことがあるのが開発時にローカルで
サーバ起動したらポコッとダイアログが出てきて、一見すると
セキュリティの警告っぽかったので反射的に「拒否」をクリック
したら実はそれがファイアーウォールの警告。
それ以降サーバへの接続はことごとくファイアーウォールに
はねられていることに気づくまで「原因不明の接続エラー」と
して四苦八苦する事に。

その時も「いきなり動かなくなった、原因不明だ〜」とか言い
ながらデバッグしたりパケットキャプチャとかかなり明後日な
方向で原因を探していたような。

765 名前:NAME IS NULL mailto:sage [2009/03/20(金) 19:42:01 ID:???]
今回は3306で入れるって言ってるからなぁ
ユーザー認証とか@localhostの人じゃないけど
Usersの中身で@の右がおかしくなってるとかかな

766 名前:NAME IS NULL mailto:sage [2009/03/20(金) 19:44:25 ID:???]
釣りじゃないことを証明する方法は無いからな
ソースなりなんなり誠意を持って情報を出すしかないだろ

767 名前:おしりからミミズが出てきたよ ◆QwTJfrW1qw mailto:gutugutu [2009/03/21(土) 08:22:39 ID:???]
MySQLに対して、select *.??.*って打つと

768 名前:NAME IS NULL mailto:sage [2009/03/21(土) 14:55:52 ID:???]
おしりからミミズが出てきたよ

769 名前:NAME IS NULL [2009/03/21(土) 21:53:37 ID:dFn4HTDg]
今日からMySQLの勉強をはじめたんですが、
PHPとかPerlとか、そういうの全然知らないんです。
bashとかawkなら使えるんですが、当面それでも大丈夫でしょうか?

770 名前:NAME IS NULL mailto:sage [2009/03/22(日) 00:00:27 ID:???]
MySQLそのものの勉強ならいいんじゃない?




771 名前:NAME IS NULL mailto:sage [2009/03/22(日) 00:40:33 ID:???]
大丈夫

772 名前:NAME IS NULL [2009/03/22(日) 12:37:48 ID:YXKVV6EJ]
>>769
シェルスクリプトでやるならこんな感じでどう?

#!/bin/bash
sql_select()
{
echo "USE "$1"; SELECT "$2" FROM "$3"" #| mysql -u root -ppassword
}

sql_select "hoge" "*" "piyo"

773 名前:NAME IS NULL mailto:sage [2009/03/22(日) 12:39:13 ID:???]
毎回DB名入れないといけないのかw

774 名前:772 mailto:sage [2009/03/22(日) 12:48:32 ID:???]
変なとこに#が入ってたorz

>>773
一旦関数だけ集めたファイルを作れば、次回からは関数を呼び出すだけだから
そんなに手間じゃないでしょ

775 名前:NAME IS NULL mailto:sage [2009/03/22(日) 14:13:48 ID:???]
>>774
こんな感じですかい?

#!/bin/bash
# program sqllib.sh
sql_select()
{
echo "USE '"$b_name"'; SELECT '"$1"' FROM '"$t_name"'" | mysql -u root -ppassword
}

sql_showtbl()
{
echo "USE '"$b_name"'; SHOW TABLES FROM '"$b_name"'" | mysql -u root -ppassword
}

sql_showfls()
{
echo "USE '"$b_name"'; SHOW FIELDS FROM '"$t_name"'" | mysql -u root -ppassword
}

----------------------------------------------

#!/bin/bash
# program main.sh;
. sqllib.sh

b_name="hoge" # DB名
t_name="piyo" # TABLE名

sql_select "y"
sql_showtbl
sql_showfls

776 名前:NAME IS NULL mailto:sage [2009/03/23(月) 14:23:38 ID:???]
あまりに初歩的過ぎることかもしれませんが、UPDATEの質問です。

今、
id,name,col1,col2,col3,col4,col5
といったようなカラム構成のテーブルがあるとします。
col1〜col5までは、全てtinyint(1)型で(別にchar(1)でもenum()とかでもいいんですが)
それぞれに、ある状態のフラグ(0,1,2..etc)が入るとします。

例、
id,     name,   co1, col2. col3 ,col4, col5
0001, yamada,  1,    0,    1,     1,     2

ここで、col1〜col5までのそれぞれの値が、1の場合のみ2に変更(0or2の場合は変化なし)
したいのですが、一回のUPDATEクエリで更新することは可能でしょうか?
IF文あたりを駆使すれば出来なくもなさそうですが、よくわかりません。
現状、
UPDATE table SET col1=2 where col1=1 and id='〜〜';
UPDATE table SET col2=2 where col2=1 and id='〜〜';
    ・
    ・
UPDATE table SET col5=2 where col5=1 and id='〜〜';

のような感じで、5カラム分のクエリをそれぞれ書いているのですが・・。

777 名前:NAME IS NULL mailto:sage [2009/03/23(月) 15:59:01 ID:???]
>>776
そこまで書いておいて・・・。
恐らく一つの行に対してそのcolどうのこうのっていう条件を与えたいと思うんだけど、
いまあるそのupdate文を一句ずつ見直せ。聞くようなものじゃない、答えはすぐそこ。大丈夫、やればできる。

778 名前:NAME IS NULL mailto:sage [2009/03/23(月) 16:03:32 ID:???]
>>776
caseステートメントの知識を習得するといいことがあるかもしれない。

779 名前:776 mailto:sage [2009/03/23(月) 18:17:21 ID:???]
うおぉぉ〜! できましたあ〜、多分。
ってかこれでよいのかな?

UPDATE table SET col1=IF(col1=1,2,col1),col2=IF(col2=1,2,col2), ・・・ where id='〜〜';

IF文をSELECTの中で使うことは今まであったんですが、このようにUPDATE文の中の
SET col=exper の部分で、参照出来ることは分かりませんでした。
(一旦サブクエリとかで、何かに値を格納しないといけないのかと思い込んでおりました。)

いや、もしかしたらもっと効率のよい、或いは短いクエリで可能かも知れませんが・・。

>>777,778
レスありがとうございます。

778さんには申し訳ないですが、今回の場合は、カラムの値が真偽の2パターンだけでよかったので、
case文は使いませんでした。今後3パターン以上必要な時は、caseを使ってやってみたいと思います。

780 名前:778 mailto:sage [2009/03/23(月) 18:30:08 ID:???]
>>779
そっか、確かに今回はcase使うまでもなかったな、余計なこと言ってスマンかった。
たぶんその書き方で十分だと思うよ。よくガンバったね。



781 名前:NAME IS NULL mailto:sega [2009/03/24(火) 16:02:32 ID:???]
UNIQUE属性の列って、普通にインデックスとして機能したっけ?

782 名前:NAME IS NULL mailto:sage [2009/03/24(火) 16:33:02 ID:???]
>>781
経験上は大抵のDBMSではそうなってくれるが、SQL規格上で保証されてるわけではないと思われる。

783 名前:NAME IS NULL mailto:sage [2009/03/24(火) 16:33:11 ID:???]
show indexしてみなよ。

784 名前:NAME IS NULL mailto:sage [2009/03/24(火) 20:08:09 ID:???]
UNIQUEってUNIQUEがYESのINDEXでしょ

785 名前:NAME IS NULL mailto:sage [2009/03/24(火) 20:12:39 ID:???]
unique constraintのことを聞いてるんじゃね?

786 名前:NAME IS NULL mailto:sage [2009/03/24(火) 20:17:42 ID:???]
>>785
unique indexが出来るだけでしょ?

787 名前:NAME IS NULL mailto:sage [2009/03/24(火) 20:31:19 ID:???]
マニュアル調べてみたけど、書式が
ADD [CONSTRAINT [symbol]] UNIQUE [index_name]
ってなってるから、mysqlについてなら等価じっぽいな。

788 名前:NAME IS NULL [2009/03/24(火) 23:10:18 ID:0WqsmlVU]
MySQL Clusterに詳しい人いますか・・?

789 名前:NAME IS NULL mailto:sage [2009/03/25(水) 09:49:40 ID:???]
mysqlクライアント起動するときに、デフォルトで/etc/my.cnfを読み込むけど、これを変更することはできますか?

790 名前:NAME IS NULL mailto:sage [2009/03/25(水) 10:07:16 ID:???]
--defaults-file=ファイル名
なにも引数つけないで起動すれば出てくるじゃん。



791 名前:NAME IS NULL mailto:sage [2009/03/25(水) 14:20:51 ID:???]
テスト

792 名前:NAME IS NULL [2009/03/25(水) 15:02:41 ID:oHWQLdPG]
トランザクションで
ユニークインデックスのカラムに文字データを入れて
入ればコミット、入らなければロールバックをしてPHPのループで繰り返したのですが
一回でも入らないとそれ以後、全部入らなくなります。
何でですか?

793 名前:NAME IS NULL mailto:sage [2009/03/25(水) 16:16:27 ID:???]
>>792
トランザクションとループのネスト関係も提示されてない状態では答えようがない。

794 名前:NAME IS NULL mailto:sage [2009/03/27(金) 11:01:52 ID:???]
sqlだったのかmysqlだったのかも忘れてしまったのでここで質問させてください。

where句のin述語で抜き出したタプルを、in述語に記載された順で取り出すキーワードを探しています。
select id from hoge where id in (1, 3, 5, 7, 9, 2, 4, 6, 8);
と書くと、この順で取り出せるようになるのです。
見つけたときは感動したのにメモを忘れていました。

795 名前:NAME IS NULL mailto:sage [2009/03/27(金) 11:27:38 ID:???]
質問は?

796 名前:NAME IS NULL mailto:sage [2009/03/27(金) 11:34:40 ID:???]
>>795
はい、なんて書いたらいいかわかんなくて。

このキーワードはなんでしょう?

クイズみたいな日本語しか書けない俺乙。

797 名前:NAME IS NULL mailto:sage [2009/03/27(金) 11:58:36 ID:???]
はい、赤の方どうぞ
>>797

798 名前:NAME IS NULL mailto:sage [2009/03/27(金) 12:36:33 ID:???]
order by field(id, 1, 3, 5, 7, 9, 2, 4, 6, 8)
とか?

799 名前:NAME IS NULL mailto:sage [2009/03/27(金) 13:19:36 ID:???]
>>798
それ・・・、だった気がします!
ありがとうございます!

800 名前:NAME IS NULL mailto:sage [2009/03/27(金) 13:54:07 ID:???]
>>794-799
そんな書式があるとは初めて知った。覚えてるといつか役に立ちそう。
こういうことがたまにあるとスレをチェックしてる甲斐があると思う、ありがとう。



801 名前:NAME IS NULL mailto:sage [2009/03/29(日) 00:03:45 ID:???]
標準SQLではできないんじゃなかったっけ?

802 名前:NAME IS NULL [2009/03/29(日) 19:48:34 ID:mFEjAqnf BE:438363252-2BP(0)]
すいません質問させてください。

mysqldumpDBの中身をSQL形式で丸ごとエクスポートすることができますが、条件に一致する特定のレコードのinsert文だけSQLでエクスポートしたいのですが、
なにか方法はあるでしょうか??

803 名前:802 [2009/03/29(日) 19:49:25 ID:mFEjAqnf BE:1402762548-2BP(0)]
すいません
×mysqldumpDBの中身をSQL形式で丸ごとエクスポートすることができますが、
○mysqldumpでDBの中身をSQL形式で丸ごとエクスポートすることができますが、
です。

804 名前:NAME IS NULL mailto:sage [2009/03/29(日) 20:58:59 ID:???]
my.cnfで指定するポート番号とかソケットは、それぞれ何のために必要なのでしょうか?


805 名前:804 [2009/03/29(日) 23:43:32 ID:mFEjAqnf BE:876726645-2BP(0)]
自己解決!
it.kndb.jp/entry/show/id/1067

806 名前:804 [2009/03/29(日) 23:45:14 ID:mFEjAqnf BE:1095908055-2BP(0)]
でも--whereで使えるのって=,<,>だけなんですね。。
where in みたいにもっと細かく指定できたら便利なんですが。

807 名前:NAME IS NULL mailto:sage [2009/03/30(月) 00:13:08 ID:???]
>>798
これ、何の役にたつのか全然想像ができないんだけど、具体的な使用例を教えて欲しい。


808 名前:NAME IS NULL mailto:sage [2009/03/30(月) 08:14:11 ID:???]
>>807
便利と思わない人は、SQLを呼んだ側で
処理してるだろうから聞くまでもないかと。


809 名前:NAME IS NULL mailto:sage [2009/03/30(月) 10:35:47 ID:???]
便利と思う人も、呼ぶ時に何らかの手段で順番決めてるんだろうから
やっぱり謎ではあるw

810 名前:NAME IS NULL mailto:sage [2009/03/30(月) 13:27:01 ID:???]
え?普通に使うだろ



811 名前:NAME IS NULL mailto:sage [2009/03/30(月) 13:40:09 ID:???]
例えば、アンケートのモニターテーブルで、性別を表すgenderフィールドがint型で
0...不明, 1...男, 2...女
と入ってるのに対し、男、女、不明の順番で列挙したい場合に
order by field(gender, 1, 2, 0) みたいな感じか? < 具体例

812 名前:NAME IS NULL [2009/03/30(月) 17:02:07 ID:o6bWw3/H]
アクセスログの保存先にMySQLを使っているのですが、
1つのテーブルに何十万行あっても、MySQLとしての負荷は問題ないでしょうか?
それともログを集計したり、テーブルを分ける必要があるのでしょうか?

813 名前:NAME IS NULL mailto:sage [2009/03/30(月) 17:11:12 ID:???]
>>812
仕事で本運用してるサービスでは数100万単位のレコード扱ってるが
別に困ってることはない。
もちろんmyisamだけど、innodbならどうなるかわからん。

814 名前:NAME IS NULL mailto:sage [2009/03/30(月) 19:03:44 ID:???]
>>807
あるサマリテーブルから一致度の高いモノ順に返すんだ。
あるインスタンスからその結果セットを返すときにその戻り値の仕様が決まってるんだ。
だから順序を格納した配列とかを一緒に返してあげれない。
その後実テーブルから各データを取り出すんだ。
なので最初に取り出した順をinにかくと(アプリ側で順序を変えたりする変更がいらないから)お手軽だと思ってたんだ。

>>812
更新ががつがつあるwebサービスだと数百万ぐらいから負荷がきついです。
オープン系の改造やってるけど、もともとそこまで大規模に見積もってないプログラムだと
でかいjoinがあったりするから手動で切り分けが必要す。
検索用とかにインデックス張ると更新も重いのでちょっと手を加えたレプリケーションとかmemcachedで
防衛戦線を張るとかが必要です。

815 名前:NAME IS NULL mailto:sage [2009/03/30(月) 23:01:34 ID:???]
>>812
保存は問題ない
取り出すときに注意

816 名前:812 mailto:sage [2009/03/31(火) 13:03:10 ID:???]
>>812-815
皆さん、アドバイスありがとうございます。

PHPで表示出力しているのですが、
以前住所録を作った時、10万行で物凄く重く、
JOINで別のテーブル(会員情報とか)と結合するのも困難でした。

アクセスログなんで、ログ情報を蓄積していくだけですから、
そんなに問題なさそうですね。
一時は集計する仕組みにしようかとも思ったのですが、
集計すると、1行のログやログ推移などが閲覧できないので
出来れば集計したくないなと思ってました。cronを使う必要もありますし。

とりあえず、1テーブルに100万行程度なら気にしないでおきます。



817 名前:NAME IS NULL mailto:sage [2009/03/31(火) 13:38:55 ID:???]
10万行程度で重くなるのはインデックス使ってないだけ
チューニングで一瞬で検索できるようなる。

818 名前:NAME IS NULL mailto:sage [2009/03/31(火) 15:13:15 ID:???]
一瞬(笑)

819 名前:NAME IS NULL [2009/04/01(水) 20:17:31 ID:7pdRCy0B]
11 06, 2007
Databases: Yesterday, Today, and Tomorrow
Deirdre Blake
MySQL's Jim Starkey discusses databases.
www.ddj.com/database/202802994

820 名前:NAME IS NULL mailto:sage [2009/04/02(木) 09:49:44 ID:???]
db名: hoge
db名: giko

両方のDBに書き込みや参照できるユーザを作るには
どのようなGRANT文を書くの?



821 名前:NAME IS NULL mailto:sage [2009/04/02(木) 12:25:04 ID:???]
>>820
じーじーあーるけーえす

822 名前:NAME IS NULL [2009/04/02(木) 13:03:51 ID:RCSMlknx]
「show table テーブル名」をやると項目にUpdate_timeというものがありますが、これが常にNULLになってしまっています。
原因は何でしょうか。よろしくお願いします。

823 名前:NAME IS NULL mailto:sage [2009/04/02(木) 13:37:25 ID:???]
InnoDBだから

824 名前:NAME IS NULL mailto:sage [2009/04/02(木) 14:35:48 ID:???]
InnoDBdakara

825 名前:NAME IS NULL mailto:sage [2009/04/02(木) 14:36:45 ID:???]
>>823さん
>>824さん
ご回答ありがとうございます。InnoDBだとダメなんですか。

では、どうすればInnoDBでテーブルの更新日時をスマートに得ることができるでしょうか。

826 名前:NAME IS NULL [2009/04/02(木) 21:25:50 ID:vH2vMflF]
早くSun潰れないかなぁ


827 名前:NAME IS NULL mailto:sage [2009/04/03(金) 22:02:38 ID:???]
Sun 買収時に「むしろ朗報」くらい言ってたバカ連中はそろそろ
Sun がどういう会社か理解できただろう。さっさと首吊ってくれ。

828 名前:NAME IS NULL mailto:sage [2009/04/04(土) 20:57:11 ID:???]
mysql5 の同時接続数を増やすには、どこをいじればいいのでしょうか?
jmeterでスレッド数を50位にすると、カツカツになってしまいます。
CPUもメモリも余裕はあるのですが、何をしても50位でカツカツです。

環境は、
WEB鯖(2CPU、メモリ2G)
DB鯖(4CPU、メモリ8G)

どこをいじればいいのでしょうか?

829 名前:NAME IS NULL mailto:sage [2009/04/04(土) 21:09:21 ID:???]
もう少し詳しく書きますと、接続は出来るのですが、レスポンスが帰ってこなくなるのです。。

830 名前:NAME IS NULL mailto:sage [2009/04/04(土) 23:08:34 ID:???]
CPUとメモリが余裕でも
ディスクI/Oが余裕なかったりしないの?



831 名前:NAME IS NULL mailto:sage [2009/04/05(日) 01:31:01 ID:???]
>>830

今、事故解決しました。

スペック的には余裕だったのに、WEB鯖からの接続が遅いので、原因がさっぱり分かりませんでしたが、
my.cnfにskip-name-resolverが抜けておりました。

これを入れたら、希望通りの同時接続が得られました。

お騒がせしました。

832 名前:NAME IS NULL mailto:sage [2009/04/05(日) 15:34:33 ID:???]
現在CSEからMySQLに接続しているのですが、
CSE上にあるDBエクスプローラー>テーブル>テーブル名
をクリックすると次の様なエラーダイアログが出てしまいます。
一体なぜでしょうか?

cse
アプリケーション実行中に以下のエラーが発生しました。

エラー内容:
オブジェクト情報取得中にエラーが発生しました。
DBエラー詳細:
エラーコード1064 [MySQL][ODBC 3.51 Driver][mysqld-5.0.45-community-nt]
You have an error in your SQL syntax; check the manuaru tha
corresponds to your MySQL server version for the right syntax to use near '-fighter'.
`test_fighter`' at line 1
SQLステータス:HY000


833 名前:NAME IS NULL mailto:sage [2009/04/06(月) 21:52:06 ID:???]
MySQLで入れ子にしたINSERT文とかって使えないのでしょうか?




INSERT INTO TEST_TABLE
(
 SEQ_NUMBER
)
VALUES
(

 (
  SELECT
     ( MAX(SEQ_NUMBER) + 1 ) AS MAX_SEQ_NUMBER
  FROM
     TEST_TABLE
 )
)


834 名前:NAME IS NULL mailto:sage [2009/04/06(月) 22:54:31 ID:???]
俺も最近それで小一時間はまったけど
サブクエリの場合はVALUESいらない

835 名前:NAME IS NULL [2009/04/06(月) 23:00:26 ID:aP6ldDFT]
no eng
1 b
2 c
3 a
4 s
5 a

上記のテーブルのデータをs→a→b→cの並び順(noで43512の順)で抽出したいんですがどうしたらいいですか?
列engをソートしてもsが頭に来ないので…。

836 名前:NAME IS NULL mailto:sage [2009/04/06(月) 23:16:27 ID:???]
>>835
>>798

837 名前:NAME IS NULL mailto:sage [2009/04/07(火) 15:29:11 ID:???]
>>832
CSEのバグじゃないかな。自分もpostgresql使ってた頃に他のバグを報告したことがある。
でも残念今は開発が止まってる。他のSQLエディタを探すことをオススメする。
俺はquery browser使ってる。日本語使うならphpmyadminからぽちぽち入力してるよ!

838 名前:NAME IS NULL [2009/04/08(水) 00:02:56 ID:UzqbosAw]
/etc/my.cnfのmysqldセクションを変更した場合に、それを有効にするにはどうすればよいのでしょうか?

ためしに、
sudo kill -HUP {mysqldのプロセス番号}
をやってみたのですが、だめでした。。


839 名前:NAME IS NULL mailto:sage [2009/04/08(水) 00:19:38 ID:???]
mysqld再起動しかないはず

840 名前:>>839 mailto:sage [2009/04/08(水) 01:12:45 ID:???]
>>839
ありがとうございます



841 名前:NAME IS NULL mailto:sage [2009/04/08(水) 11:15:22 ID:???]
PerlからMySQLに日本語名のフィールドやクエリを
送ると文字化けしてしまいます。
どうやって対処すればいいでしょうか?

@ページで実際に運用していらっしゃる方がいると助かります

842 名前:NAME IS NULL mailto:sage [2009/04/09(木) 13:04:59 ID:???]
>>841
日本語周りは結構トラブるからコード含めてとにかく全部何かの文字コードに統一するといい。
日本語名のカラムはやめてください。

@ページって何?atwikiの親類?

843 名前:NAME IS NULL mailto:sage [2009/04/09(木) 13:58:13 ID:???]
@ は特に意味ないだろう

844 名前:NAME IS NULL mailto:sage [2009/04/09(木) 15:54:57 ID:???]
#やら--みたいなもんかな。でも理解できてない俺。
でも@がコメントになってる言語は身に覚えがない。

845 名前:NAME IS NULL mailto:sage [2009/04/09(木) 17:27:44 ID:???]
後、の意味かと思ったが違うようだし、ページのPの隣だから余計に打っちゃったとか

846 名前:NAME IS NULL mailto:sage [2009/04/09(木) 17:52:04 ID:???]
>>842-845
@pages っていうホスティングサービスのことだと思うよ

847 名前:NAME IS NULL mailto:sage [2009/04/09(木) 18:07:27 ID:???]
ズコー

848 名前:NAME IS NULL mailto:sage [2009/04/09(木) 20:54:28 ID:???]
MySQLを起動するとLIBMYSQL.dll関係のエラーが出るんですけど

849 名前:NAME IS NULL mailto:sage [2009/04/09(木) 20:56:30 ID:???]
XAMPPをPCにインストールしてDBをつくりましたけど、
これをレンタルサーバで使えるようにするにはどうすればいいんですかね。
PHPならサーバにうpすればよさそうなんですが、DBはどうするんでしょう?

850 名前:NAME IS NULL mailto:sage [2009/04/09(木) 23:19:18 ID:???]
>>842
カラムまではすべてアルファベットに変えました。
が、どうしても値だけは日本語にしたいです。
現在、perlからMySQLへinsertで追加していきたいと考えています。
この中の日本語部分だけが文字化けします。

>>846さんの言うように、@pagesというところでの運用を考えています。
SET NAMEを最初に渡してみましたが、sjis,ujis,cp932,utf8_unicode_ciなどうまくいきません
utf8を渡すと、日本語部分だけが削除された値になってしまいます



851 名前:NAME IS NULL [2009/04/10(金) 00:21:03 ID:+TZh0ICE]
MySQLって今後どうなんの?Postgreとどっちが将来性ある?

852 名前:NAME IS NULL mailto:sage [2009/04/10(金) 09:33:37 ID:???]
MySQLのプリペアードステートメントってどうなの?
Postgreみたいに、プレースホルダの型とか指定できないの?

ようはSQLインジェクション対策なんだけど、今のサーバ環境的にPHPのmysqliとか使えないんだけどさ。

853 名前:NAME IS NULL mailto:sage [2009/04/10(金) 12:57:11 ID:???]
>>852
pear.php.net/package/DB_Table/redirected

854 名前:NAME IS NULL mailto:sage [2009/04/10(金) 19:44:31 ID:???]
PDO使えよ

855 名前:NAME IS NULL [2009/04/10(金) 23:44:34 ID:T+h+LMvB]
PHPとの相性がpostgreよりいいの?

856 名前:NAME IS NULL [2009/04/11(土) 00:33:05 ID:PPPuyuZh]
質問なんですが、
columnを2つでauto incrimentのcolumnとmedium blobのcolumnで画像をPHPのループで大量に入れました。
1万位までなら表示も余裕で問題なかったのですが、10万を越えたあたりから表示が極めて遅くなり
もはや表示もできなくなりました。dumpもできません。

一つのテーブルにこれだけ入れるのではなくテーブルを分ければ良かったのかもしれませんが
もう入れてしまったのでこれをなんとかしたいのですがチューニングとかでなんとかなりますか?
画像のバイナリデータは取り出せますか?

一応書いておきますがCPUやメモリは問題なさそうです。

857 名前:NAME IS NULL mailto:sage [2009/04/11(土) 01:02:57 ID:???]
表示って何の表示だよ

858 名前:NAME IS NULL mailto:sage [2009/04/11(土) 06:08:23 ID:???]

悩みすぎて食事が喉を通りません

メールアドレスを入れるフィールドの名前は
emailとmail_addressどっちがナウイですか?



859 名前:NAME IS NULL [2009/04/11(土) 06:24:57 ID:fPJfsmu2]
これ今から勉強する価値あるかな?ポスグレとどっちやろうか迷ってます・・・
なんかサンがIBMに買収されるとか・・・実際どーなの?

860 名前:NAME IS NULL mailto:sage [2009/04/11(土) 08:14:57 ID:???]
>>858
meado



861 名前:NAME IS NULL mailto:sage [2009/04/11(土) 10:00:48 ID:???]
誰かMySQLで日本語データの使うときの設定をテンプレ化してくれ

862 名前:NAME IS NULL mailto:sage [2009/04/11(土) 11:16:53 ID:???]
>>859
結局買収は無しになりました。詳しくはitmediaなどで。

あとデータベースはソフトが違っても基本的な構造やSQL文はほぼ同じなので
好きな方でやれば後で別のソフトへの切り替えもスムーズです。
ポスグレはGUIのソフトが付属しているから楽ですが
SQL文を覚えるにはmysqlがいいと思います。
うちはmysqlとポスグレ両方使ってますよ。

863 名前:NAME IS NULL mailto:sage [2009/04/11(土) 14:34:36 ID:???]
>>861
そんな特別な設定は必要ないとおもうけど。

[mysql]
default-character-set=utf8

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

[mysqldump]
default-character-set=binary

で各フィールドはutf8_general_ciかutf8_unicode_ciで。

それともこういうエラーのときはここの設定を見直せ的なテンプレがほしいのか。

864 名前:NAME IS NULL mailto:sage [2009/04/11(土) 19:44:14 ID:???]
素人なもんで教えてください。
主キーとかインデックスとかリレーションシップってどうやって作ればいいのですか?


865 名前:NAME IS NULL mailto:sage [2009/04/11(土) 20:09:00 ID:???]
CREATE INDEX

866 名前:NAME IS NULL mailto:sage [2009/04/11(土) 23:29:40 ID:???]
create mainkey;
create index;
create relationship;

867 名前:NAME IS NULL mailto:sage [2009/04/12(日) 03:55:21 ID:???]
WEBアプリでなくて、
デスクトップ型の
スタンドアローン型のアプリ
(RPGとか)で、
MySQLを使うように設計した場合、
ユーザーに配るときは、どうすればいいの?

MySQLのインストールに関しては、
自分でxampp入れてくださいとかになっちゃうの?

868 名前:NAME IS NULL mailto:sage [2009/04/12(日) 04:40:08 ID:???]
xamppなんてありえないだろ

869 名前:NAME IS NULL mailto:sage [2009/04/12(日) 07:59:15 ID:???]
>>867
MySQLではなく、組み込み型のデータベース使う。

870 名前:NAME IS NULL [2009/04/12(日) 08:26:03 ID:icVCIfDF]
mysql_query("start transaction");
$qu1 = mysql_query("insert 〜");
$qu2 = mysql_query("insert 〜");

if($qu1 == true and $qu2 == true){
mysql_query("commit");
} else {
mysql_query("rollback");
}

↑PHPで複数のテーブルにエラー無く入れたらコミットしたいんですが
書き方はこんな感じでいいのでしょうか?

なぜか全フィールドがnot nullにも関わらず
片方のテーブルだけ書き込まれてしまう事があるんですが。



871 名前:NAME IS NULL mailto:sage [2009/04/12(日) 08:43:22 ID:???]
>>869
例えばどんなの?

872 名前:NAME IS NULL mailto:sage [2009/04/12(日) 10:30:15 ID:???]
xamppではなく普通に.msiのファイルでインストールしてしまいました。
再インストールしないとxampp使えないでしょうか?

873 名前:NAME IS NULL mailto:sage [2009/04/12(日) 10:56:42 ID:???]
>>871
SQLite

874 名前:NAME IS NULL mailto:sage [2009/04/12(日) 11:14:36 ID:???]
あんなのつかわねー

875 名前:NAME IS NULL mailto:sage [2009/04/12(日) 11:55:30 ID:???]
どうして?

876 名前:NAME IS NULL [2009/04/12(日) 13:17:12 ID:UP5C1RP7]
>>862
どちらでもいいと思うけど、MySQLは select * group by hoge が通るから
最初に触るのには、あまり奨めたくないなぁ・・・
#ストアドのdebugも標準でできそうな、SQL鯖2008Ex+現場で使えるSQLが
#自分はお薦め。スレチだけど
#Postgresからはじめた奴なんだが

877 名前:NAME IS NULL mailto:sage [2009/04/12(日) 13:23:01 ID:???]
from句を知らないとは初心者ですね

878 名前:NAME IS NULL [2009/04/12(日) 13:49:13 ID:UP5C1RP7]
スマン。力が抜けて返す言葉もない >>876

879 名前:NAME IS NULL mailto:sage [2009/04/12(日) 15:16:41 ID:???]
揚げ足取り乙

880 名前:870 [2009/04/12(日) 15:59:52 ID:icVCIfDF]
で、>>870はどうなのよ?
どう考えてもtrueじゃないのにコミットしてるんだけどどこがいけないのかな?



881 名前:NAME IS NULL mailto:sage [2009/04/12(日) 16:28:13 ID:???]
急に偉そうな態度になったな

882 名前:NAME IS NULL mailto:sage [2009/04/12(日) 17:01:46 ID:???]
ユーザーごとにデータの閲覧範囲が異なる場合、grantでカラムごとの権限を与えればアクセス制限ができますが、
ユーザーが属するグループに対して権限を与えるにはどうしたらいいでしょうか?
グループは権限設定をした後に所属ユーザーが変更される可能性があり、権限はあくまでもその時点でグループに所属している人に与えられます。

883 名前:870 [2009/04/12(日) 17:14:13 ID:icVCIfDF]
早く教えろや

884 名前:NAME IS NULL mailto:sage [2009/04/12(日) 19:35:14 ID:???]
はいはい

885 名前:NAME IS NULL mailto:sage [2009/04/12(日) 19:59:49 ID:???]
オートインクリメントがたまに番号飛び飛びで入る事があるのですが
これはバグでしょうか?

それとMax allowed packetの値をmy.iniで指定しなかった場合は
デフォルトはいくつなんですか?

886 名前:NAME IS NULL mailto:sage [2009/04/12(日) 21:54:36 ID:???]
>>885
mysqldの場合はmax_allowed_packetのデフォルトが1Mだったかな
バージョンは5.1


>>870
書き方はそんな感じじゃないです

887 名前:NAME IS NULL [2009/04/12(日) 22:07:56 ID:icVCIfDF]
>>886
じゃあどんな感じ?

888 名前:NAME IS NULL mailto:sage [2009/04/12(日) 22:20:26 ID:???]
>>887
この系統は try {} catch {} でやるほうが楽じゃないのかな

で、DBはInnoDBだよね?

889 名前:870 [2009/04/12(日) 22:31:58 ID:icVCIfDF]
うん、INNOだよ。
trycatchなんて初めて知った。
とりあえず使ってみます。

890 名前:NAME IS NULL mailto:sage [2009/04/12(日) 22:44:14 ID:???]
PDOの例だけど、
study.rakuto.net/php/pdo/dbh/
こんなのもあった。



891 名前:NAME IS NULL mailto:sage [2009/04/13(月) 00:28:46 ID:???]
>>873
SQLiteは本がほとんど出てないから
使いたくありません。

情報がなさすぎです。

ほかの組み込み型データーベースは
例えばなにがありますか?

892 名前:NAME IS NULL mailto:sage [2009/04/13(月) 00:57:47 ID:???]
>>891
ググれカス

893 名前:NAME IS NULL mailto:sage [2009/04/13(月) 01:03:11 ID:???]
ググってもほとんど情報がでてこない
組み込み型データーベースって普通は何を使うの?

894 名前:NAME IS NULL mailto:sage [2009/04/13(月) 01:12:25 ID:???]
何を以て「普通」というのかわからんが、メジャーなのは、
WindowsならJETとか、UnixならNDBやBerkeleyDBとか。
後者は直接SQLを使わないけど。


895 名前:本田 [2009/04/13(月) 02:07:06 ID:ORR+BdDb]
>>867
MySQL Embedded Server 5.1
www-jp.mysql.com/oem/
MySQL Embedded Server 組み込みデータベースは、ISVや OEM業者による自社開発アプリケーション・ソリューションのすばやい市場投入を可能にする、管理手間ゼロかつ機能制限のないデータベース製品です。
すでに2000以上の OEM、ISV、VARによって採用されています。
MySQL Embedded Server は以下のような理由で採用されています。

* 低価格 - 商用製品に比べ10%の価格で、ISVやOEM業者のアプリケーションのライフサイクル全般における減価を抑えます。
* ハイパフォーマンス、信頼性、スケーラビリティ - 通信やネットワークアプリケーションなどの最も厳しい要求に、24時間365日応えることができます。
* 柔軟性 - MySQL の小さなフットプリントと 20 種類以上の充実したプラットフォームサポートにより、ISV や OEM業者は、さまざまなプラットフォーム上で稼働する、ありとあらゆるソフトウェアアプリケーションやハードウェアアプライアンスに組み込むことができます。
* 使用の容易さ - インストール、設定、統合を手軽に済ませ、開発に集中し、リリースまでのコストと時間を削減することができます。
* 管理手間一切なし - 専任のデータベース管理者を必要とせず、データベース管理に費やす時間も必要ありません。


896 名前:NAME IS NULL [2009/04/13(月) 08:14:00 ID:5dlxv3qU]
マイSQLやポストグレースSQLは、accessより排他制御はしっかりしていますか?

897 名前:NAME IS NULL [2009/04/13(月) 08:32:04 ID:KsC4TrXq]
>>867
なんかのゲームでmdbにパスワードかけてあるのがあったよ
#仕様的には充分だとおもうけど

898 名前:NAME IS NULL mailto:sage [2009/04/13(月) 08:41:54 ID:???]
mdbってアクセス?
アクセスの本の数と
SQLiteの本の数と比べれば、
アクセスの方が100倍くらい多いね。

899 名前:NAME IS NULL mailto:sage [2009/04/13(月) 08:46:13 ID:???]
そんでmdbってそのパソコンに
アクセスがインストールされてなくても使えるの?

900 名前:NAME IS NULL mailto:sage [2009/04/13(月) 11:29:42 ID:???]
使える。



901 名前:NAME IS NULL mailto:sage [2009/04/13(月) 14:34:09 ID:???]
>>894
比べるというより「ある」か「ない」かの違いに近いな。

902 名前:NAME IS NULL [2009/04/13(月) 15:57:21 ID:KsC4TrXq]
>>896
雰囲気そう思う
どっちも、行ロック使えたっけ?

903 名前:NAME IS NULL mailto:sage [2009/04/13(月) 17:34:46 ID:???]
ちょうど>>870みたいに制約つけてエラーを投げられたらrollbackして、ってやってた。
mdb2つかってクエリ投げてたんだけど、なんかバグっぽい動作してて、transactionなんやらっていうメンバ変数がうまく初期化されなかった。
auto commitが常にオンだった。


日本語も英語もできないからここで愚痴ったら誰か公式に伝達してくれないかなあああああああああ!

904 名前:NAME IS NULL mailto:sage [2009/04/13(月) 18:30:54 ID:???]
自分ですれ

905 名前:NAME IS NULL [2009/04/13(月) 18:55:39 ID:itxkgTRZ]
ASP.NETでcn.cursorlocation=aduserって何か意味あるの?
なくてもおk?

906 名前:本田 [2009/04/13(月) 19:55:07 ID:ORR+BdDb]
>>899
ADO DAO など接続方法について
pc11.2ch.net/test/read.cgi/db/1059027812/
ADO.NETの質問・雑談スレ2
pc11.2ch.net/test/read.cgi/db/1234077152/

907 名前:NAME IS NULL [2009/04/14(火) 12:30:07 ID:kl/ewSt5]
>>901
>>896への誤爆ね


908 名前:NAME IS NULL mailto:sage [2009/04/14(火) 22:01:52 ID:???]
>>885
トランザクション内でインクリメントされた後にロールバックされると欠番になったりする

909 名前:NAME IS NULL mailto:sage [2009/04/15(水) 08:56:28 ID:???]
レンタルサーバーにインストールされている
MySQLのバージョンってどうやって調べるの?

910 名前:NAME IS NULL [2009/04/15(水) 09:33:36 ID:NQEKajsu]
オートインクリメントって、たとえば1〜100までのレコードがあって
そのなかの50番目のレコードを消したとしたら
次にinsertする時はオートインクリメントの値が101になるんだけど
空き番号に自動で登録するようにできないの?
どうせなら連番で登録したいんだけどな。



911 名前:NAME IS NULL mailto:sage [2009/04/15(水) 10:01:06 ID:???]
SQLiteだったら、書き方でどっちでも選択できる。
MySQLではしらない。

912 名前:NAME IS NULL mailto:sage [2009/04/15(水) 10:52:14 ID:???]
>>910
そんな特殊な使い方するならオートじゃなくて自分で空き番号探してふれ

913 名前:NAME IS NULL [2009/04/15(水) 12:26:25 ID:NQEKajsu]
>>912
空き番号を簡単に探せる方法って無いかな?


あと別の質問なんだけど最近チューニングでmy.iniの変更をしたのですが
大量のデータを閲覧したりインサートしたりするとmySQLが落ちる。
WindowsのサービスでmySQLを再起動させても改善されず
Windowsを再起動させるしかない。
おそらくメモリとかキャッシュとか多く割り当て過ぎてるんだと思うけど
どこが原因なのか分かりません。
一番考えられるのはどこかな?

914 名前:NAME IS NULL mailto:sage [2009/04/15(水) 13:14:43 ID:???]
それは「落ちる」って言わずに「固まる」って言うんじゃね?


915 名前:NAME IS NULL mailto:sage [2009/04/15(水) 13:23:32 ID:???]
>>913
古い案件だとpkeyが実務の管理番号だったりして人間の目にも触れるから
飛ばないように穴埋めを自動でしてくれって言われたなぁ。
今あるpkeyの表と、そこから全部のpkeyから1ずつ引いた表を用意して差集合をとり
そのminを見る、って感じを実装したと思う。

一番考えられるのはwindows。同じ環境を三つ用意して三つとも固まれば設定だわ。
一つずつ変えていって調べるほかない。

916 名前:NAME IS NULL mailto:sage [2009/04/15(水) 19:55:14 ID:???]
インクリメント厨しつこくてうざい消えろ

917 名前:NAME IS NULL mailto:sage [2009/04/15(水) 21:53:29 ID:???]
>>909
select version();


918 名前:NAME IS NULL mailto:sage [2009/04/15(水) 23:33:54 ID:???]
諸事情があってWin98に5.1.33.msi入れたんだが、インストールされたはいいがrootパスワード設定画面が出てこなかったので使えない。
なんとかならないものか?

919 名前:NAME IS NULL mailto:sage [2009/04/16(木) 00:03:36 ID:???]
4.1もパスワード設定できないorz


920 名前:NAME IS NULL mailto:sage [2009/04/16(木) 00:53:19 ID:???]
本のベータベースを作りたかったのですが、本格的なものはMySQLってのを覚えないと無理だよ、と言われたばかりの
超超初心者です
勉強する気はあるので数冊本を買い込みたいのですが、お勧めの入門書などありますでしょうか?



921 名前:NAME IS NULL mailto:sage [2009/04/16(木) 03:32:28 ID:???]
>>920
別にMySQLじゃなくても作れるよ。
Accessにしとけば。

922 名前:NAME IS NULL mailto:sage [2009/04/16(木) 04:32:23 ID:???]
一人で使うならAccessで十分だけど、複数のクライアントから使うのを視野にいれるならMySQLとかPostgresqlとかで開発した方が後々苦労しないのではないだろうか?

923 名前:NAME IS NULL [2009/04/16(木) 06:36:38 ID:vW5Jd/4+]
MySQLでデータウェアハウスを構築しようとしてるのですが、やはりLinuxを使ったほうがいいですか?
それとも、Windowsでも十分問題ないでしょうか?


924 名前:NAME IS NULL [2009/04/16(木) 06:50:12 ID:o345M3ig]
MYSQLの短所はどのような点でしょうか?

925 名前:本田 [2009/04/16(木) 07:15:16 ID:/yuQiPs+]
>>920
MySQL & mSQL
* Randy Jay Yarger, George Reese, Tim King 著、株式会社ソフトエージェンシー 監訳、高見 禎成, 寺田 美穂子 訳
* 2000年04月 発行
* 556ページ
* 定価3,990円
* ISBN4-87311-011-4
* 原書: MySQL & mSQL
www.oreilly.co.jp/books/4873110114/
By Randy Jay Yarger, George Reese, and Tim King
ISBN 1-56592-434-7
First edition, published July 1999
(See the catalog page for this book.)

Search the text of MySQL & mSQL.
docstore.mik.ua/orelly/linux/sql/index.htm

926 名前:NAME IS NULL mailto:sage [2009/04/16(木) 08:41:47 ID:???]
オライリーの本をすすめるやつは
アタマがおかしい

927 名前:NAME IS NULL mailto:sage [2009/04/16(木) 08:49:03 ID:???]
オライリーの本を読めないやつは
開発に向いてない


癖の強いやつとか専門外だと読めない・・・。

928 名前:NAME IS NULL mailto:sage [2009/04/16(木) 08:57:52 ID:???]
自分に合う本を見つけられる能力がなければ独学はできないね
ココで聞く前に本屋へ行け

929 名前:923 [2009/04/16(木) 12:33:39 ID:TozpFWZO]
923でWindowsかLinuxかをお聞きしたものです。
結局Windowsで始めました。現在DBにデータをInsert中。


930 名前:NAME IS NULL mailto:sage [2009/04/16(木) 18:29:14 ID:???]
>>918
俺もやってみたがだめだった
インストール後の設定画面が出てこないね



931 名前:NAME IS NULL mailto:sage [2009/04/16(木) 21:06:48 ID:???]
自分で設定すればいいじゃん

932 名前:NAME IS NULL mailto:sage [2009/04/16(木) 21:34:57 ID:???]
どやって?

933 名前:NAME IS NULL mailto:sage [2009/04/16(木) 22:03:16 ID:???]
つマニュアル

934 名前:NAME IS NULL [2009/04/16(木) 23:03:55 ID:XWbzELA6]
>>920
最初はAccessでもいいんでね
独学だけど、最初はAccessのクエリ->SQLの確認&VBAで発行の繰り返しだったw
何をどうやって使えばいいか、わからなかったし
join、unionとかね
でも、ある程度ちゃんとしたものはAccessだけだと駄目だと思うよ
SQLでごりごり書かないとわからないところも多いし
#それが非常に大事だったりする
敷居の低さではSQLServerEXもいいと思うのだが
どころで、Webなの?サバ・クラ?

935 名前:NAME IS NULL mailto:sage [2009/04/16(木) 23:53:54 ID:???]
920です
データベース作ってWEBにアップしてみたかったのですがAccessの使用も考えたほうがいいのですね
もうちょっと勉強してみてからまた質問に来ます
色々とありがとう

936 名前:NAME IS NULL mailto:sage [2009/04/17(金) 00:59:55 ID:???]
きちんとSQLの基本を学びたいならMySQLよりPostgresを薦めたいな。
フリーのDBソフトではPostgresが一番SQL標準に準拠していると思う。
いわば様々なDBソフトのSQLの最大公約数がここにあると思うので、
これで学んでおけば他のDBソフトに行ってもつぶしがきくよ。

今はかなりマシになったとはいえ、MySQLもAccessも標準的なSQLと
比べると制限や方言がひどかった。特にサブクエリ周辺とか。

937 名前:NAME IS NULL [2009/04/17(金) 03:46:13 ID:IRCA6Vyp]
素人質問なのですが
例えば検索をする時に全角でAと入力して全角のA、半角のAと
両方を検索結果として出力するのはmysqlの標準クエリとして
あるでしょうか?
よろしくお願いします。

938 名前:NAME IS NULL mailto:sage [2009/04/17(金) 08:26:08 ID:???]
おまえがつくれヴォケ

939 名前:NAME IS NULL [2009/04/17(金) 08:53:35 ID:QB5CqnXm]
ぶっちゃけた話、Oracleって何がいいの?
企業なんかだと何でもかんでもバカの一つ覚えみたいに「Oracle」って言ってるんだけど。
そんなにすごいの?オラクル様は。

940 名前:NAME IS NULL [2009/04/17(金) 09:11:01 ID:mgILyPPd]
>>935
SQLになれるための入門用としてはいいと思うけど、Web系の実運用には向かないと
思う。

>>936
自分もそう思う

>>937
postgresだと正規表現使えるんだけどね



941 名前:NAME IS NULL mailto:sage [2009/04/17(金) 09:22:12 ID:???]
postgreなんてコマンドプロンプト使わないでもできるから
SQLなんて一切覚えなくても問題なし

942 名前:hoge ◆hLUFomM3rw mailto:sage [2009/04/17(金) 09:49:12 ID:???]
mysqlも正規表現使えなかったっけ・・・。うちのコードには入ってるぞ。

ちょっと前立ち読みした本に、onigurumaの正規表現を組み込む方法載ってた。
www.irori.org/tool/mregexp.html

943 名前:NAME IS NULL [2009/04/17(金) 10:38:25 ID:mgILyPPd]
>>941
>SQLなんて一切覚えなくても問題なし
ネタだよね?
じゃ無ければ
psqlは強力すぎだから、pgadmin使わないんだよなぁ・・・
#長いSQLはCSE使っていたからだw。次の機会に試してみよう・・・

>>942
すまん MySQL はアプリの制約で使ったことがあるくらいで
#MySQL御指名のが、おおいやん

自分の開発案件では使ったことがないんだ
#SQLで叩きまくったことがない。今はSQL鯖がメインだし>T-SQLは貧弱過ぎだけど

944 名前:NAME IS NULL [2009/04/17(金) 10:45:09 ID:4C/Z4RNv]
麻衣よりもポス使ってるのは日本人だけ
ぐぐるよりアホーつかってるのも日本人だけ


945 名前:NAME IS NULL [2009/04/17(金) 12:00:13 ID:YwJFM/Rk]
なんかMySQLが無料なレン鯖ばかりでPostgreSQLは有料とかだから、
MySQLを使いたくなってしまう、自鯖のPostgreSQLユーザな俺
簡単にコンバートできないかしら

946 名前:NAME IS NULL mailto:sage [2009/04/17(金) 13:05:48 ID:???]
ポスグレはデフォでGUIソフト付いてるからね
mySQLにもつけてほしい

947 名前:937 [2009/04/17(金) 15:21:28 ID:IRCA6Vyp]
要するにmysql標準では正規表現はサポートしてないと
いうことですね?
ありがとうございました。

948 名前:NAME IS NULL [2009/04/17(金) 21:46:10 ID:mgILyPPd]
>>947
仕事で使うのなら、マニュアル位読もうよ
#あるかどうかは知らないけど

949 名前:NAME IS NULL mailto:sage [2009/04/18(土) 03:54:50 ID:???]
>>946
pgadminのことかな?
mysql gui toolで上等よ。


950 名前:NAME IS NULL [2009/04/18(土) 08:52:50 ID:ehxOE7Ps]
Windowsの簡単な天気表示アプリで、お天気データを入れたデータベース(MySQL)をバックエンドに使おうとしているのですが、
ユーザのアプリと同じマシンでMySQLを動かすと問題ありますか?別のマシンを用意してネットワーク経由で接続に行ったほうが
いいでしょうか?一般に配布するようなアプリではなく、MySQLのセットアップは開発者側で出来るので、ネットワークを経由
させるとどれくらいパフォーマンスが落ちるのかが気になっています。
お天気DBのサイズは2GBをチョイ超えるくらいで、ユーザのマシンのメインメモリは4GBです。
どうかご意見をお聞かせください。




951 名前:NAME IS NULL [2009/04/18(土) 09:39:40 ID:qNUETVPj]
>>950
データの件数はどの位なん?
アプリの内容によると思うけど、同じでもいいんじゃないかなと
配信される予報データを変換して使うなら、DBに入れるとそこそこの量になるのかな?
昔、年月指定->該当する天気の画像を合成して表示するアプリ作ったのを思い出したw

952 名前:NAME IS NULL [2009/04/18(土) 10:10:35 ID:ehxOE7Ps]
1000万件のデータが1つと、800万件のデータが1つです。
ほぼ参照ばかりで、データの追加/更新は、まとめて決まった時間にやるように出来ます。


953 名前:NAME IS NULL mailto:sage [2009/04/18(土) 10:33:42 ID:???]
>>950
MySQLを別マシンにしたことでパフォーマンスが落ちる要因は通信速度だから、
一概には言えないけどなー。LANならほとんど問題にならない。
むしろ、クライアントサイドにMySQL持たせた場合にデータ更新(同期?)の仕組みを
作らないといけなくなってしまう方が厄介に感じる。
サーバサイドに置いてりゃ、クライアントからはデータ更新を意識する必要はないから。
レプリケーションを組めるくらい、その2台が密な関係なのであれば別だが。

954 名前:NAME IS NULL mailto:sage [2009/04/18(土) 11:25:42 ID:???]
MySQLのライセンスについて質問です。

JavaでMySQL対応のSQL用ツールを作ろうと考えています。
MySQLへの接続にはGPLライセンスのJDBCドライバを使用するつもりです。
JDBCがGPLなので、それを使用したSQL用ツールもGPLライセンスにしなければならないと認識しています。
しかしMySQLにはFLOSS除外規定があることを知りました。
ttp://www-jp.mysql.com/about/legal//licensing/foss-exception.html

ただこの文章の日本語が読みにくくてしっくり来ないのですが、
私が作成するSQL用ツールをBSDライセンスで頒布することは許容されるでしょうか。
エロい方、どうぞ宜しくお願いいたします。


955 名前:NAME IS NULL [2009/04/18(土) 21:35:01 ID:ehxOE7Ps]
>>953
そうか、クライアント側のデータ更新もある程度考えないとだめですね。
データウェアハウスみたいに、大量のデータを全検索しまくるプログラムなので、
別マシンに置くときついかなと思ったんですが。
とりあえず別マシンに置いた構成で作ってみます。その後クライアント側に持ってくるのは
楽そうだし。
ありがとうございました。


956 名前:本田 [2009/04/19(日) 08:55:46 ID:cVrkk1OO]
>>954
>私が作成するSQL用ツールをBSDライセンスで頒布することは許容されるでしょうか。

BSDライセンスかつソースコードもオープンにすれば問題無いと思う。

957 名前:NAME IS NULL [2009/04/19(日) 09:14:15 ID:gQJBptjI]
外部キー制約を設定するときに、参照される側のテーブルで主キーとして設定されてないと駄目という
ことになってますが、これはなぜでしょうか?
これってSQLの制限でしょうか、MySQLの制限でしょうか?



958 名前:NAME IS NULL [2009/04/19(日) 09:26:40 ID:uRrqeKr/]
www.techscore.com/tech/sql/03_04.html
みてるとMySQL側みたいだが・・
Postgresは「一意性制約もしくはプライマリキー制約」だよん

959 名前:NAME IS NULL mailto:sage [2009/04/19(日) 13:48:41 ID:???]
本来の意味であれば、PKじゃなきゃダめじゃね?

960 名前:NAME IS NULL mailto:sage [2009/04/19(日) 14:08:12 ID:???]
>>956
> BSDライセンスかつソースコードもオープンにすれば問題無いと思う。
FLOSS除外規定を読んでるとソースコード公開について触れてるんだけど、
BSDライセンスでは著作権表示、ライセンス条文、無保証の旨の三点を
ドキュメント等に記載さえしておけばソースコード非公開でも良いので、
FLOSS除外規定とBSDライセンスが矛盾してる気がする。

本家のフォーラムも探してみる。




961 名前:みか [2009/04/19(日) 18:23:02 ID:gQJBptjI]
MySQLのコマンドラインクライアントは、ルートユーザでしか使えないですか?

962 名前:本田 [2009/04/20(月) 00:57:57 ID:UiQ/L+1e]
>>960

直接DBMSをコールせず間にODBCをかませたら、
GPLの問題を回避してBSDライセンスだけでいいのかもしれません。

MySQL-ODBC Gateway
www.iodbc.org/index.php?page=mysql2odbc/index

963 名前:NAME IS NULL [2009/04/20(月) 08:26:03 ID:n7AiMqr2]
alter table company_master drop foreign key `company_master_ibfk_1`;
外部キー制約を消すときに、制約名を囲む変なシングルクォートの親戚みたいなのは
これを使うしかないのでしょうか?
なんでここだけこれを使わないとだめなのでしょうか?


964 名前:NAME IS NULL [2009/04/20(月) 08:31:28 ID:ODpkbzW9]
>>959
uniq key & not null だからいいのかなと






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<292KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef