2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

MySQL 総合 Part5

1 :"My Ess Que Ell":2005/07/17(日) 09:46:00 ID:???
快速 RDBMS、MySQL の総合スレです。

[MySQL Developer Zone] http://dev.mysql.com/

[MySQL Reference Manual] http://dev.mysql.com/doc/mysql/ja/
[MySQL Internals Manual] http://dev.mysql.com/doc/internals/en/

[MyNA] http://www.mysql.gr.jp/
[MLja] http://lists.mysql.com/mysql-ja

[phpMyAdmin] http://www.phpmyadmin.net/
[phpMyBackupPro] http://www.phpmybackuppro.net/
[MySQLCC] http://www.mysql.com/products/mysqlcc/
[MySQL-Front] http://www.mysqlfront.de/
[mytop] http://jeremy.zawodny.com/mysql/mytop/

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

[related threads & kakologs]
http://find.2ch.net/index.php?STR=MySQL
http://makimo.to/cgi-bin/search/search.cgi?D=db&q=MySQL&sf=0&link2ch=on

2 :NAME IS NULL:2005/07/17(日) 12:03:34 ID:???
MySQ乙

3 :NAME IS NULL:2005/07/17(日) 12:30:30 ID:???
3?

4 :NAME IS NULL:2005/07/17(日) 12:53:24 ID:???
Version4の4!!

5 :NAME IS NULL:2005/07/17(日) 19:04:30 ID:KDZbilCa
Mysqlのselect文は他のDBのselect文と書式が違うのでしょうか。
  select * from user where name = "root";
や、
  select * from user where name = "root";
と打つと、
  『Illegal mix of collations (sjis_japanese_ci,IMPLICIT) and
  (latin1_swedish_ci,COERCIBLE) for operation '='』

というエラーが表示されます。
レベルが低くて申し訳ないですが、ご教授お願い致します。


6 :NAME IS NULL:2005/07/17(日) 19:33:03 ID:???
>>5
set names sjis


7 :NAME IS NULL:2005/07/17(日) 19:45:10 ID:KDZbilCa
ありがとうございます。
文字コードを指定しないといけなかったんですね。
(私の使ってる本にはこんなこと書いてなかった・・・)

8 :NAME IS NULL:2005/07/17(日) 21:12:30 ID:???
>>7
その本には喪前さんの使ってるMySQLのバージョンについて
説明したとは書いてないだろ?

9 :nakano:2005/07/17(日) 21:35:13 ID:alIwKZDq
レベルの低い質問で恐縮です。既出かもしれませんが、教えていただけないでしょうか。
MySQL4.0.24をインストールしてpingを打つと、

C:\mysql\bin>mysqladmin ping
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'ODBC'@'localhost' (using password: NO)'

このようになってしまいます。青信号はついているのですが…。
やさしい方、教えていただけないでしょうか。
よろしくお願いします。


10 :NAME IS NULL:2005/07/17(日) 21:40:25 ID:???
>>9
mysqladmin ping -uユーザー名 -pパスワード

11 :NAME IS NULL:2005/07/17(日) 21:46:07 ID:???
>>9
あのさぁ、エラーメッセージが表示されてるでしょ。
その意味を辞書を引いてみようとか、googleで検索してみようという気はないの?
mysql Access denied for user ping 辺りで検索してみると引っかかるでしょ。
レベルが高い、低いではなくてあなたの姿勢の問題。

12 :nakano:2005/07/17(日) 22:33:27 ID:alIwKZDq
>>9さん
ありがとうございます。

>>10さん
ぐぐってもうまくいかないんです。

もうちょっといろいろやってみます。


13 :NAME IS NULL:2005/07/17(日) 22:39:00 ID:???
>>5
グーグル先生に"Illegal mix of collations"と聞くとヒントぐらいは
得られそうなもんだが。
手元の本を見るか2chで聞くぐらいがオマイさんの自助努力なのかい?

14 :NAME IS NULL:2005/07/17(日) 22:54:05 ID:???
>>13
予想するに、手元の本のMySQLのバージョンが低いんじゃね?


15 :NAME IS NULL:2005/07/17(日) 23:47:29 ID:p/tFoT79
f48.aaa.livedoor.jp/ にてmysql登録をしかねやんMysqlというアプリでテーブル作成まではうまく言ったのですがinsert文を発行したいと思い作成したテーブルを選択した状態で設定→SQL発行とすると必ずエラーが発生しアプリが落ちてしまいます。
これはアプリのバグなのでしょうか私のやり方が間違っているのでしょうか?どなたかご存知の方ご教授ください。よろしくお願いします。

16 :NAME IS NULL:2005/07/18(月) 03:07:28 ID:vyEXGHNV
http://dev.mysql.com/doc/mysql/ja/unnamed-views.html

にある、

SELECT AVG(sum_column1)
FROM (SELECT SUM(column1) AS sum_column1
FROM t1 GROUP BY column1) AS t1;

をサブクエリ使わずに書くにはどのように書いたら良いでしょうか?


17 :NAME IS NULL:2005/07/18(月) 23:21:34 ID:???
夏だな・・・・

18 :NAME IS NULL:2005/07/19(火) 09:26:58 ID:???
暑いから嫌い!

19 :NAME IS NULL:2005/07/21(木) 12:03:46 ID:NbONOxT/
逆 between のようなことをすることは出来ますでしょうか?

date型で、1つのデータに2004-01-25, 2004-05-30 といった二つのカラムがある
のですが、select で 2004-02-01 という中間の値を入れた場合にhitさせたいの
です。

可能でしょうか? 具体的にはstartとendというカラムがありまして、以下のよう
な感じで入っています。

id, start,    end
1, 2004-01-03,  2004-03-20
2, 2004-01-09,  2004-02-01
3, 2004-12-10,  2005-06-03

ここで、 2004-01-10 と検索した場合に、1と2を取得したいのですが....

20 :NAME IS NULL:2005/07/21(木) 12:10:57 ID:NbONOxT/
ああ、そうか。
betweenのような句を探さないで、普通に <= >= こんなんでやればいいんですね。
失礼しました。

21 :NAME IS NULL:2005/07/21(木) 12:23:18 ID:???
>>20 もう解決したっぽいけど、こう書くこともできるよ
select * from テーブル where '2004-01-10' between start and end

22 :NAME IS NULL:2005/07/21(木) 12:40:04 ID:NbONOxT/
>>21
between の左側に値を置いても大丈夫なんですね(>_<)
知らなかった...。有難う御座います。

23 :NAME IS NULL:2005/07/21(木) 13:12:09 ID:???
not between と言うのもアルヨ

24 ::2005/07/21(木) 18:25:30 ID:hG6IYky3
うげ

25 :NAME IS NULL:2005/07/22(金) 15:48:52 ID:???
サブクエリを使わなきゃムリっぽいSQL文が必要だったので
4.0から4.1に移行してみたけどなんか文字バケまくったり動かすのにかなり手間どった・・・。
まだ4.0使ってる人多いみたいだけど、まだ4.1は触らないほうが無難だったりするのでしょうか?

26 :NAME IS NULL:2005/07/22(金) 16:58:58 ID:AOT0Z6JT
>>25
ver4.1.12以上、ver5.0.4以上でMySQLサーバ自身の日本語問題は全て解決した。

長い目でみたら、機会があるうちに移行するのも手かと。
もちろんちゃんと勉強した上でね。

27 :NAME IS NULL:2005/07/22(金) 17:00:26 ID:AOT0Z6JT
>>25
どうしてもサブクエリを使わないと駄目なんですか?

CREATE TEMPORARY table...じゃあ要件満たしませんか。

サブクエリの内部実装的にはTEMPORARYテーブルを使っている気がするので。

28 :25:2005/07/22(金) 17:21:27 ID:???
ててててんぽらりてーぶる!?!?

そんなのあったのかorz。

29 :25:2005/07/22(金) 18:44:42 ID:???
やべぇ・・・temporary tableってすげぇ便利・・・。
なんでもっと早く知らなかったんだorz。

なんか住所録の情報を入れてたテーブルをphpMyAdminで参照すると
以前は問題なかったのに
Warning: mb_strpos(): Unknown encoding or conversion error.
こんなのが出るように・・・orz。
シフトJISにしてるしMySQL上でも自作のPHPからでもちゃんと見えるのに・・・。
戻そうかどうしようか考え中・・・。

30 :NAME IS NULL:2005/07/22(金) 18:49:48 ID:jV7W8Ozy
MYSQLの5.0.7ってまともにインスコすらできん
.sockが生成されないとかありえんわ。最新版は怖いね

31 :25:2005/07/22(金) 20:48:06 ID:???
今度はフォームからデータベースに登録した文字列の間に意味不明に\が出てくるよ・・・。
もういやだ・・・。戻そ・・・。

32 :NAME IS NULL:2005/07/23(土) 00:53:17 ID:iD3b4jZ1
>>30
ver5.0.3くらいから5.0系使ってますがインストールで躓いたことはないなあ。

検証用なんで適宜新しいバージョンにしている。WindowsとLinux両方で。

33 :NAME IS NULL:2005/07/23(土) 01:11:38 ID:whbB9Rh8
>>30
5.0.7をTouboLinux、Windowsには95,NT4,2000,XPに入れてみたけど、Win95だけだめぽ(Winsockのせいではなく・・・)。
だけじゃDLLが足りないのか、デバイスが作動していません(既に記憶に無いでしょうが、win95時代はよく見たアレ)で動いてくれない。
何が足りない(or壊れてる)のかは不明。。。

34 :NAME IS NULL:2005/07/24(日) 20:33:41 ID:???
InnoDBを試してみたんだけど、MySQLのコンソールからinsertとか普通にできちゃうけど、
start transactionは不要なんでしょうか?
set autocommit=0にしても変わらない・・・。
どこいらへんがトランザクションなカンジになってるんでしょうか?

35 :34:2005/07/24(日) 22:06:24 ID:6b1W+xWK
あああ、set autocommit=0ってセッションごとに必要だったのか。
解決しました。

36 :NAME IS NULL:2005/07/25(月) 20:01:31 ID:JMYcapmE
重複したレコードを除いたレコード数の結果が欲しいのだが、

通常のレコード数を求める時には、

select count(*) from db;

distinctはうまく使えないようだし・・・。

37 :NAME IS NULL:2005/07/25(月) 20:14:12 ID:???
>>36
失礼、解決しました。
やはり、distinct 使うのですね。

select count(distinct レコード名) from db;

ということですね。
これで、重複データを除いた、レコード総数が返ってきますね。

38 :NAME IS NULL:2005/07/26(火) 18:15:37 ID:05R6nAO8
あ〜混乱してきました。
助けてください。


tb_a:
名前,購入商品
name1,a
name2,b
name3,a
name2,b
name2,a
name4,a
name2,a
name3,c

上記のようなテーブルがあります。
aの商品のみ購入した人はどのようなクエリ
となるどでしょうか?

上記の場合は、2名です。

name1,a
name2,a

よろしくお願いします。

39 :38:2005/07/26(火) 18:18:52 ID:05R6nAO8

> 上記の場合は、2名です。
> name1,a
> name2,a

ダメだー。間違っていました。^^

結果リストは、
name1,a
name4,a

が欲しいです。

40 :NAME IS NULL:2005/07/26(火) 18:38:46 ID:???
>>38
select tb_a.* from tb_a
inner join (select name from tb_a group by name having count(item) = 1) as x
 on tb_a.name = x.name
where tb_a.item = 'a';

41 :38:2005/07/26(火) 19:07:16 ID:05R6nAO8
>>40
早速のレス有難う御座います。

実行してみた所、エラーが出てしましました。

MySQLのメッセージ -->

#1064 - You have an error in your SQL syntax near '(select name from tb_a group by name having count(item) = 1) as x
 on tb_a.nam' at line 2

バージョンの問題でしょうか・・・。
MySQL 3.23.58 でした。

でも、方向性がなんとなくわかりましたので、
がんばってみます。

42 :38:2005/07/26(火) 19:25:56 ID:05R6nAO8
それから、例のテーブルが悪かったのですが、

name , item
-----------
name1,a
name2,b
name3,a
name2,b
name2,a
name4,a
name2,a
name3,c
name1,a <--- 重複の可能性もあります。


>>40 さんにご提示頂いた、クエリを読み解きながら思考中。

43 :NAME IS NULL:2005/07/26(火) 19:38:25 ID:HBqC/CKY
>>42

そのバージョンじゃサブクエリ使えないよ。


44 :NAME IS NULL:2005/07/26(火) 19:42:34 ID:???
>>42
重複した場合、name1 は取得対象なの?
取得対象だと、HAVING COUNT(xxx) = 1 の条件にマッチしないから
>>40のクエリではダメだよ。

45 :38:2005/07/26(火) 20:28:17 ID:05R6nAO8
>>43
やはりそうでしたか・・・。

>>44

> 重複した場合、name1 は取得対象なの?
> 取得対象だと、HAVING COUNT(xxx) = 1 の条件にマッチしないから
> >>40のクエリではダメだよ。

取得対象です。
はい。クエリ読み解く中で、気が付きました。



ない頭で考えているのですが、
方向的には、一旦、item=aの条件に合致したリストを出し、
その後、でもう一度テーブルにくくり付け、itemが他に選択されていないもの
を抽出する感じかな。とまた、こんがらがってきていますが、

サブクエリ使えないときびしいのでしょうか?

46 :NAME IS NULL:2005/07/27(水) 01:50:21 ID:zTs69tD5
>>45
CREATE TEMPORARYってver3系には使えないの?

#どうせMySQLの中じゃサブクエリもTemporaryも一緒なんじゃないかと・・・。

47 :38:2005/07/27(水) 03:35:34 ID:PEswNqYQ
>>46
> >>45
> CREATE TEMPORARYってver3系には使えないの?
> #どうせMySQLの中じゃサブクエリもTemporaryも一緒なんじゃないかと・・・。

レス有難う御座います。

いろいろググッテると、上記のテンポラリーテーブルを作成してうんぬん・・・。
というようなものがあって、これってかなり便利ーみたいなHPがあったので、
気にはなっていました。今ちょこっと見てみたところ使えそう・・・。な感じです。

明日じっくり試してみます。
今日は寝ますZzz。

48 :NAME IS NULL:2005/07/27(水) 03:45:26 ID:2Zp5SUfn
>>47
TEMPORARYテーブルとHEAPテーブル(新名称:MEMORYテーブル)はほとんど同じであった気がする。
違いは、前者は".frm"ファイルが作成されないので接続を閉じたりサーバが落ちたりするとそのテーブルそのものが
消滅するけれども、後者は".frm"ファイルが作成されるのでサーバが落ちると行データのみ消えるというところ。

どちらもメモリ上にしかアクセスしないので高速で、前者は".frm"ファイルすら作らないので一般的に重い処理な
CREATE文も気にならないのがサブクエリの代わりに使われうるところか。

あと前者はサーバ停止時にごみが残らないのも良いかも。AppServerでいうところのセッションみたいなもんだね。

まあそのHP読んだならこういうことがたぶん書いてあったのではと想像しますが。

49 :NAME IS NULL:2005/07/27(水) 08:57:56 ID:???
>>48
TEMPORARYって同一接続からじゃないと見れなくね?
確認してないけど。


50 :NAME IS NULL:2005/07/27(水) 11:26:12 ID:2Zp5SUfn
>>49
あってるよ。それも特徴の1つだったね。ぢゃないとサブクエリの代理になんて使えん。

51 :38:2005/07/27(水) 11:32:06 ID:PEswNqYQ
>>48

おお〜書込みしようと思うと、レスが入ってびっくり。
おはようございます。って、昼か。

レスどうもです。

参考になりました〜。
メモリ上で処理されるのですねー。

セッション内で処理されることは理解してました。

出先ほど、解決しました。
下に結果入れますので、
見ていただくとうれしいです。
かなりもっさり感がありますが。

52 :38:2005/07/27(水) 12:19:38 ID:???

結果報告しようと思っていましたが、

大変なことが起きました・・・。
PCがフリーズしてしまったので、しかたなく主電源で
再起動させた所、HDDから異音が・・・。
HDDさんがお亡くなりになりました。トホホ、最悪。

今から復旧作業に取り掛かりますので、
結果報告はそれからとなります。

せっかく解決して、幸な気分になろうかという時に、
ついてねー。まさに天国から地獄へいっきに落とされたよ。
うー気力がもたない・・・。では。

ノートPCより

53 :NAME IS NULL:2005/07/27(水) 15:16:40 ID:zTs69tD5
>>52
お悔やみ申し上げます。ここにも最近同じ体験をしたものが1人。

54 :NAME IS NULL:2005/07/27(水) 18:34:25 ID:yhPI0a2x
サーバA上のPHPからサーバBにあるMySQLに接続しようとしているのだけど、
できない。
PHPにて select * from hoge_TABLE を発行しても、エラーメッセージすら出ない

1.サーバBのポート3306は開いている
サーバAから telnet サーバB 3306 とすると、MySQLのバージョンと
  文字化けした文字が見え、切断される。

2.GRANTにて対象のデータベースに権限を与えた(つもり)。
Grant SELECT on hoge_DB.hoge_TABLE to user@'サーバA' identified 'hoge_pass';
mysql データベースの tables_priv 内に登録されていることを確認。

3.念のためにmysqlは再起動済み

教えてくだされ

55 :NAME IS NULL:2005/07/27(水) 20:00:00 ID:???
>>54
>1.サーバBのポート3306は開いている
>サーバAから telnet サーバB 3306 とすると、MySQLのバージョンと
>文字化けした文字が見え、切断される。

ここをもう少し詳しく調査。
サーバAにインストールした(してなけりゃインストール)
MySQLクライアントツールからサーバBのMySQLサーバに接続して
上手くいくか試してみ。

56 :NAME IS NULL:2005/07/27(水) 20:09:28 ID:yhPI0a2x
>55

申し訳ないが、どこかにやり方ないか教えてくだされ。

57 :NAME IS NULL:2005/07/27(水) 20:29:11 ID:???
自分で調べてみるって発想はないんかい
2chに張り付いてレス待つだけのカスは消えろ

58 :NAME IS NULL:2005/07/27(水) 20:35:33 ID:???
>>54
テーブルの中身が空とかはないよな?

59 :NAME IS NULL:2005/07/27(水) 21:05:58 ID:???
みなさん、>>1の過不足データを指摘して下さい。
ちなみに dev.mysql.com の方を掲げたのは www.mysql.com が企業サイトであるからです。
みなさんが MySQL の内部仕様を諳じるようになる日がくるといいですね。

60 :NAME IS NULL:2005/07/27(水) 21:13:37 ID:???
質問させてください。
ユーザーに与える特権で、user@hostが重複した場合の優先度というのはどうなっているのでしょうか。

例えば
%@%
test@%
で両方ともパスワードが設定されていないとします。
"test" "" としてログインしようとした場合、どちらの権限が優先されるのかという法則はあるのでしょうか。

といいますのも、とあるサーバーでMYSQLを使用したところ
%@localhost パス無し
test@% パスあり
と設定されているらしく、どうも%@localhostのほうが優先されてしまい、"test" "pass"で入ろうとしても「パスワードエラー」が出てしまうのです。
Access denied for user

そして、他のサーバーから"test" "pass"でログインしようとすると(注文した権限どおりで)入れてしまいます。
また、DBと同じサーバーから"test" "" でログインすると、最低権限でログインできてしまいました。
こうなると %@localhost のほうに優先的にログインしようとし、パスワードエラーが出ているとしか思えません。

長い文章となりましたが、どなたか「権限の優先度」についてご教授いただけませんでしょうか。
よろしくお願いいたします。

61 :NAME IS NULL:2005/07/27(水) 21:46:26 ID:???
>>60
http://dev.mysql.com/doc/mysql/ja/connection-access.htmlを見ると
登録されているユーザーを
 明示的なホスト名、ワイルドカードなホスト名、明示的なユーザー名、ワイルドカードなユーザー名
の順番にソートしてからチェックが行われるみたいだね。
%@localhostが登録されている段階でどうしようもないかと。

62 :NAME IS NULL:2005/07/27(水) 21:56:14 ID:???
ありがとうございました。
サーバー担当に問い合わせてみます。

63 :61:2005/07/27(水) 22:14:36 ID:???
>>62
ごめん。もう読んではいないかな。。。
よく考えれば、先の順番にソートされるのだから
test@% と同じ権限、同じパスワードで test@localhost を作成すればいいのではないかと。
もっともセキュリティ上、%@localhost が存在するのはどうかとは思うが。

64 :NAME IS NULL:2005/07/27(水) 23:55:47 ID:???
>>60
http://dev.mysql.com/doc/mysql/ja/connection-access.html
ここの後半部分。

65 :64:2005/07/27(水) 23:56:24 ID:???
出遅れた...

66 :NAME IS NULL:2005/07/28(木) 00:35:31 ID:???
>>63-64
ありがとうございました。
自宅鯖でも実験してみたところ、やはり %@localhost がいると、同鯖内からのコネクトは全てそちらに流れてしまいました。

>もっともセキュリティ上、%@localhost が存在するのはどうかとは思うが。
まったくですね。
実験用のテーブルが1つだけおいてあり、いじれるようになってました。
そのテーブルでお試しをやれということで設置したのでしょう。

しかしなんというか、このサーバー設定だと誰もDBが使えません。(外部からアクセスするならOKですが)
私以外にDBを使おうとした人が居ないってことになるんですが…。
さすがマイナー鯖…。

67 :NAME IS NULL:2005/07/28(木) 01:41:42 ID:eXuTIbui
お決まりのこんなのがあります。

$sql = "select * from mydb";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
while ($row = mysql_fetch_array($result)) {
←ここ
}

矢印のところ(whileループの中)で別のクエリを実行、さらにwhileを入れ子にとかってかなり変な事なんでしょうか?
また、$iなんかのカウント用の変数を仕込んでループの都度、++でカウントアップ。
その変数をmysqlから読み出した$row[hoge]にevalで
くっつけてeval("¥$hensu_$i = $row[hoge] ";);って感じで上書きせずに後で取り出せるようなことをした(うまくいってます)んですが、これは手法としてはいかがなもんでしょうか?

68 :NAME IS NULL:2005/07/28(木) 01:53:16 ID:???
XREAでphpMyAdminを使用してテーブルを作りました。
テーブル名=access フィールド=test (tinyint(3) UNSIGNED)

PHPで行の追加をしようと下記のコードを書いたのですが、行が追加されません。
<?
$conn_id = @mysql_connect('localhost','ユーザー名','パスワード') or exit('失敗');
mysql_query("INSERT INTO access('test') VALUES('2')",$conn_id) or exit('書き込み失敗');
mysql_close($conn_id);
?>

色々試してみたのですが、何度やっても「書き込み失敗」が表示されてしまいます。
初心者の質問で申し訳ないのですが、どなたか原因を教えて頂けないでしょうか?

69 :NAME IS NULL:2005/07/28(木) 01:55:33 ID:???
>>68
mysql_select_dbした?

70 :NAME IS NULL:2005/07/28(木) 02:56:46 ID:zKnSR/lj
>>54のように「ちゃんと接続できているのか」「ちゃんとクエリがサーバに届いているのか」を見るには、
一般クエリログを使うのが良いよ。

my.cnfに

[mysqld]
log

と書いて再起動すればdataディレクトリに"コンピュータ名.log"というファイルができる。
このログファイル(一般クエリログのファイル)は、MySQLサーバが受け付けたコマンド/クエリが
単純に追記されていく。

#コマンド/クエリが正常に実行されたか、エラーになったか以前に、受け付けたものを出力。

この一般クエリログは>>54のような開発者向けのデバッグ用のログ出力として元々作られた機能で、
そんなときはこれをまさに使うべき。漏れもいつもお世話になってるよ。

71 :NAME IS NULL:2005/07/28(木) 04:32:53 ID:???
>>68
>>69 の指摘の通り mysql_select_db をしていないのと
INSERT 文でカラム名を ' で囲っているのがおかしい希ガス。
ただのサンプルコードなのかもしれないけど、exit の部分で mysql_error を
呼び出してみると調べやすいと思う。

$conn_id = @mysql_connect('localhost','ユーザー名','パスワード') or exit('失敗 ' . mysql_error());
mysql_select_db('データベース名', $conn_id) or exit('select_db失敗 ' . mysql_error());
mysql_query("INSERT INTO access(test) VALUES('2')",$conn_id) or exit('書き込み失敗 ' . mysql_error());
mysql_close($conn_id);

72 :NAME IS NULL:2005/07/28(木) 12:21:33 ID:???
>>69-71
ありがとうございます。
講習とバイトが終わったら、アドバイス通り試して御報告します。

73 :38:2005/07/28(木) 12:44:46 ID:IXQBxgZK
とりあえず復活。(気分は今年一番の落ち込み度w)


>>53
> お悔やみ申し上げます。ここにも最近同じ体験をしたものが1人。
どうもです。まめにバックアップですね。分かってはいるのですがね・・・。なかなか。
今回はPC内の結構な資産がぶっ飛んでしまったことがわかり、多大な時間が
消費されそうです。復旧率10%。



解決内容:

# 各選択値集計の一時テーブルを作成
create temporary table sel_a select name,count(*) cnt_a from tb_a where item='a' group by name;
create temporary table sel_b select name,count(*) cnt_b from tb_a where item='b' group by name;
create temporary table sel_c select name,count(*) cnt_c from tb_a where item='c' group by name;

#一時テーブルを結合し、抽出
select tb_name.name,cnt_a from tb_name
left join sel_a on tb_name.name = sel_a.name
left join sel_b on tb_name.name = sel_b.name
left join sel_c on tb_name.name = sel_c.name
where isnull(cnt_a)=0 && isnull(cnt_b)=1 && isnull(cnt_c)=1

結果
+----------+--------------+
| name       cnt_a
+----------+--------------+
| name1       2
| name2       1
+----------+--------------+

※tb_nameテーブルは、name(名前)がユニークなテーブルです。

これで、解決しそうです。
実装するには、もう少し実験してみます。
レコード数が6万件ありますので。


もし、気になるよな所があれば指摘頂けるとありがたいです。










74 :38:2005/07/28(木) 12:46:58 ID:???
>>73
また、間違えてるは、

結果
+----------+--------------+
| name       cnt_a
+----------+--------------+
| name1       2
| name4       1
+----------+--------------+

が正解です。

75 :NAME IS NULL:2005/07/28(木) 13:11:14 ID:???
>>67
どんなSQLを書いているか分からんが、
可能性1.普通のSQL発行一発で全部処理できる
可能性2.一時テーブルかサブクエリで全部処理できる

あとPHPのコードも
指摘1.「上書きせずに後で取り出し」の意味がわかんね
指摘2.配列を使えばevalはいらない


76 :NAME IS NULL:2005/07/28(木) 13:31:10 ID:???
>>73
復旧オメ。完全復活までガンガレ。
SQLは以下でいいような希ガス。一応、最終出力に商品名を入れてみたけど。

CREATE TEMPORARY TABLE sel_a AS SELECT name,item,count(*) AS cnt_a FROM tb_a GROUP BY name,item;
SELECT name,MIN(item) AS item,cnt_a FROM sel_a GROUP BY name HAVING item='a' AND COUNT(*)=1;

77 :54:2005/07/28(木) 13:35:35 ID:B3h8YO0T
>70
ありがと。

mysql -h サーバB -u ユーザ名 -p パスワード

これにて接続できるのに、PHPからは接続できない。

$con = mysql_connect("サーバB","ユーザ名","パスワード");

この結果がこない、なんで〜〜!!

78 :38:2005/07/28(木) 17:31:12 ID:???
>>76
> >>73
> 復旧オメ。完全復活までガンガレ。
ありがとう〜。

で、本題。
すごいっつーか、さすがというか、神!

実は、ご提示頂いた、クエリそのまま流し込んだのですが、
エラーも無く、結果も0で帰って来たんです。
ここから、悩みました。
どうも、HAVING item='a' AND COUNT(*)=1が機能していないぞ・・・。

で、うじゃうじゃやっていてわかりました!
バージョンの問題だと!

とAND COUNT(*)=1
が古いバージョン(3.x系かな)では、機能しないようです。

私が使えるmysqlサーバで4.0が使える所がありましたので、
そこへ、テストデータ流し込み、クエリ発行、思いっきり
正しい結果が返ってきましたよ。


SELECT name,MIN(item) AS item,cnt_a,COUNT(*) AS cnt_fl FROM sel_a GROUP BY name HAVING item='a' AND cnt_fl=1;
このように変更して、無事動作しました。

MIN(item)の使い方に、センスと経験が見えますよね。
ここ、テストに出るよ、AAでも探してきて貼り付けたいぐらいですわw。

3万件程のデータで、試してみましたが、
私が記述したクエリだと、一時テーブルは各2秒ほど時間ですみましたが、
結合部分で、いったっきり帰ってこない。あげくに、他のクエリまで、ロックかかる始末!
mysqlが実際どのように処理するか頭に無いんで、こんなことになるのでしょうね。

>>76 さんのですと、
一時テーブルに、
(2.45 sec) 
抽出に
(1.19 sec)

すばらしい。

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



79 : :2005/07/28(木) 19:18:35 ID:Wm4FzOeU
数百人で利用するCGIがあるのですが、
複数のデータベースに利用者ごとにデータ入れるか、
1個のデータベースに全員分入れるかで悩んでいます。
速度とか、メモリとかサーバーに優しいのはどちらでしょうか。

複数の方がテーブル壊れたとき安心っぽい気はしてます

80 :NAME IS NULL:2005/07/28(木) 19:53:40 ID:???
>>79

>複数のデータベースに利用者ごとにデータ入れるか、

リレーショナルの意味分かっていない希ガス。

81 :79:2005/07/28(木) 20:09:09 ID:???
失礼 複数のデータベースは1個のデータベースを1ユーザが利用 訂正

82 :NAME IS NULL:2005/07/28(木) 22:39:25 ID:???
ユーザーが一人増えるごとにデータベースを増やすなんてありえねえ

83 :NAME IS NULL:2005/07/28(木) 23:38:49 ID:???
500テーブル、各2万レコードと
1テーブル1千万レコードってどっちが効率いい?

84 :NAME IS NULL:2005/07/28(木) 23:56:42 ID:???
要実験。

85 :67:2005/07/29(金) 00:06:58 ID:???
>>75
ネストされたカテゴリ、それを入れ子リストで表示。
なおかつ、常に一つのカテゴリだけが展開され、最下層の項目が展開される、とこんな感じでhtmlを吐き出すためのものなので、クエリ一発ではどうにもならないと思います。
サブクエリ、このへんは踏み込んだことがないのですが、使ってるmysqlが4.0なのでサブクエリは使えないので joinを使ってます。

>「上書きせずに後で取り出し」の意味がわかんね
htmlのコーディングがかなりややこしい事になるので、先に結果だけを変数で吐き出しておき、そこで、行数もカウント、あとで、そのカウントに応じて、htmlを吐き出すと同時に、ループ回して上書きされないようにした変数をそこで差し込む、って感じです。
mysql_fetch_arrayの上下を、tableとかulで囲まなくて済まないかな?と実験的な意味も含めてそういう書き方をしてみましたので、どうしてもそうしなければならない訳ではありません。

>配列を使えばevalはいらない
なるほど。配列ですね。苦手なもんで盲点でした。うまく使えばそんな変な事をしなくて済みそうですが、しばらく勉強しないと。

86 :NAME IS NULL:2005/07/29(金) 00:57:41 ID:stkpnhA+
>>79
速度とかメモリとか、サーバにやさしいのは明らかに「1個のデータベースに全員分いれた」場合。

>>83
1テーブル1千万レコードの方がサーバにやさしい。

ちょっとさ、79も83も、すごく簡単にデータベース/テーブル分けるような案だしてるけど、
データベースを分ければその分ディレクトリが、テーブルを分ければその分ファイルが
生成されるんだよ?

それよにるIOリソースの消費考えたら、自ずと分かるだろうに・・・・。

いいか、一般的にデータベースのボトルネックはIO。各RDBMSベンダーともども、そのIOによる
ボトルネックを以下に攻略するかに命をかけてエンジンを実装しているのだよ。

#データ書き込みより前にトランザクションログ(追記型)を書くようにしてみたり
#ログ書き込み自体をバッファリングしてみたり
#メモリ上にキャッシュしてOKなものは積極的にキャッシュしてみたり


87 :68:2005/07/29(金) 02:25:16 ID:???
色々アドバイスしていただいたのにselect_dbの時点でおかしかったようです・・・。

select_db失敗Access denied for user: 'ユーザー名@localhost' to database 'access'

これってセーフモードとかの関係のやつですかね??
今日はとりあえず寝て、起きたら試行錯誤したいと思います。

88 :71:2005/07/29(金) 08:56:45 ID:???
>>87
PHPのセーフモードは関係ないと思うけど。
エラーメッセージを見るとmysql_select_dbの引数にデータベース名ぢゃなく
間違ってテーブル名を指定しているのが原因ぢゃない?
 select_db失敗Access denied for user: 'ユーザー名@localhost' to database 'access'
                                     ~~~~~~~~~
ちょっとググってみたら以下のように設定されている模様。
XREAは使用したことないんで、データベース名のIDが何かは漏れには判らないけどね。
>>87にも判らなければXREAに問い合わせして味噌。
 データベース名:IDと同じ
 ユーザ名・パスワード:FTPと同じ

89 :71:2005/07/29(金) 08:57:58 ID:???
>>88
ありゃ。ずれた。~~~~は、'access' の部分ね。

90 : :2005/07/29(金) 12:47:16 ID:???
>>86
1DBや、1テーブルの時
壊れた場合、すべてに影響しない?



91 :NAME IS NULL:2005/07/29(金) 13:09:22 ID:???
>>90

SQL は向いてないよ。
ファイルメーカーでも使ったら?


92 :NAME IS NULL:2005/07/29(金) 16:15:19 ID:DbsVJgMJ
すみません,MySQLのデータをPHPで吐き出したいのですが,
データに$(ダラーマーク)が含まれる場合はどのようにしたらいいのでしょうか?

例:
Prizeフィールドに
$100,000
$125,000
とあった場合
PHPで
(SQL文)
$prizedt = $row["Prize"]
として変数を格納した後,
<td>$prizedt</td>とした場合,うまく吐き出せないのは分かっているのですが・・・
\$prizedtでもうまくいきませんでした.

93 :NAME IS NULL:2005/07/29(金) 16:30:36 ID:???
>>92
><td>$prizedt</td>とした場合,うまく吐き出せないのは分かっているのですが・・・
あなたが勝手にそう思っているだけ。
echo "<td>$prizedt</td>";
で無問題。てかPHPスレに行きなされ。

94 :90:2005/07/29(金) 16:32:00 ID:???
どういう理由でSQLが向いてないと
リレーショナルがどうのこうのいてたやつ?

95 :86:2005/07/29(金) 17:01:56 ID:stkpnhA+
>>90
86で言っていたのはリソースの消費と性能面について。
あと多分誰かが1ユーザ1データベースって管理みたいな話もしてたと思う。

90の言う可用性は、普通は「複数データベース/テーブル」によって実現するものではないよ。

可用性はバックアップ、レプリケーション、RAIDによるミラーリング/冗長化などの方法によって
解決すべき要件かな。

要するに言いたいのは「可用性を考慮してデータベース/テーブル分ける」ってのは普通はやらないってこと。

いままでの話の想定だと、どっちにしろディスクが逝ったら終りでしょう。
MySQLを1年以上使ってファイルが壊れる可能性よりも、ディスクが壊れる可能性のほうが普通は高いし。

96 :86&95:2005/07/29(金) 17:08:06 ID:stkpnhA+
可用性うんぬん言うのなら、まずMySQLで最初にすべきことは、(定期的にバックアップとりつつ)
バイナリログをデータとは物理的に別のディスクに出力するようにすることだと漏れは思う。
その次がRAIDを使う、さらに大規模ならレプリケーションをバックアップに使うという感じでしょうか。

ま、話がずれてきた気がするのでこの話はここいらでおしまい。

97 :90:2005/07/29(金) 17:54:33 ID:???
レスありがとうございます。 ディスクが壊れる以前に
テーブル(ファイル)が壊れることの方が多いんじゃないかなと・・
DB分けた方がいいのかなと思って書きました
普通はバックアップ、RAID、レプリケーションなんですね

98 :NAME IS NULL:2005/07/29(金) 22:36:17 ID:???
データベースの場合、
「特定のデータが飛んでもそれ以外がOKだから大丈夫」なんてのは原則的にありえない。
全てのデータが保証されるように設計・構築をする。それがデータベース。

仮にファイルが飛ぶ確率の方が高かったとしても、
飛ぶ直前の状態まで戻して復旧させるにはログやレプリケーションといった手段が必要になる。


99 :68:2005/07/29(金) 23:12:26 ID:???
>>88-89
追加できました!! ありがとうございます。
select_dbはテーブル名を指定するものと思い込んでいました・・・。

100 :NAME IS NULL:2005/07/29(金) 23:47:09 ID:???
write専用マスター(innodb)とread専用レプリケーション(myisam)とに分けて
マスター側のトランザクションをレプリケーションでも同期したい。
同期ができなくてもレプリケーション側がダーティーなクエリだということをユーザに通知してほしい。

101 :NAME IS NULL:2005/07/30(土) 04:06:00 ID:4pVFNE71
>>98
というかデータベースなる製品をわざわざ使う目的ってそれだよな。
データベースがデータを保証する責務を一手に引き受けるから、
アプリサーバは自分のことに専念できる。

102 :NAME IS NULL:2005/07/30(土) 04:10:03 ID:4pVFNE71
>>100
何が言いたいのかいまいちわからんのだが。質問なのかなこれは?

同期レプリケーションはver5.1だかそれ以降だったかだぞ。
それまでは非同期レプリケーションにするか、あるいはMySQL Clusterを使え。

というか聞いた話ではMySQL Clusterとレプリケーション機能の融合が進んでいくんだとか。

ちなみに通知する機能は今のところ無い。

103 :NAME IS NULL:2005/07/30(土) 11:55:35 ID:nI55stf6
すいません、質問なんですがJDBC使ってMySQLに接続してるとき、何も処理せずある程度時間過ぎると
勝手にコネクション切られてしまうのですがこれって防ぐ方法無いんですか?

104 :NAME IS NULL:2005/08/02(火) 04:42:13 ID:XK7TkxJx
>>103
レスがついていないから漏れが調べてやったぞ。

mysql> show variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 28800 |
+---------------+-------+
1 row in set (0.02 sec)

wait_timeoutで指定されている「秒数」以上のアイドル時間が経過すると、
サーバ側からコネクションが切断されるしくみになっている。

デフォルトでは8時間。いやならこれをもっとでかい数字にすればよい。

と思われる。

105 :NAME IS NULL:2005/08/02(火) 12:32:08 ID:uK9XBhtB
WebProg板に書いてしまい、板違いとの事で、こちらに来ました。
どなたか教えてください。

PHP+MySQL
MySQLに、2つのテーブルがあり、IDというフィールドをキーにしてリレーションをします。

テーブル1:ID、category
テーブル2:ID、name

この様な場合に、テーブル1のcategoryに対するテーブル2nameを全て列挙したいのですが、
どのようなクエリとPHPを書くのが一般的なのでしょうか。

いま考えているのは、
SELECT name FROM テーブル1 WHERE ID=○○
のようなクエリ自体をテーブル1のレコード数ループさせながらprintするというものなのですが、
あまり良い方法では無いような気がします。

表示結果は以下の様にしたいです。

カテゴリー1
 名前
 名前
 名前
カテゴリー2
 名前
 名前
 名前
  ・
  ・
  ・


106 :NAME IS NULL:2005/08/02(火) 12:43:32 ID:???
>>105
う〜ん。言っていることが判るような判らないような。
・SELECT name FROM テーブル1 WHERE ID=○○
 少なくともこのクエリではテーブル2のnameは取ってこれないし
・>ループさせながらprintするというものなのですが
 どのみちループしながら表示せざるを得ないし
 ループの中でテーブル2をSELECTするクエリを発行したくないって意味なのかな
・カテゴリー1、カテゴリー2
 この名前はどこから来たんだろ。categoryカラムの値なのかな

とりあえず勘で書いてみるとこんな感じ?

$sql = 'SELECT テーブル1.ID, category, name FROM テーブル1'
    . ' LEFT OUTER JOIN テーブル2 ON テーブル1.ID=テーブル2.ID'
    . ' WHERE テーブル1.ID=○○ ORDER BY テーブル1.ID';

$result = mysql_query($sql);

$previd = '';
while($row = mysql_fetch_row($result)) {
 if ($previd != $row['ID']) {
  echo $row['category'] . '<br>';
  $previd = $row['ID'];
 }

 echo $row['name'] . '<br>';
}

107 :105:2005/08/02(火) 13:24:58 ID:uK9XBhtB
>106
ありがとうございます。

すいません。提示したクエリの テーブル1の部分はテーブル2の記述間違いです。

書いていただいたソースを見て少し考えて見ます。

108 :105:2005/08/02(火) 13:31:26 ID:uK9XBhtB
・>ループさせながらprintするというものなのですが
 どのみちループしながら表示せざるを得ないし
 ループの中でテーブル2をSELECTするクエリを発行したくないって意味なのかな

while文やfor文の中でmysql_query()を実行することを避けたいという意味でした。
表現下手ですいません・・・。

109 :105:2005/08/02(火) 14:25:17 ID:uK9XBhtB
>106
なんとか理解できた気がします。
ありがとうございました。

110 :NAME IS NULL:2005/08/02(火) 20:14:15 ID:72DcUHyJ
ありがとうございます。
多謝です。

111 :mysqli:2005/08/02(火) 23:39:57 ID:???
質問させてください。
mysql_insert_idという関数がPHPにあります。
これをPEARで実現するにはどうしたらいいですか?
PEARにこれと同じようなもの用意されていますか?
PEARに関する情報が少なく行き詰まっています。

112 :NAME IS NULL:2005/08/03(水) 10:21:36 ID:???
>>111
WebProg板にGO!

113 :NAME IS NULL:2005/08/03(水) 22:35:27 ID:2w1kybpI
質問です。
MySQLのデータベースのファイルには何か暗号化等することは可能なのでしょうか?
たとえば*.MYDやiddata1等のファイルのみ、あるいはHDをまるごと盗まれてしまった場合に
中身を見ることは可能なのでしょうか?
PCというかOSの起動時には一応パスワードを設定しているので、
あくまでファイルだけから中を見ることが可能かについて気になっています。
よろしくお願いします。

114 :NAME IS NULL:2005/08/03(水) 23:41:43 ID:???
暗号化ファイルシステムを使えばいいのでは。

115 :NAME IS NULL:2005/08/04(木) 02:00:53 ID:keXsaDtJ
>>113
英語マニュアルにしかかいてないがこれなんてどうだ?

暗号化/複合化してくれる関数
http://dev.mysql.com/doc/mysql/en/encryption-functions.html

116 :NAME IS NULL:2005/08/04(木) 02:46:49 ID:???
皆さん凄いっすね・・・
最近MySQLインスコして勉強始めたんですけどDMLで挫けそうっすorz

117 :NAME IS NULL:2005/08/04(木) 04:02:45 ID:???
105への正しい回答はGroup byだよね

ところで4.1使える手ごろなレンサバないですかね・・・
Xrea以外に

118 :NAME IS NULL:2005/08/04(木) 04:25:41 ID:???
自己解決・・・海外鯖使うことにします

119 :NAME IS NULL:2005/08/05(金) 14:38:34 ID:???
テーブルのフィールドの順番を並び替えることは可能でしょうか?
レコードの並び替えではなく、例えば
tbl_user id, name, pass
となっているのを
tbl_user name, pass, id
などとしたいのですが。
よろしくお願いします。

120 :NAME IS NULL:2005/08/05(金) 15:32:05 ID:???
>>119
SELECT * FROM tbl_user;

SELECT name, pass, id FROM tbl_user;
と書き換えればオッケー

っつうかRDBのレコードやフィールドに並び順があると思うのは単なる幻想



121 :119:2005/08/05(金) 16:14:20 ID:???
レスありがとうございます。>>120
表示するときに並べ替えるのではなく、あくまでテーブルを管理する際に
並べ替える必要を感じたんですけどね。
データベース的に意味はないですけど、精神的に重要な項目から並べたいというのがあったので・・・。

122 :NAME IS NULL:2005/08/05(金) 17:38:30 ID:???
SELECT * なんて危険なものを恒常的に使う癖は早く直したほうがいい


123 :NAME IS NULL:2005/08/05(金) 19:57:06 ID:???
何が危険なの?

124 :NAME IS NULL:2005/08/05(金) 21:39:01 ID:???
ニトロ

125 :NAME IS NULL:2005/08/05(金) 21:39:50 ID:???
ワイルドカードを使う奴に限って「頭からn番目の項目」とかいう
処理を書くからでしょ。要するに無頓着。

遅い遅いと言ってる奴の処理みてたら、アスタリスクで全部
(比較的大きいバイナリーデータの入ってる分も)取り出してて、
idだけ取って後で必要なものについてはidに基づいて引き出せよ
と思った。

126 :NAME IS NULL:2005/08/05(金) 21:42:19 ID:???
それは判るけど「危険」っていう理由ではないわな。
なにが危険なのかを知りたい。

127 :126:2005/08/05(金) 21:45:47 ID:???
すまね。前2行を読み落とした。
ワイルドカードで取得したレコードに対して「頭からn番目の項目」を取得するのは危険だわな。
納得。

128 :NAME IS NULL:2005/08/05(金) 21:48:57 ID:???
$buffer[$i]とか?
そんな処理する奴いるんか

129 :NAME IS NULL:2005/08/05(金) 22:13:44 ID:???
今日日の"職業"プログラマをなめてはいけない...orz

130 :NAME IS NULL:2005/08/05(金) 22:32:14 ID:???
SELECT * なんてかわいいもんじゃん。

INSERT INTO `tablename` VALUES ( $a, $b, $c )
とかはマジやばい。
Prepared Statement使えとあれほど言ってるのに。。。


131 :NAME IS NULL:2005/08/05(金) 22:39:55 ID:???
まぁPrepared Statementが使用できないDBライブラリもあるから
しょうがない場合もあるけど。
ただせめて値は ' で囲って欲しいよね。

132 :NAME IS NULL:2005/08/05(金) 23:01:47 ID:???
そのPrepared Statementなるものは4.1以降でないと利用できないのでしょうか?
こないだ4.1入れてパニクって戻したばっかなんだよな・・・。

133 :NAME IS NULL:2005/08/06(土) 00:46:19 ID:???
>>131
クオートで括っただけでOkなんていうと、
SQLインジェクションされちゃいますよ。


134 :NAME IS NULL:2005/08/06(土) 15:38:07 ID:???
日付や電話番号などをinsertする時に、
数字の先頭の0を省かれないようにするには
intではなくvarcharなどを使うしかないんでしょうか

135 :NAME IS NULL:2005/08/06(土) 15:43:08 ID:???
まぁintは使わないな。
0がどうのというより、日付も電話番号も数字を使うけど
「数値」とはちょっと違う存在じゃん?

136 :NAME IS NULL:2005/08/06(土) 15:47:19 ID:???
あ〜、そうですよね。即レスどうもです。

137 :NAME IS NULL:2005/08/07(日) 12:19:52 ID:???
Winndows版の4.0.24はinnodbサポートしていますよね?
サーバをmax-ntにしているのに(管理のサービスでmax-ntになっているのを確認もしてます)
innodb_data_file_pathを指定するとシステムエラー1067をはきます
datadirの権限はeverybodyで書き込み権限はあります
容量はあるし、構文ミスもありません(innodb_data_file_pathをコメントアウトするとサーバが起動します)

バーチャルPC上でWindows2000で実行しています

138 :NAME IS NULL:2005/08/07(日) 12:57:24 ID:???
>>137
innodb_data_file_path、innodb_data_home_dirに設定した値を示してもらった方が
早いかもしれないけど。
innodb_data_file_pathをフルパスで指定していてかつinnodb_data_home_dirを
コメントアウトにしていない?
datadirで指定したディレクトリに作成される "サーバー名.err" というファイルの
内容を確認してみれば何か判るかもしれない。

139 :NAME IS NULL:2005/08/07(日) 13:32:48 ID:???
>>138
あーそれがエラーログファイルなのか
でサーバ名.errを見てみたら
050807 13:21:51 InnoDB: syntax error in innodb_data_file_path

って( ゚д゚)ハ

WinMySQLAdminでなくmy.iniをテキストエディタで見てみたら
autoextendの前の:が二つ・・・

スレ汚しスマソ

あとmaxでなくても無印ntでもinnodb起動できるんですね
ttp://dev.mysql.com/doc/mysql/ja/innodb-in-mysql-3-23.htmlのリファレンスって古いのかな

140 :NAME IS NULL:2005/08/07(日) 16:16:06 ID:???
>>139
や、

>MySQL バージョン 4.0 より、InnoDB はデフォルトで MySQL に組み込まれています。
>次の情報は、3.23 シリーズだけに該当します。

>>137
で「Winndows版の4.0.24」って書いてあるのですがー。


141 :NAME IS NULL:2005/08/07(日) 17:01:04 ID:???
>>140
そこ読んでませんでした

142 :NAME IS NULL:2005/08/09(火) 19:56:51 ID:xUOdDSYg
3.23.58ってセキュリティホール等あります?

143 :NAME IS NULL:2005/08/09(火) 20:17:29 ID:???
>>142
もう誰も見てないから判らない。
あれば報告すればまだ直してくれるけど>3.x系

144 :NAME IS NULL:2005/08/10(水) 06:04:26 ID:Yq8cRYJ+
男なら黙って ver5.0

145 :NAME IS NULL:2005/08/10(水) 19:08:55 ID:???
> 男なら黙って ver5.0

とする根拠きぼん。

146 :NAME IS NULL:2005/08/10(水) 19:28:23 ID:???
その質問に答えたら
黙って選ぶことになりません。

147 :NAME IS NULL:2005/08/11(木) 00:58:30 ID:???
色々考えて、自分なりにテーブルも正規化したcmsをつくりますた。
フィールド数30個くらいのテーブル1つと、フィールド数数個のテーブル3つ。
これらをjoinしたクエリを一画面表示ごとに十数回くらい実行していますが、こんなのは普通のことなんでしょうか?
思いの他、色々盛り込むことになってしまって。
ローカルの環境では快適に動いてますが、レンタル鯖にうpしたら負荷大きいぞ!って怒られたりしないでしょうか?

148 :NAME IS NULL:2005/08/11(木) 01:08:47 ID:???
>>147
> ローカルの環境では快適に動いてますが、レンタル鯖にうpしたら負荷大きいぞ!って怒られたりしないでしょうか?
取り敢えずベンチマークとれよ

149 :NAME IS NULL:2005/08/12(金) 17:36:51 ID:x+EYmiqH
mysqlはどうして、リファレンスの類が他と比べて、糞なのですか?

150 :NAME IS NULL:2005/08/12(金) 17:47:03 ID:???
馬鹿フィルタでは?

151 :NAME IS NULL:2005/08/12(金) 17:49:39 ID:O6Fx6yKR
ちゃんと作れって言いたい

152 :NAME IS NULL:2005/08/12(金) 17:52:39 ID:???
>>150
馬鹿では?

153 :NAME IS NULL:2005/08/12(金) 20:43:07 ID:???
>>149

企業が作ってるからじゃねーの

154 :NAME IS NULL:2005/08/12(金) 22:45:46 ID:yTy84Mt4
Javaのドキュメントは親切すぎるほど親切に思えた。

155 :NAME IS NULL:2005/08/13(土) 04:08:17 ID:17VFPGLo
確かに日本語マニュアルって英語マニュアルにくらべるとしょぼいよね。

まさに知りたい話に限って日本語マニュアルには書いていない(英語のほうにはある)。

156 :NAME IS NULL:2005/08/13(土) 04:58:19 ID:???
右上から検索すると強制で英語になるのがだるい
登録すりゃいいんだろうけど

157 :NAME IS NULL:2005/08/13(土) 20:15:43 ID:W8RTrnDT ?#
売り上げの日別集計を行ってるのですが、

SELECT sum(合計金額) , count(オーダーID) , DATE_FORMAT(注文日時) as o_day FROM 注文テーブル GROUP BY o_day

として抽出を行った場合に、
今月頭から今日までの日別集計を行いたいのに、
一切売れなかった日が抜けてしまいます・・

これを防ぐ方法ってどんな方法がありますか?

158 :NAME IS NULL:2005/08/13(土) 23:06:05 ID:???
>>157
カレンダーテーブルを別に準備してそいつとOUTER JOIN。
または売れない日には0円のオーダーレコードを登録する運用にする。

159 :NAME IS NULL:2005/08/13(土) 23:46:10 ID:???
>>157
特定のフィールドの値が無いけど、それをカウントして0って結果を返したい場合は漏れもいつも回りくどいことしてる。
カレンダーテーブルに相当するものを配列に入れておいて、後で合体させる
>>158
カレンダーテーブルってのは日付で1レコードってことですよね?
新たに両方のテーブルにフィールドを作ってそれで、
OUTER JOIN カレンダーテーブル on 注文テーブル.ID = カレンダーテーブル.ID
ってことかな?

160 :NAME IS NULL:2005/08/13(土) 23:53:55 ID:???
>>159
OUTER JOIN カレンダーテーブル on 注文テーブル.注文日 = カレンダーテーブル.注文日
と思われ。

161 :160:2005/08/14(日) 00:00:32 ID:???
追加。感覚としては
LEFT OUTER JOIN 注文テーブル on カレンダーテーブル.注文日 = 注文テーブル.注文日
としてカレンダテーブルをメインテーブルとした方が意味合いとして明確。

162 :NAME IS NULL:2005/08/14(日) 11:52:33 ID:NmBe63OC
同じレコードに、
数値型のカラムがいくつかあるとして、
その中から最大値が入ったカラムの名前を知るには
どうすればいいでしょうか?

163 :NAME IS NULL:2005/08/14(日) 15:27:41 ID:ENq6njQg
GRATEST()関数が使えると思う
バージョンによっては駄目かもしれないけど

164 :NAME IS NULL:2005/08/14(日) 15:28:54 ID:ENq6njQg
スペルが違った、GREATEST()だ

165 :NAME IS NULL:2005/08/14(日) 18:16:46 ID:???
>>162
とっとと正規化する

166 :NAME IS NULL:2005/08/15(月) 15:11:33 ID:???
>>165
それが無理な場合

167 :NAME IS NULL:2005/08/15(月) 18:29:38 ID:???
>>166
あんた誰?

168 :NAME IS NULL:2005/08/15(月) 21:14:17 ID:???
>>167
俺、おれ、俺だよ

169 :NAME IS NULL:2005/08/15(月) 23:25:59 ID:???
NAME IS NULLだよ

170 :NAME IS NULL:2005/08/16(火) 00:11:02 ID:???
ちょっと仕事で本番環境のdatabase dropしちゃってさ、
示談金を今日中に払い込まないといけなくなっちゃったんだ。

171 :NAME IS NULL:2005/08/16(火) 00:27:03 ID:???
なぜレプリケーションしなかったんだ?

172 :NAME IS NULL:2005/08/16(火) 00:55:14 ID:kmWjz4VJ
すみません。教えてください。

WinXP上のMySQLのデータをコピーしてLinux機に移植したところ、書き込みが出来なくなっています。

phpMyAdminから直接レコードを修正しようとすると、#1036 - Table 'hoge' is read only が表示されます。
ディレクト以下全てのファイルのパーミッションを777にしても変わりません。
(読み出しは普通に可能です)
コピーの媒体はCD-RWでもFDでも同じ症状が出ます。

よろしくです。m(_ _;)m



173 :NAME IS NULL:2005/08/16(火) 03:13:28 ID:???
MySQLのコンソール(SSHで接続)から日本語入力できません。INSERTできないのです。
調べていたら、http://w3lab.net/mm/ts/php.html#insertを見つけました。

(Q) SSHでMySQLに接続して、insert into 文でデータを入力したいのですが、日本語を入力できません。
日本語を入力するには、どうすればいいのでしょうか。
またPHP(もしくはPerl)スクリプト内からだと、日本語のデータはinsertできますでしょうか。
(A) SSHのコマンドラインからの日本語入力はできませんが、PHPなどからであれば可能です。

無理なんでしょか?

174 :NAME IS NULL:2005/08/16(火) 12:07:04 ID:???
>>173
どういうSSHクライアントや環境なのか知らないけど、
ちゃんとコード変換してやれば(SSHクライアントがSJISで送ってないか?)
普通にlatin同様に扱える。

175 :NAME IS NULL:2005/08/16(火) 17:05:25 ID:xpJN3AvF
>>172
テーブルハンドラは何よ? myisam以外は互換性ないぞ、確か。

176 :NAME IS NULL:2005/08/16(火) 17:06:42 ID:xpJN3AvF
>>173
INSERT INTO t1 (c1) VALUES (`日本語`);

みたいに `` でちゃんと囲んでるか?

177 :173:2005/08/16(火) 22:47:40 ID:???
>>174
SSHクライアントはTTSSHを使っていて、文字コードは送受信ともEUCにしています。

>>176
はい、というか、そもそも日本語が受け付けてくれないんです。
何も送られて様子です。

ローカルエコーをオンにすると送られるんですが、
それだと副作用が多すぎて常用できないんです。

178 :NAME IS NULL:2005/08/16(火) 23:52:33 ID:xpJN3AvF
>>177
SSH経由で手動でレコード追加したいのかな?
もしそうでなければ代替案。

代替案1

○○.sql みたいなDDL/DMLを書いたファイルを用意しておいて mysql < ○○.sql で流し込む。


代替案2

SET NAMES cp932;
INSERT INTO t1 (c1) VALUES (0xAAA);

みたいにHEXを使ってINSERTする。0xAAAは対応するHEXのことね。

(代替案2は入力文字列が固定化されている場合のみ)

179 :173:2005/08/17(水) 01:18:27 ID:???
>>178
ありがとうございます。
代替案1 の方でやってみます。

180 :NAME IS NULL:2005/08/21(日) 17:47:00 ID:OVUB9+H0
MYSQLってトランザクションとテーブルロックの両方を同時にってできないんですか?


181 :NAME IS NULL:2005/08/21(日) 20:33:06 ID:???
>>180
何がやりたいの?

十中八九トランザクションをちゃんと使えば解決できると思われ。
(commitするまで他コネクションからSELECTして欲しくないとか)


182 :NAME IS NULL:2005/08/21(日) 21:20:13 ID:2yUINDw1
MySQL4.1.13をrpmから入れたらmysqlユーザー/グループなどが自動で作成
されなくなっています。ま、単に作ればいいじゃんって話ではありますが。

4.1.11までは勝手に作るようになっていたのに、デフォルトの動きが変更になったのでしょうか?
それとも単に入れ忘れた?

183 :NAME IS NULL:2005/08/22(月) 12:07:33 ID:7wEVkCZ+
>180に逆質問。どのRDBMSだとできたの?

184 :NAME IS NULL:2005/08/22(月) 19:44:53 ID:???
SQL Server2005

185 :180:2005/08/22(月) 20:28:47 ID:wRMrhi6D
たとえば同様のデータが入ってるかチェックして
チェックが通ったらinsertする時。
スレッドA チェック(select) true
スレッドB チェック(select) true
スレッドA insert
スレッドB insert
ってならない?

テーブルロックかけておけば
スレッドA ロック
スレッドA チェック(select) true
スレッドB チェック(select) 待機
スレッドA insert
スレッドA ロック解除
スレッドB チェック(select) false
ってなるかなって。



186 :NAME IS NULL:2005/08/22(月) 21:03:56 ID:???
>>185
同様のデータを許さないカラムにユニーク属性を付けておけばOK

187 :NAME IS NULL:2005/08/22(月) 23:55:34 ID:???
>>185
なんだ。
これ
ttp://dev.mysql.com/doc/mysql/ja/innodb-locking-reads.html
がやりたいのね。


188 :NAME IS NULL:2005/08/23(火) 02:35:02 ID:rOUyeMo+
187が言っているとおり、条件に該当するINSERTをブロックするだけなら
わざわざテーブル全体にロックをかける必要は無い。

無論、lock tablesというテーブルハンドラ非依存の構文も使えるわけだが、
SELECT ... FOR UPDATE で十分だろう。

SQL Server2005の"SELECT ... FOR UPDATE"はINSERTをブロックできないのかな?もしかして。

189 :NAME IS NULL:2005/08/23(火) 04:09:23 ID:???
>>188
SELECTしたレコードが削除変更されるのを防止するためにSELECT ... FOR UPDATEを使うのはわかるが、
ここではSELECTで選択されなかったことを保障したいわけだから使えないと思うぞ。
レコードが選択されなかったという状態を保障するためにはシリアライズトランザクションを使う必要がある。
MSSQLではシリアライズトランザクションによってSELECTした条件の範囲でキー範囲ロックが発生する。
もっともシリアライズトランザクションは結構負荷がでかいので >>186 のいうとおり、
INSERT時の重複エラーを捉えてトランザクションを失敗か別の処理に分岐させるのが妥当だろう。
...ふと思ったんだが、レコードが無ければUDPATEあればINSERTといった処理ならMERGE命令が
うまく処理してくれるように思えるがこれじゃダメなのか?

190 :NAME IS NULL:2005/08/23(火) 04:22:21 ID:???
>>189
補足、マニュアルをざっと見たんだがMSSQLでもMySQLでもまだMERGE命令はサポートされてないもよう。

191 :NAME IS NULL:2005/08/23(火) 05:03:43 ID:rOUyeMo+
>>188
InnoDBでは"SELECT ... FOR UPDATE"あるいは"SELECT ... LOCK IN SHARE MODE"で
条件の範囲での範囲ロックが発生するよ。

確かネクストキーロックという名前が付けられている仕組みで、InnoDBがClustered Indexを使っていることと関係があったはず。

192 :NAME IS NULL:2005/08/23(火) 05:04:32 ID:rOUyeMo+
>>192はアンカーミス ...orz

>>189が正解

193 :NAME IS NULL:2005/08/23(火) 05:05:13 ID:rOUyeMo+
うわ、泥沼に嵌ってる・・・・

出直してきます orz

194 :NAME IS NULL:2005/08/23(火) 05:34:47 ID:???
>>191
サンクス、ネクストキーロック了解。マニュアル読んできた。
FOR UPDATEでこの種のロックがかかるのはなるほど便利そうだ。

195 :NAME IS NULL:2005/08/24(水) 12:43:47 ID:???
既存のテーブルから、そのテーブルのcreate table文を
生成する事って可能でしょうか?

何かのツールを使ってでもOKなので、ご存知でしたら教えてください。

196 :NAME IS NULL:2005/08/24(水) 15:38:18 ID:laqaNRiE
>>195

SHOW CREATE TABLE <tableName>;

じゃあ駄目なんですか?

197 :NAME IS NULL:2005/08/25(木) 00:06:37 ID:7Pso8byV
すいません。質問させて下さい。

あるテーブル(old_table)からデータを引いて新しいテーブル(new_table)へ
入れるんですが詰まってます・・・

通常ですと、
insert into new_table(col1) select col1 from old_table;

でよいんですが、実はそのままcol1の値を入れるのではなく、値の前に
0をつけてnew_tableのcol1に入れたいんです。どすればいいんでしょうか?
SQLじゃ無理なんでしょうか。



198 :NAME IS NULL:2005/08/25(木) 00:15:10 ID:???
>>197
insert into new_table(col1) select concat('0', col1) from old_table;

199 :197:2005/08/25(木) 00:19:26 ID:???
>>198
ありがとうございます!!!
concat()って知りませんでした。勉強不足でした。
質問からこんなに早く答えて頂き本当に助かりました(T.T)
お陰様で、2時前には寝ることが出来ます。本当にありがとうございました。

200 :K:2005/08/29(月) 05:44:24 ID:QGAqQEOQ
すみません、MySQL初心者です。
MySQLで今までNOT NULLと指定していなかったフィールドがあり、
このため、データが入っていないrowとちゃんとデータが入ってるrowが
あるのですが、この状態でこのフィールドの属性をNOT NULLに変更しても
大丈夫でしょうか?
NOT NULLにしたのに現実にはデータがカラのRowも存在しているわけで、
何かエラーになるのではないかと。。。それともカラのrowをなくしてから
でないとNOT NULLに変更はできないのでしょうか?


201 :NAME IS NULL:2005/08/29(月) 11:59:56 ID:???
それが文字列フィールドのことなら、空文字列とNULLは違うものだよ。
心配ならテーブルの複製にALTER TABLEしてイロイロ実験すれば?

202 :U ◆CZtFsGiu0c :2005/08/29(月) 12:15:56 ID:???
>>200
MySQLには詳しくないけど、通常はデフォルト値を設定することになると
思う。

203 :NAME IS NULL:2005/08/29(月) 14:10:56 ID:hgedEuqh
1つのフィールドの構造とデータを
フィールド名だけ変えてコピーしたいのですが、
そういうコマンドってあるのでしょうか?
プログラム組んでやるしかなかとですか?

204 :NAME IS NULL:2005/08/29(月) 15:25:14 ID:???
>>200
alter tableでnot null指定してなかったカラムをnot nullにすると、nullが入ってた部分はデフォルト値になる。
mysqlではnullはuniqueカラムでも特別扱いなんで、元がuniqueなカラムだとはまるかも。

>>203
lock table [table];
alter table [table] add newcol [create_definition];
update [table] set newcol=oldcol;
unlock table;
こんな感じ?
timestamp型がある時はその辺も気を付けないと、書き換わってしまうが。

205 :NAME IS NULL:2005/08/30(火) 03:13:50 ID:9rw4gV5x
Navicatのスケジュールって
ちゃんと動きます?
セットした時間になってもピクリともしません
OSXとWinで試してみたけど…

206 :205:2005/08/30(火) 03:56:31 ID:???
出来ました
パスワードなしユーザだからと思ってパスワードを空白にしていたのが
問題だったようで。
スケジュールって単にWin標準のタスクを実行してるだけだったんですね

207 ::2005/08/30(火) 09:59:47 ID:U53E/WPM
レス200です。
レス下さった方、ありがとうございました!
なるほどです。


208 :NAME IS NULL:2005/08/30(火) 19:46:56 ID:???
直視に耐えない…。
聞くに耐えない…。

209 :NAME IS NULL:2005/08/30(火) 20:38:12 ID:???
それでもカキコは出来ます...。

210 :NAME IS NULL:2005/09/02(金) 12:18:45 ID:7CZENzNz
MySQLの数値の比較の動作について質問です。
tbl_listというテーブルにidという主キーでデータ型はINTでauto_incrementを設定してあります。
今のところidは1から20まで登録してあります。
ここで以下のようなクエリーを発行すると
select id from tbl_list where id in ('1','3','2.5','5','4')
idが1,2,3,4,5の5通り帰ってきます。
select id from tbl_list where id in ('2.5')
とすると2が帰ってくるのですが、2と2.5は同値とみなされてしまうのでしょうか?

MySQL4.0.25 Windows版を使用しています。
よろしくお願いします。

211 :NAME IS NULL:2005/09/02(金) 13:30:06 ID:???
データ型がINTだからでは?


とSQLを全く知らない私が答えてみました。

212 :NAME IS NULL:2005/09/02(金) 15:46:39 ID:???
select 2="2.5";
だと0が返ってきて
select 2 in("2.5");
だと1が返ってくるね
inを使うと勝手に整数比較されるってことかな?

213 :NAME IS NULL:2005/09/02(金) 17:24:20 ID:Zzr1P2Lt
AUTO_INCREMENTによる割り当ては1から始まりますが、
これを特定の値から始まるように設定する方法はありますか?

214 :213:2005/09/02(金) 18:00:55 ID:Zzr1P2Lt
解決しました

215 :NAME IS NULL:2005/09/02(金) 20:18:54 ID:???
>>212
面白そうな現象ですね。手元に環境が無いから試せないのだけど、文字列じゃなく数字の2.5の場合どうなりますか?
select 2 in("2.5");
select 2 in(2.5);

216 :212:2005/09/02(金) 22:08:34 ID:???
試してみた。
select 2 in(2.5);
だと、0が返ってくる。

環境書き忘れたけど、4.0.22@FreeBSD

217 :212:2005/09/02(金) 22:11:21 ID:???
4.1環境も手元にあるので試してみたら
select 2 in(2.5);
でも
select 2 in("2.5");
でも0が返ってくる。
バージョンは4.1.10

218 :NAME IS NULL:2005/09/02(金) 22:42:38 ID:KDwNgj7Y
select '2' in ('2.5');
だと0が返ってきた.
select 2 in ('2.5');
だと1が返ってきた.
バージョンは4.0.25(Win)

219 :NAME IS NULL:2005/09/02(金) 23:25:01 ID:KG6yoOrb
mysql4とmysql5ってどう違うですか〜?
今まで4でxoops動かしてたんですが、5の方がいいんでしょうか?


220 :NAME IS NULL:2005/09/02(金) 23:36:30 ID:???
>>219
MySQLを使用して何か開発をしていないのなら無関係。
xoops側がMySQL5系に変更すべし、というまでは現状のままでいきなはれ。

221 :NAME IS NULL:2005/09/02(金) 23:40:23 ID:???
>>220
なるる 理解した
ありがとぅ〜〜(iДi)ノ


222 :NAME IS NULL:2005/09/02(金) 23:44:08 ID:???
>>219
>mysql4とmysql5ってどう違うですか〜?
と人に訊く人は、今まで通りMySQL4.0を使ってください。XOOPSには。
MySQL4.1にも手を出さない方が良いでしょう

223 :NAME IS NULL:2005/09/03(土) 13:01:45 ID:noKceUQY
夜中にランキングページをcronで生成しているのですが
アカウントが多くなったため処理時間が増加し
他のクエリを受け付けない時間が長くなって
困っています。
スレッドキャッシュやテーブルキャッシュを増やす等の
チューンをし
通常処理のパフォーマンスは上がったのですが
この問題は相変わらずでした。
どのように解決するのが定石なのでしょうか?

224 :NAME IS NULL:2005/09/03(土) 14:43:57 ID:???
ランキング専用のサーバを作る

225 :NAME IS NULL:2005/09/03(土) 15:12:36 ID:???
>>223
cronで動かしてるアプリをいじれるならアルゴリズムの改善でまったく変わる。
チューニングで何とかしたいならまずはボトルネックを探さないとむやみにつまみを
いじってもなかなかヒットしない。どれも手に余るならマシンの増強。

226 :NAME IS NULL:2005/09/03(土) 16:04:50 ID:???
>>223
レプリケーションして更新マスターとクエリ受付スレーブとに分ければ?
ボトルネックはプロセスレベルでしょ?

227 :NAME IS NULL:2005/09/05(月) 17:42:30 ID:???
「AB■XY」のデータを「AB□XY」に変更したいのですが
その様なsqlを書けば良いのかご教授下さいませ。

228 :NAME IS NULL:2005/09/05(月) 21:27:57 ID:???
>>223
ランキング作成の仕組みにもよるが、一つのテーブルにINSERTを
多発するようなら、複数行INSERTの導入をお勧めする。
量が多ければ、劇的に早くなります。

229 :NAME IS NULL:2005/09/06(火) 01:37:55 ID:aMoVKkEL
MySQLはpostgresのような
modify_dt timestamp default now(),
このようなtimestampへのデフォルト指定ができず、timestampのカラムを
2つ以上作ってしまうと下記のようになってしまいますが、2つとも
CURRENT_TIMESTAMPにする方法はございませんでしょうか。

| regist_dt | timestamp | YES | | CURRENT_TIMESTAMP | |
| modify_dt | timestamp | YES | | 0000-00-00 00:00:00 | |

ご教示いただけますと幸いです。

230 :NAME IS NULL:2005/09/06(火) 01:46:05 ID:???
>>229
MySQLのtimestampはrowversionのことで、日付時間型はdatetimeを使うべし。
日付時間関係の型は処理系で大きく異なるから注意が必要。

231 :NAME IS NULL:2005/09/06(火) 01:56:04 ID:???
>>230
ご教示有難うございます。
datetimeでやってみましたが、こちらもdefault指定で
エラーになってしまいました

232 :NAME IS NULL:2005/09/06(火) 02:29:50 ID:???
>>230
大きく訂正。
MySQLのtimestamp型はrowversonとは関係なく日付時刻型で正解、datetimeとは格納形式が違うらしい。
timestampは名前どおりデフォルトでそのときの日付時刻がセットされる。defaultの指定は不要。
タイムスタンプの精度が秒単位までなのでrowversionとしては機能しないもよう。
2つ以上定義した場合は2つめからは現在の日付時刻はセットされず。ゼロ値がセットされる。
さらにMaxDBモードでは現在の日付時刻セットはまったく行わないらしい。

マニュアルの記述によるとcreate tableのdefaultでは定数のみで関数は使用できないらしい。
insert文やUpdate文ににNow()関数を指定してやるのが一番無難そうだ。

233 :NAME IS NULL:2005/09/06(火) 03:17:55 ID:???
>>232
やはりそれが一番無難ですかね。
有難うございます。


話変わりますが、今度はcreate indexができません。

create index idx1 on 〜(aaaaa);
create index idx2 on 〜(bbbbb);

とやると、

BLOB/TEXT column 〜 used in key specification without a key length

と出て、なぜか2つ目のindexのみ作られています。
ぐぐってもなかなか正解が出てこないので困ってます。。

234 :NAME IS NULL:2005/09/06(火) 03:31:58 ID:???
>>233
>MySQL バージョン 3.23.2 以降では、BLOB 型と TEXT 型のカラムには、インデックスを付けることができる。
>それより前の MySQL バージョンでは、インデックスはサポートしていない。
とマニュアルのあるけどVersionいくつ?
aaaaaとbbbbbのデータ型は?


235 :NAME IS NULL:2005/09/06(火) 04:20:41 ID:???
>>234
4.1.7です。
aaaaaはtext、bbbbbはsmallint(6)でございます。

236 :235:2005/09/06(火) 04:23:02 ID:???
なんでsmallintのbbbbbのみ作れるんでしょうかね。。

237 :NAME IS NULL:2005/09/06(火) 04:38:10 ID:???
>>236
ttp://dev.mysql.com/doc/mysql/ja/create-index.html
>BLOB 型や TEXT 型カラムのインデックスでは、プリフィックスの長さを必ず指定する必要があります。
TEXTには実際に索引に使う長さを指定しろってことのようだ。
RDBMSは処理系でずいぶん違うからマニュアルを端から読めってことだな。
ttp://www.mysql.gr.jp/

238 :235:2005/09/06(火) 04:52:19 ID:???
>>237
有難うございます。いきました。
長さを指定する必要があったんですね。

マニュアルのとおり、入力されると思われる文字数より少ない数を
指定しましたが、Postgresではこのようなことはしたことがないため
少し心配になりました。。

遅くまで有難うございました。

239 :NAME IS NULL:2005/09/06(火) 11:23:59 ID:6CcOt5nH
会社で動いているMySQLの innodb_log_file_size が 100M に設定されて
いるのですが、こんなに必要なんでしょうか?

もし自分がやる場合、いつも5Mとか10Mなんですけど間違ってますか?

240 :NAME IS NULL:2005/09/06(火) 15:02:15 ID:vXeEnsfW
ms-dosで
mysql> source C:/root/hoge;
とやると/rが改行\rに認識されるみたいだんですが
これをエスケープするにはどうすればいいんでしょうか?
\/rootでもダメみたいです

241 :NAME IS NULL:2005/09/06(火) 17:33:05 ID:???
くだらねぇ質問スレから誘導されて来ました。
PHP+MySQLで顧客管理のサイトを作っています。

名前:年収:勤務地
aaaa:600:埼玉
bbbb:700:東京
cccc:550:千葉
dddd:500:神奈川
eeee:800:北海道

というデータを、年収を「600万以上」で検索しても
550万のデータも「条件90%合致」ということで表示したいのです。
年収だけじゃなくて、勤務地もたとえば東京を指定しても
埼玉、神奈川といった近辺も合致させたいと思っています。
基準としては、年収-50万で合致率からマイナス10%、
近県ならマイナス10%といった減算方式で、80%までなら
抽出したい、といった具合です。
勤務地に関しては、名称ではなく数値で格納してあるので

埼玉:10
東京:11
神奈川:12
千葉:13
北海道:50

検索値の前後±1の地域をマイナス10%で抽出する、といった感じです。
くだらねぇ質問スレで一部ヒントをもらいましたが、
ひき続き良いアイデアがありましたらよろしくお願いします。

242 :NAME IS NULL:2005/09/06(火) 17:58:40 ID:???
元のスレのurl貼ろうや
くだ質の方から来たけど、あっちで半分以上解決してるじゃねぇか

243 :NAME IS NULL:2005/09/06(火) 18:41:49 ID:???
>>241
 210 名前:nobodyさん 本日のレス 投稿日:2005/09/06(火) 17:18:15 ???
 >>207-208
 なるほど、合致率もSQLで取得するんですね。
 年収オンリーでの考え方は把握しました。どうもです。

 条件が複合したときがさらに厄介です。
 ヒント(っつか答え)はいただいたので、自分でも考えてみます。
                    ~~~~~~~~~~~~~~~~~~~~~

17:18:15 に「自分でも考えてみます」と言って、考えた方法が
17:33:05 にこのスレで教えてもらうことなの?
バカですか。。。

244 :243:2005/09/06(火) 18:59:52 ID:???
関係ないけど、>>241の件をちょっとやってみた時に発見。

mysql> SELECT 10 - ABS(1 - 12);
+----------------------+
| 10 - ABS(1 - 12) |
+----------------------+
| 18446744073709551615 |
+----------------------+

mysql> SELECT -ABS(1 - 12) + 10;
+-------------------+
| -ABS(1 - 12) + 10 |
+-------------------+
| -1 |
+-------------------+

ABS(x - y) > 10 の時におかしくなるみたい。
MySQLのバージョンは4.1.13。

245 :NAME IS NULL:2005/09/06(火) 19:10:02 ID:???
timestampを使用するとdefault now()になりますが、
updateの際にもこれが適用されてしまいます。

これを回避する方法はございませんでしょうか。

246 :NAME IS NULL:2005/09/06(火) 19:21:04 ID:???
>>245
timestampをやめてdateにして、insert時にnow()を書き込む。
timestampは
 ×default値としてnow()が書かれる 
 ○レコードが更新された日時が自動的に書き込まれる
そもそもtimestampの認識が間違っていると思われ。

247 :NAME IS NULL:2005/09/06(火) 19:21:50 ID:???
>>244
SELECT 10 - ABS(1 - 12.0);
としたらちゃんとした結果が出た

248 :NAME IS NULL:2005/09/06(火) 19:27:30 ID:???
>>246
有難うございます。
postgresの感覚は消し去った方がいいですね、、

249 :247:2005/09/06(火) 19:50:31 ID:???
ちなみに、MySQLは4.1.13

SELECT 0 - ABS(1);
でもおかしくなるね。

SELECT FLOOR(0 - ABS(1));
SELECT (0 - ABS(1))*1.0;
SELECT 0 + -ABS(1);
ではおかしくならないけど
SELECT (0 - ABS(1))*1;
ではおかしくなる。

整数からABSの戻り値をそのまま引くとおかしくなるのかな。
*1でおかしいのは、計算する時に最適化されて*1は実行されないとか?
んで、結果の数値見るとUNSIGNED BIGINTの最大値っぽいけど
ABSの返り値がSIGNEDなのに、間違えてUNSIGNEDとして扱っちゃうのが原因だろうか。

250 :NAME IS NULL:2005/09/06(火) 20:43:01 ID:???
4.1.14だけど、何も変なことおきないよ。>>249

$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 569 to server version: 4.1.14-standard-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> select 0-abs(1);
+----------+
| 0-abs(1) |
+----------+
| -1 |
+----------+
1 row in set (0.00 sec)

mysql> select (0-abs(1))*1;
+--------------+
| (0-abs(1))*1 |
+--------------+
| -1 |
+--------------+
1 row in set (0.00 sec)



251 :243:2005/09/06(火) 21:18:01 ID:???
>>250
あらら、いつのまにか4.1.14なんかが出てたのね。
といっても一週間前か。しばし様子見。。。
4.1.14のリリースノートにこの件、書いてあるね。
バグ登録もされていたみたい(http://bugs.mysql.com/bug.php?id=11402)。
5系は5.0.11で修正済みとのことでし。

252 :NAME IS NULL:2005/09/07(水) 00:59:46 ID:ajFyFx/u
>>240

innodb_log_file_size を大きくするほど一般的には性能がアップする。

大きくすることの弊害は、障害発生後のリカバリー時にその分、時間がかかるということ。

で、トータルで考えるとこの値は、思いっきり大きくした方が良いというのが良く言われているチューニングTIPSですよ。

253 :252:2005/09/07(水) 01:01:03 ID:ajFyFx/u
アンカーミスりました。。。

>>239 宛が正解。

254 :NAME IS NULL:2005/09/07(水) 01:29:13 ID:A0qPp313
XOOPSの負荷を軽くしたいのですが、究極なMYSQLのチューニングをおしえてください。
おしえてくんですんまそん

255 :NAME IS NULL:2005/09/07(水) 02:00:50 ID:???
>>254
CPUの速いのいっぱい積む。メモリーもいっぱい積む。
ディスクI/Oが結構足引っ張るのでI/FもHDDも速いのにする。RAID組む。

256 :NAME IS NULL:2005/09/07(水) 02:49:37 ID:A0qPp313
>>255
ありがとん。
CPUは、AMD64FX メモリ4G
ディスクI/Oがやばそうなので、WD raptorと考えています。
XOOPSを一台のサーバーにどれぐらい設置できそうですか?
アクセス数とかでもおしえていただければ幸いっす。
まじ、おしえてくんですんまそん。

257 :NAME IS NULL:2005/09/07(水) 08:18:22 ID:???
その用途なら、FXやめて安いX2の方がよさげ。


258 :NAME IS NULL:2005/09/07(水) 13:44:11 ID:Apjg8CxA
>>252
そうなんだ。ありがとうございます。
実際に障害を起こしてどうなるか、までのテストをしたことがないので
よく理解していませんでした。
そうか。大きいほうがいいんだ...。

ちなみに、意図的に障害を起こす良い方法があれば教えてください(>_<)

259 :NAME IS NULL :2005/09/08(木) 00:50:44 ID:r5tObJDy
>>252
REDOログのサイズのことだよ?


260 :NAME IS NULL:2005/09/08(木) 01:14:40 ID:+k04DASg
>>257
X2に変えて、一日10万アクセスぐらい耐えられるかな?
自分ひとりだともったいないので、同じサーバーに
無料で何人かに貸し出そうとおもっています。



261 :252:2005/09/08(木) 03:58:29 ID:eEn19qg5
>>258>>259

だからそのREDOログのサイズはでかいほど良いってことだよ。
MySQL ABのパフォーマンスチームリーダー、Peter Zaitsev本人が言ってたことなの。

なんで良いのか、詳しいメカニズムは漏れは知らない。ごめんね。

262 :NAME IS NULL:2005/09/09(金) 20:14:20 ID:PPaiODgg
さくらインターネット 共有サーバスレ Part23
さくらインターネット 質問にマジレスするスレでも質問したのですが、誘導させていただいたので書き込みます。

外部キーを利用したいからタイプをInnoDBにしていたのですが、サーバ1でなぜかInnoDBのテーブルを作れなくなってしまったのですが、なにか情報持っている方いませんか?
しかも悪いことに削除のできない未完成のテーブルができてしまった・・・。どうしよう・・・(´・ω・`)

ちなみに、諸事情でアカウントを二つもっているのですが、もう一つはサバ5をつかっています。
こちらだと同じInnoDBを作成するSQL文を通してもうまくテーブルをつくってくれるんです。。。
create table group(
id_group int not null primary key auto_increment,
name_group tinytext
)type=InnoDB;
たとえば、こういったかんじのSQL文です。

1サバ自体がおかしいのか、自分のデータベースになんらかの設定を誤ってしてみまったのか全く見当がつきません。
実際、リレーションを組んだり、データベースにはテーブル作成・更新・削除、レコードの追加などしかしてません。
どうやら、壊れたテーブルは使用中という扱いのよう。。。

263 :262:2005/09/09(金) 22:51:39 ID:PPaiODgg
なんだか、レコードの追加はできるけど削除できないテーブルがでてきた。
あと、テーブルの構造を表示させようとしても違うテーブルが開けないってエラーが起きるし。

あと、テーブル作るときには下のようなエラーが起きます・・・。
#2013 - Lost connection to MySQL server during query

データベースを削除して一から構築しようと思ったんだけど、Sakura Internetってデータベース削除コマンドがロックされてる・・・。

どなたか、詳しい方がいましたら御教授ねがいます(´・ωと)

264 :262:2005/09/09(金) 23:49:19 ID:???
連続書き込み申し訳ありません。

さくらインターネットのMySQLのバージョンが4.0.20です。
Googleで調べた結果InnoDBの処理でバグがあるようです。
ただ、書いてある内容が高度で今回の件とどれだけ関係があるのかよくわかりません。。。

さくらインターネットにバージョンアップの要請をだしたほうがいいのでしょうか・・・。

265 :NAME IS NULL:2005/09/10(土) 07:26:19 ID:???
半角スペースと全角スペースを間違えて入れてしまったorz
しかも50万レコード。
簡単にsqlたたいて直せないですか?

エロい人教えて。

266 :NAME IS NULL:2005/09/10(土) 07:48:20 ID:???
>>265
俺なら該当データをdumpして、半全の変換して(テキスト変換系ツール)
それをimportし直す。INSERT→UPDATEぐらいは必要かな。

267 :NAME IS NULL:2005/09/10(土) 07:49:45 ID:???
と思ったけど50万ね...

268 :名無しさん@そうだ選挙に行こう:2005/09/10(土) 22:03:55 ID:???
1円/件、出してくれたら変換してあげる。

269 :名無しさん@そうだ選挙に行こう:2005/09/10(土) 22:08:53 ID:???
じゃあ漏れは0.5円/件

270 :名無しさん@そうだ選挙に行こう:2005/09/11(日) 00:22:05 ID:???
>>265
普通にupdateで出来そうだけど。
ただ、その件数一気にやるのは怖いから漏れだったら何度かに分ける。

271 :名無しさん@そうだ選挙に行こう:2005/09/11(日) 16:31:10 ID:bTMS1VeQ
マックに舞sqlを入れました。

アンインストールして舞をマッサラな状態に(ユーザーの設定とか)したいんですが、どうすればいいでしょう。
フォルダごと無理矢理削除して再度インストールしたら、/tmp/舞sql。ソケット が何のといって使えなくなってしまいます他。

マック板かリナックスいけと貝割れ草だけど。。。
お願いします。

因に、osx tiger 舞sqlはosx要の最新版。

272 :名無しさん@そうだ選挙に行こう:2005/09/11(日) 17:27:11 ID:???
舞sqlとか書けば2chぽいみたいなこと思ってるのかね?

273 :無しさん@もう選挙に逝ったぜ:2005/09/11(日) 18:51:13 ID:???
>>271
# /tmp/舞sql。ソケット が何の...
つってるファイル消せばよい。

274 :NAME IS NULL:2005/09/13(火) 03:00:48 ID:???
>>266
ダンプっすか・・・どうしよう。

275 :NAME IS NULL:2005/09/13(火) 11:09:39 ID:???
松本

276 :NAME IS NULL:2005/09/13(火) 21:39:43 ID:???
>>275
最近どうしるんだ?
結婚してるのか?

277 :NAME IS NULL:2005/09/13(火) 21:55:54 ID:K7YLJro0
4.1.14でvarcharのコラムに改行(¥r)だけいれて
MySQL Administratorでバックアップしたファイル見てみると
本来、'aaa','¥r','bbb'となるべきところが
'aaa',','bbb'となってしまっていて、リストアできないんですが
これって既出ですか?

278 :NAME IS NULL:2005/09/15(木) 01:03:05 ID:???
>>262-264
MySQLの勉強をしようと思って、たまたま以前から使っていた
さくらインターネットのサービスの中にMySQLのサーバーがあったんで、
最近試しにさわってみたばかり・・・ という程度の私なので、お役に
立てるほどの知識も情報もないんですが、私が割り当ててもらった
mysql7では、select version(); を実行してみたら、4.0.25でした。

もしかして、サーバーによってバージョンが微妙に違っていて、
262さんが困っているほうのサーバーはバグありバージョン?

どちらにせよ、テーブルが削除できないというのは、さくらに頼む
しかないんじゃないでしょうか。

あと、「バグがあるらしいから、他のサーバーと同じバージョンに
上げてくれ」と、頼んでみるのもアリではないかと。言うだけなら
タダですし。それで問題が解決するかどうかは、分かりませんが。

279 :NAME IS NULL:2005/09/15(木) 01:10:40 ID:???
君は何をしたいのかね?

280 :NAME IS NULL:2005/09/15(木) 01:13:00 ID:???
>>278
なにっ さくらMysql4.0来てたのかー!

281 :NAME IS NULL:2005/09/15(木) 10:21:47 ID:/+b7q0U4
postgresqlからの移行をおこなっていますがexceptで難航しています。
同じテーブルに1時間おきにデータを入力していますが、入力がない場合を検索してるsqlが以下にあります。
これをmysqlに移行したいのですが、難航しています。以下をmysqlで実現する方法はありますか。
sql = "select name from w where date > '#{late_hour}' and date < '#{hour}' group by name
except select name from w where date > '#{hour}' and date < '#{for_hour}' group by name"

282 :NAME IS NULL:2005/09/15(木) 10:39:41 ID:???
>>281
MySQLのバージョンによっては使えないかもしれないが。。。
select name from w where
 name not in (select name from w where date > '#{hour}' and date < '#{for_hour}' group by name)
 and date > '#{late_hour}' and date < '#{hour}' group by name

ユニークカラムが存在して、かつそのカラムとは別にNOT NULLなカラムが存在するのであれば
キーの結合とNOT NULL判定でもできるけど。
できれば、テーブルの定義とMySQLのバージョンは明記して欲しいな。

283 :NAME IS NULL:2005/09/15(木) 11:28:28 ID:???
WindowsXPでmysqlを運用しています

284 :NAME IS NULL:2005/09/15(木) 11:31:38 ID:???
WindowsXP Proでmysqlを運用しています
mysqldump -u root -p dbname > "directory/filename"
が動きません。
吐き出されたテキストファイルには「EnetrPassword: 」
のみ記述されています。
本来このコマンドプロンプトでパスワード入力ができるはずなのですが・・・

ReloadやCreateTableには何の支障もないです、どなかた教えてください

285 :NAME IS NULL:2005/09/15(木) 18:17:55 ID:???
>>284
mysqldump -u root -pxxx dbname > "directory/filename"
-p だけならプロンプトが出るのは当たり前のような。xxxにパスワード。

286 :NAME IS NULL:2005/09/15(木) 18:49:57 ID:???
>>285
解決しました。ありがとうございます。

287 :NAME IS NULL:2005/09/16(金) 00:11:24 ID:6D+lJfyJ
PHPでSQLを実行したくて以下の文を記述したのですが
SQLエラーになってしまいます。
ただのselect文なのですがなぜでしょうか・・・。
ちなみにDBには接続できています・・・orz

$con = mysql_connect("DBSERVER","ID,"PASSWORD")
or die("データベース接続に失敗しました。処理を終了します。\n");

$sql = "select * from TABLE";

$db = mysql_query($sql, $con)
or die("SQLエラー"); // クエリを発行


288 :NAME IS NULL:2005/09/16(金) 00:21:23 ID:???
>>287
$sql = "select * from TABLE";
の前に
mysql_select_db('データベース名', $con);
がいると思われ。

289 :NAME IS NULL:2005/09/16(金) 00:21:58 ID:???
" -> \"

290 :287:2005/09/16(金) 00:25:37 ID:6D+lJfyJ
288>
実行できました、確かに使用するDB名の記述がありませんでした(^^;
ご親切にありがとうございます、助かりましたm(_ _)m

291 :288:2005/09/16(金) 00:36:50 ID:???
>>290
オメ。
PHPの話でなんだが、以下のようにしておけば多少はエラー追跡は楽になるかと。
$db = mysql_query($sql, $con)
or die("SQLエラー " . mysql_error($con)); // クエリを発行

292 :NAME IS NULL:2005/09/16(金) 18:39:37 ID:???
教えてください。
カラム構成が1つだけ違う(コピー先のほうが1つカラムが多い)テーブル間で
レコードのコピーってどのように行うのが一番スマートでしょうか?
1つだけ多いカラムには現在の時刻(current_timestamp)を入れたいです。
SQL一発で可能でしょうか?

293 :NAME IS NULL:2005/09/16(金) 18:47:53 ID:???
>>292
insert into コピー先テーブル(カラム1, カラム2, 現在時刻カラム)
 select カラム1, カラム2, now() from コピー元テーブル;

カラムの並びが同じで、最後のカラムに現在時刻カラムがあるのなら、これでもいいけれど。
insert into コピー先テーブル
 select *, now() from コピー元テーブル;

294 :NAME IS NULL:2005/09/16(金) 19:10:21 ID:???
>>293
サンクスです!出来ました。

295 :mysql-shared:2005/09/17(土) 08:31:14 ID:E8vGU8Af
apt-getのパッケージにmysql-sharedってあるけど
どういう機能があるパッケージなんですか?

296 :NAME IS NULL:2005/09/17(土) 10:26:46 ID:???
接続ライブラリとかかな。
新版、旧版

297 :NAME IS NULL:2005/09/17(土) 19:46:09 ID:???
ひらがなやカタカナのフィールドをorder byで50音順に並び替えたいんですが
うまく並びません。

調べてみるとMySQLのcharsetが関係あるっぽいんですが
レンタルサーバのmysqlなので、変えられないのかなと...

こんな状況ですが、上手く50音で並び替える方法あるでしょうか?


298 :NAME IS NULL:2005/09/18(日) 13:22:55 ID:LhxuH936
質問なのです。
 id INT(8) default 1 NOT NULL PRIMARY KEY AUTO_INCREMENT
テーブルを作るときに、上の一行を追加するとエラーが出るのですが、どうしてでしょうか
ver4.1にしたとたん、エラーが出ました orz
ちなみに、これがなければ問題なくテーブルを作れるのです。

>>297
SELECT * FROM テーブル WHERE カラム LIKE 'あ%' ORDER BY カラム ASC
SELECT * FROM テーブル WHERE カラム LIKE 'い%' ORDER BY カラム ASC  とか。
頭の一文字だけ検索して、並べてみるなんて方法は?
でも面倒だと思う

Mysqlの設定を変更できないなら、
スクリプト側の文字コードをMysql側に合わせてみると解消するかもです。

299 :NAME IS NULL:2005/09/18(日) 13:30:15 ID:???
>>298
AUTO INCREMENTカラムにdefault指定をしているからでは?
id INT(8) NOT NULL PRIMARY KEY AUTO_INCREMENT
でよいと思う。

300 :298:2005/09/18(日) 13:46:19 ID:???
>>299
ありがとうございます。
無事に通りました

301 :NAME IS NULL:2005/09/19(月) 05:13:18 ID:2nukKBtQ
少し前のWeb+DB PRESSに
MySQLビジネスフォーラムの記事が載っていたのですが
検索してもサイト自体が消滅しています。
このフォーラムはどうなったのですか?

302 :NAME IS NULL:2005/09/19(月) 05:24:45 ID:???
wayback machineで見たら
2004年10月が最後のアーカイブでした
空中分解…?

303 :NAME IS NULL:2005/09/19(月) 19:27:24 ID:32fTLI5P
何卒初心者に救いの手を!

日付でソートをしたいのですが
yyyyを無視してmm-ddのみでソートするためには
どうすればよいのでしょうか

何卒よろしくお願いします

304 :NAME IS NULL:2005/09/19(月) 19:49:23 ID:???
303です
自己解決しました

305 :NAME IS NULL:2005/09/20(火) 02:20:46 ID:???
>>304
そう、そうする他ないんだよね。
そうすればインデックスも効くしね。

306 :NAME IS NULL:2005/09/20(火) 19:30:00 ID:cMA2AiKL
mysqlに格納した画像は
<img src="photo.php?name=aaa.jpg">
のように読み出してやれば表示できると思いますが
1ページ内に複数枚表示させたい場合も上の方法でやらないとだめですか?
表示枚数ごとにselectすることにりますよね??

307 :NAME IS NULL:2005/09/21(水) 04:47:45 ID:???
>>303-305
どうやるのですか?
ちょうど同じ問題に当たっています

308 :307:2005/09/21(水) 04:54:16 ID:???
いやちょっと違うかも?
DateTimeにインデックスを張り、
「年」「年月日」「月日」のそれぞれで検索した時、
インデックスがちゃんと効くのかが心配です。
効かないとしたら…年と月日を分解してintに入れるのでしょうか?

309 :308:2005/09/21(水) 04:59:11 ID:???
失礼しました
× 月日
○ 年月
ですね

310 :NAME IS NULL:2005/09/21(水) 08:16:23 ID:???
>>306
>表示枚数ごとにselectすることにります
これが気になるような場合は、photo.phpの処理の中でキャッシュしてやればよい。
といっても同じhtml内の記述でも
<img src="photo.php?name=aaa.jpg">
<img src="photo.php?name=bbb.jpg">
はプロセスとしては別のphoto.phpなので、メモリ上の共有は(通常は)出来ないので
ファイルを使ってキャッシュするのが一般的。

311 :NAME IS NULL:2005/09/21(水) 15:16:47 ID:???
>>308
EXPLAIN すればすぐ分かる

312 :NAME IS NULL:2005/09/21(水) 16:47:25 ID:S9IkY3bj
緊急です。誰か助けて下さい。
MySQLのrootのパスワードがわからなくなりました。
なんとかして調べる方法はないでしょうか?
Navicatというソフトを利用してアクセスすることはできます。
接続設定でrootのパスワードを保存するにしていたからです。
接続してuserテーブルを見てもパスワードの部分は暗号化?されているので何を書いているかわかりません。
何とかならないでしょうか?

313 :NAME IS NULL:2005/09/21(水) 16:54:11 ID:???
>>312
悪いことしようとしてる悪寒

314 :312:2005/09/21(水) 17:01:55 ID:S9IkY3bj
違いますよ。社内で使っているMySQLが急に動かなくなったんです。
でこのシステムを作った人が蒸発してしまったからにっちもさっちもいかないんです。
信用して下さい。

315 :NAME IS NULL:2005/09/21(水) 17:09:09 ID:???
無理です。諦めてください。

316 :NAME IS NULL:2005/09/21(水) 17:12:32 ID:???
>>312
アクセスできているうちに、ダンプ取っておけよ。
ってか、バックアップはとっているんだろうから、DB作り直せば?

317 :NAME IS NULL:2005/09/21(水) 17:18:33 ID:???
>>312
http://dev.mysql.com/doc/mysql/ja/resetting-permissions.html

318 :NAME IS NULL:2005/09/21(水) 17:28:28 ID:???
>>314
>システムを作った人が蒸発してしまった
追い詰めた奴にも責任取らせて作業させとけ。

319 :312:2005/09/21(水) 17:29:23 ID:S9IkY3bj
資料を探し出しなんとかパスワードを探しだし、Navicatで接続できるようになりました。
しかしMySQLのソフトを起動しShow meを選択し、MySQLのウィンドウを見るとサービスは動いているけど動作してないような感じになっています。
MySQLのウィンドウ内でDatabaseタグを選択したら通常なら登録されているテーブルが表示されると思いますが、
何も表示されません。これってどういう状態になっているんでしょうか?

320 :312:2005/09/21(水) 17:31:33 ID:S9IkY3bj
>>318
特に追いつめたりしてないですよ。その人毎日定時で帰ってたし。
ある日突然こなくなったんです。

321 :NAME IS NULL:2005/09/21(水) 17:45:30 ID:???
>>319
そのMySQLアカウントでは、件のデータベースに対して
情報が取得できない権限設定になってるんでないの。
>>317で紹介されてるページを読んで、ちゃんとroot権限を奪取しないよ。

しかし突然蒸発しても、なんか社内の周りが平静な感じの
雰囲気というのも会社としてどうかと。

322 :312:2005/09/21(水) 18:13:20 ID:S9IkY3bj
>>321
やってみたけど無理でした。何が問題なんだろ。

323 :NAME IS NULL:2005/09/21(水) 19:57:36 ID:???
何がどう無理だったんだ?
とりあえず今問題なのは、お前自身だ。

324 :NAME IS NULL:2005/09/21(水) 21:11:41 ID:???
rootパスワードは必ず二人以上で持っておく。
メンテナンス用アクセス経路も、必ず二人以上が知っておく。

DB以前の問題。
パスワードクラックする前に危機管理体制の見直しからやっておけ。


325 :NAME IS NULL:2005/09/21(水) 23:15:35 ID:???
質問です。
「MySQL日本語の旅」
http://oss.timedia.co.jp/index.fcgi/kahua-web/show/MySQL%c6%fc%cb%dc%b8%ec%a4%ce%ce%b9
このサイトを読んで 4.1 への移行を検討しております。

Debian で apt-get で取得できる 4.1系は4.1.11で、cp932を使うことができ
ません。しかし、上述のサイトの「5.文字化け」を読む限りでは、サーバとク
ライアントの文字コードを合わせれば、それがutf8でなくても、\ や 〜 など
の記号も、テーブル名やカラム名に使わなければ、化けることはないようです。

カラム名に使われた\が化けるのは、カラム名の文字セット
character_set_system がutf8であり、変更不可であるのが理由だと思われま
す。

以上の理解でよろしいでしょうか?
もしこれが正しいなら、4.1.11 をインストールしたサーバを用意して、検証
をしようと考えております。

よろしくお願いします。


326 :325:2005/09/21(水) 23:21:24 ID:???
補足です。
本当は、まず自分で試すべきなのですが、私にはサーバ管理の権限がないので、
管理者に頼まなければなりません。頼むにあたって、問題があるかどうかの事
前の見通しを必要としております。

公式サイトからのバイナリのインストールが必要なのか、それともapt-get で
済むのかの見通しがほしいのです。

ご存知の方、どうかお教えください。



327 :NAME IS NULL:2005/09/21(水) 23:24:37 ID:???
>>326
ちょっと待て。ちょっと待て!

まずはサーバーの管理者に相談しろ。

328 :325:2005/09/21(水) 23:58:36 ID:???
>>327
すでに相談しているのですが、管理者にはそういう知識はないのです。
インストールはできますが、SQL をほとんど書いたことのない人たちなのです。


329 :NAME IS NULL:2005/09/22(木) 05:34:10 ID:???
>>328
じゃぁ、てめぇが自分のPCで試せばいいじゃないか?

まさか、2chへの書き込みも会社からで、自宅にさえ自分が管理しているPCが一台も無いなんてことはないよな?


330 :325:2005/09/22(木) 10:47:03 ID:???
>>329
実はそのまさかで、2ch へのアクセスは会社からです。

自宅には win98が1台、Debian Serge が1台ありますが、いずれも極めて貧弱
なマシンで、社の開発・検証環境を構築することができません。Debian には
一応、MySQL4.1 はインストールしてありますが…。


331 :NAME IS NULL:2005/09/22(木) 11:18:55 ID:???
¥や〜が文字化けする、しないの確認をするのにマシンが貧弱かどうかなんて
大した問題ではないでしょうに。
単に動くかどうか判らない段階での環境構築を面倒くさがっているとしか思えないな。
それに、業務で検証が必要なんだから、自宅云々ではなく社内でマシンを用意するのが
普通でしょ。その手続きも面倒なの?

332 :NAME IS NULL:2005/09/22(木) 11:42:51 ID:???
その蒸発した社員の給料分でテスト用PC1台買えと
上司に迫るか
そいつの使っていたPCを再セットアップするとか

333 :NAME IS NULL:2005/09/22(木) 16:30:07 ID:???
誰も使ってないパソコンの1台くらいあるわけでしょ
それを業務外の時間でハードウェアのチェックかけて
業務時間内でOSインスコからmysqlのテストまですればいいのでは

334 :NAME IS NULL:2005/09/22(木) 22:17:58 ID:???
なぜ、他人の会社の事に、そうまで必死になる…

335 :NAME IS NULL:2005/09/22(木) 22:51:19 ID:???
>>334
いや、蒸発した手前、フォローぐらいはしとこうかなと思って…

336 :NAME IS NULL:2005/09/22(木) 23:06:18 ID:???
>>335
山田ぁ!帰って来いっ!
お前の席はまだ空いているぞ!

337 :NAME IS NULL:2005/09/23(金) 00:42:46 ID:???
>>336
課長とかに一緒にあやまってくれるか?
あと、もう一つ言わないといけないんだけど、一つ間違ってテーブル消しちゃってあわててバックアップ戻したらダミーのテーブルだった。
逃げ出した本当の理由はこれなんだ。
ごめん、やっぱり戻れないわ。

338 :NAME IS NULL:2005/09/23(金) 06:55:07 ID:???
ここもネタスレになってしまったか

339 :NAME IS NULL:2005/09/23(金) 09:33:58 ID:???
MySQLの導入を検討していますが、1つ分からない事があったので質問させて下さい。

MySQL(サーバ側)で、発行したSQLのログを見る(テキストなどに出力)事は可能でしょうか?


340 :NAME IS NULL:2005/09/23(金) 10:00:16 ID:???
>>339
可能です。
http://dev.mysql.com/doc/mysql/ja/log-files.html

341 :NAME IS NULL:2005/09/24(土) 05:08:19 ID:usiHEJHi
phpMyAdminから
mysqladmin status
を確認する方法はないのでしょうか?
ランタイム情報には
Queries per second avg
がないようですので…

342 :NAME IS NULL:2005/09/24(土) 21:59:24 ID:fw8iHz42
xamppいれたんだけどmy.iniがありません
どうやってせっていするの?

343 :NAME IS NULL:2005/09/24(土) 22:24:46 ID:???
>>342
サンプルの設定ファイルが数種類用意されてるので
それをコピーしてリネームして、内容を修正する。

344 :NAME IS NULL:2005/09/25(日) 01:52:22 ID:mkYrWzs1
date,type,totalというカラムのテーブルがあり、

2005/9/25 orange 10
2005/9/25 apple 20
2005/9/25 fish 30

というデータが入っているとして、
dateを指定して、
orange=10,apple=20,fish=30
こういう列を取り出したいのですが、
どうやれば実現できるでしょうか?

345 :NAME IS NULL:2005/09/25(日) 07:15:21 ID:???
SQLの仕組みとしては、3行出てくる。

だって、「条件を満たす行を全部書き出す」というのが、SQLのSELECT文のお仕事だもん。

346 :NAME IS NULL:2005/09/25(日) 08:03:39 ID:???
そこでPHPですよ^^

347 :NAME IS NULL:2005/09/25(日) 09:08:57 ID:???
もちろん、PerlでもCでもPythonでもいいぞ。

348 :NAME IS NULL:2005/09/25(日) 09:49:37 ID:???
>>344
MySQLの質問じゃないやん。

SELECT type, total From てーぶる where date = '2005/9/25'; を実行すれば、
どのデータベースでも、日付が一致したレコードをずらずらと出力してくれる。

orange 10
apple 20
fish 30
ってね。

でも、この3行を単一の行にまとめる方法をSQLは提供しない。だって、
そんなことをしたらテーブルの構造が壊れてしまうじゃない? 検索条件しだいで
一行にある、フィールドの数が変わってしまうようなテーブルは、SQLでは
基本的にありえないから。

可変長で切り返しのあるレコード、 orange 10 apple 20 fish 30 は、SQLには
なじまない構造だ。

もちろん、別のプログラムからSQLサーバーを呼び出して検索させる場合には、
SQLサーバーから戻ってきたこの3行を、その呼び出しもとのプログラム(例えば
PHPのスクリプト)で一行に取りまとめ、ウェブなりテキストファイルなりに書き出す
ことは可能だけど、それはもはやMySQLどころかSQLの質問でさえないので・・・

344さんが使っている(使う予定の)プログラム言語に関連するスレッドで聞いた
ほうが、具体的な情報が得られると思うよ。

349 :NAME IS NULL:2005/09/25(日) 12:22:42 ID:???
MySQL4.1をインストールしまして
初期設定でエラーがでました。
↓はエラーの画面です。
http://cgi.2chan.net/up2/src/f90134.jpg

OSは2000です。宜しく御願いします。


350 :349:2005/09/25(日) 12:28:59 ID:???
画像にアクセスできないみたいなんで
こちらにUPしなおしました。
http://oxygen.sakura.ne.jp/uploader/images/112761886400.jpg
宜しく御願いします。



351 :NAME IS NULL:2005/09/25(日) 13:48:30 ID:???
来たのか、コレ。

352 :NAME IS NULL:2005/09/25(日) 14:24:00 ID:???
      ∩___∩
      | ノ  _,  ,_ ヽ
     /  ●   ● |
     |    ( _●_)  ミ
    彡、   |∪|  ノ
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /        ヽ /
   \_,,ノ      |、_ノ

353 :NAME IS NULL:2005/09/25(日) 15:07:33 ID:???
admin権限無いんじゃないのか?
エラー読め

354 :344:2005/09/25(日) 19:09:03 ID:HB0/ElST
説明が下手ですみません。
たしかにプログラムの方でやればいいのですが、
行を列に変換した上で(テンポラリテーブルを生成して)、
さらに他のテーブルとjoinしたいと思っています。
「行を列に変換」で検索したところオラクルでのサンプルは
見つかったのですが
MySQLでなんとかできないのかと思い
質問させていただきました。

355 :NAME IS NULL:2005/09/26(月) 14:02:12 ID:UGRhkP6s
5.0.12でストアドプロシージャを使いたいのですが、エラーが出ます。
mysql> delimiter //
mysql> create procedure proc1()
begin
select * from a;
end//
ERROR 1418 (HY000): This routine has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_routine_creators variable)

何が原因でしょうか?

356 :NAME IS NULL:2005/09/26(月) 16:57:10 ID:???
SET GLOBAL log_bin_trust_routine_creators = 1;
をやれば実行できました。お騒がせしました。

357 :NAME IS NULL:2005/09/26(月) 23:16:59 ID:UtB/D1MP
フィールド名からフィールドのタイプを得るのって
可能ですか? どうすればいいんでしょうか?

結構調べたんですが、のってないです。よろしくお願いします。

358 :NAME IS NULL:2005/09/27(火) 00:06:54 ID:???
>>357
一旦テーブルの情報得て、そっから欲しいフィールドのところだけ抜き出せばいいんでね?

359 :NAME IS NULL:2005/09/27(火) 00:09:47 ID:???
>>357
show fields from テーブル名 like 'フィールド名'
何か言語から得たいのなら、その言語の板で聞きなはれ。

360 :NAME IS NULL:2005/09/27(火) 12:16:40 ID:???
テーブル名:TaisenRecord
UserMei:ユーザの名前
Point:-100から100まで
TaisenID:20050927000001

*8人対戦のゲームなので、TaisenIDはゲーム毎に8個ずつユーザ毎に保存されます。
「ユーザ毎の勝率」をデータとして出したいのですが、お知恵をお借りできないかと。
考えたSQL文:SELECT UserMei, COUNT(Point)/COUNT(TaisenID) AS Shouritu FROM

TaisenRecord where Point > 0 GROUP BY UserMei;
これだと where Point > 0の条件式が、総ゲーム数を出したいTaisenIDの方にも適用されて、勝率を出す事ができません。
Point >0 の条件をCOUNT(Point)だけに適用して、COUNT(TaisenID)には適用せずに、素直

に総ゲーム数とするようなSQL文の書き方を教えて頂けないでしょうか?お願いします。

361 :NAME IS NULL:2005/09/27(火) 12:29:17 ID:???
>>360
できない
エクセルを使うんだ

362 :NAME IS NULL:2005/09/27(火) 12:46:15 ID:???
>>360
テストしていないけど
SELECT TaisenRecord.UserMei, p.PointCount / COUNT(TaisenID)
FROM TaisenRecord
LEFT OUTER JOIN (SELECT COUNT(Point) AS PointCount, UserMei FROM TaisenRecord WHERE Point > 0 GROUP BY UserMei) AS p
 ON TaisenRecord.UserMei = p.UserMei
GROUP BY TaisenRecord.UserMei;

MySQLのバージョンによっては LEFT OUTER JOIN の後に SELECT が置けないので
その場合は、一時テーブルにでも書き出せばいいと思う。

363 :NAME IS NULL:2005/09/27(火) 15:45:11 ID:???
MySQL4.1をインストールした後
コマンドラインクライアントを起動させ
rootで接続することはできましたが
「かねやんMySQLAdmin」というクライアントソフトでは
「コネクト失敗」と出て接続できません

何が原因なんでしょうか?

364 :NAME IS NULL:2005/09/27(火) 16:04:48 ID:???
>>363
使ってるMySQL接続ライブラリの違い。
MySQLサーバ側を古い接続ライブラリで接続
出来るように設定するのが良いんでないか。

365 :NAME IS NULL:2005/09/27(火) 16:39:39 ID:???
「接続ライブラリ」なんて聞いたことがないです…

コマンドプロンプトの画面で作業していて
テーブル作成、レコードの追加を参考書みながら
試しているレベルです。
その参考書には接続ライブラリ変更のコマンド(?)が
載っていないようです。

コマンド型のではやりにくいので、はやくGUIで行える
「かねやん」の方に移行したいのですが…

366 :NAME IS NULL:2005/09/27(火) 23:45:03 ID:???
>>365
その参考書捨てた方が良い。
GUIよりCUI(コマンド)に慣れたほうが今後を考えるならいいと思う。

まぁ最後は好きにすればいいのだが。

367 :NAME IS NULL:2005/09/28(水) 00:23:25 ID:???
>>366
やはりハイスキルな人はCUIが多いんですね
とりあえず今はGUIで行こうと思ってます
なんとか起動できるようにがんばってみます・・・

368 :NAME IS NULL:2005/09/28(水) 00:28:22 ID:64Wfu/+M
MySQL4.0系までと4.1系以降ではユーザ認証のプロトコルが違う。
接続ライブラリの違いってのはこれのこと。

かねやんは使ったことないので良く知らないけど、
ver4.1対応のものでないと駄目なんじゃないの?

MySQLに限らずCUIのほうがスクリプトで作業を自動化したりいろいろと便利だよ。

369 :NAME IS NULL:2005/09/28(水) 00:40:05 ID:???
>>368
一回アンインストして4.0をいれてみた方が良さそうですね

まだレコードの追加すら碌にやり方知らないので…
そんな高度な事は…

370 :NAME IS NULL:2005/09/28(水) 00:58:56 ID:???
初心者こそ、テキストベースでの操作をやってみたほうが、
「自分がどのカラムの何をいじっていて、どういう風に検索しているか」
を、実感することができるよ。

もし、SQLなりMySQLなりについて好奇心を持っているなら、
CUIでしばらく遊んでみることをお勧めする。精神主義でもなんでもなく、

そのほうが「お得」でっせ〜 お客さん!

と、本気でお勧めしたい。

371 :366:2005/09/28(水) 02:58:21 ID:???
>>369
CUIのほうが高度というわけでもない。
GUIだと細かい動きを隠ぺいしてしまうので勉強にはならないとおもう。

だから藻前の持ってる本は捨てろって(ry

372 :NAME IS NULL:2005/09/28(水) 04:54:09 ID:???
>>369
GUI の怖いところは、裏でどんな複雑怪奇なことが起こっているのかをユーザーに
理解させないままで、複雑で高度なことをやってしまうという点で、いや、本当にそれで
全部の仕事が片付いてしまうなら、それはそれで全く問題ない。

大企業で専門家がデータベース様の管理をしてくれていて、すでにテーブルの
構造もデータのチェックも完璧に整っている環境で、事務員さんがアクセスや
エクセルの延長線上にあるものとしてSQLサーバーを使うなら、めんどくさいことを
知る必要は全くない。

だがしかし・・・

たとえMySQLといえども、自分でサーバーをインストールし、自分で
テーブルの構造を設計し、レコードを追加し、テーブルとテーブルにまたがる
検索するようなものを作るということになると、データベースエンジンなるものが、
いつ、どこで、何をやっているのか、一歩ずつ理解するほうが、かえって
勉強の近道になる。一見するとGUIは、簡単だけど、マウスを一発クリックする
だけで、初心者には理解不能なたくさんのコマンドが実行されてしまうから、
勉強しようにも手の付けようがない状態に閉じ込められたまま抜け出せなくなるよ。

373 :NAME IS NULL:2005/09/29(木) 01:23:52 ID:???
Mysql 4.1系で「十」←数字の10って文字 「like %十%」でヒットしますか?
私の環境では何故かヒットしません。。。
navicat 2005でもヒットしませんでした。

DBの文字は
 default-character-set=binary
で設定してます。

対策方法ご存知の方はご教授下さい。

374 :NAME IS NULL:2005/09/29(木) 02:13:01 ID:???
mysql -u root -p
Enter passward: *******
Can't connect to MySQL server on 'localhost';
何もできん

375 :NAME IS NULL:2005/09/29(木) 04:02:55 ID:xRNC5Ndx
>>374
ルートパスワード忘れた、あるいは設定ミスで入れなくなった場合には、
ttp://dev.mysql.com/doc/mysql/ja/resetting-permissions.html

376 :NAME IS NULL:2005/09/29(木) 04:11:00 ID:???
>>373
charsetがbinaryだからでしょ。

create table t1 (c1 char(3)) default charset=cp932;

とかでテーブル作ったらちゃんとヒットしたよ。

377 :NAME IS NULL:2005/09/29(木) 08:41:23 ID:???
intで10を放り込んで、like %十%でヒットしないという話かと思った。

最近ドシロウトな質問多いから、最初から「どうせしょうもない話だろ」と疑ってかかってしまう・・・・・

378 :NAME IS NULL:2005/09/29(木) 11:15:39 ID:???
>>373
Shift_JIS では、「十」=0x8F5C、「\」=0x5C で、binary だとエスケープ記号と
認識されてしまう。
同様によく問題になるのが「能」=0x945C。


379 :NAME IS NULL:2005/09/29(木) 11:19:19 ID:7+gpDoj7
MySQL 5.0系初のRC版「MySQL 5.0.13」がリリース
http://pcweb.mycom.co.jp/news/2005/09/28/010.html

サブクエリのみならず、ついにビューやトリガが使えるようになるのか。
4.0 → 4.1 の移行に比べれば、4.1 → 5.0の移行は簡単そうだ。
記念age。


380 :NAME IS NULL:2005/09/29(木) 14:49:13 ID:???
>>376-378
ありがとうございます。
373です。
以下のSQLを実行したのですが反映されないです。
 ALTER TABLE `table_name` CHANGE `yomi` `yomi` VARCHAR( 250 ) CHARACTER SET sjis NOT NULL
 ALTER TABLE `table_name` CHARACTER SET = sjis
テーブルを作り直したほうが良いですかね。。。

>>377
まさか・・・

381 :NAME IS NULL:2005/09/29(木) 15:26:46 ID:???
文字コードの *変更後* に登録したデータは「like %十%」でヒットするのではないか。
以前、SJIS -> EUC に変換したときに、WHERE で既存データがマッチしない現象に
チト悩んだことがあったので(DUMP -> 文字コード変換 -> リストアで直った)。
binaryは使ったことないのでハズしているかもしれんが。。。

382 :NAME IS NULL:2005/09/29(木) 15:56:50 ID:???
373です。

今気付いたのですが
 ALTER TABLE `table_name` CHANGE `yomi` `yomi` VARCHAR( 250 ) CHARACTER SET sjis NOT NULL
 ALTER TABLE `table_name` CHARACTER SET = sjis
も反映されてましたが、10万レコードのyomiデータが「????」に
なってましたorz


383 :NAME IS NULL:2005/09/29(木) 16:59:27 ID:???
ulogdを使ってiptablesで弾いたログをMySQLのデータベースに格納するようにしてみたのですが、
これってどこまで記録され続けるんでしょうか。
普通のログファイルなんかだと、1週間ごとにローテーションさせたりとかしますが
データベースだとどういう風に管理すれば良いんでしょう。

my.cnfにサイズの上限設定するのかと思っていたんですがそういう項目無いみたいだし・・・

使用しているのはMySQL 4.1.14です。

384 :NAME IS NULL:2005/09/29(木) 18:50:11 ID:???
>>383
記憶媒体の限度まで。

古いものは削除するように、ルーチン入れたら。

385 :NAME IS NULL:2005/09/30(金) 02:17:37 ID:???
>>367
GUIツール使うなら、本家のツールだけにしとけ。
http://www.mysql.com/products/tools/administrator/
http://www.mysql.com/products/tools/query-browser/
英語が分からない、などというのは却下。MySQLの吐くのエラーメッセージもSQLコマンドも全て英語ベースだ。
逆に意味の分からん用語があれば、その用語で英語マニュアルを検索するぐらいのつもりで使え。
そうすりゃ理解も早まるだろう。
日本語マニュアルは、英語マニュアルで意味の分からない部分が出た場合、同じセクションを覗く程度にしておけ。

後、例えGUIツールを使っても、DB操作はコマンド手入力しろよ。
なぜなら、PHP等からDBを扱うためには、CUIと同じように、
必ず、自分で、SQL文を作成することが必須。

CUIで使うコマンドを覚えなくても良いのは、人様が開発したアプリの動作環境としてDBが必須な場合だけ。
それも、DB保守まで含めた高価なサポート料支払う場合に限るがな。

386 :NAME IS NULL:2005/09/30(金) 02:22:24 ID:3xJ+N7MW
>>383
ver4.x以降では800万テラバイト(2^63 バイト)とのこと。

んで実際にはOSのファイルサイズ上限が限界とのこと。
でもMergeテーブルを使えばOKとのこと。
InnoDBでもfile_per_table使えばいいのかねぇ?

詳しい話はこちらに http://dev.mysql.com/doc/mysql/ja/table-size.html



387 :NAME IS NULL:2005/09/30(金) 02:25:41 ID:???
>>367>>385
見れば分かるけど、英語マニュアルのほうは日々追加更新されてっている。
でも日本語のほうは更新されていないっぽいので、既に目次レベルで差がでてる。

だからまずは英語版をあたるのが良いと思う。
それに対応する日本語ページがあり、ぱっと見内容に差異がなさそうであれば、
もちろん日本語のほうが分かりやすいのでこっちを読むけど。

388 :NAME IS NULL:2005/09/30(金) 16:18:49 ID:???
ttp://dev.mysql.com/downloads/mysql/4.0.html
にあるMySQL 4.0.26をMac OS X 10.4.2にインストールしようとすると
インストーラが「インストールできません」と言います。

確かに「Installer package (Mac OS X v10.3)」と書いてありますが、
10.4.2にはどうやったら4.0.26をインストールできるのでしょうか?

(4.1はインストールできたんですが、認証形式がまだ特殊らしいので4.0にダウングレードしたいのです。)

389 :NAME IS NULL:2005/09/30(金) 16:22:08 ID:wPRUUBnI
mysql.sockとは何ですか?プログラムですか?
# /etc/init.d/mysql start
すると、/var/lib/mysql/mysql.sockがチラっと見えます。
mysql.sockは一時ファイルだと予想しましたが、MySQLインストール直後に
find / -name mysql.sock -print がヒットしなくてもインストールは正常?

390 :NAME IS NULL:2005/10/01(土) 03:41:08 ID:???
http://www.google.co.jp/search?q=mysql.sock&hl=ja&lr=lang_ja&ie=utf-8&oe=utf-8

391 :NAME IS NULL:2005/10/01(土) 10:46:41 ID:sipdXsCV
>>390
君は自分のサイトを宣伝したかっただけかorz

392 :NAME IS NULL:2005/10/01(土) 10:48:45 ID:sRgRD7pr
>>391
え? こんなことに Google の社長様がご降臨あそばしたの!?

393 :NAME IS NULL:2005/10/01(土) 14:20:36 ID:???
面白いと思って切り返したんだろうな・・・

394 :NAME IS NULL:2005/10/01(土) 15:25:03 ID:???
面白い突っ込みをしたつもりなんだろうな・・・

395 :NAME IS NULL:2005/10/02(日) 09:33:56 ID:???
なんかMYSQL5がダウンできん・・・

396 :NAME IS NULL:2005/10/02(日) 19:37:58 ID:???
ちょっとお聞きしたいのですが、空テーブルを作成することは可能でしょうか?
もし、可能でしたらやり方を教えていただけませんでしょうか?
当方、MySQLのVer4.1使用です。

397 :NAME IS NULL:2005/10/03(月) 00:15:50 ID:???
空テーブルって? 意味がさっぱり。
rowのないテーブルならいくらでもつくれるが。


398 :NAME IS NULL:2005/10/03(月) 02:43:18 ID:09MzqyX1
カラムが1つもないテーブルは作れないよ。

ERROR 1090 (42000): You can't delete all columns with ALTER TABLE; use DROP TABLE instead

399 :NAME IS NULL:2005/10/03(月) 11:10:54 ID:???
>>362さん、
遅レスですが、回答ありがとうございました!
やっと休みがとれて・・PCの前に来れた次第です。。。。
mysqlのバージョンは4.0.10だったんですがどうもうまくいきませんでした
Version確認してちょ っていうエラーで。
4.1にバージョンアップする作業がんばってみます。


400 :NAME IS NULL:2005/10/03(月) 18:26:20 ID:???
MyODBCを利用してVisualBasicから
MySQLを操作する方法が分かりません。

データソースの設定は「ユーザDSN」タブにて行いました。
テスト用のテーブルも幾つかMySQLに作成しています。
次に、どのようなコードをVBで書けばいいかが
全くわからない状態です。
どなたかご教授お願いします。

環境は以下のとおりです。
MySQL: 4.1
MyODBC: 3.51
VisualBasic: 2003 (VisualStudio内の)

401 :NAME IS NULL:2005/10/03(月) 18:36:45 ID:???
http://tsuttayo.sytes.net/mysql/odbc/vb.html

402 :NAME IS NULL:2005/10/03(月) 20:38:20 ID:???
ホームページをつくって
データをMSQLでアクセスして入力し、
データのソートとかをホームページ上で
実現させたいんですが

これってPHPで実現させるんでしょうか?

403 :NAME IS NULL:2005/10/03(月) 20:52:41 ID:???
別に好きなの使えばいいんじゃないの


404 :NAME IS NULL:2005/10/03(月) 22:32:16 ID:???
396です。

>>398
やはり無理ですか、裏技的なものがないかなぁと質問してみたのですが・・・
ありがとうございました。

405 :NAME IS NULL:2005/10/03(月) 22:54:54 ID:???
>>402
べつにPerlからMySQLを利用することだってできるけど・・・
問題は、そもそも402の使うウェブサイトがMySQLを提供しているか
という点ではないのか?

406 :NAME IS NULL:2005/10/03(月) 23:04:02 ID:/hziuCvR
# mysqld_safe --datadir=hoge
このようにして起動して、起動後にdatadirの値を
確認するにはどうしたらよいですか?

407 :NAME IS NULL:2005/10/03(月) 23:17:38 ID:???
psコマンドにしかるべきオプションを食わせてやれば

408 :NAME IS NULL:2005/10/03(月) 23:21:24 ID:???
又は起動スクリプトを使用してあとでそれを参照する

409 :NAME IS NULL:2005/10/03(月) 23:21:59 ID:/hziuCvR
僕を叱って下さい。
# ps axu で、右の方に--datadir=/usが見えましたが
コンソール右端で切れて見えません。
クスコで広げる方法を教えてください。

410 :NAME IS NULL:2005/10/03(月) 23:23:08 ID:???
ps -efでダメかYO

411 :NAME IS NULL:2005/10/03(月) 23:30:53 ID:/hziuCvR
ps -efでも同じように切れましたがフォントを小さくしたら見えました。
もしもっと長かったら>でリダイレクトして見ればいいのかな。
ありがとうございました。

412 :NAME IS NULL:2005/10/04(火) 00:01:43 ID:???
>>409
ps axww

413 :NAME IS NULL:2005/10/04(火) 00:47:00 ID:3diVCpAB
>>412 ひろがりました。ありがとうございます。

414 :NAME IS NULL:2005/10/04(火) 15:46:36 ID:???
>>406-413
MySQLスレなんだから、MySQL内でなんとかしようよ

SHOW VARIABLES LIKE "datadir";
これでいけるでしょ

415 :400:2005/10/04(火) 16:47:57 ID:RwnDnVsQ
>>401
リンク先のコードの上2行がエラーとなっています。
どのようになおせばいいんでしょうか?

また、同じサイト内の
http://tsuttayo.sytes.net/mysql/install/odbc/10/30/20/20/install.php
も参照にして設定を行いました。

416 :NAME IS NULL:2005/10/04(火) 17:44:27 ID:???
初歩的な質問すいません。

No word value
---------------
1  name ああ
1  age  18
1  place 日本
2  name いい
2  age  19
2  place 日本

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

word="name" and value="ああ" と
word="place" and value="日本" を満たすNoの一覧を取得したいのですが、
どのようなSQL文になるんでしょうか?
以下を思いついたのですが、Emptyになってしまいます。
アドバイスお願いします。

select No
from XXX
where
(word="name" and value="ああ") and
(word="place" and value="日本")


417 :NAME IS NULL:2005/10/04(火) 17:48:56 ID:???
>>416

or じゃないの?

418 :NAME IS NULL:2005/10/04(火) 17:51:54 ID:???
>>417
いえ、両方の条件を満たすレコードのNo一覧が欲しいのです。

419 :NAME IS NULL:2005/10/04(火) 17:54:30 ID:???
>>416 >>418
(word="name" and value="ああ") と (word="place" and value="日本") を
両方満たすという条件なんてありえんぢゃろ?
例で示しているテーブルから、どのレコードが返って欲しいのか書き出してみそ。

420 :http:// YahooBB220024098009.bbtec.net.2ch.net/:2005/10/04(火) 18:15:38 ID:???
guest

421 :NAME IS NULL:2005/10/04(火) 18:16:41 ID:???
>>419
確かに両方を満たすことなんて有り得ないですね。
かといってorではないです。
例の場合はNo=1だけがヒットして欲しいです。

422 :419:2005/10/04(火) 18:36:22 ID:???
末尾のSQLで期待の動作はすると思うが、そもそもテーブル設計がマズイような。。。
こんなテーブルの方が自然ぢゃね?
No name age place
--------------------
1  ああ 18 日本
2  いい 19 日本

SELECT XXX.no FROM XXX
INNER JOIN XXX AS t ON XXX.no = t.no AND t.word = 'place' AND t.value = '日本'
WHERE XXX.word = 'name' AND XXX.value = 'ああ';

423 :NAME IS NULL:2005/10/04(火) 19:36:52 ID:???
INNER JOINする必要ある?

424 :NAME IS NULL:2005/10/04(火) 22:20:05 ID:???
漏れも、自分自身のテーブルを結合するのがスマートだと思ったけど・・・・他に方法ある?


425 :419:2005/10/04(火) 23:00:01 ID:???
>>423
・MySQLのバージョンが記載されていなかったのでサブクエリが使用できるかどうか不明
・SELECT XXX.no FROM XXX, XXX as t WHERE ... だとレコード数の2乗がWHERE対象になる
という理由で自己結合で書いたんだが。。。
他に良い方法があればご教示ヨロ。

426 :NAME IS NULL:2005/10/05(水) 01:02:34 ID:JTV4Wb06
MySQLにXML文書を格納したいんだけどXMLサポートしてないんだよね?MySQLって。
Oracleなどはしてたような気がするけど

427 :NAME IS NULL:2005/10/05(水) 08:58:32 ID:???
>>426
俺も詳しいことは知らないが、XMLサポートあることはある。

http://www.mysqluc.com/presentations/mysql05/alexander_barkov.pdf

428 :NAME IS NULL:2005/10/05(水) 17:30:31 ID:7ZhDZrog
grant select,insert on testdb.* to testuser@localhost identified by 'xx';
この後testuserの設定値のselect,insertを得るコマンドを教えてください。

429 :NAME IS NULL:2005/10/05(水) 22:24:48 ID:???
dev.mysql.comの日本語マニュアル、更新してくれないかなぁ

プリペアドステートメントの仕様の辺りなんか、仕様変更のせいで大嘘書いてあって大混乱したし・・・・・


他人本願と言われればそれまでなんだが。


430 :NAME IS NULL:2005/10/05(水) 23:58:25 ID:udn/pwKt
ちょっと教えてください。
スレッド数=クライアント数なのでしょうか。
I/OスレッドってInnoDB用の何かの領域なのでしょうか。
スレッドとI/Oスレッドの機能がいまいちよくわからないのです。
よろしくお願いします。


431 :NAME IS NULL:2005/10/06(木) 00:27:25 ID:???
>>429
とりあえずMLに投げれよ。
おまえから初めればよかろう。期限やノルマなんて無いんだからさ。

432 :NAME IS NULL:2005/10/06(木) 03:44:37 ID:???
>>430
スレッド数=クライアント数+α

InnoDBは確か専用のI/Oスレッドを持っているはず。パラメータで変更も可能。
デフォルトは4か2かだった気がする。詳しくは自分で調べれ。

基本的にはクライアントが新しく接続にくるたびに、そのクライアント専用のスレッドが
用意されて対応する。

ただしスレッド自体はクライアントが切断しても消えることなくキャッシュされていて、
別のクライアントが接続にきた時に再利用されるなどの仕組みがある。

したがって今この瞬間に同時にクライアント10台から接続を受けているからといって、
mysqld内のスレッド数が10+αで一意に決まるってわけじゃない。

で、やっぱり詳しくは自分で調べれ。


433 :NAME IS NULL:2005/10/06(木) 03:48:43 ID:???
>>428

mysql> grant select,insert on testdb.* to testuser@localhost identified by 'xx';
Query OK, 0 rows affected (0.02 sec)

mysql> SELECT select_priv, insert_priv FROM mysql.db WHERE db='testdb' AND user='testuser' AND host='localhost';

+-------------+-------------+
| select_priv | insert_priv |
+-------------+-------------+
| Y | Y |
+-------------+-------------+
1 row in set (0.03 sec)

434 :NAME IS NULL:2005/10/06(木) 03:49:48 ID:???
>>428
おまいさんはmysql権限データベースも知らんのか?

435 :NAME IS NULL:2005/10/06(木) 10:07:28 ID:???
知らんくってわるいか!!このボケナスが!!

436 :NAME IS NULL:2005/10/06(木) 10:17:21 ID:???
知らないから聞いてるんじゃねーか!!このバカンスが!!

437 :NAME IS NULL:2005/10/06(木) 22:09:53 ID:???
ミナミの〜島のカメハメハ・・・

438 :NAME IS NULL:2005/10/06(木) 23:51:39 ID:oJrMDeAZ
>432
430です。ご意見ありがとうございます。
助かります。


439 :NAME IS NULL:2005/10/07(金) 11:24:09 ID:OeMZClMO
rootの権限が全部なくなった。
再インストール以外の復活方法や、MySQLをインストールする時に
行われるrootユーザの作成プロセス部分だけを漏れが任意に
実行する裏技キボン。

440 :NAME IS NULL:2005/10/07(金) 11:33:24 ID:???
>>439
管理者に賄賂を贈って権限をもらう。

441 :NAME IS NULL:2005/10/07(金) 11:50:59 ID:???
低レベルな質問で申し訳ございません。
MySQLにてデータを保存しているデータをHTMLの<SELECT>の<OPTION value="">
で呼び出すにはどうしたらよいでしょうか?
よろしくお願い致します。

442 :NAME IS NULL:2005/10/07(金) 11:54:00 ID:???
Perl, PHP, Java 等の何かしらの言語を使って
1) MySQLからデータを取り出し
2) <SELECT><OPTION value="">を生成
というプログラムを作成する

443 :NAME IS NULL:2005/10/07(金) 14:23:02 ID:???
>442
 ごめんなさい。ちょっとよくわかりません。
 使用言語はPerlを使用しています。

444 :p:2005/10/07(金) 15:40:18 ID:pnKsQtLU
5

445 :NAME IS NULL:2005/10/07(金) 15:43:35 ID:???
>>439
権限データベースを削除して、mysql_install_dbを実行すれば
最初の状態にはなると思う。

446 :NAME IS NULL:2005/10/07(金) 15:56:25 ID:OeMZClMO
>>445
ありがとうございます。おかげで復活いたしました!

447 :NAME IS NULL:2005/10/07(金) 16:42:29 ID:???
The samurai please answer in English.
http://forums.mysql.com/read.php?34,48251,48251#msg-48251

448 :NAME IS NULL:2005/10/07(金) 23:12:59 ID:???
名前見るからに日本人だよな・・・・・

バグに引っかかってるかどうか知らんが、

width → with
show grantsの使い方くらいは覚える
flush privilegesの使い方くらいは覚える

バグに引っかかっているのなら、アップデートの仕方を覚える


449 :NAME IS NULL:2005/10/07(金) 23:17:51 ID:xS73BXyY
you mother fucker!!

450 :NAME IS NULL:2005/10/07(金) 23:23:55 ID:???
(;´Д`)ハァハァ

451 :NAME IS NULL:2005/10/07(金) 23:45:05 ID:???
>>443
そういうのはCGIなPerlのトコで聞いてください。


452 :NAME IS NULL:2005/10/08(土) 01:45:13 ID:gUciMCWp
>>448 nice
The samurai please answer in English.
http://forums.mysql.com/read.php?34,48251,48333#msg-48333

453 :NAME IS NULL:2005/10/08(土) 01:46:26 ID:8KBHw8AA
>>439
単にrootパスワード忘れちゃっただけとかなら"--skip-grant-tables"指定してmysqld再起動すれば
パスワード認証無しで入れるからそれでもいいとおもうけどな。権限設定終わったらもちろん
--skip-grant-tables無しで再起動で通常状態に。

454 :NAME IS NULL:2005/10/08(土) 05:01:45 ID:N+iSLgRb
トランザクションが必要ではないのですが、
大量の更新作業があるテーブルはMyISAMとInnoDBのどちらがいいでしょうか?

大量に更新する部分のカラムはsmallint,mediumint,varcharの3種類です。

455 :NAME IS NULL:2005/10/08(土) 05:08:53 ID:???
>>454
大量の更新がある場合は、フラグメンテーションの
起こりにくいInnoDBの方がいいでしょう。

456 :NAME IS NULL:2005/10/08(土) 05:22:25 ID:???
>>454
『High Performance MySQL』(実践ハイパフォーマンスMySQL)には確か以下のように書かれていた。

Read/Writeの比率
・Readが90%以上 → MyISAMが一番速い
・Readが80%から90% → BDBが一番速い
・Readが80%未満 → InnoDBが一番速い

間違ってたらゴメソ。参考程度にな!

457 :454:2005/10/08(土) 05:29:24 ID:???
>>455
>>456
わかりました!ありがとうございました!!

458 :NAME IS NULL:2005/10/08(土) 09:58:47 ID:DbukFtVS
おぃ、お舞らOracleがInnoDBを買収したってプレスリリースがでてますよ!

http://www.oracle.com/corporate/press/2005_oct/inno.html

MySQL AB側もWelcomeとかいう感じのメッセージ出してる。

http://www.mysql.com/news-and-events/news/article_968.html

これからどーなってくんだろう。

459 :NAME IS NULL:2005/10/08(土) 11:05:46 ID:???
InnoDBって名前がまず気に入らない
まるでチンコ不能なDBみたいじゃないか。

460 :NAME IS NULL:2005/10/08(土) 12:35:26 ID:???
陰嚢db なのか?!

461 :NAME IS NULL:2005/10/08(土) 12:40:41 ID:???
おまくる

462 :NAME IS NULL:2005/10/08(土) 12:50:09 ID:???
中学生かお前は。
イノベーション(innovation = 技術革新)以外、今の今まで考えもしなかっ
たよ。


463 :NAME IS NULL:2005/10/08(土) 13:50:25 ID:???
中学生はイノベーションよりマスターベーション

464 :NAME IS NULL:2005/10/08(土) 14:07:34 ID:???
すまん俺も in と no を分けて呼んでた orz

465 :NAME IS NULL:2005/10/08(土) 17:25:01 ID:???
>>458
まあ下手に敵対的なコメント出しても裏目に出るだけだろうし<Welcome

やばいかもしれんね。特にコマーシャルライセンスの位置づけ。
IBMやSUN、最近はMicrosoftでさえオープンソースコミュニティや
ハッカー(悪い意味じゃない方の)と折り合いを付けようとしているけど
Oracleにはその香りがしない。
Innobaseを資金的に補助するっつー絵が想像できない。

有り体に言って、潰す気だろう。
InnoDB使えなくなったらMySQLから離れるって人はかなり多いはず。

466 :NAME IS NULL:2005/10/08(土) 18:49:23 ID:Jqmxvx7i
ライセンスのGPLは変えないと思うけど。
俺来るのポ優れ対策ではと。。。

467 :NAME IS NULL:2005/10/09(日) 01:25:04 ID:qXIKHGf+
もしかした「イノベーションのジレンマ」を何とかするために
Oracleが考えた秘策だったり?

468 :NAME IS NULL:2005/10/09(日) 03:48:58 ID:???
http://2ch.net/

469 :NAME IS NULL:2005/10/09(日) 12:39:27 ID:???
in no DB
inn p oDB

470 :NAME IS NULL:2005/10/09(日) 13:33:29 ID:???
居乃出美

471 :NAME IS NULL:2005/10/09(日) 19:48:23 ID:???
真面目な話、OracleでのHeikkiの待遇ってどうなるんだろうね。
HeikkiはInnoDB作った人ね。

472 :NAME IS NULL:2005/10/10(月) 00:31:57 ID:???
ヒッキー?

473 :NAME IS NULL:2005/10/10(月) 10:05:28 ID:+XVZSTvE
InnoDBのダイナミックダンプは有償だったが,これをOracleが販売サポートするのだろうか?

474 :NAME IS NULL:2005/10/10(月) 12:06:10 ID:???
InnoDBってGPLだったような・・・
だとしたらライセンス的にはOracleには取り込めないんじゃないのか?
取り込んだらOracle本体のソースコードもGPLにしなきゃいけないはずだから。。。

475 :NAME IS NULL:2005/10/10(月) 13:00:18 ID:???
http://pcweb.mycom.co.jp/news/2005/10/08/001.html
>オープンソースコミュニティへのコミットの一環
らしい

476 :NAME IS NULL:2005/10/10(月) 14:54:52 ID:???
んなわけないべ。ここまで露骨なMySQLつぶし。

477 :NAME IS NULL:2005/10/10(月) 16:40:00 ID:???
>>474
Oracleに取り込むかどうかは置いておいて、
>InnoDBってGPLだったような
が間違い。GPLだけじゃなくてソース隠蔽可能なコマーシャルライセンスもある。
でなければそれを組み込んだMySQLで、コマーシャルライセンスなんて出来ないでしょ。

478 :NAME IS NULL:2005/10/10(月) 16:50:29 ID:???
こうなるとInnoDBに代わる強力なDBがほしい。
案1.BDBを更にチューニング
案2.InnoDB開発陣をBDBあるいはmysql本体への取り込みを画策・・・

現実的じゃないなぁ・・・

479 :NAME IS NULL:2005/10/10(月) 17:28:41 ID:???
data\cshost96.err
data\cshost96.pid
data\ib_logfile0, data\ib_logfile1
data\ibdata1
などのファイルは削除しても問題ないんでしょうか?
サイズが大きいので出来ればけいしたいのですが。

480 :NAME IS NULL:2005/10/11(火) 01:31:57 ID:vPBIE0Xh
>>479
ホスト名.err → エラー出力ログファイル 消してもOK
ホスト名.pid → MySQLが起動しているかどうかの判定に使用されるファイル 消しちゃ駄目だって
ib_logfile0およびib_logfile1 → これはInnoDBのREDOログファイルだよ 消したら動かなくなるっつうの
ibdata1 → これはInnoDBのデータファイルだよ 消したらデータ無くなるっつうの

InnoDB使わないから要らないってのなら --skip-innodb オプションを指定してサーバを起動した後、
上記InnoDB関連ファイルを削除すべし。

481 :479:2005/10/11(火) 03:32:48 ID:AfTi8Fmy
>>480
どうも
なんかややこしいっすね
とりあえずerrだけ消しときます。

それと、新たに別のPCにMySQLを入れたので
そっちにもデータをコピーしたいんですが
Dataフォルダの中を全部コピるだけでOK?

482 :NAME IS NULL:2005/10/11(火) 05:06:04 ID:???
【殿様商売】 Oracle、有力オープンソースDBを金の力で潰す
http://news19.2ch.net/test/read.cgi/news/1128967487/

483 :NAME IS NULL:2005/10/11(火) 09:49:34 ID:/XI8s+SH
InnoDBってdata以下のファイルでコピーして他の環境に持ってゆくと使用中です!とか言われるんだけど、
MySQLをシャットダウンしてからコピーしても駄目なの?
data以下をコピーしてWin <-> Linux間を移動出来る形式ってどれだろう・・・

484 :NAME IS NULL:2005/10/11(火) 10:13:01 ID:???
>>483
つ[http://dev.mysql.com/doc/mysql/ja/moving.html]

485 :NAME IS NULL:2005/10/11(火) 10:13:17 ID:???
4.1って、復問い合わせとビュー使える?

486 :NAME IS NULL:2005/10/11(火) 11:34:24 ID:???
>>484
ありがとうございます。
稼動状態であれば有償ツールを使うしかないようですね(--; 高いって。

mysqldumpを利用した場合、mysqldump --single-transaction オプションを付ければ
innoDBもバックアップ出来そうですが、こちらは外部キーを設定しているinnoDBテーブル
の一部でリカバリに失敗する可能性があるらしいですね。

もう少し詳しく調べてみたいと思います。

487 :NAME IS NULL:2005/10/11(火) 13:51:23 ID:vPBIE0Xh
とりあえずOS非依存でコピペだけでどこに持っていっても動くことで知られているのはMyISAM。

488 :NAME IS NULL:2005/10/11(火) 13:53:42 ID:???
>>484
副問い合わせは4.1から、viewは5.0からだった希ガス。

489 :NAME IS NULL:2005/10/11(火) 14:06:23 ID:???
>>488
なるほど。d。
5.0って、まだα版って感じですかね?

490 :NAME IS NULL:2005/10/11(火) 14:38:44 ID:???
>>489
ver5.0.13がRC(Release Candidate)版だよ。

Stable > RC > beta > alfa

491 :NAME IS NULL:2005/10/11(火) 14:48:03 ID:???
alfa

492 :NAME IS NULL:2005/10/11(火) 15:06:09 ID:???
>>490
禿しくd!

493 :NAME IS NULL:2005/10/11(火) 15:38:06 ID:???
本当の stable は x.1 からだよ

494 :NAME IS NULL:2005/10/11(火) 16:34:05 ID:vPBIE0Xh
>>493
x.y.zとした場合、xがカウントアップされるのは大幅機能追加、
yも機能追加、zがバグ修正だと思うけど。

ver5.0.13は安定しつつあるけどver5.1.xはまだまだでしょ。

495 :NAME IS NULL:2005/10/11(火) 18:44:21 ID:0dv9mXs5
すいません。質問させて下さい。

あるテーブルの中の情報を他のホストの同じテーブル構造にinsertしたいと
考えています。そこで、テーブルの中の情報をSQLに落とし込みしたいのですが
可能でしょうか?

some_tableをsame_table.sql にし、違うホストで、source some_table.sql
する。他に良い方法があればアドバイス頂ければ助かります。宜しくお願い
致します。

496 :NAME IS NULL:2005/10/11(火) 20:23:15 ID:82ho+KsK
MySQL4.1です。

日付データ(YYYY-MM-DD HH:MM:SS)を使って、月毎の行数を知りたいのですが

SELECT count( formatDate ) , formatDate
FROM (
SELECT date_format( date, "%y/%m" ) AS formatdate
FROM `test`
) AS sub
GROUP BY formatDate

よりも、もっとスマートなやり方はないのでしょうか?

497 :NAME IS NULL:2005/10/11(火) 20:36:49 ID:???
>>496
サブクエリは別にいらないと思う。

SELECT count(*), date_format(date, "%y/%m") AS formatDate
FROM test
GROUP BY formatDate;

498 :NAME IS NULL:2005/10/11(火) 20:38:41 ID:???
SELECT date_format(formatDate , '%Y-%m') , count(*)
FROM test GROUP BY date_format(formatDate , '%Y-%m')

とか

499 :496:2005/10/11(火) 20:46:28 ID:???
>>497-498
ありがとうございます。

そうですね、普通にそれで出来ました。しかも早くなって嬉しい限り。

500 :NAME IS NULL:2005/10/12(水) 07:13:25 ID:???
>>495
ある時点でのデータを別のサーバに持っていきたい場合は、

myisamなら単にテーブル(FRMファイル、MYIファイル、MYDファイル)をコピー&ペースト。
それ以外はとりあえずmysqldumpの使用を検討か。

常時それを行いたいならレプリケーションを使う。

501 :NAME IS NULL:2005/10/12(水) 16:50:32 ID:Nn1nCqw6
mysql 3.23.58 のデータをmysqldumpで取って4.1.14に入れようと思ったら互換性がないみたいで入らないのですが
何かいい方法ありませんでしょうか?

502 :NAME IS NULL:2005/10/12(水) 18:18:53 ID:YJf8iZjT
>>501
え???どうなるのよ?

503 :NAME IS NULL:2005/10/12(水) 22:03:40 ID:???
>>501
mysqldumpのバージョンが3.23系に付属のそれということでは?
4.1系のmysqldumpで3.23のデータをダンプしたものを
4.1にインポートすればたぶん動くとおもう

504 :NAME IS NULL:2005/10/13(木) 03:08:35 ID:???
>>503
501はMySQL3.23と4.1の仕様の違い、例えばcharの長さの考え方が変わったとか
そんなのを簡単するマイグレーションツールないの?ってことかと思った。

505 :501:2005/10/13(木) 12:31:16 ID:WBVtPxcB
>>502 /*! 〜 という行が数行流れて止まるのです。
>>503 ってことは現3.23代をバージョンアップしてからってことになるのですね

結局 dumpコマンドとしてでなく sql文として実行してやればなんとかデータを入れたりはすることができました
ありがとうございました。

が又別の問題が発生したのですが
データ元のsql文字コードはlatin1 ここにEUCコードとしてデータを登録して使用しておりdumpしてとったファイルはそのまま
4.1側のsqlに入れようとすると文字化けします。 4.1側の文字コードはujisでshow character set コマンドでみるとEUC-JP と書いているので
あっていると思うのですが何故なんでしょうか?

506 :NAME IS NULL:2005/10/13(木) 13:39:30 ID:???
質問させてください。
MySQLでユーザ毎に容量制限するにはどうしたらいいでしょうか?


507 :NAME IS NULL:2005/10/13(木) 14:08:36 ID:???
>>505
その説明だけだと状況がいまいちわからんので一般的なアドバイスのみ。

SQL文としてデータを持っているのなら(INSERT文の列挙)、次のようにやれば文字化けはしないはず。

1. テーブルをujisで作成する。 CREATE TABLE t1 (c1 char(1)) default charset=ujis;
2. SQLを実行するクライアントの文字コードをujisにあわせる。 set names ujis;
3. 流し込み実行。

あと文字化けにもいろんなパターンがあるんだが、どういう文字化けになってる?
半角クエッションマーク"?"に成っているのか、なんともいえないぐちゃぐちゃなやつなのか。

あと文字化けの原因を突き止める上でGeneral Logを見るのは結構重要。
General Logを出すようにServerを設定して(起動オプションに--logをつける等)
まずMySQLサーバに文字化けせずに届いているのか、あるいはその前の時点で化けているのか調べるべし。

508 :NAME IS NULL:2005/10/13(木) 14:09:25 ID:???
>>506
MySQL自体にはそういう機能はないと思う。

509 :NAME IS NULL:2005/10/13(木) 23:39:59 ID:???
MySQLでのIndexの張り方について質問です。
特にマルチカラムインデックスについていまいちよくわかってないのですが、

「ID (主キー), 氏名, 都道府県, 市区町村, 住所以下」
という構成のテーブルがあるとして(データ量は1000万件程度)、
都道府県から検索したり、氏名and都道府県の組み合わせで検索したりと、
それぞれのカラムを自由に組み合わせて検索できるようにする場合は
どのようなインデックスの張り方が考えられるでしょうか?

MySQLは一度の検索にひとつのインデックスしか使用しないとのことなので、
複数のwhere条件を組み合わせる場合はマルチカラムインデックスを使用する必要があると
理解しているのですが、すべてのカラムが検索条件になりうる場合は単純に
すべてのカラムをひとつのマルチカラムインデックスに含めれば良いのでしょうか?

510 :NAME IS NULL:2005/10/13(木) 23:48:45 ID:A31Z9e2F
>>509
もしそれが例えじゃないなら・・・それ以前になんかがおかしくないか???

511 :509:2005/10/13(木) 23:57:55 ID:???
えっ すいません、恥を忍んで聞きます。
どこがおかしいのかわかりません。
教えてください。

512 :NAME IS NULL:2005/10/14(金) 03:13:54 ID:???
>>509
「いまいち良く分かっていない」ということなのでとりあえずここ読め。
ttp://dev.mysql.com/doc/refman/4.1/ja/mysql-indexes.html

513 :NAME IS NULL:2005/10/14(金) 04:53:37 ID:???
>>509
とりあえず・・・

> 複数のwhere条件を組み合わせる場合はマルチカラムインデックスを使用する
> 必要があると理解しているのですが、

これ、違うと思う。インデックスなしで検索はできるでしょ?

514 :509:2005/10/14(金) 12:17:01 ID:???
>>512

>mysql> SELECT * FROM tbl_name WHERE col1=val1 AND col2=val2;
>col1 と col2 に複合インデックスが存在する場合、対応するレコードを直接読み取れます。

これを「col1とcol2が検索条件のときにそれらを含むマルチカラムインデックスがあればベスト」と読んだのは間違い??
すなわち「複数のwhere条件を組み合わせる場合はマルチカラムインデックスを」と理解してたんですが・・・。

>>513
インデックスなしで検索って・・・?
説明が足りなかったけど、少しでも負荷を減らしたいとおもってて。
現実にインデックスなしで1000万件のテーブルに検索かけることって無いですよね。


515 :NAME IS NULL:2005/10/14(金) 12:29:14 ID:???
col1 だけの索引で十分に絞り込めるならマルチにする必要は無い。
col1+col2 の索引がある場合に col2 だけが検索条件の場合は索引は使われない。
氏名, 都道府県, 市区町村, 住所をいろいろな組み合わせで検索したいということなら
それぞれで単一の索引を作ったほうがまだ実用的。

516 :509:2005/10/14(金) 12:48:02 ID:???
>>515
なるほど、とてもわかりやすい。どうもありがとう。


517 :NAME IS NULL:2005/10/14(金) 22:50:14 ID:???
>>515

MySQL でマルチカラムのインデックスを作ったことはあるのかな。

col1+col2 のインデックスを作ろうとしても、
col1, col2 のそれぞれを検索するものも作られるよ。

この例だと3つ作られるわけだが、実際にどれが使われるのかは場合によるみたい。
ヒントをうまく与えられるといいんだけど、MySQL にはないらしい。


518 :NAME IS NULL:2005/10/15(土) 00:15:38 ID:???
>>517
マルチカラムのインデックスというのはマニュアルの「複合インデックス」とは別に何かあるの?
ttp://dev.mysql.com/doc/refman/4.1/ja/multiple-column-indexes.html

519 :517:2005/10/15(土) 00:36:38 ID:???
>>518

それは同じ。

ただ、>>517 のはちょっと間違って覚えていたよ。

col1+col2 の複合インデックスで作ったときは、
col1 もしくは col1+col2 のときにINDEXが使われる。
col2 に対しての検索には使われない。

逆順に、col2+col1 という複合インデックスも同時に作れる。
このときは、col2 もしくは col2+col1 という検索になるね。

>>509 のようにどれでも検索したいというときは、
順番を入れ替えて作った複合インデックスをいくつか作る
ということになりそうだけど、何か変だとは思う。
郵便番号とか(ある意味インデックスだね)を入れて簡単にしたほうがいいような。


520 :509:2005/10/15(土) 04:05:13 ID:???
>>519
そーか、郵便番号使えば大量にインデックス張らなくて済む話ですよね。
>>510 や >>513 が言ってたのもこのことか。そもそもMySQL関係ない話だった。。
けど勉強になりました、どうもありがとう。

521 :NAME IS NULL:2005/10/15(土) 17:01:11 ID:???
MySQL 5、11月にプロダクション・リリースへ
http://traiss.tabesugi.net:8080/slashdot/a0566da168040a89df61a901677e5bc9?edit=0

522 :NAME IS NULL:2005/10/17(月) 07:25:15 ID:???
初歩的な質問ですいません
IDを10桁で、文字列型ではなく、整数型で、
0から始まる番号で表示するにはテーブルはどう設定したらいいのでしょう?

100→0000000100

計算式が必要なので文字列型は使えないんです。
どうぐぐってもわからなかったので、お願いします。

523 :NAME IS NULL:2005/10/17(月) 07:50:24 ID:???
zerofill

524 :NAME IS NULL:2005/10/17(月) 07:59:07 ID:???
>>523
うわ〜
あれだけ悩んだのにあっさりできました。
ありがとうございました。

525 :NAME IS NULL:2005/10/17(月) 22:33:33 ID:???
DATE型で年月日入っているカラムから年と月で検索をかける方法がわかりません・・・orz
MySQLだとto_dateとかって使えないんでしょうか?

526 :NAME IS NULL:2005/10/18(火) 01:00:05 ID:Bivs9YNM
>>525
date_format

527 :NAME IS NULL:2005/10/18(火) 02:47:58 ID:???
>>523>>526も一言でバサッと解決カコイイ

528 :NAME IS NULL:2005/10/18(火) 06:16:56 ID:M02ZUYqC
オプチマイザによるキーの決定は、
テーブル全体の行数も判断材料になってるのでしょうか?
それとも行数の少ない時に選ばれるキーが、
行数が増えても使用されるのでしょうか?

529 :NAME IS NULL:2005/10/18(火) 07:57:24 ID:???
>>525
検索対象のフィールドに関数を使うのは避けるべきで、
例えば2005年10月で検索したいなら範囲条件で問い合わせるのが常套。
where xxx >= '2005-10-01' and xxx < '2005-11-01'

530 :NAME IS NULL:2005/10/18(火) 19:02:21 ID:PGtIQnsH
質問です。
MySQL4.0.21で、datetime型のカラムのデフォルト値に、現在日時を指定することは
可能なのでしょうか?もし可能なら、どう書けばよいでしょうか?

columname NOT NULL DEFAULT current_timestamp と書こうとしてエラーになり、
http://dev.mysql.com/doc/refman/4.1/ja/create-table.html
「DEFAULT 値は定数でなければならず、関数や式を使用することはできない」
という記述を見つけて、困っております。


531 :530:2005/10/18(火) 19:24:37 ID:???
補足です。
そのカラムに、できればTIMESTAMP型は使いたくありません。
なぜなら、先の、登録日時を保持するカラムとは別に、更新日時を保持する
カラムを TIMESTAMP 型で持ちたいからです。


532 :NAME IS NULL:2005/10/18(火) 20:28:33 ID:???
>>531
INSERT の時にnow()じゃダメなのか?

533 :530:2005/10/18(火) 21:16:53 ID:???
>>532
現在はそれでやっておりますが、それを忘れるプログラマがおりますので、
カラムにデフォルト値を指定したいのです。

テーブル設計をしっかりやることで、プログラマのミスを回避したいと
考えております。

534 :NAME IS NULL:2005/10/18(火) 22:43:33 ID:???
>>533
O/Rマッピングしてないの?


535 :530:2005/10/18(火) 22:56:18 ID:???
>>534
独自のフレームワークによってORマッピングは行っておりますが、手作業で
INSERT文、UPDATE文を書かなければならない場合もあります。
なお、このフレームワーク以外を使うことは、今のところできません。


536 :NAME IS NULL:2005/10/19(水) 04:44:30 ID:???
MySQLの商用ライセンス版のパッケージが出たらしい。
http://www.s-style.co.jp/company/infomation/2005101701.html
店頭で買えないのかね。ヨドバシでポイントが溜まるなら買っときたいんだが。

537 :NAME IS NULL:2005/10/19(水) 12:17:04 ID:???
>>536
http://itpro.nikkeibp.co.jp/article/NEWS/20051018/223019/
ITProでは店頭販売と出てるんで、売ってるんじゃない?
ヨドバシに売ってるかは知らんが

538 :NAME IS NULL:2005/10/19(水) 13:00:14 ID:???
>>537
最初そっちみて販元の情報確認したらパッケージ版なんだけど
ソフト流通系に乗らないで、直販のみみたいなんだよね。

ところでfreeの方(ML)でも書かれてたが、
>CD-Rを読み込める環境
売る気(売れる気)ナンシングですか(w
まあパッケージはバージョン依存しないが、
メディアはバージョン依存するから、出荷時出来るだけ最新のものを
ということではあろうが、マスター制作費&スタンプコストも下がってるし
ROMでやるべきだと思うのだが。

539 :NAME IS NULL:2005/10/19(水) 13:45:08 ID:HDkB7SHq
商売で使っているわけではないので、ライセンスを買ったことは無いのですが・・・・
やはりMySQL6が出たときには、ライセンスを買いなおさないといけないのでしょうか?

540 :539:2005/10/19(水) 13:46:22 ID:HDkB7SHq
ごめんなさい、訳のわからないことを書いてしまいました。

いつか使うかも知れないので、17800円の安いライセンスを買ってほったらかしておこうと思うのですが、
やはりMySQL6が出たときには、ライセンスを買いなおさないといけないのでしょうか?

541 :NAME IS NULL:2005/10/19(水) 14:48:58 ID:???
>>540
MySQLは知らないけど、普通はメジャーバージョンアップで買い直しじゃない?
商用ライセンスに永久ライセンスみたいなの付けるなんてあんま意味ないし。
どっちにしても、必要な時に買えば?


542 :NAME IS NULL:2005/10/19(水) 15:09:26 ID:kLd0WyTB
お願いいたします。
結構調べたのですが、見つからず、、、

今DBが一個ありまして、その中に、テーブルが10個ほど入っております。
いいままでのデータが、SJISで入力されており、それを、EUCに変更したいのですが、
 コマンド一回で一気に変換するようなコマンドありませんでしょうか?


543 :NAME IS NULL:2005/10/19(水) 16:50:02 ID:???
nkf

544 :NAME IS NULL:2005/10/19(水) 19:38:15 ID:???
>>539
MySQL3→MySQL4の話で言えば、ライセンスは持ち越し。
(InnoDBかBDBの使用料を含むか含まないかの区別しかない)
ライセンス料は特に値上げしてないから必要な時に買えば良いと思うよ。

でも
>17800円の安いライセンス
って多分Navicat2005単体のライセンスと勘違いしてる。
良いソフトだけど正直高いので、MySQLとパックになってる記念パッケージが
今回のお買い得かな。でも商用ライセンス不要ならお買い得にはならんしね。

545 :NAME IS NULL:2005/10/20(木) 01:22:55 ID:k19Aufr4
YYYYMM形式の年月の文字列の項目を検索項目とした場合
ある期間の範囲のデータを抽出するのに
単純に>や<を使うやり方は駄目なんですかね?

546 :NAME IS NULL:2005/10/20(木) 02:16:27 ID:???
訊く前にやってみるんだな

547 :NAME IS NULL:2005/10/22(土) 11:13:49 ID:???
4.1.15

548 :NAME IS NULL:2005/10/22(土) 18:17:25 ID:???
on duplicate key updateについて教えて下せぇ。
MySQL 4.1.12 + Excel2002でVBAからシートにあるデータをインサート
しようとしています(insertは正常に出来る事を確認しています)
テーブルは
mcode int(9) unsigned not null,
mkt int(2) unsigned not null,
is_kbn int(2) unsigned not null,
mg_name varchar(40) not null,
t_unit int(9),
primary key (mcode)

With unionjouhou(idx)
strSQL = ""
strSQL = strSQL & "insert into meigara ("
strSQL = strSQL & " mcode "
strSQL = strSQL & ", mkt "
strSQL = strSQL & ", is_kbn "
strSQL = strSQL & ", mg_name "
strSQL = strSQL & ", t_unit "
strSQL = strSQL & " ) "
strSQL = strSQL & " values "
strSQL = strSQL & " ( " & .strMCode
strSQL = strSQL & " , " & .strmkt
strSQL = strSQL & " , " & .stris_kbn
strSQL = strSQL & " , '" & .strmg_name & "'"
strSQL = strSQL & " , " & .strt_unit
strSQL = strSQL & " ) on duplicate key update "
strSQL = strSQL & " mkt = " & .strmkt
strSQL = strSQL & ", is_kbn = " & .stris_kbn
strSQL = strSQL & ", mg_name = " & .strmg_name
strSQL = strSQL & ", t_unit = " & .strt_unit
End With

それでon duplicate key updateをつけて上のコードを流したところ、
実行時エラー 214721900(80040e14)'
Unknown column 文字化け in 'field list'
と言うメッセージが出てしまいます。文字化けの部分はmg_name
みたいなんですけど、どう直せばいいんでしょうかね。
よろしくお願いしますm(__)m。


549 :NAME IS NULL:2005/10/22(土) 19:55:59 ID:???
自己解決しました。お騒がせスマソ

strSQL = strSQL & ", mg_name = '" & .strmg_name & "'"
と日本語の部分をくくったら正常にon duplicate key update
で更新できました。

550 :NAME IS NULL:2005/10/22(土) 22:23:57 ID:???
MYSQL ADMINを使っていますが質問をさせてください(NTTスマートスクウェア)

鯖側はEUCでクライアント環境はSJISですが、
データをDBに挿入する際にSJIS変換をしても
特定のデータだけ一部文字化けをしてしまいます

こういった場合どのような解決方法がありますか?
よろしければ教えてください。


551 :NAME IS NULL:2005/10/22(土) 23:42:01 ID:???
>>550
MYSQL ADMIN → phpMyAdminのことだよな?こういうことは正確に…
以下を書いた方がいいと思う。
・MySQLのバージョン
・化ける文字
・データの挿入方法(phpMyAdminから行うにしてもSQL、手入力、ファイルからインポート等がある)
・どのように文字化けを確認したのか(phpMyAdmin or 何かのアプリ etc)

とりあえずあやふやな状態でのエスパー回答になってしまうけど
データをファイルに作成してEUCで保存、保存したファイルをphpMyAdminでファイルを
インポートすればいける鴨。
後、phpMyAdminはUTF8固定で動作するのでクライアント環境がSJISうんぬんは
忘れた方がいいと思われ。

552 :551:2005/10/22(土) 23:46:01 ID:???
書き忘れ。
例えば "" なんかの文字はEUCのデータベースに正しく書き込まれていても
phpMyAdminで表示すると "?" になるので注意

553 :550:2005/10/23(日) 00:18:01 ID:???
>>551さん
断片的な情報ですみません
PHP MYADMINでしたorz

mysqlのバージョンは3.23.58
化ける文字は ガリクソン という単語の"ソン"ですね
データ挿入方法はSQLフォームからの手打ちです。

確認方法はブラウザです。他のデータは正常なのですが…

他のデータもブラウザで表示させたときは正常なのですが
phpMyAdminの中で確認する限りは殆どのデータが文字化けしています・・・



554 :NAME IS NULL:2005/10/23(日) 06:59:15 ID:L1Evw2iW
Warning: mysql_connect() [function.mysql-connect]: Access denied
for user: 'ppp@localhost' (Using password: YES)
in /virtual/xxx/public_html/mymysql.php on line 13
Access denied for user: 'ppp@localhost' (Using password: YES)

555 :NAME IS NULL:2005/10/23(日) 07:00:09 ID:L1Evw2iW
上記エラーの対策をおながいします。

556 :NAME IS NULL:2005/10/23(日) 09:30:10 ID:???
>>555
・英語を勉強する。または技術担当者を英語が読める者に切り換える。
・マニュアルを読む。またはドキュメントが読める技術担当者に切り換える。

557 :NAME IS NULL:2005/10/23(日) 09:41:34 ID:L1Evw2iW
そういうの役に立たん。別の人にパイプ 554|

558 :NAME IS NULL:2005/10/23(日) 10:05:11 ID:???
>>557
localhostから接続できるようにすれば直る気がする。

559 :NAME IS NULL:2005/10/23(日) 10:06:10 ID:L1Evw2iW
localhostからはphpでは試していませんがコンソールからなら
普通にいじれました。

560 :NAME IS NULL:2005/10/23(日) 10:16:48 ID:L1Evw2iW
今Linux自身でhttp://localhost/aaa/test.phpにアクセスしたけど
同じエラーでした。

561 :NAME IS NULL:2005/10/23(日) 10:38:29 ID:???
>>559
localhostからphpで試せば同じようなエラーが出る気がする。

562 :NAME IS NULL:2005/10/23(日) 10:45:52 ID:???
コンソールからの操作時、パラメータでユーザーpppを指定して
正常に接続できたんだろうか…

563 :NAME IS NULL:2005/10/23(日) 10:47:28 ID:L1Evw2iW
Linux再起動したら状況が変わりました。
Linuxのコンソールから
#mysql -u aaa -p
アクセス ディナイ フォー ユーザ aaa@localhost (ユージングパス YES)
になりました。

既出エラーのClient does not support authentication protocol....が
出てから、aaaのパスワードをold_passwordにしたのが関係しているかもしれません

564 :NAME IS NULL:2005/10/23(日) 10:48:18 ID:???
>>562
するどい

565 :NAME IS NULL:2005/10/23(日) 10:52:43 ID:???
既出エラーのClient does not support authenticationって書いてるけど
全然既出じゃないでしょ。ユーザーaaaもここで初めて出てきたし。
もう、一人で勝手にすれば?

566 :NAME IS NULL:2005/10/23(日) 10:53:39 ID:???
パスワードを空にしたらWinのブラウザのPHPで接続できました。

567 :NAME IS NULL:2005/10/23(日) 10:55:54 ID:???
>>565
そういそ文章はつまらん。
既出http://dev.mysql.com/doc/refman/4.1/ja/old-client.html

568 :NAME IS NULL:2005/10/23(日) 11:02:55 ID:???
でまた4.1タイプのロングパスワードを設定したら既出エラーの
Client does not support authenticationが出ました。
この状態ならLinuxの#mysql -u aaa -pでログインできます。

569 :NAME IS NULL:2005/10/23(日) 11:58:37 ID:???
>>568
つまり解決したんだね
おめでとう

570 :NAME IS NULL:2005/10/23(日) 12:57:04 ID:???
hogeDBの中にhoge1,hoge2とテーブルがあって
hoge1には
id name hogehoge hogehoge2
1 hoge あいう   かきく
2 aiu  かきく   さしす
3 kaka ほげげ  あばば

hoge2には
id name hogehoge3
1 hoge 05/01/01
2 aiu
3 hoge 05/02/02
4 hoge 05/02/03



571 :570:2005/10/23(日) 13:09:35 ID:???
途中で飛んじゃった(´・ω・`)

hogeDBの中にhoge1,hoge2とテーブルがあって
hoge1には
id name hogehoge hogehoge2
1 hoge あいう   かきく
2 aiu  かきく   さしす
3 kaka ほげげ  あばば

hoge2には
id name hogehoge3 hoge4
1 hoge 05/01/01 あいうえお
2 aiu  05/01/01 かきくけこ
3 hoge 05/02/02 さしすせそ
4 hoge 05/02/03 たちつてと
5 kaka 05/02/03 なにぬねの

こんな感じなってて
hoge1テーブルにhoge2のnameが同じ物をくっつけて
且つhogehoge3の最新の物だけをくっつける場合どうすればいいのでしょうか?
SELECT * FROM hoge1 INNER JOIN hoge2 ON hoge1.name=hoge2.name
これをすればくっつける事はできるのですが
hogehoge3の値が最新の物意外もくっついてしまいます(´・ω・`)

572 :NAME IS NULL:2005/10/23(日) 17:52:34 ID:???
MySQLで全角のデータ入れたら文字化けした
どうしたらなおるですか?

573 :NAME IS NULL:2005/10/23(日) 19:13:39 ID:???
OSが何とかどういう状況でとか一切書かずにそんな事言われてもどうなの?と言いたいけど
OS: WinXP MySQL 4.1.11
で接続時の文字列に
 STMT=SET CHARACTER SET SJIS
を追加したら俺の場合は文字化けはしなくなった。



574 :NAME IS NULL:2005/10/23(日) 19:30:05 ID:???
そういえばIDEとかでMysqlを利用出来るものがありますが
今の所大抵は送信側のエンコードが固定なためにクエリ上の日本語が???化しますよね

自分の場合Mysql4.1上ではUTF8で統一して
スクリプトから上ではクエリ毎にUTF8⇔EUCの変換をやってるんですが
こういう環境でIDE(EUC-JP)からの接続時だけEUCで受け入れるようにしたり
出来ないもんでしょうか

特定のユーザとの接続時だけ文字セット変える設定とか・・・

575 :NAME IS NULL:2005/10/23(日) 19:31:50 ID:???
補足。。574は全て4.1上での話です

576 :NAME IS NULL:2005/10/23(日) 19:48:34 ID:i27SxMcs
PHPからEUCで入力されたのをencodingでSJISへ変換はしてるんですけど
コマンドラインで確認すると文字化けしてる (´・ω・`)ショボーン
何故? Windowsのlocalhostでの問題です
初心者の質問に誰か救いの手を

577 :NAME IS NULL:2005/10/23(日) 20:11:47 ID:???
>>576 ttp://www.mysql.gr.jp/frame/modules/bwiki/?FAQ

578 :NAME IS NULL:2005/10/24(月) 02:08:35 ID:???
InnoDBって、なんか壊れやすくね?
1千万レコードほど(ダンプサイズで700MBちょっと)入れたら、まともに取り込めない。
小分けにしても駄目だった。

なんか他に大量レコードに適した形式とか有るだろうか?

579 :NAME IS NULL:2005/10/24(月) 19:29:39 ID:???
Oracleのdesc(条件分岐)に代わるような処理ってありますか?

580 :NAME IS NULL:2005/10/24(月) 22:50:23 ID:???
テーブルによってテーブルファイルを保存する場所を変更することはできますか?

/var/db/mysql/DB名/テーブル名.XXX
って感じになると思うのですが、
/var/db/mysql/DB名/YYY/テーブル名.XXX
としたいのですが・・・。

581 :NAME IS NULL:2005/10/25(火) 01:04:35 ID:???
>>580
シンボリックリンク

582 :NAME IS NULL:2005/10/25(火) 02:04:48 ID:uyrWOZ4l
5.0.15正式リリース。
どうなの?

583 :NAME IS NULL:2005/10/25(火) 02:42:06 ID:???
>>582
内容的にはRCと変わってないんジャマイカ。

584 :NAME IS NULL:2005/10/25(火) 02:44:17 ID:???
そうそう、漏れ勘違いしてたんだけど5.0でViewとかSPとか追加されてMySQL遅くなったんだと思ってたら
実はver4.1よりもver5.0のほうが速いらしいね。

585 :NAME IS NULL:2005/10/25(火) 08:54:50 ID:iy8JxhV4
>>576
ついでに、DB接続時に

$result=mysql_query("SET NAMES キャラクターセット");

ってするともっと幸せになれると思うよ。

586 :NAME IS NULL:2005/10/25(火) 16:43:16 ID:???
>>576
俺もよく分かってないが、PHP+MySQLで日本語のレコードが化けてたけど
MySQL側をUTF-8、PHPのmbstringをhttp.output = passで化けなくなった

587 :NAME IS NULL:2005/10/25(火) 22:06:50 ID:???
mysql -u root -p
Enter password: ****
をやったのですが結果が
ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)
と出て中に入ることができません
いったいどうすればいいのでしょうか?

588 :NAME IS NULL:2005/10/25(火) 22:34:44 ID:???
>>587
元々rootユーザーで正常に接続できていたのかな…
疑うわけではないが、良からぬ事をしようとしているのを
フォローしてしまうとアレなのでヒントだけ。
"mysql skip-grant-tables" 辺りでググッくださいまし。

589 :587:2005/10/25(火) 23:20:46 ID:???
>>588さん
検索していろいろ見てきた結果、解決しました。
本当にありがとうございました。

590 :NAME IS NULL:2005/10/26(水) 17:52:11 ID:???
ものスゴイ嫌がらせ思いついた
1 :以下、名無しにかわりましてVIPがお送りします :2005/04/25(月) 04:44:27 ID:cxwJSDGr0
例えばさ、ID非表示の板で質問したやつがいるとするじゃん?
で、その答えがくる前に名前欄にそいつのレス番入れて
「すみません、自己解決しました」って入れるんだよ
マジコレはハマるwwwwwww


591 :NAME IS NULL:2005/10/26(水) 18:36:04 ID:???
そのレスしたやつに自分で「類似のトラップにひっかかる奴もいるかもしれな
いからちゃんと説明しる」とかツッコミ入れたらいいんじゃね。
よっぽど過疎化したスレ以外は、ほかの親切なやつが答えてくれるだろう。


592 :NAME IS NULL:2005/10/26(水) 18:42:42 ID:???
まずは答えたくなる質問をすべきだな。

593 :592:2005/10/26(水) 18:53:16 ID:???
すみません、自己解決しました

594 :592:2005/10/26(水) 19:04:13 ID:3DVzptjP
>>592
お前俺じゃねーよ

ちゃんと説明汁!

595 :592:2005/10/26(水) 19:15:49 ID:???
すみません、自己解決しました

596 :NAME IS NULL:2005/10/26(水) 19:56:47 ID:???
誰が本当の592なのか、見分ける方法を教えてください。

597 :NAME IS NULL:2005/10/26(水) 20:29:43 ID:???
>>596

本当の592は>>592のみ

598 :596:2005/10/26(水) 20:30:53 ID:???
すみません、自己解決しました

599 :NAME IS NULL:2005/10/26(水) 20:45:16 ID:???
InnobaseってOracleに買収されたんだね。

 InnobaseとMySQLは来年契約の更改を控えており,
米OracleはMySQL社との契約を継続する意向という。
MySQL社は今回の買収を歓迎するという声明を出したものの,
関係者によればMySQL社内でOracleの今後の出方に対する警戒も高まっているという。

だって。InnoDBが使えなくなることも考えられる?
オラクルウゼー

600 :NAME IS NULL:2005/10/26(水) 20:48:08 ID:???
>>599
何時の話を持ってくるんだ…

601 :599:2005/10/26(水) 21:02:08 ID:???
すみません、自己解決しました

602 :NAME IS NULL:2005/10/26(水) 22:38:38 ID:???
すみません、事故りました

603 :NAME IS NULL:2005/10/26(水) 22:55:18 ID:???
5.0.15になりましたね。
ところで、SQLでバージョンを知るにはどうすればよいのでしょうか。
SELECT なんとか FROM かんとか
でVerをとるようなことっってできないのでしょうか。

604 :NAME IS NULL:2005/10/26(水) 22:56:47 ID:???
>>603
select version();

605 :NAME IS NULL:2005/10/26(水) 23:02:37 ID:???
>>604
どうもです!!


606 :NAME IS NULL:2005/10/26(水) 23:34:56 ID:???
以下の4人が何かを試した回数と成功(成功回数)した回数を記録しました。
回数と成功の数値は随時更新されるので、成功率は実際にはデータとして入力せずに

select 名前,回数,成功,回数/成功 as 成功率 from 結果テーブル order by 成功率
というクエリでその都度出して成功率でソートしてます。

結果テーブル
名前|回数|成功|成功率%|順位
山田| 12| 12|  100|1
田中|  4|  3|  75 |2
伊藤| 100| 20|  20 |3
西村| 80|  8|  10 |4

で、順位ですが、単に成功率でソートした場合に順位をつけるのはループ回した回数そのものなので簡単なんですが、これを

select 名前,回数,成功,回数/成功 as 成功率 from 結果テーブル order by 回数
と言う感じで、成功でソートしつつも、順位カラムには成功率での順位を表示させたい、

名前|回数|成功|成功率%|順位
伊藤| 100| 20|  20 |3
山田| 12| 12|  100|1
西村| 80|  8|  10 |4
田中|  4|  3|  75 |2

ときにうまい方法は無いでしょうか?
あくまでDBに入力するのは、名前、回数、成功(成功回数)
回数と成功は随時更新されるので、それによって、成功率が変わると同時に順位(成功率の)も動的に変わりますのでそこをなんとかうまくやりたいんです。

607 :NAME IS NULL:2005/10/26(水) 23:45:52 ID:3rNqv6NN
現在、基本表の数が50ほどのシステムを制作するのに
MySQLかACCESSのどちらが良いのか悩んでいます。
プログラムはVisualC#.NETを用いて記述する予定です。
どちらの方がコーディング時・DB操作などにおいて
便利でしょうか。アドバイスお願いします。

608 :NAME IS NULL:2005/10/26(水) 23:54:33 ID:???
>>606
AUTO_INCREMENTカラムを持ったテンポラリテーブルを使用してみては?

CREATE TEMPORARY TABLE WORK(
 名前 VARCHAR(XX),回数 INT,成功 INT, 成功率 INT, 順位 INT AUTO_INCREMENT NOT NULL PRIMARY KEY);

INSERT INTO WORK(名前,回数,成功,成功率)
 SELECT 名前,回数,成功,回数/成功*100 AS 成功率 FROM 結果テーブル ORDER BY 成功率 DESC;

SELECT * FROM WORK ORDER BY 成功 DESC;

609 :NAME IS NULL:2005/10/27(木) 00:16:08 ID:???
>>603
status

610 :NAME IS NULL:2005/10/27(木) 00:30:08 ID:???
>>607
ADOで接続するのならコーティングの手間は変わらないんじゃないかな?
双方のSQLの独自関数を理解、解消すれば大丈夫かと。
DB操作は当人の慣れ次第だし、MySQLにしてもODBC接続でAccessからデータの操作はできるしね。
選択基準としては
・複数のクライアントから接続するなら MySQL > Access
・配布の手間が楽なのは MySQL < Access
・MySQLは使用方法によってはフリーではない
辺りではなかろうか?
DBサーバーがWindows固定ならMSDEという方向性もあると思うよ。
MySQLのスレでなんだけど、漏れは
・スタンドアロンならAccess
・C/Sなら規模によってPostgresかMSDE
を使うことが多いかな。

611 :606:2005/10/27(木) 00:51:20 ID:???
>>608
うわ、なんかいきなり難しそうなことに。
例はかなり簡単に書いたんですが、もっと件数が多くてページングの処理とかも入ってます。漏れの手に負えるかどうか・・・・頑張ってみます。
回数、成功のデータ更新時に、成功率を実データとしてinsertしちゃうってほうが手軽ですかね。

612 :607:2005/10/27(木) 09:59:59 ID:???
ありがとうございます。

複数クライアントでの使用や配布などは
一応想定はしていますが、これは卒業研究として作成するものなので、
実際は途中まで実装して終了になると思います。

コーディングの際の手間が同じレベルなら
レコードの追加などの表操作がより簡単に行えるACCESS
の方を選択したいと思います。

613 :NAME IS NULL:2005/10/27(木) 20:11:13 ID:EyBRBt/B
Unix系OSでmysqlの負荷状態を詳細に調べる方法ってないでしょうか?
topやpsではmysql全体の負荷しか分からないので、困っています。
mysqlをユーザ単位の動作権限で動かせればいいのですが、
少数でない場合、その数のmysqlをインスコするのは現実的に厳しいのです。

614 :NAME IS NULL:2005/10/27(木) 21:02:42 ID:???
>>613
>>1
mytop

615 :NAME IS NULL:2005/10/27(木) 21:19:08 ID:???
>>613
求めているものが全然判らん。
mytopでカバーできるものじゃないの?

616 :NAME IS NULL:2005/10/27(木) 21:36:37 ID:???
--with-charset=ujisでコンパイルしてなかったlatin1な環境で
EUC前提のスクリプトを運用しちゃってました。
これをujis環境に変更して、データも正しく持ち越したいのですが
うまくいかないので困ってます。バージョンは4.1.15で、FreBSD4.11です。

mysqldumpして、ujis環境ででDB作り直してリストアすればよいと考え、
やってみたら文字化けしてました。

mysqldumpが、中身はEUCのものを
latin1からutf8への変換をして出力しているようです。
元のDBがlatin1だから当然の挙動だとは思うのですが、
この変換を無効にする方法は無いでしょうか。
無変換の状態で取り出してやればそのままEUCのダンプデータになると思うので。

あと、逆変換すればいいやとおもって、
lv -Iu8 -Ol1 で変換したところ、ほぼうまく戻ったように見せて
やはり一部文字化けしているようでした。

617 :NAME IS NULL:2005/10/27(木) 21:37:15 ID:gBSh0AKt
ageわすれた。

618 :NAME IS NULL:2005/10/27(木) 21:44:51 ID:???
>>616
ちょっと試せる環境がないのでスマソだがmysqldumpに
--default-character-set=ujis オプションを付けてみるとどうだろう?
ひょっとしたら --default-character-set=binary の方がいいかもしれんが。

619 :NAME IS NULL:2005/10/27(木) 22:08:16 ID:???
>>616
mysqldump の仕様変更の弊害(文字化け)
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_45

620 :NAME IS NULL:2005/10/28(金) 10:37:37 ID:???
ver5ぜんぜん話題にならないなー

621 :NAME IS NULL:2005/10/28(金) 13:22:38 ID:???
ベンチマーク対決! MySQL 4.1.15 vs 5.0.15 どっちが速い?
http://www.drk7.jp/MT/archives/000941.html

622 :NAME IS NULL:2005/10/28(金) 13:31:19 ID:???
5終わってるのかよw

623 :NAME IS NULL:2005/10/28(金) 13:38:07 ID:???
>>621
へぇ〜、そうなんだ。 ストアドが使えるのが5から? これが使いたくて
総合性能に興味合ったんだけど、全体性能はやっぱまだとりあえず動く
初期バージョンって感じですね。まだ導入は見送ろうかな。

624 :NAME IS NULL:2005/10/28(金) 13:48:54 ID:???
MLの情報によると、innodb_thread_concurrency のデフォルト値が
変わった事が原因だそうだ。
デフォルトの20から、元の8に戻すとそれなりの性能が出る模様。
ちゅうワケで興味ある椰子はさっさと導入してレポよろ。

625 : :2005/10/28(金) 19:37:50 ID:pY4Joffh
PHPとmySQLの組み合わせの本はおおいけど
JSPとMYSQLの本は少ない気がする。なにかいいのないですか。


626 :NAME IS NULL:2005/10/28(金) 20:23:39 ID:???
pythonがいいと思う

627 :NAME IS NULL:2005/10/28(金) 20:59:53 ID:???
>>621
同じ構文を走らせた時に、5系の方が微妙に速い という噂を聞いたんだが、
現状では、「5の機能を使わないなら4.1最強」ってことなんだな。

MySQLが激しく苦手なランキング処理が解消できるなら5系の選択肢もありえるかもしれないけど。


628 :NAME IS NULL:2005/10/28(金) 21:00:30 ID:???
>>621 うちらもこれじゃ5.1まで待ちだなす。
んでもって、またmultibyte char実装が
変更してごたついたりでもしたら、今度
こそpostgresに逝ってまうでゴルァ。

629 :616:2005/10/28(金) 21:41:23 ID:???
>>618,619
ありがとうございます。

mysqldump --default-character-set=binary database
で取り出して
テーブルのcharset部を s/latin1/ujis/g してリストアしたらうまくいきました。


630 :NAME IS NULL:2005/10/28(金) 22:16:31 ID:???
>>621
現実逃避モードなのでウチでもやってみた。共にInnoDBでmy.iniはデフォルトのまま。
う〜む、4.1.15 < 5.0.15 になってしまった…。

4.1.15
 transaction type . . . : TPC-B (sort of)
 scaling factor . . . : 1
 number of clients . . : 10
 number of transactions per client : 100
 number of transactions actually processed : 1000/1000
 tps ( include connections establishing) : 131.599518
 tps ( exclude connections establishing) : 131.732312


5.0.15
 transaction type . . . : TPC-B (sort of)
 scaling factor . . . : 1
 number of clients . . : 10
 number of transactions per client : 100
 number of transactions actually processed : 1000/1000
 tps ( include connections establishing) : 332.911867
 tps ( exclude connections establishing) : 333.817146

631 :NAME IS NULL:2005/10/28(金) 23:15:53 ID:???
うちでもやってみようかな

632 :NAME IS NULL:2005/10/28(金) 23:25:45 ID:???
>>630
CPU(モデル、クロック、L2キャッシュ容量)
HDD(モデル、型番)
メモリ容量
OS

以上項目ぷりーず
何か条件があるはず・・・・


633 :606:2005/10/29(土) 00:41:08 ID:???
>>608
ちょっとアフォなことを考えてみますた。
ループ回しながら、自分(ある一つのレコード)の成功率より、成功率が高いレコードの数を数えれば、そのときの自分の順位が出せますね。
ループの中で1レコード毎にクエリ出すことになるけど。
まだ試してないのでうまくいくかわからないし、バカっぽいけど、やってみます。

634 :630:2005/10/29(土) 09:14:38 ID:???
>>632
サーバー
 CPU Pentium4 2.4C(2.4GHz, L2 512KB)
 HDD IBM IC35L040AVER07-0(40GB, 7200rpm, EIDE)
 MEM 512MB
 OS WindowsXP SP2

ベンチクライアント
 CPU Pentium4 520(2.8GHz, L2 1MB)
 HDD SEAGATE ST380013AS(80GB, 7200rpm, SATA)
 MEM 512MB
 OS Solaris10

MySQL ServerはMySQL ABからダウンロードしたWindows版バイナリを使用。
ベンチはmysqlbenchは自前コンパイル。

635 :630:2005/10/29(土) 09:16:02 ID:???
続き。
ついでだからサーバー、ベンチクライアント共に同じマシンで動作させた時の結果も貼り付けておくね。

サーバー、ベンチクライアント
 CPU Pentium4 520(2.8GHz, L2 1MB)
 HDD SEAGATE ST380013AS(80GB, 7200rpm, SATA)
 MEM 512MB
 OS Solaris10

MySQL ServerはMySQL ABからダウンロードしたSolaris10版バイナリを使用。
ベンチはmysqlbenchを自前コンパイル。

4.1.15
 transaction type . . . : TPC-B (sort of)
 scaling factor . . . : 1
 number of clients . . : 10
 number of transactions per client : 100
 number of transactions actually processed : 1000/1000
 tps ( include connections establishing) : 542.650719
 tps ( exclude connections establishing) : 544.134179

5.0.15
 transaction type . . . : TPC-B (sort of)
 scaling factor . . . : 1
 number of clients . . : 10
 number of transactions per client : 100
 number of transactions actually processed : 1000/1000
 tps ( include connections establishing) : 895.553398
 tps ( exclude connections establishing) : 900.518789

636 :630:2005/10/29(土) 09:28:17 ID:???
あっと、念のため >>635 の結果は、>>630 からの流れなので
テーブルタイプ InnoDB、クライアント数 10、トランザクション数 100で
my.iniはデフォルトのままで行った結果ね。

637 :NAME IS NULL:2005/10/29(土) 09:56:01 ID:???
うちもまぜてくれぃ。といっても、MySQL 5は、なんか
おっかないんでまだインス子してないから、
4.1 でのmyisamとinnodbの比較だけよん。

鯖:Linux kernel 2.6.14
P4 1.8GHz
cache256kB
memory 1GB
HDS724040KLAT80 (HGST 400GB U100 7200, uATA/100)
クライアント:同じマシンから

MySQL 4.1.15 ... myisam
transaction type . . . : TPC-B (sort of)
scaling factor . . . : 1
number of clients . . : 10
number of transactions per client : 100
number of transactions actually processed : 1000/1000
tps ( include connections establishing) : 319.885762
tps ( exclude connections establishing) : 635.494396

MySQL 4.1.15 ... innodb
transaction type . . . : TPC-B (sort of)
scaling factor . . . : 1
number of clients . . : 10
number of transactions per client : 100
number of transactions actually processed : 1000/1000
tps ( include connections establishing) : 190.563886
tps ( exclude connections establishing) : 270.924003


638 :NAME IS NULL:2005/10/29(土) 12:31:36 ID:???
OS Redhat Linux
CPU MMX Pen 166MHz
MEM 32MB
HDD 2.4GB

結果 インスコ失敗

639 :NAME IS NULL:2005/10/29(土) 12:37:00 ID:???
>>638 Makefile 編集してがんがる。Linuxなら
CC = gcc
CFLAGS = -O2 -D_REENTRANT
LDFLAGS = -Wl,-R/usr/local/mysql/lib
MYSQL_INCLUDE= -I/usr/local/mysql/include
MYSQL_LFLAGS= -L/lib -L/usr/local/mysql/lib
MYSQL_LIBS= -lm -lz -lnsl -lcrypt
 . . . .

640 :NAME IS NULL:2005/10/29(土) 15:57:23 ID:QmmIUHx9
OS Windows XP + SP2
MySQL 5.0.15
MyODBC 3.51
ACCESS 2003
# CLIENT SECTION
default-character-set=sjis
# SERVER SECTION
default-character-set=utf8

結果 文字化け発生!解消方法求む!!!

641 :640:2005/10/29(土) 16:04:00 ID:???
すみません、自己解決しました

642 :NAME IS NULL:2005/10/29(土) 16:23:41 ID:???
どういう風に解決したかぐらい書いてよ

643 :640:2005/10/29(土) 17:07:56 ID:???
# CLIENT SECTIONと# SERVER SECTIONを
同じdefault-character-set=sjisにしたら直りました。
お騒がせしました。

644 :NAME IS NULL:2005/10/29(土) 18:56:30 ID:QmmIUHx9
640だけど641、643誰?
ID違うし・・・

645 :NAME IS NULL:2005/10/29(土) 20:34:43 ID:???
>>644 自演乙

646 :NAME IS NULL:2005/10/29(土) 22:11:29 ID:QmmIUHx9
>>645
自慰乙?

647 :NAME IS NULL:2005/10/30(日) 00:56:03 ID:???
>>630
丁寧に報告してくれてサンクス

CPUのL2の量によって4.1有利か5.0有利か変わるのかと思ったんだが、
条件は全然違う所にあるみたいだなぁ

突き詰めていったら、ディスクのフラグメント状況によるとか、しょーもない要因の気もしてきた・・・・


648 :NAME IS NULL:2005/10/31(月) 12:10:04 ID:EtZ8MLQ0
mySQLをインストールしたのですが
信号が青くなりません。
スタート ザ サービス を押しても一瞬青になってすぐ赤になります。
そして「variables」という項目になにも書かれていません。

かなりネットと本で調べたのですが解決できません。
どうしればよいか教えてください

649 :NAME IS NULL:2005/10/31(月) 12:21:18 ID:???
>>648
MySQLのログにエラーが出力されてないか?

650 :NAME IS NULL:2005/10/31(月) 14:04:12 ID:Exjn2IvW
すみません。 MySQLのデータベース名を変更したいのですがどうすればよいのでしょうか?


651 :NAME IS NULL:2005/10/31(月) 17:07:00 ID:???
>>650
ディレクトリ名を変える

652 :NAME IS NULL:2005/10/31(月) 18:18:33 ID:Exjn2IvW
>>651 え・・それでいいんですか?

653 :NAME IS NULL:2005/10/31(月) 18:22:09 ID:Exjn2IvW
>>651 できました。ありがとうございました。

654 :NAME IS NULL:2005/11/01(火) 23:24:36 ID:???
MySQL5.0.15 への移行を検討していて分かったこと。


○JOIN に 4.1以前との互換性が無い。

従来、JOIN で USING を用いるとき、指定できるカラム名は、そのすぐ前(す
ぐ左?)のテーブルにあるカラムだけだった。しかし5.0.12からそれが変更さ
れ、それ以前に出現したすべてのテーブルのカラムが指定できるようになった
(SQL:2003互換)。
http://dev.mysql.com/doc/refman/5.0/en/upgrading-from-4-1.html

しかし、恐ろしいことに、あるJOIN以前の複数のテーブルに同一のカラム名が
存在していた場合、そのカラム名をUSING区で指定しているSQLは
ERROR 1052: Column '***' in from clause is ambiguous
というエラーになることに。

当方は、従来のMySQLのUSING句の使いづらい文法に依存したコードをたくさん
書いていたので、SQLをすべてチェックして書き直さなければ移行できないこ
とが判明。ああくやしい。


○Connector-J 3.1.11 はメモリリークする。

※ただし、Tomcat/4.1.29, j2sdk1.4.2_03 との組み合わせ。
 JDKが有名なバグありバージョンなので、微妙。
(Connector-J 3.0.17 は問題なかった。)


655 :NAME IS NULL:2005/11/01(火) 23:52:51 ID:???
>>654
例文にあったSQL
SELECT CHAR(ORD('A') USING latin1) = 'a';
が('A`)に見えた

というのは、置いといて、5.0入れてないから分からないんだけど
サブクエリーで使うような場合も、メインクエリーに出てきたテーブルが影響するってこと?

まあ、たいていカラム名にテーブル別名も指定してるから、俺は問題ないかな。
テーブル名も指定する癖を付けた方がいいと思われ。

656 :NAME IS NULL:2005/11/01(火) 23:59:11 ID:XkixHZ9d
>>655
USING 句で、各カラムの所属テーブル名を指定することは、不可能だと思うが。


657 :NAME IS NULL:2005/11/02(水) 00:33:04 ID:zmkwaL0C
現在、大学のPCと自宅のPC、両方にMySQLを入れています。
二つのPCは接続しておらず、単体でレコード入力・表定義をしています。

dataフォルダに表情報が全て入っていると思ったので
一方のdataフォルダをそのままもう一つのPCにコピーし
データの同期を図ろうと思ったのですが
コピーはうまくできましたが、パスワードを入れて
ログインした途端、強制終了してしまいます。

これの原因はなんでしょうか。
大学でやった続きを家でやりたいので何とかしたいのですが・・・。

658 :654:2005/11/02(水) 00:34:06 ID:???
追加報告。
Connector-J3.1.11 は、j2sdk1.4.2_08 と組み合わせてもやっぱりメモリリー
クした。Tomcat が OutOfMemoryError を吐いてしまう。

>>655
JOIN の中の USING の話だぞ。勘違いしていないか?


659 :NAME IS NULL:2005/11/02(水) 00:49:08 ID:???
こんなテーブルがあったとして
| ID| い | ろ |
|  1| 10 | 20 |
|  2| 35 | 15 |


「は」フィードを増やして、「い」+「ろ」の値を一気に「は」フィードに入れたい。
| ID| い | ろ | は |
|  1| 10 | 20 | 30 |
|  2| 35 | 15 | 50 |

$sql = "select from TABLE";
$result = mysql_query($sql);
while ($row = @mysql_fetch_array($result)){
$temp_val = $row['い'] + $row['ろ'];
$sql = "INSERT INTO `TABLE` (`は`) VALUES ({$temp_val}) where ID = {$row['ID']}";
}


これを一発でやる方法というとどんな手があるでしょうか?
↑こんな感じでmysql_fetch_arrayでループを回して一行分ごとに
insertのクエリを発行、実行してみたけど、エラーになってうまくいかないです。

660 :NAME IS NULL:2005/11/02(水) 01:02:55 ID:???
>>659
まずは、どこでエラーが出ているのかを考えたほうがいい。

661 :655:2005/11/02(水) 01:05:21 ID:???
>>658
勘違いしてた('A`)

662 :NAME IS NULL:2005/11/02(水) 02:57:51 ID:???
>>658
詳しく。 大抵の場合、アプリ側の問題だと思うのだけど。

663 :NAME IS NULL:2005/11/02(水) 03:05:51 ID:Rkbs4Zeo
>>657
MyISAM型テーブルなら *.FRMファイル、*.MYIファイル、*MYDファイルをコピペするだけでどの環境のMySQLにも持ち運べる。

使っているのがInnoDB型テーブルなら、"create table as select * from ... engine=myisam"で元のPC上でMyISAM型のコピーを作成して別のPCに持ち運んで、別のPC上でまた"create table as select.."するか"alter table"すればいいんでない。

テーブルが大量にあると面倒だけど・・・。

664 :NAME IS NULL:2005/11/02(水) 07:24:11 ID:???
>>659
update を使う方法は?

言語はphpか...

$sql="UPDATE `TABLE` SET `は`=`い`+`ろ`";
mysql_query($sql);

ではだめ?


665 :NAME IS NULL:2005/11/02(水) 08:14:05 ID:???
>>657
ちゃんとmysqldを落としてからコピーしました?

666 :NAME IS NULL:2005/11/02(水) 10:02:45 ID:???
>>663
テーブル数は50以上です・・・。

>>665
binフォルダにmysqld.exeが入っていますがそれのことですか。
入れたままでなく、コピー時に起動させて何らかの処理を
行わせなければならないんでしょうか。


667 :654:2005/11/02(水) 11:40:58 ID:???
>>662
> 詳しく。 大抵の場合、アプリ側の問題だと思うのだけど。

自分も不安になって、コードを確かめた。ResultSet#close() を忘れている個
所があったので修正した。しかし修正後も結果は変わらず、OutOfMemoryError
だ。

環境はWindows2000, Eclipse3.1.1, JDK1.4.2_08, Tomcat4.1.29, Connector/J
3.1.11 だ。まだLinux では試してないが、たぶん同じだろう。

アプリは、一種のシミュレーションで、似たようなSQLを数千回も発行する。
一つの PreparedStatement に、セットする値を変えて execute()、これの繰
り返し。タスクマネージャでプロセスを監視していると、Tomcat の
javaw.exe のメモリ使用量がみるみる膨らんでいく。90メガを超えたあたりで
OutOfMemoryError。

Connector/J 3.0.17 にすると、エラーは起こらなくなる。Tomcatのメモリ使
用量も38メガ程度で安定している。

どうやら Connector/J 3.1系にはとんでもないバグが頻発しているらしいし、
http://diary.jp.aol.com/applet/27c2d4uyd/20051014/archive
今回のような現象も不思議ではないと思う。

しかし最新のConnector/Jを使わないと、MySQL5.0(おそらく4.1以上)では
"Illegal mix of collations" というエラーになるから、古いJarを使いつづ
けるわけにもいかない。
http://www.mysql.gr.jp/mysqlml/mysql/msg/9515

とりあえず以上。


668 :NAME IS NULL:2005/11/02(水) 11:56:51 ID:???
>>666
InnoDBを使っていて、しかもテーブル数が多いなら、ディレクトリコピーより、
mysqldump を使ったほうが楽だ。mysqld を止める必要もないし。
http://dev.mysql.com/doc/refman/4.1/ja/mysqldump.html

最新のDBを mysqldump でファイルに落とし、移行先のDBを一旦 DROP, CREATE
しなおし、
mysql -u ユーザ名 DB名 < ダンプファイル名。
あとは待ってればいい。

当方は、遠隔地にある計60メガ近い容量のDBと同期させているが、Linux上 なら
10分程度しかかからない。

ただし Windows上の MySQL だと2時間かかる。やってられん。


669 :NAME IS NULL:2005/11/02(水) 13:40:49 ID:???
>>668
どうもご指導ありがとうございます。
いま大学で作業中なので、今晩家でやってみたいと思います。

Windowsなので2時間かかるのか・・・

ところでココってsage進行ですか?

670 :666:2005/11/02(水) 13:52:57 ID:???
>>668
もう一点確認させて欲しいのですが、
移行先のDBを一旦 DROP, CREATEしなおし、
> 移行先のDBを一旦 DROP, CREATEしなおし、
とは、移行先の各DBに幾つかの表が既にあっても
とりあえずDBごとdropして、その後再び同じ名前のDBをcreate。
(この時点で、DBに表はない。)

> mysql -u ユーザ名 DB名 < ダンプファイル名。
については、
mysql -u root 顧客 < UnivPC-1
mysql -u root 店員 < UnivPC-1
・・・。
という流れでしょうか。

671 :668:2005/11/02(水) 14:02:47 ID:???
>>670
それで合ってる。

念のため細かい点を補足。
・DBの容量が小さければ、Windowsでもリストアにそんなに時間はかからない。
・InnoDBよりMyISAM の方が、リストアは圧倒的に速い。
・DBが複数あるんなら、--databases や --all-databases オプションを
 検討されたし。


672 :666:2005/11/02(水) 14:18:09 ID:???
>>671
OK。どうもです。

673 :NAME IS NULL:2005/11/02(水) 16:17:49 ID:???
長文スマソ

>>667
問題の切り分けをしたほうがいい。Tomcat越しにアクセスさせるのではなく単純なJavaコードからConnector/Jを使ってみそ。

Win2000, JDK1.4.2_08, Connector/J 3.1.11, Eclipse3.1.0で以下のようにPreparedStatementを100万回繰り返したが、
"-verbose:gc"で得られたGCログからはメモリーリークは発生しなかったぞ。

public void testMemory() throws Exception {
String url = "jdbc:mysql://localhost/test";
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
stmt.executeUpdate("DROP TABLE IF EXISTS t1");
stmt.executeUpdate("CREATE TABLE t1 (c1 int) engine=MEMORY");
stmt.executeUpdate("INSERT INTO t1 VALUES(0)");
PreparedStatement pstmt = conn.prepareStatement("UPDATE t1 SET c1 = ?");
int tryal = 1000000;
for (int i = 0; i < tryal; i++) {
pstmt.setInt(1, i);
pstmt.execute();
}
stmt.close();
pstmt.close();
conn.close();
}

[GC 1139K->627K(1984K), 0.0001869 secs]
[GC 1139K->627K(1984K), 0.0001880 secs]
[GC 1139K->627K(1984K), 0.0001861 secs]
・・・
[GC 1139K->627K(1984K), 0.0001922 secs]
[GC 1139K->627K(1984K), 0.0001875 secs]
[GC 1139K->627K(1984K), 0.0001900 secs]

674 :666:2005/11/02(水) 16:27:14 ID:???
先程教えて頂いた方法をログイン直後い実行しましたが
以下の文全てに対して"syntax error"になってしまいました。
ユーザはroot,パスもroot,customerdbはDBの一つです。

mysql> mysqldump --all-databases;
mysql> mysqldump -a -u root -p root > C:\kari;
mysql> mysqldump customerdb -u root -p root > C:\kari;

なにがダメなのでしょうか…。

675 :668:2005/11/02(水) 18:00:25 ID:???
>>674
mysqldump は mysql にログインして実行するんじゃないよ。
UNIX ならシェル、Windows ならコマンドプロンプトの画面でそのまま実行する。
つまり、プロンプトは、Windowsなら
mysql> じゃなくて、c:\mysql> の状態で実行。


676 :654:2005/11/02(水) 18:27:41 ID:???
>>673
わざわざありがとう。しかし、PreparedStatement#executeUpdate()ばかりな
のが気になる。ResultSet を返す PreparedStatement#executeQuery() だとど
うだろう?

時間が無いのでこれだけ。すまん。自分もあとで試してみる。


677 :666:2005/11/02(水) 18:55:41 ID:???
単純ミスでした(__)

コマンドプロンプトにて
C:\Program Files\MySQL\MySQL Server 4.1\bin>(続)
(続)mysqldump --all-databases -u root -p root > C:\tttt;
を実行したところCのトップにttttというファイルができました。
これで良かったのでしょうか?あと、拡張子が分かりません…。

678 :NAME IS NULL:2005/11/02(水) 19:24:54 ID:???
>>677
それでいいよ。
ただのテキスト(SQL)だから、エディタで中を見て、正常にデータが入って
いるかを見てごらん。
拡張子は何でもいい。*.dmp とか、*.sql とか、好きにして。*.txt でもいいよ。


679 :NAME IS NULL:2005/11/02(水) 19:29:34 ID:???
みんなやさしいな。
こんなカスみたいな奴を良く相手にできるもんだ。

680 :NAME IS NULL:2005/11/02(水) 19:40:25 ID:???
>>679 おまえみたいな奴こそカス

681 :NAME IS NULL:2005/11/02(水) 19:42:31 ID:???
>>677

拡張子はファイル名として指定。
(続)mysqldump --all-databases -u root -p root > C:¥tttt.txt;←

中身はメモ帳かノートパットから開いて確認

682 :666:2005/11/02(水) 20:09:33 ID:???
中身は下記のようになっていますが…これはおかしいですよね。

Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

(実行時のコマンドは>>677のとおりです。)

683 :NAME IS NULL:2005/11/02(水) 20:26:31 ID:???
-p と root の間にスペースを空けちゃ行けない気がした。
未確認ですまそ。

684 :NAME IS NULL:2005/11/02(水) 20:38:41 ID:???
-p root ではなくて --password=root だな。


685 :NAME IS NULL:2005/11/02(水) 20:42:41 ID:???
みんなやさしいな。
こんなカスみたいな奴を良く相手にできるもんだ。

686 :NAME IS NULL:2005/11/02(水) 21:35:01 ID:???
底辺が大きくならないと上に伸びないからな。


687 :NAME IS NULL:2005/11/02(水) 21:35:13 ID:cakceBv0
phpmyadminでは下のように表示されているテーブルを
PHPで作成したいのですが、どう
書けばいいのでしょうか?
エラーばかり出てわかりません。
よろしくおねがいします。

フィールド、フィールドタイプ、表示、空の値(NULL)、基本値、追加、実行
dt datetime いいえ 0000-00-00 00:00:00
lup mediumint(8) UNSIGNED いいえ 0
tu smallint(5) UNSIGNED いいえ 0

688 :NAME IS NULL:2005/11/02(水) 21:50:56 ID:???
>>687
phpmyadminでそのテーブルのエクスポートを実行すればSQLが表示されるので
それをコピーして、PHPで実行(mysql_query等)すればいい。
多分、こんなSQLが表示されるはず。
`testtable`, MyISAM, ujis の部分はオマイさんの環境によって変わるはずだから、
このまま使用しないように。

CREATE TABLE `testtable` (
`dt` datetime NOT NULL default '0000-00-00 00:00:00',
`lup` mediumint(8) unsigned NOT NULL default '0',
`tu` smallint(5) unsigned NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=ujis;

689 :666:2005/11/02(水) 22:00:35 ID:???
>>684
以下のように実行し、
C:\Program Files\MySQL4.1\bin>
mysqldump --all-databases -u root --password=root > C:\fair.txt;

C:\Program Files\MySQL4.1\bin>

ファイルを確認しましたがその内容は>>682と同じでした。
現在MySQLにあるDBは"mysql""test2"で、test2に
テスト用にテーブル"1st"を定義しています。
う〜ん・・・

690 :NAME IS NULL:2005/11/02(水) 22:23:15 ID:???
>>689

もしファイルに出さないでちゃんと出てくるんだったら何か環境が悪い。

これ以上は MySQL の質問ではなくて
Windows のコマンドプロンプトの使い方だから、
他で勉強してくれ。


691 :NAME IS NULL:2005/11/02(水) 22:50:38 ID:???
>>689
何か文法が間違っているんだろうけど、もうネット越しではわかんないねえ。
デスクトップ共有でも出来たらいいんだけど。

いちいちファイルの中身を確認するのも面倒だろうから、末尾の
>c:\fair.txt を外して、いろいろ試行錯誤してみてよ。

テーブル定義のSQLなどが画面にあふれ出したら成功だから、Ctrl + C を押して
中断。今度は > c:\fair.txt をつければ、さっき画面にあふれたテキストが
ファイルに収まる。

あと、最後の「;」は要らないからね。


692 :NAME IS NULL:2005/11/02(水) 22:57:18 ID:???
-uの後のスペースもいらんな

693 :NAME IS NULL:2005/11/02(水) 23:00:34 ID:???
>>692

それはどっちでもいい。混乱させるな。


694 :666:2005/11/02(水) 23:02:29 ID:???
>>691
その方法でできました。ファイルの中身が正しく書き込まれました。
明日もう一つのPCにてコピーしてみます。

たくさんの助言どうもありがとうございました。

695 :NAME IS NULL:2005/11/02(水) 23:08:24 ID:???
>>691
の指摘の通り、最後の「;」を入れなければOKですね。
私も詳しくないのですが、;をいれるとUsageがでました。


696 :691:2005/11/02(水) 23:23:25 ID:???
>>694
うまく行って良かった。お疲れさん。

こういうのを一人で身につけるのは大変だ。詳しい人が近くにいれば、5分で
終わることなのに。今後も苦労するだろうけど、まあ頑張れ。

あとは、誰かが些細なところで引っかかってたら、かつての自分だと思って
助けてやってね。


>>695
あ、やっぱりそれでしたか。私はリダイレクトさせて試してたんで、セミコロンが
付いててもダンプ出来ましたが、あやしいのは他になさそうでしたしね。


697 :NAME IS NULL:2005/11/02(水) 23:52:13 ID:???
「Before start of result set 」というエラーが作業をさえぎり、
課題がさっぱり進みません。
String ititle = rs.getString("title");
という記述を入れると出てきやがります。
result set の定義とかその辺は問題ないと思うんですが、
どなたがお分かりになる方いらっしゃいますか?

698 :NAME IS NULL:2005/11/02(水) 23:57:23 ID:cakceBv0
ありがとうございました!
やってみます!

699 :NAME IS NULL:2005/11/02(水) 23:58:11 ID:cakceBv0
>>688
ありがとうございました!
やってみます!


700 :NAME IS NULL:2005/11/03(木) 00:00:46 ID:???
今日はクソ野郎ばかり現れるな。スレ違いだし。
result setが空じゃないのか?

>result set の定義とかその辺は問題ないと思うんですが
そう思い込めるオマイがうらやましいよ。

701 :NAME IS NULL:2005/11/03(木) 00:11:11 ID:???
>>700
文句あるならこのスレにこなければいい
雰囲気乱すな

702 :NAME IS NULL:2005/11/03(木) 00:12:11 ID:???
この野郎、絶対てめぇの手はかりねぇぞ。
意地でも自力でやってやる。

703 :NAME IS NULL:2005/11/03(木) 00:31:14 ID:??? ?#
なんだこりゃ

704 :NAME IS NULL:2005/11/03(木) 00:31:23 ID:???
分からん所は素直に聞くのも勇気だ。
どつぼにはまる前にソース見せれ。

705 :NAME IS NULL:2005/11/03(木) 00:43:33 ID:???
一応 --xml で XML を吐くけど、これって XML DBMS として実用に耐え得るの?

706 :697:2005/11/03(木) 00:45:53 ID:???
すみません、自己解決しました

707 :697:2005/11/03(木) 00:49:08 ID:???
いや、マジで自己解決した。
やっぱrsは関係なかった。
rs.next()を書いてなかった。
なきそうになった。
そら動かねーよ。

708 :NAME IS NULL:2005/11/03(木) 04:00:03 ID:???
>>705
堪えない。

709 :NAME IS NULL:2005/11/03(木) 05:27:26 ID:???
>>654>>676

接続プロパティ"dontTrackOpenResources=true"(デフォルトはfalse)をつけて、
それでもメモリリークするかどうかを試してみて。

http://dev.mysql.com/doc/refman/5.0/en/cj-configuration-properties.html



710 :654:2005/11/03(木) 13:09:45 ID:???
>>709
了解。明日、試してみる。

ところで、>>654 の JOIN 〜 USING 句の話には、誰も食いつかないなあ。5.0
に移行するには、環境設定を変えるだけじゃ済まず、既存のSQLそのものをチェッ
ク、修正しなければならないわけで、これは重大な問題だと思うんだが。

MySQLの従来の USING句の仕様があまりにもタコだったのを、5.0から世間の標
準に合わせたわけで、その点自体はありがたいことだけど、移行コストが跳ね
上がってしまったことには正直参っている。

4.1への移行は、既存のシステムはほとんどの場合、コードの手直しなしに可
能だったけれど、5.0だと、手直しなしで移行できるシステムはほとんど無い
だろう。これほど基本的な構文の仕様が変わったのだから。

皆はどうやっているんだろうか?


711 :NAME IS NULL:2005/11/03(木) 13:50:04 ID:7VfeavMH
初歩的な質問なのですが,データベース名の変更は
どうすればいいのでしょうか.Alter databaseで
検索はしてみたのですが,それらしいのが無くて分かりません.

それから,あるDBの表を別のDBに移動,コピーするには
どうしたらよいのですか.

712 :NAME IS NULL:2005/11/03(木) 13:52:19 ID:???
>>711
>>1

713 :NAME IS NULL:2005/11/03(木) 14:44:45 ID:???
>>710
おれは4.1へも移行しなかったからな。5.0も多分パス。
新規案件はPostgreSQLで行くことが決定しているし。
MLの問題吐き出しOFFの結果がフィードバックされて
日本語周りが改善されたら考えるかな>移行

714 :NAME IS NULL:2005/11/03(木) 14:55:29 ID:???
>>710
俺のところではMySQL4.1はスルーしてた。
所謂新機能を実務で使うのはこれからってところなので
今後似たようなことがなければ大丈夫。

715 :NAME IS NULL:2005/11/03(木) 15:03:35 ID:???
最新情報を追いかけていないんだけど、MySQL5.0の日本語周りって
4.1ベース?4.0に戻ったりしてたらうれしいんだけど。

716 :NAME IS NULL:2005/11/03(木) 15:10:28 ID:???
joinによる表結合を今知った…

俺の使ってた解説書や解説サイトに等価結合の方法しか書いてなかったので
結合条件のうち片方がない場合はif()で条件分けしたりしてた

717 :NAME IS NULL:2005/11/03(木) 15:39:33 ID:???
>>715
(当たり前だが)MySQL4.1ベース。

MySQL4.1.15、MySQL5.0.13からは
MySQLサーバに--skip-character-set-client-handshake
というオプションが追加された。これはある意味
S/C間での文字コード変換についてはMySQL4.0以前と
似たような動作をするオプション。


718 :NAME IS NULL:2005/11/03(木) 15:44:54 ID:???
>>711
たぶん、正式な方法は存在しないのだと思う。

>>650-653 にもあるが、MySQL は長年、ファイルシステムをそのまま利用して、
データベースやテーブルが作られていた。だから、DB名を変えるにはディレク
トリ名を変えれば済んだし、テーブルを移すには同名ファイルをコピーすれば
いい。この簡単さが売りだった。

しかし、InnoDBの登場や、DB名テーブル名の国際化などが原因で、この関係は
成り立たなくなりつつある。詳しくは以下のサイトを参考にされたし。
「MySQL日本語の旅」
http://oss.timedia.co.jp/index.fcgi/kahua-web/show/MySQL%c6%fc%cb%dc%b8%ec%a4%ce%ce%b9

結局、あらゆる環境で安全な方法としては、mysqldump の出力内容をエディタ
で編集して、新規DBやテーブルを作るしかないんじゃないだろうか?


719 :NAME IS NULL:2005/11/03(木) 15:46:43 ID:???
>>717
さんくす。

>(当たり前だが)MySQL4.1ベース。
ですよねw

--skip-character-set-client-handshake
こんなオプション付けたんですか。
テスト機でも作ってみるか。

char(6)は六文字とかそこら辺の変な仕様もOFFできると
良いのだけど。

720 :NAME IS NULL:2005/11/03(木) 15:52:22 ID:???
>>711
WEBサーバーとPHPが必要だけど、phpMyAdminを使えば簡単な操作で可能。
内部でゴリゴリとCREATE TABLE, DROP TABLEをやっているだけだが。

721 :NAME IS NULL:2005/11/03(木) 16:09:39 ID:???
>>716
とりあえず、ここでも見とけ。
http://www.techscore.com/tech/sql/index.html

あと、MySQL は確かに便利だが、標準的なRDBから見ると、使えない機能や
独自拡張の多い、言わば「変態RDB」であることも知っとけ。
http://www.mysql.gr.jp/Manual/mysql-3.23.38/manual.ja_Compatibility.html

上のリンク先は、すでに大変古い内容だけれども、MySQLが当初、どういうDBを
目指していたかを知るためにはいい資料だと思う。


722 :NAME IS NULL:2005/11/03(木) 16:18:22 ID:???
select * from table_name
で表示した内容をテキストファイルに出力するコマンドってあります?

723 :NAME IS NULL:2005/11/03(木) 16:27:37 ID:???
>>722
コピペ

724 :NAME IS NULL:2005/11/03(木) 16:48:32 ID:???
コマンドプロンプトの画面って全画面にしても
横が半分までしか行かないから,改行されて見づらい.
その状態でコピペしてもアレだから出力してくれると
ありがたいんだが

725 :NAME IS NULL:2005/11/03(木) 17:05:02 ID:???
>>722

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

って起動時に出てくるのは読まないの?
\h とかしてみないの? なんで? それってアレじゃない?



726 :NAME IS NULL:2005/11/03(木) 17:07:08 ID:???
>>721
そこ見やすいですね

俺は既にmysqlの独自拡張に汚染されて他のRDB行くのが億劫w
4.1以降は特にGroup by周辺が便利で

727 :NAME IS NULL:2005/11/03(木) 17:08:33 ID:???
>>724
mysqlクライアントでSQL文の結果をファイルに出力する
http://www.bnote.net/mysql/14_output.html

ぐぐったらすぐ出てきましたやんか

728 :NAME IS NULL:2005/11/03(木) 18:32:01 ID:???
>>717 ををを、すばらすい。
PHPを出来合いの 4.1系mysql ライブラリと
リンクしてるもんで、いつも
"SET NAMES キャラセット名"
で日本語文字化け対策しないと
いけんかった。

729 :NAME IS NULL:2005/11/03(木) 20:46:23 ID:???
あの、素朴に質問なんですが、
MySQLって、、、

root(若しくは同等の権限を持つユーザ)からの、
『drop database mysql』
を受け付けるますか?

自分でやる勇気ないので、知ってる方お願いします・・。

730 :NAME IS NULL:2005/11/03(木) 22:21:55 ID:???
$sql = "まあ、ふつうのsql文";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);

って書いてるところを

$sql = "まあ、ふつうのsql文";
$rows = mysql_num_rows(mysql_query($sql));

って書くのは、パフォーマンス的にはどうなんでしょう?

$sql = "まあ、ふつうのsql文";
while ($row = mysql_fetch_array(mysql_query($sql))) {
いろいろ
}

なんてのもいかがなもんでしょうか?

ずっと上の書き方してたけど、一行でも減らしたいと思うんですが。

731 :NAME IS NULL:2005/11/03(木) 22:28:57 ID:???
PHPの質問じゃないの?

732 :NAME IS NULL:2005/11/03(木) 22:35:55 ID:???
>>729
普通にデータベースなんでDROP出来るよ。
させたくないなら、それこそDROP権限を剥奪しておく。

733 :NAME IS NULL:2005/11/03(木) 22:44:46 ID:???
>>730
質問する前に実行して時間計ったほうが早くない?

734 :NAME IS NULL:2005/11/04(金) 01:04:32 ID:???
>>731
そうかもですね。web prog板で聞いてみた方がいいかな?
>>733
そんな難しい事のやりかた解りません。

735 :NAME IS NULL:2005/11/04(金) 01:50:30 ID:???
時間はかるのが難しいぐらいなら、早くなっても気がつかないだろう。

736 :733:2005/11/04(金) 01:53:43 ID:???
>>734
ちょwおまwww

<?php
$time1 = mtime();
// ----- ここから -----
(1)
// ----- ここまで -----
$time2 = mtime();
echo $time2 - $time1;

function mtime() {
 list($usec, $sec) = explode(" ", microtime());
 return ((float)$usec + (float)$sec);
}
?>

の(1)の部分に時間を計測したい処理を書けばいいんじゃね?
処理が軽い場合はループするなどしてな。

737 :NAME IS NULL:2005/11/04(金) 03:32:00 ID:???
スレ違いだけどPHP5なら $time = microtime(true); でok

738 :654:2005/11/04(金) 12:23:03 ID:???
>>709
やっと Connector/J 3.1.11 の実験が出来たので、報告する。

○dontTrackOpenResources=true を指定すると、Connector/J 3.1.11 でもメ
モリリークしなくなった。

>>673 のテストコードのテーブル型を InnoDB に変え、次に ResultSet を
返すような PreparedStatement を追加して、同様にこちらもループの中で値
のセット、実行を繰り返してみた。結果は、やはりメモリリークしない。

この二つの実験結果からは「Conector/Jではなくて、当方のアプリがダメダメ」
という結論しか導き出せそうに無い。しかし、どうか信じてくれ。ResultSet
はすべて使用直後にclose している。行儀の悪い作りにはしていないのだ。

ならこの結果をどう考えるべきか。テストコードと違ってアプリは複雑だから、
そういう複合的な条件でしか再現しないバグが Connector/J にあるのかもし
れない。我ながら説得力が無いが。

ただ、dontTrackOpenResources=true と指定すれば問題は回避できることは確
認できたので、とりあえずそれで行こうと思う。こういうプロパティを true
にしなければならないのは少々残念だが。

ということで、いろいろお世話になりました。深く感謝いたします。


739 :NAME IS NULL:2005/11/04(金) 14:41:28 ID:???
10000行程度の関連テーブルが3つある場合、3度クエリするより
3つをINNER JOIN等で結合して1度でクエリしたほうがコストは低いですか?

740 :NAME IS NULL:2005/11/04(金) 14:59:22 ID:???
場合によるんじゃね?


741 :NAME IS NULL:2005/11/04(金) 16:17:43 ID:???
>>739
コストを計ってここに報告汁!

742 :NAME IS NULL:2005/11/04(金) 17:32:00 ID:???
Connector/J 3.1.11 バグ報告(文字化け)。

SELECT CONCAT(文字列型のカラム名, 数字型のカラム名) FROM テーブル名
↑の結果が文字化けする。
(useUnicode=true&characterEncoding=MS932、MySQL5.0.15。)

バグ回避策としては、「数字型のカラム名 + ''」と書くと化けなくなる。見
苦しい記述だが。なお、--skip-character-set-client-handshake を指定して
も効果は無かった。

これは MySQL Bugs には載っていないようだが、既知のバグだろうか?
また、何かもっときれいな回避策は無いだろうか?


743 :NAME IS NULL:2005/11/04(金) 18:41:11 ID:???
>>742
試してないけど、これではダメ?
SELECT CONCAT(文字列型のカラム名, CAST(数字型のカラム名 AS CHAR)) FROM テーブル名
 or
SELECT CONCAT(文字列型のカラム名, CAST(数字型のカラム名 AS CHAR CHARACTER SET 文字コード)) FROM テーブル名

個人的には文字列型と数字型をCASTせずにCONCATする方が気持ち悪い。

744 :742:2005/11/04(金) 19:18:34 ID:???
>>743
ありがとう。恥ずかしながら、MySQLでキャストする方法を知らなかった。
こんな関数があったのか。
http://dev.mysql.com/doc/refman/4.1/ja/cast-functions.html

CAST(数値型カラム名 AS CHAR) で文字化けしないようになった。

CONCAT() で文字列以外を結合するのが気持ち悪いのは同意だが、
マニュアルでは「数値型の引数は同等の文字列形式に変換される」
ことになっている。
http://dev.mysql.com/doc/refman/4.1/ja/string-functions.html


745 :NAME IS NULL:2005/11/04(金) 19:58:19 ID:???
そもそも、SQL の標準的な文字列結合演算子は || だ。
MySQL ではそれが使えなくて、代わりに CONCAT() なんていう関数を用意して
いるわけで、こんな関数の存在自体が気持ち悪い。

なら mysqld に --ansi オプション付けろって?ゼロからの開発ならそうしたいよ。


746 :NAME IS NULL:2005/11/04(金) 20:03:58 ID:NTx28D3F
尾に初心者の質問と思うけど、一つだけ許して。ぜんぜん分からん。
データベースの中身をセレクトで引っ張ってきて、
テキスト領域に出力すると、スペース後の文字列が出てこない。
 を使ってやればいいの?

747 :746:2005/11/04(金) 20:06:27 ID:NTx28D3F
消えてる・・・
×> を使ってやればいいの?
○>&nbsp;を使ってやればいいの?

748 :NAME IS NULL:2005/11/04(金) 20:39:42 ID:???
>>746-747
こちらも、君が何を聞きたいのか、全然分からん。

テキスト領域ってなんだ?TEXTAREA のことか?
DB の内容を PHP か何かで出力させているのか?
もしそうなら、ブラウザのHTMLソースには、DBの内容は出力されているか?

君の質問をここまで解読しようとした自分を誉めてやりたい。


749 :NAME IS NULL:2005/11/04(金) 21:00:14 ID:???
>>746-747
カラムってわかるか?

750 :NAME IS NULL:2005/11/04(金) 21:51:57 ID:???
すみません。困っているので質問させてください。

FedoraCore + Apache + PHP の環境でCGIを動かしてまして、
その中にデータベースを利用するアプリケーションがあります。
問題は、ウェブ上でCGIを通して更新されたはずの情報が、
何故かシェルから見たときに更新されていないんです。
特定のテーブルのみで起こる現象で、同じデータベース内の別のテーブル、
他のデータベースの内容は更新された内容が確認できますが、
該当テーブルのみは何日も前に更新されているはずの古い情報が表示されます。

こういう場合について何か解説したサイトなんかはありますでしょうか?

751 :746:2005/11/04(金) 21:53:41 ID:NTx28D3F
>>749
ぐぐってみる。ありがと

752 :746:2005/11/04(金) 21:57:26 ID:NTx28D3F
>>748
ごめん、シカトしてしまったorz
テキスト領域はお察しのとおりTEXTAREAの事です。
そしてJSPで出力してます。
確認した所、ソースにはちゃんと出力されていました。
手間かけてすいません。

753 :746:2005/11/04(金) 22:11:17 ID:NTx28D3F
あーすいません自己解決しました。
ダブルコーテーションが抜けてただけでした。
お騒がせしました。

754 :NAME IS NULL:2005/11/04(金) 22:51:14 ID:???
>>750 しぇるからmysqlかなんかで見たところ、
更新したつもりのテーブルが書き替わって
ないことですか?それは単にちゃんとデータベース
更新されてないから、というオチでわ。cgiスクリプトの
ばぐをまず疑うべきでしょう。

テーブルが書き換わってるのに、web上の表示が
更新されないという話しなら、キャッシュとか。。
でもたぶんそっちのことじゃないよね。

755 :NAME IS NULL:2005/11/05(土) 07:32:42 ID:g1Ja5KZb
5.0.15使ってみた。
アウター結合の仕様とか変わってるぽい。

select … from table-A left join table-B 結合条件 left join table-C 結合条件 …

(↑)4.1.15だとOKなのに、5.0.15だとNGだった。
小ショック。

756 :NAME IS NULL:2005/11/05(土) 11:02:43 ID:???
>755
外部結合だけ?
外部・内部を問わず、JOIN 〜 USING を使うと互換性が無い、という話ではな
いのか?
その話なら >>654 >>710 で出てきたけど、それともまた別の話なのか?


757 :NAME IS NULL:2005/11/05(土) 15:45:27 ID:???
うう、もーらちがあかん・・・ver.4.14です

table1: data1 , nurupo_id
table2: nurupo_id , data2 , ga_id
table3: ga_id , data3
というテーブルがあるとして、
table1>table2>table3の順にLEFT JOINで全件表示したくて
昨日から悩んでいるのですがさっぱり上手くいきません。
SELECT data1 data2 data3 FROM table1 LEFT JOIN table2 LEFT JOIN table3 on〜
だとなんかえらい事になるし、ググってもこれだ!というものは探せないし…
どうしたらうまく結合できるでしょうか…アドバイスおねがいします。

758 :NAME IS NULL:2005/11/05(土) 16:01:00 ID:???
>table1>table2>table3の順にLEFT JOINで全件表示したくて
という表現が良く判らないので間違っているかもしれんが、こういうこと?
間違っているようなら、サンプルデータと期待する結果をカキコよろ。

SELECT data1,data2,data3
FROM table1
LEFT OUTER JOIN table2 ON table1.nurupo_id = table2.nurupo_id
LEFT OUTER JOIN table3 ON table2.ga_id = table3.ga_id

759 :757:2005/11/05(土) 16:50:07 ID:???
>>758
期待していた結果がでました!
OUTER JOIN の言葉すら知りませんでした。精進します…
本当に助かりました。ありがとうございます!

760 :NAME IS NULL:2005/11/05(土) 21:17:12 ID:???
正直、結合はよく解ってないけどなんでもかんでもinner joinで済ましちゃってるんですがこんな漏れは逝ってよしですか?


761 :NAME IS NULL:2005/11/05(土) 21:54:41 ID:???
DMLはわかるけどDMLはわかるって人も
結合とかちょっと難度が上がるとわかんなくなるからな
SQLは奥が深いぜ

762 :NAME IS NULL:2005/11/05(土) 22:24:31 ID:DQvC5iUD
MySQL には、ORACLE でいうところの表領域(tablespace)は、無いようですが、
「このテーブルはAディスク、このテーブルはBディスク」の様なことはできないのでしょうか?

763 :NAME IS NULL:2005/11/05(土) 22:51:01 ID:urZZ/Ba6
エクセルVBAでMYSQLと接続する方法を教えてください。
ODBCドライバ使えばできるらしいのですが、
私が持ってるVBAの本にはまるでかかれてません。

764 :NAME IS NULL:2005/11/05(土) 23:10:39 ID:???
マルチうざい奴だな。
ODBCを使えばできることが判っているのならググれや。

765 :NAME IS NULL:2005/11/06(日) 00:05:56 ID:???
>>762
意味が良く判らないけど、ディスクI/Oを分散させたいの?
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_23

766 :NAME IS NULL:2005/11/06(日) 00:25:50 ID:???
>>764
たぶんGoogleからアク禁喰らってるんだよ。
エロワードの検索のし過ぎとかで。

>>763
ほれ。
ttp://homepage2.nifty.com/kasayan/vba/database.htm


767 :762:2005/11/06(日) 00:47:53 ID:???
>765
なるほど〜。
ありがとう。


768 :ご質問:2005/11/06(日) 01:01:44 ID:Uo6ppMeg


@Oracle + CSE(Osqledit)
AMySQL + CSE(Osqledit)

@の様にAのパターンをそれぞれ連動させる良い方法は
ありますか?

一応、CSEをMySQLに連動させようとぐぐって挑戦をしては
みたのですが、うまく行きません。

そもそもMySQLとCSEとを連動させる事は無理なのでしょうか?

769 :NAME IS NULL:2005/11/06(日) 10:20:22 ID:???
>>763
現在VBA+MySQL 4.1.12aで作ってる最中。いろんな入門書をみながら作ってる。

一番最初は「Excelで使うMySQL」 九天社でも読め。


770 :763:2005/11/06(日) 14:27:14 ID:???
他スレで回答がありました。
ありがとうございました。

771 :NAME IS NULL:2005/11/06(日) 14:42:13 ID:???
>>763 この板から消えろ 馬鹿すぎ

28 名前: NAME IS NULL Mail: 投稿日: 05/11/05(土) 23:07:24 ID: urZZ/Ba6

エクセルVBAでMYSQLと接続する方法を教えてください。
ODBCドライバ使えばできるらしいのですが、
私が持ってるVBAの本にはまるでかかれてません。

50 名前: NAME IS NULL Mail: 投稿日: 05/11/05(土) 23:07:55 ID: urZZ/Ba6

エクセルVBAでMYSQLと接続する方法を教えてください。
ODBCドライバ使えばできるらしいのですが、
私が持ってるVBAの本にはまるでかかれてません。


763 名前: NAME IS NULL Mail: 投稿日: 05/11/05(土) 22:51:01 ID: urZZ/Ba6

エクセルVBAでMYSQLと接続する方法を教えてください。
ODBCドライバ使えばできるらしいのですが、
私が持ってるVBAの本にはまるでかかれてません。


772 :NAME IS NULL:2005/11/06(日) 14:43:11 ID:???
>>771
MySQL vs PostgreSQL Part2
http://pc8.2ch.net/test/read.cgi/db/1123011800/54

お前がマルチしてどうすんだよw

773 :NAME IS NULL:2005/11/06(日) 14:52:11 ID:???
マルチにマルチで返しマルチが増殖。
これぞマルチ理論

774 :NAME IS NULL:2005/11/06(日) 14:55:10 ID:???
MySQL 5.0
http://pc8.2ch.net/test/read.cgi/db/1081818145/30

775 :NAME IS NULL:2005/11/06(日) 16:39:10 ID:RcrbLB0d
最近MySQL5.0にアップデートした者ですが。
今まで、"sql"というカラム名を持ったテーブルを使っていたのですが、
selectやinsertでこのカラム名(もしくはエイリアスでも)を使用するとエラーが出る様になりました。
どなたか対処方法ご存知の方いらっしゃいませんか?

またalter tableでこの"sql"というカラム名を変更しようにも、sql文のなかに "sql"と言う文字が入ってるだけで
エラーがでてしまい、途方に暮れています。
どなたか是非対処方法をお教えください

776 :NAME IS NULL:2005/11/06(日) 16:50:20 ID:???
>>775
テーブル名に'sql'って…
名前変えなさい。
変え方はこのスレを最初から読み返してみる事をお勧めします。

777 :NAME IS NULL:2005/11/06(日) 17:14:26 ID:RcrbLB0d
カラム名なんだけど。

778 :NAME IS NULL:2005/11/06(日) 17:20:28 ID:???
余計駄目

779 :NAME IS NULL:2005/11/06(日) 18:39:37 ID:???
Mysql 4.1.11 Windows版 インデックスの作成について。
テーブル作成の後にcreate index 〜で作成することは出来たんですけど、一つのcreate table 〜の中でやろうとすると
シンタックスエラーになります。
コマンドプロンプトから
c:\> mysql testdb -u user -pxxxx < c:/v.sql で作ろうとしているんでその中身を書きます。

create table V(
num int(9) auto_increment,
item1 varchar(20),
item2 varchar(20),
item3 char(1),
item4 char(1),
item5 varchar(50),
item6 text,
index v_idx on item5,
primary key (num)
) engine=InnoDB , character set sjis;

どう直せばいいか、教えてください m(__)m。

780 :NAME IS NULL:2005/11/06(日) 18:41:51 ID:???
>>775
バッククオートで括れば?
`sql`みたいに。


781 :NAME IS NULL:2005/11/06(日) 19:11:45 ID:???
>>779
index v_idx on item5,
 ↓
index v_idx (item5),

782 :NAME IS NULL:2005/11/06(日) 19:51:44 ID:???
>>781
有難うございます! m(__)m 

783 :NAME IS NULL:2005/11/06(日) 20:04:10 ID:0T6ye7p4
>>780
ありがとうございます。alter tableでカラム名を変更できました。

>>778
4.1までは問題なく稼働していたから・・・
今後は気をつけます。

784 :NAME IS NULL:2005/11/06(日) 20:19:41 ID:???
>>772

マルチに個別に叱咤しているので、マルチでなし

785 :NAME IS NULL:2005/11/07(月) 01:17:36 ID:???
カラム名にnoって今でもたまにやるよ。
意味としては気づきにくいんだよなNOじゃなくてNo.なのに

786 :NAME IS NULL:2005/11/07(月) 10:51:04 ID:???
>>784
コピペやん
個別にってんなら文体も文章も全部変えとけ

787 :NAME IS NULL:2005/11/07(月) 12:47:51 ID:XuTYqAbL
マシンAのファイルをdumpしてマシンBにコピーすると
ひらがな・漢字の部分が文字化けしていました.
文字コードの設定が原因ではないかと思うのですが
よろしければ解決方法を教えてください.

788 :NAME IS NULL:2005/11/07(月) 13:50:43 ID:???
>>787 ttp://www.mysql.gr.jp/frame/modules/bwiki/?FAQ

789 :NAME IS NULL:2005/11/07(月) 14:08:57 ID:XuTYqAbL
ありがとうございます.

要は,dumpの際に--default-character-set=binaryオプションを
指定すればよいということでしょうか.

マシンA,BのMysqlのバージョンはともに4.1で
A(コピーしたいデータがある)の文字コードはlatin1です
B(データの移動先)の文字コードは,今手元にないので分かりません.

790 :NAME IS NULL:2005/11/07(月) 15:55:01 ID:JC67ND0H
他スレで初歩的過ぎるためかスルーされたんですが、

if($ken<>''){ }

{}内が飛ばされるのはなんで?
<> とか '' の意味がわかりません 。教えてください

791 :NAME IS NULL:2005/11/07(月) 16:02:30 ID:???
超能力者の俺が答えてやる。

県名が空だから。


792 :NAME IS NULL:2005/11/07(月) 16:59:25 ID:XuTYqAbL
select文の書き方によって,結果が変わるのですが
原因は何でしょうか.

mysql> select address,mail from person;
+---------------------------------+-
| address | mail
+---------------------------------+-
|東京都江東区神森3-1SSKビル424号 | (省略)
|鳥飼町123番地3 |
|市服部町91-32-612号 |
| |
| 山口県山口市秋吉村123-9 |
+---------------------------------+-
5 rows in set (0.00 sec)

mysql> select address from person;
+---------------------------------+
| address |
+---------------------------------+
| 東京都江東区神森3-1SSKビル424号 |
| 島根県更級郡鳥飼町123番地3 |
| 岡山県南行李市服部町91-32-612号 |
| 熊本県熊本市与謝鯉村6-12 |
| 山口県山口市秋吉村123-9 |
+---------------------------------+

レコードは,タブで区切ったテキストからloadして格納したものです.
また,addressはtext型です.

793 :NAME IS NULL:2005/11/07(月) 17:00:29 ID:XuTYqAbL
※住所は架空のものです.

794 :NAME IS NULL:2005/11/07(月) 17:18:05 ID:???
>>790
スルーされたのはその場に相応しい質問じゃなかったからじゃないの。
多言語のプログラミングの質問だから、ここでも相応しくはないね。

795 :NAME IS NULL:2005/11/07(月) 17:19:52 ID:???
select文の書き方が違うから

796 :NAME IS NULL:2005/11/07(月) 17:23:08 ID:XuTYqAbL
>>795
データ自体は問題なく格納されているんでしょうか.
また,下の結果のように正しく表示させるにはどうすればよいのですか.

797 :NAME IS NULL:2005/11/07(月) 18:13:10 ID:???
>>796
addressカラムではなくて、mailカラムにコントロールコードが
入っているような気がするんだけど。
select mail from person; でもおかしくならない?

798 :NAME IS NULL:2005/11/07(月) 18:22:32 ID:XuTYqAbL
>>797
それでもおかしくなにります.
コントロールコード??表定義の不備ですか.

>>792の上の図の空白が削られているので,.におきかえて書きます)
mysql> select address,mail from person;
+---------------------------------+---------------------------------+
| address.........................| mail............................|
+---------------------------------+---------------------------------+
.|東京都江東区神森3-1SSKビル424号.|.diet_master_toshiki@dcon.ne.jp...
.............|鳥飼町123番地3......|.yu_ka.k@dcon.ne.jp...............
.............|市服部町91-32-612号.|.momosabu@yahoo.com...............
|.熊本県熊本市与謝鯉村6-12........|.NULL............................|
|.山口県山口市秋吉村123-9.........|.NULL............................|
+---------------------------------+---------------------------------+

メールのみの場合は以下のようになりました.
mysql> select mail from consultant;
+---------------------------------+
|.mail............................|
+---------------------------------+
.|diet_master_toshiki@dcon.ne.jp
.............|.ne.jp
.............|oo.com
|.NULL............................|
|.NULL............................|
+---------------------------------+


799 :797:2005/11/07(月) 18:40:33 ID:???
>>798
いや、表定義のミスではなくて元データがおかしい、またはインポート(load)時の
指定ミスだと思う。
mail カラム単体の結果を見た感じ、load コマンドのパラメータ
 lines terminated by '行末コード'
の指定が元データと一致していないのかも。
行末コードの指定を以下のどれかに変更して load し直してみるとか?
'\r\n' か '\n' か '\r'

800 :NAME IS NULL:2005/11/07(月) 18:55:34 ID:XuTYqAbL
>>799
元データは
-------------------------
12...あああ......東京都〜
123..いいいい....静岡県〜
-------------------------
のように各データ間をタブで区切って,
行末はそのまま改行しています.Nullは"\N"です.

テキストファイルからのインポートは
load data infile "(名前).txt" into table person; です.


801 :NAME IS NULL:2005/11/07(月) 19:02:17 ID:XuTYqAbL
diet_master_toshiki@dcon.ne.jp\R や \N\Rのようにかいても
diet_master_toshiki@dcon.ne.jpR,NRとなってしまい,
セレクトの結果もズレたままで,何も変わりませんでした….

802 :797:2005/11/07(月) 19:07:51 ID:???
>>800
ちょっと疲れてきた…。漏れの説明がヘタすぎるんだね。
以下のどれかでインポートし直してみればいかかでしょう?
元のデータはテーブルから消しておかないと重複してしまうと思うのでご注意を。

load data infile "(名前).txt" into table person lines terminated by '\r\n';
 または
load data infile "(名前).txt" into table person lines terminated by '\r';
 または
load data infile "(名前).txt" into table person lines terminated by '\n';

803 :NAME IS NULL:2005/11/07(月) 19:16:14 ID:XuTYqAbL
>>802
テキストファイルの各行の最後に,[(タブ)\r]を追加し
2行目の文でロードするとうまく表示されました.
どうも助かりました.ありがとう

804 :NAME IS NULL:2005/11/07(月) 19:48:12 ID:???
number, name
4, うんこ
7, まんこ
7, あんこ
11, いんこ
11, りんご

からは

4, うんこ
7, まんこ
7, あんこ
11, いんこ
11, りんご

number, name
1, みかん
2, ばなな
3, めろん
5, すいか
6, きゅうり

からは

1, みかん
2, ばなな
3, めろん

みたいな取り出し方をするにはどうしたらいいですか?

805 :NAME IS NULL:2005/11/07(月) 21:31:57 ID:???

   ワケ      ワカ      ラン♪
  ∧_∧    ∧_∧    ∧_∧
 (; ・∀・)  (; ・∀・)   (; ・∀・)
⊂ ⊂  )  ( つ つ  ⊂__へ  つ
 く く く    ) ) )     (_)/
 (_(_)  (__)_)    彡(_)


806 :804:2005/11/07(月) 21:38:32 ID:???
numberが3種類みたいなことです

807 :NAME IS NULL:2005/11/07(月) 21:52:24 ID:???
ナンバーズよりロト6

808 :NAME IS NULL:2005/11/07(月) 22:02:39 ID:???
>>806
サブクエリが使えるバージョンならこんな感じでいけるんちゃう?

select table1.number,table1.name
from table1
inner join (
 select number from table1 group by number order by number limit 3
) as t on table1.number = t.number;

809 :NAME IS NULL:2005/11/07(月) 22:14:57 ID:???
SELECT number, name FROM テーブル WHERE number <> 5 OR number <> 6

810 :804:2005/11/07(月) 22:15:46 ID:???
4.0じゃ無理か・・・
4.1以上だったら

number, name
4, うんこ
7, まんこ
7, あんこ
11, いんこ
11, りんご



number, name
4, うんこ
7, まんこ-あんこ
11, いんこ-りんご

みたいなこともできますか?

811 :808:2005/11/07(月) 22:22:14 ID:???
>>810
アホくさ、後から条件だしなや。相手しとれんわ。
アプリ側で好きにさらせ。

812 :NAME IS NULL:2005/11/07(月) 23:43:13 ID:???
5.0.15をインストールしたんですが
winmysqladmin.exeが見当たりません。
どこあるのでしょうか?

813 :NAME IS NULL:2005/11/08(火) 01:59:23 ID:JH3nQr9Z
MySQL 5.0.15をインストールしたのですが
操作方法がわかりません、コマンドを打ってデータベースを作ったりするには
どの実行ファイルを操作すればいいのでしょうか?(MySQLで)
MySQL以外の例えばphpMyAdminなどではMySQLに接続できないと言われます。
(phpMyAdmin は、MySQL サーバーに接続しようとしました。そして、サーバーは接続を拒絶しました。config.inc.php の中のホスト、ユーザー名およびパスワードをチェックし、MySQL サーバーの管理人から与えられた情報にそれらが相当することを確かめるべきです。)

814 :NAME IS NULL:2005/11/08(火) 02:09:07 ID:???
>>810
804は意味がよくわからんけどそれならgroup_concatで可

815 :NAME IS NULL:2005/11/08(火) 02:25:46 ID:???
>>812
winmysqladminはWindows特有でサポートもメンテナンスも
半分放棄されたような代物で、最近は同梱されなくなってる。
どうしても使いたいなら古いMySQL4.0系から取ってくる。
理由が特になければ、現時点で推奨されるMySQL Administratorを使う。
http://dev.mysql.com/downloads/administrator/index.html

816 :804:2005/11/08(火) 03:04:23 ID:???
>>814
ああありがとう

817 :NAME IS NULL:2005/11/08(火) 05:31:33 ID:???
JOINを使って検索す時、通常WHEREに書くような条件もONに書くべきなんでしょうか?
それとも、tb1.id = tb2.id などは ONに書き、 tb1.id='1' などはWHEREに書くのでしょうか?

818 :NAME IS NULL:2005/11/08(火) 08:30:29 ID:???
インストールしていたMySQLをコントロールパネルから削除したのですが、
新しいMySQLをインストールすると前のデータベースが残っていました。
MySQLの場合、データベースのファイルはどこに格納されているのでしょうか?

MySQL4 Windouws2000 環境です。

819 :NAME IS NULL:2005/11/08(火) 13:11:18 ID:???
>>818
MySQLをインストールした/しようとしているディレクトリの中の
dataディレクトリの中。でもプログラムの追加と削除で[削除]した場合、
インストーラがデータの削除するかどうか訊いてきたでしょ?

820 :NAME IS NULL:2005/11/08(火) 15:17:23 ID:???
自分の好きな音楽のジャンルをチェックボックスで複数選択して、
データベースに格納する。

ということをやりたいのですが、
ジャンルは 1-100までのintで定義されていて、
いくつでも選択可能

ユーザを定義した(ハンドルネームとか、メールアドレスとか、パスワードとか)
テーブルがありまして、できればこのテーブルに上のデータを入れたいです。

ユーザとジャンルから検索をかけたときにインデックスが使われているようにしたいのですが
どのようなデータ構造にすればいい感じでしょうか?

アドバイスよろしくお願いします。

821 :NAME IS NULL:2005/11/08(火) 15:42:04 ID:???
>>820
やってみたのが、
ユーザテーブルとジャンル登録のテーブルを別物にしてみました。

| user | int(10) unsigned |
| genre | int(10) unsigned |

これですと、ユーザからの検索、ジャンルからの検索はどっちも高速っぽいのですが、
ユーザ情報を取得するときに、複数のクエリを発行することになってしまうのですが、
なんとかならないでしょうか・・・・



822 :NAME IS NULL:2005/11/08(火) 16:11:13 ID:???
>>820-821
もう一つ言っていることが良く理解できないんだけど、こういうこと?

--- ユーザーテーブル(tb_user)---
user int, handlename varchar(xxx)...略...

--- お気に入りのジャンルテーブル(tb_genre) ---
user int, genre int

--- 抽出SQL ---
SELECT genre, tb_genre.user, handlename ...略... FROM tb_genre
LEFT OUTER JOIN tb_user ON tb_genre.user = tb_user.user
WHERE
tb_genre.user = xxx    ユーザーで抽出
または genre = xxxx    ジャンルで抽出

823 :NAME IS NULL:2005/11/08(火) 16:42:21 ID:???
>>822
レスありがとうございます

例えばこのクエリですと、tb_user.user で絞り込んだ場合、
複数行が出力されてしまうのを、
1行で返してもらいたいのです。

genreのところを int のカンマ区切りで 1,4,10,15
みたいな感じで整形して、
select user ,handlename , pass ... genre
                      ↑
ここが 1,4,10,15 となるような結果といいますか・・・

わかりにくくてすみません(´・ω・`)

824 :NAME IS NULL:2005/11/08(火) 20:27:46 ID:???
>>815
なるほど!ありがとうございます。

825 :NAME IS NULL:2005/11/08(火) 21:06:16 ID:???
5.0.15のデフォルトキャラクタをujisにしたら
コマンドプロンプトにselect * from tableで表示されるマルチバイトが化けます。
sjisにすると化けません。
コマンドプロンプトの文字コードって帰れるんですか?


826 :NAME IS NULL:2005/11/08(火) 21:36:04 ID:???
>>825
Windows?
Windows標準のコンソールでは選べないんじゃないかな。

827 :NAME IS NULL:2005/11/08(火) 22:27:26 ID:???
4.0.26でレコード数の多い(数百万件)MyISAMテーブルに
alter table comment = '本当にありがとうございました'
でコメントを設定しようとすると、すごい時間がかかってしまいます。

全レコードを見に行っているような気がするぐらい時間がかかります。

frmファイルを書き換えるだけで終わらないんですかねぇ。

828 :NAME IS NULL:2005/11/08(火) 23:13:51 ID:???
>>826
あ、すいません。忘れてました。Windowsです。
そうですか。。。みなさん、どす窓ではselectとかして見ないんですかね?

829 :NAME IS NULL:2005/11/08(火) 23:19:50 ID:???
>>827
そのALTERの意味が分かんないけど、DEFAULT指定してるんなら全部の行に
'本当にありがとうございました'
を突っ込んでるんじゃね?
最初DEFAULT抜きにして、あとでDEFAULTを追加すれば?

>>828
set names sjis;
とか

830 :NAME IS NULL:2005/11/08(火) 23:20:52 ID:???
MySQL 4.1.11
あるテーブル (仮に t )でコード-日付でデータが入っています
t_code input_date item1 item2

でこれから当日から過去100日分のデータを日付順に見たいと思って
います。過去のデータ100日分を出すだけなら

select * from t
where t_code = **** (←見たいコード)
order by input_date desc limit 100

で出来るんですが、次の段階、日付をまた昇順に並べ替えて出力する
のとくっつけてするにはどうすればいいか、教えてくださいm(__)m。



831 :NAME IS NULL:2005/11/08(火) 23:49:56 ID:???
>>828
DOS窓はsjisだから、データベースがsjisでなければ set names sjisをしないと化ける。
毎回、これを入力するのが面倒なら以下のような内容で C:\my.ini に保存しておけばいい。

[mysql]
default-character-set=sjis

注意しないといけないのは、C:\my.ini を参照するのは MySQL のコマンドだけということ。
(個別に作成したアプリはこの限りではないけど)
例えば MySQL用ODBCドライバは C:\my.ini は参照しないので、ODBCの設定で
set name sjis をやらないと Access などからリンクすると化けるハメになる。

832 :NAME IS NULL:2005/11/08(火) 23:55:12 ID:???
>>830
4.1.11ならサブクエリが使えるから以下でいいんじゃない?
何となく無駄が多い気もするけど。

select * from (
 select * from t
 where t_code = ****
 order by input_date desc limit 100
) as x
order by input_date;

833 :NAME IS NULL:2005/11/09(水) 00:10:08 ID:???
>>832
おぉ有難うございます。その as x をつけないので

ERROR 1248 (42000):Every derived table must have its own alias

とMySQLに怒られていたとこです(^^;。
サブクエリとか結合とか難しいっす。


834 :827:2005/11/09(水) 00:48:23 ID:???
>>829
カラムじゃなくてテーブルに設定できるコメントです。
create table の table_option に指定する comment と同じです。
一応、処理が終わってから見るとちゃんと設定されていたんですけどね。



835 :818:2005/11/09(水) 08:25:41 ID:???
>>819

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

836 :NAME IS NULL:2005/11/09(水) 11:06:04 ID:???
>>834
alter table は、基本的に、テーブルコピー&廃棄を行う。
実行中は、テーブルに対してアクセスすることが出来なくなる。

数万レコード超えたらメンテナンス時以外は使わない方がよい。


837 :NAME IS NULL:2005/11/09(水) 15:22:26 ID:Vdm/FnMI
先日,「セレクト文の結果がうまく表示されない」という
状態の解決策として,load dataの際に,「lines terminated by '\r'」
と書けば良い教えていただいた者ですが,この記述は通常は
行わないものなんでしょうか?
というのも,毎回warningがレコード数と同じくらい出てしまうからです.
以前のように「lines〜」なしでloadすると,セレクト文の結果は
乱れてしまうものの,warningなしでinsertできます.

838 :NAME IS NULL:2005/11/09(水) 15:27:33 ID:???
長文失礼します。

カテゴリテーブル
| catid | parent_catid | catname | catnum1 | catnum2 |...
記事テーブル
| itemid | content | ....
記事カテゴリテーブル
| itemid | catid |

こんな感じのテーブルがあります。
カテゴリは親IDを設定してツリー構成になる様になっています。
記事は複数のカテゴリを割り当てるようになっています。

編集より閲覧の方がかなり多いと思うので、表示時のクエリ数を減らす為に、
カテゴリの登録数(cat_num1)・下層カテゴリも含めた登録数(cat_num2 )の2つを(記事投稿・編集・削除・カテゴリの構成変更)時に更新させようかと思っています。

今やっているのは、まずSELECTでカテゴリ毎の記事数を抜き出しPHPで下層を含めたものを計算し
更新された記事に関連するカテゴリを全て1個づつUPDATEしているのですが、関連するカテゴリ数が多くなると
それだけUPDATEも沢山行うので、一度のUPDATEで何とかできないか考えています。(増えても一度に10〜15程度だと思いますが)
cat_num1だけならMySQLの関数のみで何とかなりそうな気がするんですが、下層カテゴリも含めた登録数はやはりPHPなどで計算しないと無理ですかね・・。

こんなもの保存せずに、表示時にクエリして計算するほうが良いのでしょうか?
または、もっと素敵な感じに登録数を保存する方法あったら教えてください。。

839 :NAME IS NULL:2005/11/09(水) 19:59:35 ID:???
>>831
ありがとう。普段はujisで使って中身を見るときだけsjisにして見ることにします。

840 :827:2005/11/10(木) 02:27:37 ID:???
>>836
了解です。

変更内容に合わせて処理が変わるわけじゃないんですね。

841 :NAME IS NULL:2005/11/10(木) 20:19:29 ID:???
余りに初歩的かもしれませんが。rootでログインして今現在どのユーザーがどのデータベースに接続しているのかって
判ります?別に管理者の仕事をしているわけじゃないんですけど。

842 :NAME IS NULL:2005/11/10(木) 20:37:34 ID:???
show processlist ?

843 :NAME IS NULL:2005/11/10(木) 21:40:12 ID:???
>>842
回答

 \     アリガd     /
 
    /´/´  /´/´  /´/´
   (,,゚Д゚)/ (,,゚Д゚)/ (,,゚Д゚)/ <ありがd!
  _(ノ_,)つ (ノ_,)つ (ノ_,)つ
 (_ノ / (_ノ / (_ノ /
  UU    UU   UU

844 :NAME IS NULL:2005/11/10(木) 23:28:55 ID:???
やねう企画社内では、
「MySQLなんてへちょいソフト使うくらいなら舌噛み切って死んだるわ」
という評価だそうです。
http://d.hatena.ne.jp/pmoky/20051102#1130945592

845 :NAME IS NULL:2005/11/11(金) 00:50:38 ID:???
エロゲでデータベースなんて使わない、ってことだろ?

846 :NAME IS NULL:2005/11/11(金) 03:24:16 ID:???
MySQLって基本的にメンテフリーで無停止稼動が可能ですか?

847 :NAME IS NULL:2005/11/11(金) 04:02:56 ID:???
私にはどうしてもわかりませんでした。
MySQLで、データベース単位に容量の上限をかける方法。
だれか知ってる方いらっしゃいましたら、ヒントいただけないでしょうか。

アプリケーション別にデータベース(create database)を作って、
1つのアプリケーションでの大量データ発生が、別のアプリケーションに
影響与えないようにしたいんです。

運用の手間の問題から、データベース別にパーティションを分けるのは
避けたいのですが。

環境は、CentOS4.2、MySQL4.1.12です。



848 :NAME IS NULL:2005/11/11(金) 14:34:42 ID:ne/6/gfo
>>844
まあオープンソフトだし。オラクルのほうがいいし。

>>846
どんどん遅く成っても良ければ

>>847
MySQLのレンタル鯖でもするのかな?

849 :NAME IS NULL:2005/11/11(金) 21:08:53 ID:???
>>844
文句があるならあっちでやって。わざわざ2ちゃんに持ってくる必要なし。

850 :847:2005/11/11(金) 23:02:47 ID:???
レンタル鯖でなく、会社で使うのに。
MySQL使いたい人が何人かいるのですが、サーバは1台で済ませたく。

851 :NAME IS NULL:2005/11/12(土) 00:03:13 ID:???
会社で使うんだったら容量制限なんてしなくてもいいのでは?
テスト用サーバとかなら、なおさら余裕有る方が安心してテストできるような気が。

852 :NAME IS NULL:2005/11/12(土) 00:59:22 ID:8s5Xp8OJ
MySQL control centerをダウンロードしようと思ってるんですが
なぜか、MySQL administratorのページに飛ばされてしまいます。

MySQLCCのダウンロードページを張ってもらえませんか?

853 :NAME IS NULL:2005/11/12(土) 01:31:13 ID:???
>>852
http://downloads.mysql.com/archives.php?p=mysqlcc

MySQLAdminに飛ばすのは意味があってやってることなので
今更MySQLCCを敢えて使うのに意味があるのか?ちゅう感じだが。

854 :NAME IS NULL:2005/11/12(土) 11:13:20 ID:???
>847

http://www.faqts.com/knowledge_base/view.phtml/aid/648/fid/94

結局のとこ、MySQL単体ではその機能はないけど、
DB毎にユーザを作成し、そのユーザに対するquota でどうよ、
って所らしい。(斜め読み)

UNIXらしいといえば、らしい解決方法だなぁ。

855 :852 日曜プログラマー:2005/11/12(土) 12:18:00 ID:8s5Xp8OJ
>>853
あ、データベースの操作もadminからできるんですね。

今まで、データベースって言ってたのが、5.0からスキーマって言う言葉に代わってるんですね。

856 :ヘルプ:2005/11/12(土) 14:29:20 ID:5aSo15tf
だれか助けて下さい。
文字化けで困っています。どこのサイトを検索しても解決できません。
環境は PHP5 + MySQL + WindowsXP(IIS) で
フォームの内容をMySQLに「日本語」と書き込むと
フォーム送信の内容($_POST)はちゃんと「日本語」と表示されますが、
登録した内容を表示は「逓?{??」となってしまいます。
「php.ini」「my.ini」もSJISに統一したりEUC-JPに統一してみたり
してるのですが全然解決せず困っています。
だれか助けてください。

857 :ヘルプ:2005/11/12(土) 14:32:45 ID:5aSo15tf
ちなみに「mysql_client_encoding」っていうPHPの関数で
接続したMySQLのエンコーディングを調べたら
「latin1_swedish_ci」とでました。
この辺がおかしい気がします…。

858 :NAME IS NULL:2005/11/12(土) 14:37:26 ID:???
つ ttp://www.mysql.gr.jp/frame/modules/bwiki/?FAQ
>>856-857

859 :NAME IS NULL:2005/11/14(月) 01:43:42 ID:+Vq9ufzG
誰か俺に問題点を教えてください。
LAN上の別のマシンからアクセスしようとしたら接続できません。
サーバークライアントともマシンはWindowsで、MySQLのバージョンは5.0.15-ntです。
telnet "マシン名" 3306
は、ローカルにやると接続できて、別のマシンからは接続できません。
なぜですか?

860 :NAME IS NULL:2005/11/14(月) 01:49:26 ID:???
答えでてるじゃないか。
ローカル以外の権限がないんだろ?

861 :NAME IS NULL:2005/11/14(月) 03:35:02 ID:???
>>859
接続できないと貴方が判断した理由(要因)は如何に?
そんくらい明示汁

862 :NAME IS NULL:2005/11/14(月) 03:40:36 ID:???
telnet hoge 3306 で接続できないってことはMySQLによるユーザ認証以前の問題だろ。

F/Wとか、マシン名の解決とかその辺を一辺整理したほうがいいよ。

863 :NAME IS NULL:2005/11/14(月) 09:39:14 ID:xQifeiUn
質問です。
show table statusでレコード数をrowsで求めようとしたのですが、実際にテーブルから読み出した数と違うときがあります。
これは何が原因なのでしょうか.

864 :859:2005/11/14(月) 12:27:33 ID:+Vq9ufzG
>>862
pingは通るんですよ。
LAN内にファイアウォールはないし。
サーバーのOSがWindows XPのHome Editonなのって関係ありますかね?

865 :NAME IS NULL:2005/11/14(月) 12:44:26 ID:???
>>864
Windowsファイアウォールには穴を開けているのか?

866 :859:2005/11/14(月) 13:00:30 ID:???
>>865
穴あけたら通りました。
データベースと関係ないミスですみません。
助かりました。

867 :NAME IS NULL:2005/11/14(月) 16:40:47 ID:6uYHf5vX
指定したcsvのファイルを自動で定期的に
インポートしなおしたりすることはできますでしょうか?

868 :NAME IS NULL:2005/11/14(月) 17:14:55 ID:???
>>867
cronとかでmysqlとかmysqlimportを回せば容易に可能。

869 :NAME IS NULL:2005/11/14(月) 21:13:21 ID:???
64bit環境でMySQL使ってる人いますか?

870 :NAME IS NULL:2005/11/15(火) 13:06:05 ID:???
>>863
InnoDB 使ってて、結果セットが巨大な時は概算になる可能性がある。
それじゃないか?


871 :NAME IS NULL:2005/11/15(火) 15:19:39 ID:???
>>869
どこの64bit環境か知らんけど、FreeBSD/amd64でMySQL4.0入れて
一日がしがし動かしたことあるけどふつーに動いてたが…

872 :NAME IS NULL:2005/11/15(火) 22:51:00 ID:e6XaRFFy
うちはAIX/p5で動かしてるけど,RHEL4/XEON64の方がパフォーマンスいいな

873 :NAME IS NULL:2005/11/15(火) 23:26:31 ID:???
>>867
CSV Engine使ってみれば

874 :NAME IS NULL:2005/11/16(水) 03:43:04 ID:???
メモリ増やしたので、innodb_buffer_pool_sizeを増やそうと
思うのだけど、それに合わせてinnodb_log_file_sizeを増やすと、
ib_logfile0のサイズが違うと起動してくれません。 このサイズを
増やすのってどうすれば良いのでしょう?
--skip-innodbで起動して削除? --skip-innodbが根拠無く怖い。。

あとinnodb_buffer_pool_sizeとkey_bufferとにどんなパランスで
割り当てるのが良いのかな?

875 :NAME IS NULL:2005/11/16(水) 03:43:42 ID:???
my.conf

876 :869:2005/11/16(水) 13:11:48 ID:???
>>872
http://dev.mysql.com/doc/refman/4.1/ja/linux.html
ここにLinuxで使う場合の同時接続数の問題が書いてありますが、
64bit環境でも関係あるんでしょうか?
64bit用のバイナリパッケージはダイナミックリンクのやつしかなくて、判断付かないんですが・・・

877 :NAME IS NULL:2005/11/16(水) 17:01:11 ID:???
すいません。質問があります。
検索キーワードの検索対象がテーブル2のDの列と、テーブル3のFの列で
該当するレコードが含まれている、テーブル1のレコードを表示させたいのですが、
どの様にすれば効率が良いのでしょうか。

下記の場合で「hoge」と検索すると
まず、テーブル2に当てはまるのが「a」と「b」。
テーブル3に当てはまるのが「cc」。
で、テーブル1で「a」と「b」が含まれているのは「1」と「2」で
同じく「cc」が含まれているのが「1」。
それを検索結果として表示させる。

テーブル1
A B C
─────
1 a,b,c aa,bb,
2 a,b bb,cc
3 c aa

テーブル2
D E
─────
a hoge
b hogehoge
c moge

テーブル3
F G
─────
aa mori
bb morimori
cc hogemori

878 :877:2005/11/16(水) 17:04:28 ID:???
色々とやってみたのですが、
・検索キーワードが複数ある場合
・テーブル2とテーブル3で該当レコードが複数ある場合
(上記例だと「hoge」で検索した場合、テーブル2で2レコード該当)

ここらへんの処理でとまどっています…。
やはり何回もsql文を繰り返さなければいけないでしょうか。
どうか御教授お願いします。

879 :NAME IS NULL:2005/11/16(水) 17:44:26 ID:???
>>877
質問
・例では、"cc" が含まれているのは "1" となっているが、"2" の間違いではないか?
・結果的に表示したいのは、"2" だけ?、"1" と "2" 両方?
・確認用で聞くが、検索条件を "mo" とした時、期待する結果は?
・MySQLのバージョンは?

880 :877:2005/11/16(水) 17:54:36 ID:???
お返事ありがとうございます。分かり辛い内容で申し訳ないです…。

>・例では、"cc" が含まれているのは "1" となっているが、"2" の間違いではないか?
「2」の間違いです…。
で、結果的に表示したいのは「1」と「2」の両方です。

>・確認用で聞くが、検索条件を "mo" とした時、期待する結果は?
テーブル2で「mo」があるのが「c」。
→テーブル1のB列で「c」があるは「2」

テーブル3で「mo」があるのが「aa」「bb」「cc」。
→テーブル1のC列で「aa」「bb」「cc」があるのは「1」「2」「3」

結果:「1」「2」「3」

MYSQLのバージョンは4.0.20です。

881 :877:2005/11/16(水) 18:07:49 ID:???
>>880
テーブル2で「mo」があるのが「c」。
 ×→テーブル1のB列で「c」があるは「2」
 ○→テーブル1のB列で「c」があるは「2」と「1」
だと思うんだが…

自信はないが、これでどうだろう?

SELECT DISTINCT t1.*
FROM t1, t2, t3
WHERE
t2.E LIKE '%hoge%'
AND t3.G LIKE '%hoge%'
AND (FIND_IN_SET(t2.D, t1.B) > 0 OR FIND_IN_SET(t3.F, t1.C) > 0);

882 :881:2005/11/16(水) 18:09:53 ID:???
>>881
あっ、違った。

テーブル2で「mo」があるのが「c」。
 ×→テーブル1のB列で「c」があるは「2」
 ○→テーブル1のB列で「c」があるは「1」と「3」
だと思うんだが…

883 :NAME IS NULL:2005/11/16(水) 18:29:59 ID:erNhWRfH
Aというデータベースの中にあるtable1と、Bというデータベースの中にあるtable2を
Inner Join することはできませんか?
できるとするとどうやりますか?

884 :NAME IS NULL:2005/11/16(水) 20:04:27 ID:???
>>883
公式に書いてあるから。
わからなくなったらマニュアルを目を皿にして読むようにするべし。
http://dev.mysql.com/doc/refman/4.1/ja/select.html


885 :877:2005/11/16(水) 20:33:33 ID:???
>882
>テーブル2で「mo」があるのが「c」。
>×→テーブル1のB列で「c」があるは「2」
>○→テーブル1のB列で「c」があるは「1」と「3」
また間違えました…。正しくその通り。

で。>881を元に色々とやったのですが上手く動作せず…。
ヒットするはずのテーブルが該当しないです…。

886 :NAME IS NULL:2005/11/16(水) 21:16:02 ID:???
>>876
それは昔のRHのglibcに問題があるてこと
だからABはLinuxThreadのPatchを提供してたから

ある人たちは変なglibc(RH)を使うなと言ってたし

887 :NAME IS NULL:2005/11/16(水) 21:38:22 ID:c/MFEjm7
すみません
レンタルサーバー上でSQLがうまく動かないのですが
質問はどの板にいけばよろしいのでしょうか

888 :877:2005/11/16(水) 22:09:34 ID:???
んー。>881さんのお陰でここまで出来ました。

SELECT DISTINCT t1.*
FROM t1, t2, t3
WHERE
(t2.E LIKE '%hoge%' AND FIND_IN_SET(t2.D, t1.B) > 0)
OR
(t3.G LIKE '%hoge%' AND FIND_IN_SET(t3.F, t1.C) > 0)

これで希望の動作をしているっぽいです。
ただ、これで該当件数をcount(*)で取得しようとすると
(上記の例だと「1」「2」「3」の3つが該当しているから“3”)
テーブル2とテーブル3のレコード数の合計が出てしまいます。
上記の構文って無駄な動きをしているんでしょうか。

889 :NAME IS NULL:2005/11/17(木) 03:51:09 ID:???
>>887
レンタル鯖板

890 :NAME IS NULL:2005/11/17(木) 05:05:13 ID:???
質問させてください。
ランダムな数字のデータが入っていて(中には重複した数字もある)
重複したデータを削除して表示させたいのですがどうしたらいいでしょうか?


891 :NAME IS NULL:2005/11/17(木) 07:38:05 ID:???
>>877
どちらにしてもテーブル1は元々有って変えられないのかもし
れないが変な設計だぁね。(テスト課題かなんか?)
ちゃんと動くSQLできてもすんげーパフォーマンス悪いだろーなぁ。

892 :877:2005/11/17(木) 09:36:56 ID:???
んー。テスト課題ではないんですがね。
例えばテーブル1が商品情報として、
その商品の特徴とかのピクトを
テーブル2とテーブル3に(ピクトの説明なども一緒に)格納して、
テーブル1にはそのIDだけを当てはめているんです。
で。商品を検索するとき、その特徴で文字列検索した場合の
検索SQLを考えていたんです
そのピクトは全商品共通なんで、ピクト情報全部を
テーブル1に突っ込むのも無駄かなぁと思ったんで別テーブルにしたんですが、
パフォーマンス悪いですかねぇ…。
まだ設計段階なんですが、どの様な構成が良いですか…?

893 :891:2005/11/17(木) 10:34:37 ID:???
>>892
カテゴリーの割り当てね。そうだろうとは思った。
昔自分でガリガリ読み書きしてた頃はこういう設計してましたけどね。

この場合は、テーブル (1) と (2,3) の間に、もう1つ「割り付け用」の
テーブルを用意。
1,a
1,aa
3,c
と書いてけば、1個でも1000個でも割り当てられまっしゃろ。

あと連結キーは、文字列か整数かではパフォーマンスがおっとろしく違うので、
テーブル2,3のキーは aa とかは避けるべきですね。

894 :877:2005/11/17(木) 11:26:19 ID:???
>893
まだSQLは勉強中なんでためになります。

>この場合は、テーブル (1) と (2,3) の間に、もう1つ「割り付け用」のテーブルを用意。
>1,a
>1,aa
>3,c
これってテーブル1に割り付けられているものを1行ごとに書いていくんですか?
例えばテーブル1の1の場合は
H I
─────
1 a
1 b
1 c
1 aa
1 bb
みたいに? レコード数やカテゴリ数が増えると、けっこうなレコード数になりますね。
で。これだと検索する場合に
「テーブル2」と「テーブル3」→「割り付け用テーブル」→「テーブル1」と
流れが遠くなるので遅くなるのかなぁって思っていました…。

>あと連結キーは、文字列か整数かではパフォーマンスがおっとろしく違うので、
そうなんですね。
勉強になりますー。

895 :869,876:2005/11/17(木) 14:32:31 ID:???
>886
昔のRHのglibcに問題ってのは、STACK_SIZEがデフォルトのままだからって言う意味ですか?
当方Gentoo使ってますので、もしそうだとすると自前でglibc入れ直しってことか…

896 :NAME IS NULL:2005/11/17(木) 16:22:36 ID:???
アンケート集計をしているのですが、
テーブルに“aaa,bbb,ccc,ddd”などと、カンマで区切られた文字列が入っているとします。
tableA
ID_文字
1_aaa,bbb,ccc
2_bbb,ccc
3_aaa,ccc
これを
$ans[] = array('aaa','bbb')
のような変数の“aaa”か“bbb”のいずれかが含まれている、
というように検索をしたいのですが、
いちいち$ansを分割して

SELECT *
FROM tableA
WHERE FIND_IN_SET('aaa',tableA.文字)
or FIND_IN_SET('bbb',tableA.文字)…

とやっていたのですが、$ansに含まれている文字が多くなるにつれて
sql文が長くなってしまいます…。
“,”で区切られている文字列の比較関数ってあるのでしょうか?



897 :NAME IS NULL:2005/11/17(木) 16:27:43 ID:???
>>896
ひょっとして >>877の方?
テーブルの設計を見直した方がいいのではないでしょうか?
1 aaa
1 bbb
1 ccc
2 bbb
2 ccc
3 aaa
3 ccc

898 :896:2005/11/17(木) 16:34:21 ID:???
違いますー。
チェックボックス式のアンケートフォームがすでにあって、
ひとつの設問に対して、複数回答すると
ans1 < aaa,bbb,ddd
みたいにインサートされているんですね。
それの集計結果をリアルタイムに表示させたかったのですが、、、

899 :NAME IS NULL:2005/11/17(木) 16:37:11 ID:???
ttp://www.itmedia.co.jp/enterprise/0308/24/epn01.html
こんな感じのアンケートフォームです。
この説明だと「'飴'が含まれている」というのに、FIND_IN_SETを使っているのですが、
「'飴'か'チョコ'が含まれている」というので、表示させたいんです。


900 :NAME IS NULL:2005/11/17(木) 16:59:23 ID:???
つーか、SQL文が長くなると問題あるの? 動作が遅くなるとか?

901 :NAME IS NULL:2005/11/17(木) 17:21:05 ID:???
>>899
複数回答のアンケートならテーブルは>>897のように縦に持つか、横に持つなら次のようにするべし。
ID、ガム、飴、チョコ
そのサイトの方法はFIND_IN_SETの説明のためにあえてそういう作りにしたもので、
アンケートのように必ず全件スキャンする場合にのみ有効。検索に使う場合には不向き。

902 :896:2005/11/17(木) 17:40:10 ID:???
>901
そうなんだ。複数回答の場合、回答項目が多くなるにつれ、テーブルが横に広がっていくので、
なるべく、ひとつの項目にまとまる様に
<input type='checkbox' value='aaa' name='ans1[]'>aaa
<input type='checkbox' value='bbb' name='ans1[]'>bbb
<input type='checkbox' value='ccc' name='ans1[]'>ccc
ってやってたけど、、、
これだと、後からテーブルいぢらんとも項目も増やせるし。
そう言われれば、検索(集計)には不向きなのかな…?

903 :NAME IS NULL:2005/11/18(金) 14:45:49 ID:???
先日から Windows版 MySQL 4.0.26 を使用しています。

商品管理を行うため下記のようなテーブルを2つ作成しています。

テーブル名:goods
 goods_id  name       price1
-------------------------------
| G1000001 | MBS 1320-33 | 266 |
| G1000002 | MBS 1310-33 | 574 |
| G1000003 | MBS 1230-22 | 413 |
| G1000004 | MBS 1220-22 | 196 |
| G1000005 | MBS 1210-22 | 315 |
| G1000006 | MBS 1205-22 | 266 |
-------------------------------


テーブル名:price_etc
 customer_ID goods_id  price_sp
-------------------------------
| C1000001 | G1000002 | 100 |
| C1000001 | G1000005 | 200 |
| C1000001 | G1000006 | 150 |
-------------------------------

この二つのテーブルから下記のような表を表示したいのですが

 goods_id  name       price1 price_sp
---------------------------------------
| G1000001 | MBS 1320-33 | 266 |
| G1000002 | MBS 1310-33 | 574 | 100
| G1000003 | MBS 1230-22 | 413 |
| G1000004 | MBS 1220-22 | 196 |
| G1000005 | MBS 1210-22 | 315 | 200
| G1000006 | MBS 1205-22 | 266 | 150
---------------------------------------

下記のように打ち込んでも
select goods.goods_id,name,price1,price_sp
from goods,price_etc
where goods.goods_id = price_etc.goods_id;

下記のように表示されてしまいます。
 goods_id  name       price1 price_sp
---------------------------------------
| G1000002 | MBS 1310-33 | 574 | 100
| G1000005 | MBS 1210-22 | 315 | 200
| G1000006 | MBS 1205-22 | 266 | 150
---------------------------------------

列:price_etc が無い場合は 空白で表示させるには、どうすればいいでしょうか?
初歩的な質問だと思うのですが 教えて下さい。
お願いします。

904 :NAME IS NULL:2005/11/18(金) 16:21:19 ID:???
>>903
結合がなくても、空欄で表示したいって事ね。
where ではなく、JOIを使えば希望通りのビューができますよ。
JOIN は便利なので、マニュアルの熟読をお薦めする。

905 :903:2005/11/18(金) 19:16:41 ID:???
>>904

早速の回答有り難うございます。

select goods.goods_id,name,price1,price_sp from goods
left join price_etc on (goods.goods_id = price_etc.goods_id);

で表示できる事が出来ました。
ありがとうございました。

家に転がっていた『Oracle7 SQL入門』って本に where に (+) を付けると
表示できると書いてあったので where の説明Webページばかり読んでました(;´Д`)
この本に JOIN なんて書いてなかったです…(;´д⊂)

906 :NAME IS NULL:2005/11/19(土) 00:29:39 ID:???
『Oracle7 SQL入門』
MySQL 3.22の本を読みながらOracle10gを使うようなものだな。


907 :NAME IS NULL:2005/11/19(土) 07:38:21 ID:aX35oZax
文字型とか数字型とかよくわかりません。

↓のような感じのデータベースを登録する場合
----
| 漢字|
| abcd|
| 1111|
| 2222|
----
  ↑の列のフィールドの型は何が適切でしょうか。
とりあえずホームページ上でそのまま表示できる形になればいいのですが。
それとフィールドの名前なんかは適当でも良いのですか?

自分で書いてても説明不足と感じる部分もありますが
どなたか教えてくださいますでしょうか。

908 :NAME IS NULL:2005/11/19(土) 10:57:07 ID:???
     ∩___∩
     | 丿     ヽ
     /  ●   ● |         
     | U  ( _●_)  ミ   
    彡、    ヽノ ,,/  >>907 まず、文字型と数字型を理解…
    /     ┌─┐´                           
   |´  丶 ヽ{ DB }ヽ                           
    r    ヽ、__)ニ(_丿                   
    ヽ、___   ヽ ヽ
    と____ノ_ノ

909 :NAME IS NULL:2005/11/19(土) 11:18:39 ID:???
>>907
文字型
123            → いちにさん
123 + 123 =123123 → いちにさんいちにさん

数字型
123          → ひゃくにじゅうさん
123 + 123 = 246 → にひゃくよんじゅうろく

データに合わせた型をどうぞ

910 :NAME IS NULL:2005/11/19(土) 12:54:22 ID:jS+0sYtY
真面目に解りません。どなたか教えていただけないでしょうか?

データベースExerciseに対して、以下の参照系SQL文(SELECT文)を実行し、実行結果となるようなJavaプログラムSelect.javaを作成する。

SELECT Course_ID, Student_ID, MAX(Grades) FROM Registration GROUP BY Course_ID;

実行結果
% java -classpath .;./ConnectorJ.jar Select
Connected to MySQL Server.
Course_ID = A01, Student_ID = S001, MAX(Grades) = 78
Course_ID = F01, Student_ID = S002, MAX(Grades) = 90
Course_ID = F11, Student_ID = S002, MAX(Grades) = 95
Course_ID = F12, Student_ID = S002, MAX(Grades) = 90
Course_ID = F21, Student_ID = S003, MAX(Grades) = 95
Course_ID = F22, Student_ID = S003, MAX(Grades) = 92
Course_ID = F31, Student_ID = S001, MAX(Grades) = 95
7 rows were returned.
Disconnected from MySQL Server.

お願いします

911 :NAME IS NULL:2005/11/19(土) 13:11:27 ID:???
>>910
ここまでやってみたんだが…というのであればフォローするけど、丸投げはお断り。
宿題は一人でやりな。
それとスレ違い。Java関連のスレに行け。

912 :NAME IS NULL:2005/11/19(土) 14:41:52 ID:???
最近「使ってみたんだけどわかりません。使い方教えてください」が増えたのは、
学校の授業で取り上げられるようになったってことなんかねぇ

なんか見る度に疲れが出てくる・・・・


913 :NAME IS NULL:2005/11/19(土) 14:48:54 ID:???
MySQLって大規模で且タダ厨且自社ASPという需要しかないじゃん。
他所に売るのが目的なら、ライバル?のPostgresとか、最近ならsqliteとかになるのでは?

914 :NAME IS NULL:2005/11/19(土) 15:38:07 ID:???
>>913
sqliteはないだろうw

915 :NAME IS NULL:2005/11/19(土) 16:56:37 ID:???
あるよ。なんで?

916 :NAME IS NULL:2005/11/20(日) 01:25:59 ID:b960UEpN
すみませんどうしても教えて欲しいことがあるんですが、

select 受注No form 受注M で受注Noを取り出し、
while文で、受注Noごとのレコードをあるだけ表示させようと思うんですが、
終了条件が分かりません。
Nullになれば、終了させればいいと思うんですが、文法が分かりません。
よろしくお願いします


917 :NAME IS NULL:2005/11/20(日) 01:30:52 ID:???
>>916
「あるだけ表示」させるのに、「終了条件」必要な意味が分からん。
というか、perlかphpかvbかC?

MySQLの問題じゃないよね?
問題の切り分けが出来るようにならないと、これから先何も解決できないよ。


918 :NAME IS NULL:2005/11/20(日) 01:51:07 ID:b960UEpN
>>917
VBです。DataGridで1レコードずつ繰り返し処理で、表示させようと思っています。
一部省略したソースです

Mysql = "select 受注No from 銀行M"
Rs.Open Mysql, Cn 
while () ←ここで、受注Noが取得できなくなると終了させたい
一覧.Row = 0+1 一覧.Col = 0
一覧.Text = Rs.Fields("受注No").Value
一覧.Col = 1
一覧.Text = Rs.Fields("品名").Value
一覧.Col = 2
Rs.MoveNext
wend
Rs.Close

そのためのwhile文の条件式が分からないので教えてください。

919 :NAME IS NULL:2005/11/20(日) 01:58:09 ID:???
>>918
VB固有の話しじゃんかよ。

ま、さすがに以下のJavaプログラムを作成せよ には度肝抜かれたが

920 :NAME IS NULL:2005/11/20(日) 02:02:02 ID:???
よーわからんが
Rs.HasNextとかないのか?
Rs.MoveNextがフラグを返したりするかも知れんし

921 :NAME IS NULL:2005/11/20(日) 08:03:00 ID:dJl4sgts
初歩的な質問なのですが、
データベース以下のテーブルは、
rootデレクトリに全てのテーブルが格納されるのでしょうか?
それともデイレクトリ階層のようなものを、
設けたりする事ができるのでしょうか?

922 :NAME IS NULL:2005/11/20(日) 08:44:43 ID:???
>>921
おれもそれ知りたい

923 :NAME IS NULL:2005/11/20(日) 10:25:37 ID:???
使ってみりゃわかる

924 :NAME IS NULL:2005/11/20(日) 10:25:50 ID:???
そう。いやならDBをわける。

925 :NAME IS NULL:2005/11/20(日) 10:50:27 ID:???
データベースA
   LテーブルA1
   LテーブルA2
データベースB
   LテーブルB1
   LテーブルB2
しかできないだろうね


926 :NAME IS NULL:2005/11/20(日) 16:34:16 ID:???
>>918
っ Rs.EOF

927 :NAME IS NULL:2005/11/20(日) 17:07:31 ID:???
PHPからMyISAMなテーブルを操作しています。
テーブルの説明(EXPLAIN)はどうすれば取得できますか?

928 :NAME IS NULL:2005/11/20(日) 18:21:02 ID:???
テーブルのなかに更新日時フィールドなんかをつくらずに、phpからテーブルのデータの最終更新日時を取得する方法はありますか?

929 :NAME IS NULL:2005/11/20(日) 19:00:57 ID:???
>>927 explaine ... のquery送るのじゃ駄目なの?

>>928 俺も知りたいが、方法無いのでわ。
自分は更新日時フィールド使ってやってます。

930 :NAME IS NULL:2005/11/20(日) 21:43:47 ID:???
>>927-928のどっちもSHOW TABLEで取得できるけど、

PHPからSHOW〜を飛ばしても取得が出来ないかなぁ。
fetch_rowはSELECT専用だった気ガス

931 :NAME IS NULL:2005/11/20(日) 21:47:09 ID:JWVQQiAq
MYSQLにはやっぱPHPなのか?
誰か答えろ

932 : ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄:2005/11/20(日) 22:36:08 ID:???
___ ミ
┌ ┌ | ζ
┌ ┌ |
┌ ┌ |
┌ ┌ |
┌ ┌ |
┌ ┌ |
┌ ┌ |

933 :NAME IS NULL:2005/11/21(月) 00:29:37 ID:???
931はしんでしまった

934 :NAME IS NULL:2005/11/21(月) 01:20:50 ID:???
はじめからヒットするレコードが1件と解りきってるときにそのレコードの各フィールドの値を取り出すのに毎回

$sql = "select * from hoge_table where id = 25";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
while ($row = mysql_fetch_array($result)){
//ここで取り出す
}

こんなことをやってるのですが、もっと簡単にそのレコードの各フィールドの値を取り出す関数があったと思ったんですが、検索してもいまいちわかりません。関数名だけでも教えていただけませんか?

935 :NAME IS NULL:2005/11/21(月) 01:21:21 ID:???
>>930
showの結果も取れるよ。

936 :NAME IS NULL:2005/11/21(月) 01:23:08 ID:???
>>934
http://www.php.net/manual/ja/ref.mysql.php
ヘルプも引けないの?

937 :NAME IS NULL:2005/11/21(月) 02:22:38 ID:???
ごめんなさい、下記@Aのようなテーブルがあって、
Bのような結果がほしいんですけど、どう書けばいいか検討がつきません。
サブクエリが使えない環境のためいろいろ悩みましたが
ちょっとお手上げでした。。。
誰かパッとお答えいただけるようでしたら教えてください。

@matsertb   Auriagetb
id name    id tuki uriage
---------    ----------------
1  aaa001   1  10   100
2  aaa002   1  11   200
3  bbb001   3  10   300
4  bbb002   3  11   400
5  aaa003   4  11   500
          5  10   600
          5  11   700

B結果
a.name b.uriage
------------------
aaa001 300
aaa002 0
aaa003 1300



938 :937:2005/11/21(月) 02:25:14 ID:???
mastertb.nameがAAAで始まるIDごとの、売り上げを取得したいです。


939 :NAME IS NULL:2005/11/21(月) 02:38:34 ID:???
>>937
サブクエリはいらんと思うが。。。

select
name, coalesce(sum(uriage), 0) as uriage
from mastertb
left outer join uriagetb on mastertb.id = uriagetb.id
where name like 'AAA%'
group by mastertb.id;

940 :937:2005/11/21(月) 03:01:36 ID:???
>>939さん
ありが追うございます。
ごめんなさい、説明間違えました。。。
keywordtb.keywordがxxxで始まるIDごとの売り上げがほしいのですが、
keywordtbレコード数×uriagetb レコード数分合計が出てしまい、
計算が合いません。

@matsertb     Akeywordtb
id name      id keyword
---------      -------------------
1  aaa001     1 xxx0001
2  aaa002     1 xxx0002
3  bbb001     1 xxx0003
4  bbb002     2 yyy0001
5  aaa003     3 xxx0001
            3 xxx0002
Auriagetb
id tuki uriage
----------------
1  10   100
1  11   200
2  10   300
3  11   400
4  11   500
5  10   600
5  11   700


B結果
a.name b.uriage
------------------
aaa001 300
bbb001 400



941 :NAME IS NULL:2005/11/21(月) 11:28:16 ID:kgOtiYdS
MySQL5,1っていつ頃出るか皆目見当つきませんか?

942 :NAME IS NULL:2005/11/21(月) 12:15:24 ID:???
idc1c2c3
10013
1012
102123



idc
1001
1003
1012
1021
1022
1033

このようにテーブルを変換したいのですが、
どのようにSQLを書けばいいのでしょうか?


943 :NAME IS NULL:2005/11/21(月) 12:30:49 ID:???
>>942
スペースが除去されてしまって、カラムの区切り位置が判りませぬ

944 :NAME IS NULL:2005/11/21(月) 12:55:02 ID:???
>>943
すみません。


id c1 c2 c3
100 1 3
101 2
102 1 2 3



id c
100 1
100 3
101 2
102 1
102 2
103 3


です。


945 :NAME IS NULL:2005/11/21(月) 16:13:39 ID:STvFOXar
>>931
Mysqlが使えるところでも、
PerlのDBIモジュールがなぜか
入ってないところがあるからかなぁ?
phpの構築優先、Perlは2の次って感じかも。

おいらはPerlでも使ってるけど。

946 :NAME IS NULL:2005/11/21(月) 17:14:00 ID:TgU/MA2m
キャラクターセットを調べるコマンドってありますか?
utf8やlatin1などと出てくると思うのですが

947 :NAME IS NULL:2005/11/21(月) 21:21:18 ID:???
>>945
PHP4はデフォでMySQLが使えるけど、PerlはCPANからインスコしないといけないからかな。
PHP5ではSQLiteに変更になっちゃったけど。

948 :NAME IS NULL:2005/11/21(月) 21:59:13 ID:STvFOXar
>>947
なるほど、PHPは最初から使えたのね。

949 :940:2005/11/22(火) 00:24:22 ID:???
自己解決。
上のほうで出ていたTemporaryTableが意外と難しくなかったため、そちらで回避しました。
どうもありがとうございました。


950 :930:2005/11/22(火) 01:28:00 ID:???
>>935
ほんとだ。
Pearからquery("SHOW TABLE STATUS LIKE 'テーブル名'")
でヘッダが取得できた。こりゃ便利だ

951 :NAME IS NULL:2005/11/22(火) 08:04:17 ID:???
>>950
SHOW に限らず結果セットを返してくる SQL 文は
全部 SELECT と同じように使えるよ。

952 :NAME IS NULL:2005/11/22(火) 19:58:44 ID:???
すみません、英語のマニュアル等をみたり、ググってみても
ちょっと見つからなかったので質問させていただきます。

当方phpMyAdmin 2.7.0-beta1+MySQL 5.0.15(win版)を
WinXpProで稼動しているのですが、phpMyAdminの画面で
ビューならびに、トリガー、ストアドプロシージャの作成は
SQLコマンド画面から直接コマンドを送る以外に、GUI操作
で簡単に作成できるような機能はまだ実装されていないの
でしょうか?

また同様に外部キーの設定もSQLコマンドを直接送るしか
ないのでしょうか?

953 :NAME IS NULL:2005/11/22(火) 20:47:53 ID:???
>>944
これだ゛れかおしえてください。

954 :NAME IS NULL:2005/11/23(水) 00:52:40 ID:???
>>944
ビューってより、テーブルを作り替えるってことでしょうか?

955 :NAME IS NULL:2005/11/23(水) 01:12:18 ID:???
>>944
新しくテーブルを作ればよいの?
create table t2 select id,c1 from t where c1 is not null
union select id,c2 from t where c2 is not null
union select id,c3 from t where c3 is not null;


956 :940:2005/11/23(水) 01:14:35 ID:YAMI2oR6
>>953
苦肉の策ですが。

create temporary table tmptb
(id varchar(3) ,
cvarchar(1) ,
PRIMARY KEY (id , c )
);
insert into tmptb select id as id , c1 as c from tb1 where c1 != "" ;
insert into tmptb select id as id , c2 as c from tb1 where c2 != "";
insert into tmptb select id as id , c3 as c from tb1 where c3 != "";
select * from tmptb order by id , c;


957 :940:2005/11/23(水) 01:18:15 ID:???
>>955
スマートですね。。

958 :NAME IS NULL:2005/11/23(水) 13:41:37 ID:???
>>954-956
テンポラリーなテーブルを作らずに、任意のcを抽出したいのですが、
素直に最初のテーブルの状態で

c1=1 or C2=1 or ....

とやるのがいいのでしょうか?
それともテンポラリーなテーブル作った方がいいでしょうか?

959 :NAME IS NULL:2005/11/23(水) 13:59:14 ID:???
>>958
それで用が足りるならそれでいいんでは?

960 :NAME IS NULL:2005/11/23(水) 17:27:11 ID:zX9bGfyz
PHP使ってDBの負荷を観測しようかと考えてるのですが…

Questions,7967029
Uptime,53941

QuestionsをUptimeで割れば混雑具合が分かるのでしょうか?

961 :NAME IS NULL:2005/11/23(水) 17:29:27 ID:???
>>959
いや、元々はc1からc5まであって、
抽出するときの条件が複数になるから、
二つめの形になったものをSELCTしたほうが簡単に書けるかなと思って。


962 :NAME IS NULL:2005/11/24(木) 02:52:48 ID:Y4TFTONw
txtファイルを再度インポートした際に上書き?できるようにしたいのですが
どういった方法がありますか?

name
-----
a←
b← のデータに上書きするような感じです
c←
↓に追加されるのでなく




963 :NAME IS NULL:2005/11/24(木) 07:57:29 ID:???
>>962
nameをuniqueにして、insertの代わりにreplaceを使う

964 :NAME IS NULL:2005/11/24(木) 22:04:51 ID:???
SELECT id,fa,mmc FROM tb WHERE id=1
UNION
SELECT id,fa,mmc FROM tbORDER BY mmc LIMIT 100, 30;
100は可変

id=1と、100番目から30個取得したい場合、2回SELECTするしかないのでしょうか?
また、上の場合id=1の行がかならず先頭に来ることは保証されていますか?

965 :NAME IS NULL:2005/11/25(金) 01:19:34 ID:???
phpとmysqldが別のサーバにインストールされている場合
php mysql間の通信は暗号化されているのでしょうか。

966 :NAME IS NULL:2005/11/25(金) 02:07:47 ID:ECnAQf/t
| 何について調べますか?
| ┌────────────┐
| | お前を消す方法       |
| |                  |
| └────────────┘
| [ オプション(O) ]   [ 検索(S) ]
|
`──────────┐ ┌───
           , '´l,  ..| ./
       , -─-'- 、i_  |/
    __, '´       ヽ、
   ',ー-- ●       ヽ、
    `"'ゝ、_          ',
      〈`'ー;==ヽ、〈ー- 、 !
       `ー´    ヽi`ヽ iノ
                ! /
              r'´、ヽ
              `´ヽノ



           , '´l,
       , -─-'- 、i_
      , '´○ _ ○  ヽ、
      i    /  |     ヽ、
       ゝ ├-┤       ',
      〈`'ー;==ヽ、〈ー- 、 !
       `ー´    ヽi`ヽ iノ
                ! /
              r'´、ヽ
              `´ヽノ

967 :NAME IS NULL:2005/11/25(金) 03:25:23 ID:pnUQMbxe
Acsessでlinux上のmysqlに接続ってできますか?

968 :NAME IS NULL:2005/11/25(金) 04:38:54 ID:pnUQMbxe
できるみたいでした。スレ汚しすいませんでした

969 :NAME IS NULL:2005/11/25(金) 09:53:43 ID:???
>>965
されてない。必要なら自分でSSL噛ますようにしないと駄目。
その手のドキュメントが存在した気がする。

970 :NAME IS NULL:2005/11/25(金) 10:00:43 ID:JqnBQ7af
以下のようなSQL文で、
日付の比較に時間がかかっています。

select * from aaa where start <= '2005-11-25'
and end >= '2005-11-25'

チューニングする方法はあるでしょうか?



971 :NAME IS NULL:2005/11/25(金) 13:40:58 ID:???
インデックス張るとか

972 :NAME IS NULL:2005/11/25(金) 18:23:30 ID:???
>>970
'2005-11-25' をキャストしたった方が速い様な気も
するけど、MySQLが最適化してる気もする。
 あと出てくる2つの日付はいつも同じ?
なら ... and end>=start のが速そうですね


973 :NAME IS NULL:2005/11/25(金) 19:38:05 ID:???
end >= start と end >= '2005-11-25' は全然意味が違うと思うのだが。

974 :NAME IS NULL:2005/11/25(金) 20:57:04 ID:???
諸兄には余りに初歩的なのかも知れませんが一つ教えて。現在Win版で勉強中なんですけど、
Linuxにインストールしてwinのクライアントから日本語データを入れる場合って日本語の設定ってどうするの?


975 :NAME IS NULL:2005/11/25(金) 22:53:24 ID:???
mysql のアップグレードに失敗してどういう訳か再インストールもままならず、
mysqlhotcopy なども利用できないのでしょうがなくとりあえず
データベース用のディレクトリをそのままバックアップして OS の再インストールをしたいと考えてます。

使っていたバージョンは MySQL 3 でして、 OS 再インストール時には ver 4 以降を利用したいと思っているのですが
この場合データベース用のディレクトリをそのままコピー&ペーストでテーブルの完全な引継ぎは可能でしょうか?

どなたか教えてください。

976 :NAME IS NULL:2005/11/26(土) 06:12:34 ID:???
サブクエリーを使わずに「集計してから結合」ってできます?


select 社員マスタ.入社年度, 社員マスタ.氏名, a.時数計, a.売上計
from
(SELECT 社員ID, Sum(時数) AS 時数計, Sum(売上額) AS 売上計
FROM 売上データ
WHERE 日付 Between '3/1/2001' And '3/31/2001' group by 社員ID) as a

left join 社員マスタ on 社員マスタ.社員ID = a.社員ID order by 社員マスタ.
入社年度

こーいうことがしたいんですけど、ウチの鯖のMySQLは4.0.26なんですよね・・・・
結合してから集計だとどうやっても集計が何重も無駄に重なって正しくカウントされない(´д`)

977 :NAME IS NULL:2005/11/26(土) 06:58:58 ID:2dGwNsu1
xamppでphpMyAdminとMySQL5.0をインストールしました。
phpMyAdminのキャラクタセットをeuc-jpにしたいのですが、
$cfg['DefaultLang'] = 'ja-euc';
$cfg['DefaultCharset'] = 'euc-jp';
と変更しても、選択メニューにutf-8しか出てきません。
これは「4.1以上はutf-8しか想定してません」という意味でしょうか?
いっそutf-8で使おうかとも思うのですが問題はないものでしょうか?

978 :NAME IS NULL:2005/11/26(土) 08:16:51 ID:???
>>977
SET NAMES ? などでクライアント側エンコーディングを指定すると
サーバー側エンコーディングを使って SELECT 時に
自動変換されるので特に問題ない

979 :NAME IS NULL:2005/11/26(土) 13:23:50 ID:igepm8sw
0で始まる9桁の数字をchar型で入れようとしても
最初の0が抜けて入ります。
解決方法教えてください。エロいひと。

980 :NAME IS NULL:2005/11/26(土) 13:41:28 ID:???
>>979
INSERTする時、' で囲っていないとか。

INSERT INTO t VALUES(003) → 3 が書き込まれる
INSERT INTO t VALUES('003') → 003 が書き込まれる

981 :NAME IS NULL:2005/11/26(土) 14:12:42 ID:igepm8sw
>>980
それで解決しました!
どうもありがとうございました。


982 :NAME IS NULL:2005/11/26(土) 14:32:59 ID:???
>>979
000000001が00000001になるのかと思ったよ。

983 :NAME IS NULL:2005/11/26(土) 21:09:10 ID:???
>>960-976の質問にも答えてください(><)

984 :NAME IS NULL:2005/11/27(日) 00:48:24 ID:???
>>979
0フィルってのも楽でいいよ

985 :NAME IS NULL:2005/11/27(日) 02:51:39 ID:???
http://www.mysql.gr.jp/frame/modules/bwiki/index.php?FAQ

ここマジで役に立つね
文字化け問題でストレスたまりまくりだったけど
何とかまともに動くよーになった
作った人たちに感謝

986 :NAME IS NULL:2005/11/27(日) 14:44:16 ID:???
mysql4.1.13でtextでフィールド作るとblobになっちゃうのはなぜ?

987 :NAME IS NULL:2005/11/27(日) 17:34:33 ID:qkh6/+hT
MySQL 5.0.16-nt(Windows版)で、VARCHARに英数字だと
正常に挿入できるのに日本語をINSERTしようとすると、
ERROR 1406 (22001): Data too long for column 'str' at row 1
と言うエラーが出てINSERTに失敗するのですが、解決策は無いのでしょうか?
全部TINYBLOBとかで解決するのはあまりにも悔しい…。

ちなみに、「show variables like 'char%'」の結果は
character_sets_dirを除いて全てutf8です。

988 :NAME IS NULL:2005/11/27(日) 20:53:53 ID:0a7tYg2U
http://find.2ch.net/?STR=MySQL

989 :NAME IS NULL:2005/11/28(月) 05:28:40 ID:CrG8+bt1
>>987
sjisの日本語をutf8の箱に入れようとしても入らないだろうね。
sjisかutf8のどちらかに統一しないと。

990 :NAME IS NULL:2005/11/28(月) 06:14:56 ID:???
そろそろ次スレの季節ではないでしょうか

↓おねがい

991 : :2005/11/28(月) 15:31:36 ID:HcTIqvo1
ソートに条件をつけたい
区が含まれる物を一番に、市が含まれる物を2番目に

そういうソートって出来ますか?

992 :NAME IS NULL:2005/11/28(月) 16:53:12 ID:???
>>991
SELECT
 addr,
 CASE
  WHEN addr LIKE '%区%' THEN 1
  WHEN addr LIKE '%市%' THEN 2
  ELSE 3
 END addrno,
FROM t1
ORDER BY addrno, addr;

993 :NAME IS NULL:2005/11/28(月) 17:32:43 ID:???
>>990
次スレ

[MySQL 総合 Part6]
http://pc8.2ch.net/test/read.cgi/db/1133166614/

994 :NAME IS NULL:2005/11/28(月) 17:36:56 ID:???
>>993
でかした

995 :NAME IS NULL:2005/11/28(月) 23:15:38 ID:CrG8+bt1
じゃあ埋めますか。

996 :NAME IS NULL:2005/11/28(月) 23:27:14 ID:???
ぬめ

997 :NAME IS NULL:2005/11/28(月) 23:27:38 ID:???
997

998 :NAME IS NULL:2005/11/28(月) 23:27:43 ID:???


999 :NAME IS NULL:2005/11/28(月) 23:28:43 ID:???


1000 :NAME IS NULL:2005/11/28(月) 23:28:47 ID:???
さらば Part5…

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

303 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)