MySQL 総合 Part13

このエントリーをはてなブックマークに追加
1NAME IS NULL
快速 RDBMS、MySQL の総合スレです。
前スレ[MySQL 総合 Part12] http://pc11.2ch.net/test/read.cgi/db/1190512649/
[関連スレと過去ログ]
http://find.2ch.net/index.php?STR=MySQL
http://makimo.to/cgi-bin/search/search.cgi?D=db&q=MySQL&sf=0&link2ch=on

[MySQL Developer Zone] http://dev.mysql.com/
[MySQL 日本語リファレンスマニュアル] 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

ここで質問をする前に、MyNAでのFAQを最初に確認しましょう。
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ
MyNAでの「心得の条」
http://www.mysql.gr.jp/frame/modules/bwiki/index.php?%BB%A8%B3%D8%2F%BF%B4%C6%C0

・関連ツール及びユーティリティ
・関連書籍
>>2

  | .| /./  /      |   | _,,,,||,,,l.,,_ ト      /  | _ |    .|   /
.  | | .| |  l      .| .,-'|.l  .|l .| `|. l     '  /´ /    /   /
  | | |.|  .|      , |´ | .|  | _|,_ l .|      ./  ''`ト  ./  /
  | | |.|  |       |  .| |_,,l-,─-.,_、_ |     /   .λl,/   /
.  |. |. ||  |       .| | /::::l  ヽ `'' |   / ,  ,.ミ,|´|   ./
,,,__.| .| ヘ .|        | .|/ |:i::::::〉., ノl  | /  .//  ∨| /
  `'' ‐ 、l |        .|||l'l:|:|l:::::`':::::i´||  ''    /   ...:::::l..''
      .`ヽ、       |:| ヾl.ヾ::::::::::| .||        :::::::::  l
        .\_    -''lヾ ヘ:、.ヘ;;_;ノ ノレ            .l
          .ヾ=,,,_   .ヘ  ,ヾ_,,=..''´....      _,,,   /
           ヽ .i'`''‐--.〉''´  .ヽ::::::::  _,,, -‐'''´:::::l ./.|      drop tableは1日10回な!
.\          ヽ`ニ /     l.   /:::::::::::::::::::::::/ i''ヘ .l
  `ヽ         .l-‐''l      /   .l:::::::::::::::::_;;-ヘ l ヽ ヘ
   ./.`iヽ       .|ヽ|     ./ ,,,,,,,_.ゞ,,, -‐''ヽ. |.| .| ヾ.、.ヽ
  / /|.| ヽ      .| .|    /ヽ     /:::::ヾ .| ,l '| .l.l '|ヽ.、.ヽ
// /./.|,, -'''''''''''''''-.、.'-<    .|  ヽ   /:::::::::lト''´ .| | | .i.| .ヾ.、.ヽ
/ / /./        ヽ,.`   .l   ヽ,'ノ/ ヾ_;;;l.l   |/ .l l |  ヾ.、lヘ
  ./ .//l          i    |    .ヾ   |:::::|.|  .|' l//   i.|| i.|
2NAME IS NULL:2008/01/30(水) 03:49:54 ID:Q+2wuCXB
【関連ツール及びユーティリティ】

[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/
[Common SQL Environment] http://www.hi-ho.ne.jp/tsumiki/cse_1.html

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

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

【関連書籍】

[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
3NAME IS NULL:2008/01/30(水) 15:44:59 ID:???
スレ立て乙です>1

全スレ997の者です。
.inputrcに
set convert-meta off
set meta-flag on
set output-meta on
を記述してTerminal.appは再起動、bash上では日本語の入力は出来ています。
$ echo 漢字
漢字

mysql5の使用中のみ、漢字入力が?????になるのです。
mysql> select * from jpzip where area='???';
Empty set (0.71 sec)

(神奈川県、って入力してます)

お知恵拝借願います。
MacOS X 10.5.1
MySQL Server version: 5.0.51 Source distribution
4NAME IS NULL:2008/01/31(木) 01:09:20 ID:???
DB初心者です。
GROUP BY について質問があります。

----TABLE_A----
|DataA|DataB|DataC|
------------------
| AAA | WWW |1111
| BBB | XXX |2222
| AAA | YYY |3333
| DDD | ZZZ |4444

この様なテーブルがあった場合に、DataAカラムがAAAの物を選び出し、
更にDataCの中の最大値を調べ、最大値となった行のDataBを抜き出す方法はあるのでしょうか?

自分でやってみた方法として以下の様なSQLを試してみたのですが
SELECT DataB MAX(DataC) FROM TABLE_A WHERE(DataA=AAA) GROUP BY DataA
このSQLだとDataBのカラムがMAX(DataC)と同じ行の値にはならない様です。
なにか句が足りないのでしょうか?

また、上記の抽出をDataAがAAAであるカラムに限定せずに行いたいのですが、何か良い方法はありませんでしょうか。
具体的には以下の様な抽出結果を求めています。

----結果----
|DataA|DataB|DataC|
------------------
| AAA | YYY |3333 (AAAグループの中の最大値を持つ行を抽出)
| BBB | XXX |2222 (BBBグループの中の最大値を持つ行を抽出)
| DDD | ZZZ |4444 (CCCグループの中の最大値を持つ行を抽出)
5NAME IS NULL:2008/01/31(木) 01:16:45 ID:???
>>4です

すいません。スレ間違えました><
SQL質問スレにいってきます。
6NAME IS NULL:2008/01/31(木) 01:39:20 ID:???
Maria ってどんなかんじですかね?
http://journal.mycom.co.jp/news/2008/01/29/057/index.html
7NAME IS NULL:2008/02/01(金) 02:19:12 ID:7TNjcR3o
SELECT COUNT(id) AS id_num FROM test WHERE id_num>'1'

をすると、エラーになります。
COUNTした場合、WHEREを使って抽出出来ないのでしょうか?
ORDER BYでソートするのは出来ます。

MySQLのバージョンは4.1.22です。
8NAME IS NULL:2008/02/01(金) 09:36:59 ID:???
>>7
何をしたいのか今ひとつわからんけど
カラム id の値が重複したレコードの件数を取得したいなら
こんな感じかな
select id, count(*) from test group by id having count(*)>1;
9NAME IS NULL:2008/02/01(金) 09:42:53 ID:???
>>7
COUNT()値の様な条件判定はHAVINGに記述するのが
SQLでは基本です。
107:2008/02/01(金) 11:39:10 ID:???
>>8-9
WHEREじゃなくて、HAVINGなんですね。知りませんでした。

HAVINGを使うとやりたいことが出来ました。ありがとうございました。
11NAME IS NULL:2008/02/02(土) 15:19:29 ID:ff4pjUXH
1レコード追加毎に「code」フィールドに
ユニークな文字列を追加したいと思っています。

PHPを使わずに、MySQLの関数のみでその様な事って、出来ないでしょうか?
(オートインクリメントではないです)
12NAME IS NULL:2008/02/02(土) 15:28:18 ID:???
>>11
トリガでUUID()を入れるってのはどう?
http://dev.mysql.com/doc/refman/5.1/ja/miscellaneous-functions.html
レプリケーションでダメと書いてあるが。
どうだめなのかよくわからんな。
13NAME IS NULL:2008/02/02(土) 16:13:54 ID:ff4pjUXH
>>12
ありがとうございます。UUIDを使ってみます。
14あやか:2008/02/02(土) 18:39:32 ID:qcb6dBmi
すみません。Excelで唐突な質問なのですが。。。

実は今、会社の売上表のデータ確認作業をしているのですが、
ある製品のみ計算式とは違う値が入っているのに気付きました。
セルには、計算式「=ROUND(0.004*A2),2」と入っているのですが、
その値が、=0.004*A2の値でないものが入っているんです。

その値は、計算式による値よりも、すべて14.925多く、
明らかに故意による操作と思われるのですが、
エクセルの機能で、計算式を表示させながら、別の値の数字を表示させるなどと
いうことは可能なのでしょうか???

どなたかご存知でしたら教えてくださいませM(__)M
15NAME IS NULL:2008/02/02(土) 19:06:52 ID:???
君の使ってるのは Myエクセール?
16NAME IS NULL:2008/02/02(土) 19:57:50 ID:???
>>14
このへんかな?
Excel総合相談所 64
http://pc11.2ch.net/test/read.cgi/bsoft/1200819992/
17あやか:2008/02/02(土) 21:17:46 ID:qcb6dBmi
NAME IS NULLさん ありがとうございます。
そちらで質問してみますね。
18NAME IS NULL:2008/02/02(土) 21:43:52 ID:???
真性のアホだろおまえ
19NAME IS NULL:2008/02/03(日) 00:30:57 ID:???
何だとコノヤロウ
20NAME IS NULL:2008/02/03(日) 14:49:01 ID:???
なぜ、MySQLは2つ以上のインデックスを同時に使えないのですか?
21NAME IS NULL:2008/02/03(日) 23:03:38 ID:???
>>20
MySQL 5.0以上なら複合インデックスが使える。
http://labs.unoh.net/2007/06/mysql5.html
2221:2008/02/03(日) 23:25:09 ID:???
複合インデックスじゃなかった、インデックス結合ね。
23NAME IS NULL:2008/02/04(月) 02:33:44 ID:???
ちょっと質問です。数値とか文字列の型についてなんですが、

例えば、
select 0x4142 ;      # <-- AB 
select 0x4142 + 0 ; # <-- 16706
select cast(0x4142 as unsigned) ; # <-- 16706
となると思うんですが、

これを、ユーザー定義変数にsetしてからやると、
SET @aaa = 0x4142;
select @aaa ;      # <-- AB
select @aaa + 0 ; # <-- 0
select cast(@aaa as unsigned) ; # <-- 0
となってしまいます。

これは、マニュアルなんかによると、set @var = *** で文字列として @var に格納されてしまうからと思うんですが、
変数にSETしつつ、この16進なデータを’数値’として認識させせることは可能でしょうか?

マニュアルの関係ありそうなところを、ずっと(5時間位)探してるんですが、それらしきものを見つけられません。
ちなみにVersionは、5.0.50-Win32です。
24NAME IS NULL:2008/02/04(月) 22:55:26 ID:???
インデックス複数張ってるとき、思ったとおりのインデックスを
使ってくれないときに「これ使え」って指示するのってなんだっけ?
25NAME IS NULL:2008/02/04(月) 23:12:50 ID:???
>>24
FORCE をつかえ。
26NAME IS NULL:2008/02/04(月) 23:19:03 ID:???
>>23
select conv(hex(@aaa),16,10); で良いか?
27NAME IS NULL:2008/02/05(火) 00:13:49 ID:h+XFJgnD
SELECT id FROM aaa LEFT JOIN bbb USING(id)

というSQLで、aaaテーブルとbbbテーブルを結合しています。
LEFT JOINにしているのは、aaaテーブルに登録されている値が
すべてbbbと連結しているわけではないからです。

上記のSQLに
「bbbテーブルのtypeが1であれば、nameが存在する必要がある(NULLは駄目)」
という条件式を入れたいのですが、どのように書けばいいのでしょうか?

IF(bbb.type=1,bbb.name IS NOT NULL)
を追加しても、上手くできませんでした。
28NAME IS NULL:2008/02/05(火) 00:24:27 ID:???
>>24
USE KEY (…)
29NAME IS NULL:2008/02/05(火) 02:09:38 ID:???
>>25
マスター・ヨーダ乙
30NAME IS NULL:2008/02/05(火) 03:08:42 ID:???
>>26
うおー、でけたー!!!
すごく感動しました。
31NAME IS NULL:2008/02/05(火) 21:10:48 ID:s4DX1xog
質問させてください。以下のテーブルがあるとします
id |name |photo |class
----------------------
1 |yamada |0 |4
2 |tanaka |1 |4
3 |miyata |0 |4
4 |tukaji |1 |4
質問1:
上記のテーブルに select * from `tbl` where `class`=4 order by `photo` desc
とした場合に返ってくる結果って、idの値の大小はキープされたままですよね?
(tanaka,tukajiの順番で…) この認識でOKでしょうか? 一応テストはしたんですが、、

質問2:
上記のselect文のようにphotoの値を降順にして、なおかつidも降順で取得する方法って
ありますか?
優先順位は、photoの値が降順>idの値が降順 です

ど素人なので、質問自体意味不明だったらすみません
回答をよろしくお願いします
32NAME IS NULL:2008/02/05(火) 21:50:28 ID:BphyAXBx
order by photo desc,id desc
33NAME IS NULL:2008/02/05(火) 21:51:17 ID:???
>>31
order by phpto,id
34NAME IS NULL:2008/02/05(火) 22:07:34 ID:???
>>32-33
ありがとうございます!
質問1の疑問についても、間違ってないってことでいいですよね?
ありがとう
35NAME IS NULL:2008/02/05(火) 22:16:37 ID:???
>>34
1は間違い
36NAME IS NULL:2008/02/05(火) 23:41:13 ID:???
>>35
まちがってますか?
すみません、どう間違っているのか教えてもらえませんか?
37NAME IS NULL:2008/02/05(火) 23:57:13 ID:???
order by で指定していないカラムの順番はDBにお任せ
現在望む形で取得できているのはたまたま
38NAME IS NULL:2008/02/06(水) 01:01:43 ID:???
>>27
SELECT id FROM aaa LEFT JOIN bbb ON aaa.id=bbb.id AND (bbb.type != 1 OR name IS NOT NULL)
39NAME IS NULL:2008/02/06(水) 04:26:35 ID:???
PHP、PDO、MySQLでWebソフトウェアを作成する際の質問です。

自宅の同環境で作成し、問題なく度鬱していたPHPソフトウェアをレン鯖(coreserver.jp)にアップしたところ、
PDOのprepareステートメントでエラーが発生してしまって困っています。

具体的には
$pdo = new PDO(接続文字列)
$stmt1 = $pdo->prepare(クエリ);
$stmt2 = $pdo->prepare(クエリ);
$stmt3 = $pdo->prepare(クエリ);

$stmt1->execute();
$stmt2->execute();
$stmt3->execute();

等と複数のprepareステートメントを作成し、利用しようとした時にエラーになってしまうようです。(原因とは限りませんが)

PHP、PDO、MySQLの組み合わせた場合、設定等によってprepareの同時作整数に制限等が出る場合はあるのでしょうか?
また、複数のprepareステートメントを作成して利用する方法自体について、Webソフトウェア並びに、MySQLの使用方法として、
問題があるのかどうか等、ご教示願えませんでしょうか。
40NAME IS NULL:2008/02/06(水) 19:20:32 ID:???
39です。
自己解決しました。ありがとうございます。
41NAME IS NULL:2008/02/07(木) 13:40:29 ID:???
>>37
ありがとう そういうものなんですね 助かりました
42NAME IS NULL:2008/02/08(金) 17:36:51 ID:???
ユーザーidとゲームidと時間のデータがあります。
ゲームidごとに、同じユーザーのデータが入ったりしています。

仮にuserid ,gameid,updatetimeとします。


この中から、ゲームid関係無く
ユーザーidと、そのユーザーidの持っている時間が最も早いもの
だけを取ってきたいのですが何か良い方法はありますか?
43NAME IS NULL:2008/02/08(金) 17:43:26 ID:???
userid , MAX(updatetime)

GROUP BY userid

では?
MAXだかMINだか正確ではないけど。
44NAME IS NULL:2008/02/08(金) 17:44:07 ID:???
select userid,min(updatetime) from hogeTBL group by userid
45NAME IS NULL:2008/02/08(金) 17:44:39 ID:???
あらら
カブりスマソ
46NAME IS NULL:2008/02/08(金) 17:48:59 ID:???
MINとかMAXとか便利なものがあるんですね

ありがとうござました
47NAME IS NULL:2008/02/08(金) 19:05:23 ID:???
君はDBって何をするものだと思ってたの?
48NAME IS NULL:2008/02/08(金) 19:11:57 ID:???
夢がいっぱい詰め込まれているもんだと思ってました
49NAME IS NULL:2008/02/08(金) 20:10:31 ID:???
DBといったら、7ヶ集めて願い事をするものだ。
50NAME IS NULL:2008/02/08(金) 20:14:24 ID:???
身長165
体重120
51NAME IS NULL:2008/02/08(金) 20:53:48 ID:ENc+AoR0
で・ぶ w
52NAME IS NULL:2008/02/09(土) 00:09:04 ID:???
>>48
ああ、確かに見るからに頭は空っぽだね。
53NAME IS NULL:2008/02/09(土) 00:48:34 ID:???
なんというHEAD-CHA-RA
54NAME IS NULL:2008/02/09(土) 18:33:21 ID:???
mysql4.1.22のインストールなんですが、環境設定?で最後の4項目のうち

・Prepare configuration
・Write configuration file

まではいくのですが

・Start service
・Apply security settings

が、行なえません。(チェックが入らない。また、パスワードを入力する画面が無いまま「Execute」の画面にいってしまう)

どうすれば良いのか、もしくはどういった点を調べれば良いのか教えて下さい。
5554:2008/02/09(土) 18:50:49 ID:???
説明が難しかったので…

ttp://www.ddsystems.info/ex/ex_cgi/260115.html の 『 Install As Windows Service 』
にチェックが入っていません。(選択出来ないようになっている)

ttp://www.ddsystems.info/ex/ex_cgi/260116.html の画面にいきません。

ttp://www.ddsystems.info/ex/ex_cgi/260117.html の上2つしかチェックが入りません。

自分のパソがwin98だからでしょうか?なにか参考になるサイトなどありましたら教えて下さい。
56NAME IS NULL:2008/02/09(土) 19:19:24 ID:lDXdLt0j
>>55
サービスというのはXP NT 2000向けの話
98ではサービスとして起動させるのは出来ない。
5756:2008/02/09(土) 19:23:16 ID:lDXdLt0j
追加 ここでも読んでみて
http://dev.mysql.com/doc/refman/4.1/ja/win95-start.html
58NAME IS NULL:2008/02/09(土) 20:42:01 ID:???
>>56,57
ありがとうございます。熟読してきます。
59NAME IS NULL:2008/02/09(土) 21:43:48 ID:???
smallint(6)
ってどういう意味?
32ビットなのに6バイト使うの?
許されるの?
60NAME IS NULL:2008/02/09(土) 22:40:33 ID:???
表示桁数のことじゃ、ボケ
61NAME IS NULL:2008/02/10(日) 00:12:39 ID:???
>>60
知ったか乙
5桁しかねーだろwww
62NAME IS NULL:2008/02/10(日) 12:29:37 ID:???
ER図とMySQLの連携ができるフリーツールを探してます。
>>2に記載されてませんでしたが、DBDesignerというソフトがあるそうです。

もし使われている方がいましたら、教えて頂けないでしょうか。
MySQL4.1、5.0でも DBDesignerは使えるのでしょうか?
バージョンアップされてないから心配してます^^;

困っているのは
 接続できますが、モデルが開けません・・・orz
ということです。

これは、DBDesigner4はMySQL4.1以降には対応していないって事でしょうか。
フリーでかなり良さそうなツールだったので、ダメならすごく残念。

どなたか、ご存知でしたら、どうぞ教えてください。
63NAME IS NULL:2008/02/10(日) 16:50:13 ID:???
>>61
ヒント。負数
64NAME IS NULL:2008/02/11(月) 21:16:14 ID:???
KURAMAE
65NAME IS NULL:2008/02/12(火) 00:05:59 ID:tZT7Xc+W
mysqlで日本語が表示されません(文字化けではありません)

今、 ttp://allabout.co.jp/internet/database/closeup/CU20020721/index.htm ここやってます。
ファイル名:tab1.txt

create table tab1 (number int(10) unique not null,name char(40) not null,note char(60));
insert into tab1 values(1,'abcdefg','apple');
insert into tab1 values(2,'hijklmn','banana');
insert into tab1 values(3,'opqrstu',"");
insert into tab1 values(4,'vwxyz',"pine");
insert into tab1 values(5,'あいうえお',"日本語もOK");
insert into tab1 values(6,'かきくけこ',"漢字");

で、select * from tab1;すると、日本語部分(5と6)が表示されません。
my.iniでは[client]、[mysql]、[mysqld]の下に
default-character-set=utf8 を足しました。
66NAME IS NULL:2008/02/12(火) 00:28:15 ID:???
>>65
WindowsでUTF8を表示できるのか?

[client]、[mysql]はcp932で
[mysqld]だけutf8にするんじゃない?
6765:2008/02/12(火) 00:53:50 ID:???
>>66
ダメでした。全部cp932と全部sjisなど試しましたが、表示されません。
???みたいに出てくれれば良いのですよね?自分の場合、該当部には何も表示されません。
68NAME IS NULL:2008/02/12(火) 09:18:15 ID:???
サロゲートペアの対応はどうなってんの
69NAME IS NULL:2008/02/12(火) 16:00:40 ID:nqXO5xFa
メンテナンスの際などにローカルの mysql の root@localhost
からの接続しか受け付けないようにするために簡単な方法はありますか?
一応 iptables で遮断したりして外からのアクセスは受けないように
したりして気をつけてるんですが,根本的な解決になってないような気がして.
70NAME IS NULL:2008/02/12(火) 16:26:29 ID:???
>>69
iptables で全ポートふさいだなら、出入り口無くなってるんだから十分では。
71NAME IS NULL:2008/02/12(火) 16:32:47 ID:???
>>69
LANの線抜いて、直結のコンソールからメンテ。
これで >>69 しかいない夢の世界。
72NAME IS NULL:2008/02/12(火) 17:12:59 ID:nqXO5xFa
UNIXソケット経由での接続もあるかも,とか,疑心暗鬼に.
FLUSH TABLES WITH READ LOCK;
で固めてしまっても,ダンプからの回復とか
しようと思うと結局 UNLOCK TABLES; しないといけないし.
73NAME IS NULL:2008/02/12(火) 17:34:31 ID:nqXO5xFa
普通のアプリは unix ソケット経由じゃないから
TCP ポート使わないようにしてデーモン上げ直して
ローカルコンソールから mysql コマンド
(これは unix ソケット経由で接続?)でメンテすればいいか.
別にローカルコンソールじゃなくても SSH 経由でもいいけど.
74NAME IS NULL:2008/02/13(水) 23:03:56 ID:kRFJlRI3
質問です。
PHPからSQLコマンドを叩いてINSERTする際に、そのこれからINSERTする行のidを知るにはどうすれば一番効率的でしょうか。
75NAME IS NULL:2008/02/13(水) 23:35:04 ID:???
ここはQueryBrowserのこと聞いても大丈夫でしょうか?
7675:2008/02/13(水) 23:39:08 ID:???
QueryBrowserで、右側のテーブル名ダブルクリックすると、上のクエリ窓に
SELECT * FROM [テーブル名] [テーブル名のイニシャル]
が出ますよね?
それで、ある一部のテーブル名だけ
SELECT * FROM '[テーブル名]' [テーブル名のイニシャル]
とシングルクオートで囲まれて出てきます。
このせいでアプリケーションでの検索ができません。
何が原因でしょうか?テーブル作成時もほかのテーブルと同じように作ったのですが・・・
77NAME IS NULL:2008/02/14(木) 00:03:53 ID:W0dvrvI0
>>76
テーブル名何よ?
78NAME IS NULL:2008/02/14(木) 00:10:31 ID:???
>>77
inner と outer です。
これ予約語かなんかなのでしょうか?
bgm とか frame とかは問題ありません
79NAME IS NULL:2008/02/14(木) 00:52:32 ID:???

新しいデータエンジンFALCONではトランザクション内でセーブポイントを
セットすることができるらしいのですが、
このセーブポイントて何に役に立つのでしょうか?
80NAME IS NULL:2008/02/14(木) 02:24:45 ID:???
セーブポイントって教会だけだっけ?
81NAME IS NULL:2008/02/14(木) 03:44:12 ID:???
宿屋に泊まってもセーブできるお
82NAME IS NULL:2008/02/14(木) 09:10:23 ID:+eBGuLyL
>>81
あれ,そうだったけか.
すでにすっかり忘れてるな,俺.
最近はケータイでできるみたいだしやってみるか.
83NAME IS NULL:2008/02/14(木) 09:32:46 ID:???
希望のほこらでも出来るよ
84NAME IS NULL:2008/02/14(木) 11:41:28 ID:???
>>78
予約語。
JOINの時使うでしょ?
85NAME IS NULL:2008/02/14(木) 11:54:13 ID:???
>>84
そうなのですか。JOIN使ったこと無かったのでわからなかったです。
ありがとうございました
86NAME IS NULL :2008/02/14(木) 16:49:03 ID:DlPYtTfB
自己結合したものをinsertで挿入していきたいのですが、
そのとき、それぞれに上からnumberをつけることはできませんか?
できるならどのようにすればいいか教えてください。
87NAME IS NULL:2008/02/14(木) 23:38:43 ID:???
すみませんが、質問です。

MySQLでEXPLAIN を実行すると、実行プランは表示されますが、実際にかかっ
た時間は表示されません。
クエリの各部分の実際の実行時間はどうやったら取得できるのでしょうか?
(PostgreSQL の EXPLAIN ANALYZE に当たるような機能のことです)
88NAME IS NULL:2008/02/15(金) 00:34:57 ID:???

MySQLでコネクションプールを使うと性能が良くなると聞いたのですが、
コネクションプールとは具体的に何のことでしょうか?

いろいろネットで調べてみたのですが、説明が難しくていまいち理解ができないです。。
自分のイメージとしては、通常クライアントから接続がある度にスレッドを生成しているものを、
コネクションプールというものを使って、最初からスレッドを生成しておき、
それを使いまわすというイメージでよいでしょうか?
89NAME IS NULL:2008/02/15(金) 06:28:27 ID:???
>>87
MySQLクライアントでそのまま実行したらでるけどそれじゃだめなん?

mysql> select * from customer where c_id = 400;

10 rows in set (0.32 sec)

>>88
あってるよそれで。
でもMySQLは新規接続もともと速いから性能向上度合いは少ないよ。
Oracleだと新規接続0.1秒とかかかったりするのでコネクションプール必須。
90NAME IS NULL:2008/02/15(金) 17:03:12 ID:vc/j93id
where amount1+amount2 > 2000

だとインデックスは使われないですが、何か良い方法はないでしょうか
91NAME IS NULL:2008/02/15(金) 17:10:08 ID:???
>>79
InnoDBにもあるよ > savepoint

トランザクションを入れ子にしたいと思ったことがある人には有用
9287:2008/02/15(金) 17:41:17 ID:???
>>89
> MySQLクライアントでそのまま実行したらでるけどそれじゃだめなん?

ありがとうございます。残念ですが、あまり良くないです。
SQL全体にかかった時間ではなく、細かい実行プランが表示されて、その各パー
トでそれぞれどれだけ処理時間がかかったかを見たいのです。
93NAME IS NULL:2008/02/15(金) 18:35:46 ID:cVT3m7qO
他のPCからもMySQLにアクセスできるようにしようと思ってとりあえず
以下のようにテストユーザーを作ってみました。

grant all on *.* to testUser identified by 'test';
そして、以下でログインできました。
mysql -u testUser -h 127.0.0.1 -p

ですが、ローカルから以下のようにするとパスワード無しでログインできてしまうのですが、パスワードは利かないのでしょうか?
mysql -u testUser

宜しくお願いします。
(mysql5.0.54)
94NAME IS NULL:2008/02/15(金) 19:05:33 ID:???
自己結合させて、できたときに上から順番に番号ふっていきたいんですが、
どうしたらよいでしょう?
95NAME IS NULL:2008/02/15(金) 19:40:20 ID:???
MySQL InnoDBのテーブルを mysqldump でバックアップする場合、mysqldは止める必要はあるのでしょうか?
96NAME IS NULL:2008/02/15(金) 21:04:18 ID:???
selectでmtimeで降順ソートしたデータの11番目から配列に格納したい。どのようにwhere節を記述すればうまくいくでしょうか。
以下カラム
id : name : titlebody :mtime : (modification time)
97NAME IS NULL:2008/02/15(金) 21:05:19 ID:???
訂正です。「配列に格納したい」っていうのを「データを表示したい。」に読み直してください。すいません。PHPと連携してるもんで、、、
98NAME IS NULL:2008/02/15(金) 23:58:00 ID:???
select id, name, titlebody, mtime from hogeTBL order by mtime desc limit 10,(取得する行数);
99>>88:2008/02/16(土) 08:57:40 ID:???
>>89
ありがとうございます。

>>95
mysqldとめたら、mysqldumpできないんじゃあるまいか?
100NAME IS NULL:2008/02/16(土) 13:34:51 ID:???
MySQLにファイル入れて管理したいと思うのですが、
I/Oとかどんな感じでしょうか。

ファイルではなく、
普通に数百MBのデータベースを処理するだけで、
かなりI/Oがあがってしまい、CPUとかメモリには余裕があっても
かなり速度が遅くなってしまいます。
データベースで管理すると管理面で便利そうな反面、
ここがボトルネックになりそうな気がしてます。

識者の方アドバイスおながいします。
101NAME IS NULL:2008/02/16(土) 17:01:59 ID:???
>>100
数百MB程度で遅いのなら、インデックスが適切に作成されていない可能性あり。

「ファイル入れて」って、「本来ファイルにあるべきデータをテーブルに入れて」って意味?
102NAME IS NULL:2008/02/16(土) 17:04:40 ID:???
>>94
set @cnt=0;
select @cnt:=@cnt+1,col1,col2,col3 from tbl1, ......
103NAME IS NULL:2008/02/16(土) 17:06:11 ID:???
centos5でmysql4,1を使っています。
mysqldを削除してしまいました。
yumでmysql-serverをインストールしても見つからないのですが、
mysqldはどこで落とせますか?
104NAME IS NULL:2008/02/16(土) 20:03:14 ID:???
>>100
説明内容が複数の意味に取れる部分が多すぎて、
内容がはっきり掴めません。
動画ファイルの扱いなどで例えてください。
105NAME IS NULL:2008/02/16(土) 22:43:10 ID:???
ガンダムに例えると
106NAME IS NULL:2008/02/17(日) 00:47:28 ID:lcJDrNJv
winで、perlからmysqlを使っているのですが、
insert into a(a) value("あ");
コマンドラインで打つとうまくいくのですが、perlのDBIではうまくいきません。助けてください。
107NAME IS NULL:2008/02/17(日) 00:51:27 ID:???
そらぁ、Perlの方の問題であって、ここの問題じゃないっしょ
108NAME IS NULL:2008/02/17(日) 01:56:04 ID:???
>>106
文字コード
109NAME IS NULL:2008/02/17(日) 19:27:17 ID:???
>>106
「うまくいきません」を具体的に。
110NAME IS NULL:2008/02/17(日) 22:02:44 ID:mw1ACUy/
ゆりしー(´;ω;`)かわいそうです みなとらじお 君が主で執事が俺で 02
http://www.nicovideo.jp/watch/sm2336941

伊藤静「じゃあ、次もwww」
後藤邑子「斬ったほうがいい?www」
伊藤「次は斬る?www」
後藤「どうするww」

伊藤「ペンネーム『心が綺麗な天使』から頂きましったww(フンッwww) 私はこの日本に住むのにはピュアすぎます。どのようにしたら天使のような私がこの今の日本に馴染めるのでしょうか?」

後藤「.........ウザい」

二人「キャッハハハハハwwwww」

伊藤「ちょほんとさあ、大丈夫?www」

後藤「おい天使、おいおい自称天使ww」

伊藤「自分が天使だと思ってること自体がちょっと間違ってんじゃないの?っていうねwww」

後藤「うん。ね。ちょっと軽く(精神病院に)通院してみたほうがいいんじゃないの?www もしくは、今の日本に馴染めるようにちょっと汚れちゃえよwwww」

伊藤「それかもう日本出て行ったらいいんじゃないの?www」

後藤「天使が住める国にwwwwwww なんかエルフの国とかに行ったらいいんじゃないの?wwww」

伊藤「妄想の中とかに(プフッww)行っちゃえばいいんじゃないのwww」

後藤「コワイヨーwwwコワイヨーwwwww」

二人「クックックックwwww」
111NAME IS NULL:2008/02/17(日) 22:15:36 ID:???
>>110
オレが責任をもってゆりしーを嫁にするから、板違いな話題は控えてくれ
112NAME IS NULL:2008/02/18(月) 11:34:56 ID:???
すみません、質問させてください。

まずは環境を。
OS:CentOS release 4.6 Linux version 2.6.9-55.0.12.ELsmp
MySQL:4.0.27

やりたいことは、mysqlとWebデータのバックアップを1日1回で取りたく、
ググルで『mysqldump .sh』などで検索し、それを参考にbackup.shという名称で以下を作ってみました。

#!/bin/sh
cd /home/hoge
tar zcvf /mnt/nas/web-backup/`date +%Y%m%d`/hoge.tar.gz ./web
tar zcvf /mnt/nas/web-backup/`date +%Y%m%d`/hoge-cgi.tar.gz ./cgi-bin
mysqldump -uroot -phoge hoge --opt > /mnt/nas/web-backup/`date +%Y%m%d`/hoge.sql

パーミッションを700に変更し、crontabに登録。
結果、hoge.tar.gzとhoge-cgi.tar.gzはバックアップが取れているのですが、
SQLデータだけファイルサイズ0でバックアップを取れません。

cronではなく手動で、/home/hoge/backup.sh とやるとSQLデータもキチンと取れます。

まずはどこから疑ったら良いでしょうか?
宜しくお願い致します。
113NAME IS NULL:2008/02/18(月) 13:18:00 ID:???
手動で backup.sh を叩いて動いたときのユーザが root ではない、とか
114NAME IS NULL:2008/02/18(月) 13:19:48 ID:???
>>113
ごめん取り消し
mysqldump のパスが通ってないだけとか
115NAME IS NULL:2008/02/18(月) 13:26:28 ID:Ev8JrmO8
Handler_read_rnd_next が異様に高いのだが(500Mとか)
この原因を突き止めるにはどうすればいいのだろうか.
でかいウェブアプリで,どの処理がこいつの原因に
なっているのかわからず途方に暮れています.

とりあえずチューニング中です,とか何とか言って
ごまかしているけど.
116112:2008/02/18(月) 15:52:54 ID:???
>>114
有難う御座います。
パスが通っていないのが原因みたいです・・・orz

/usr/local/bin/mysqldump -uroot -phoge hoge --opt > /mnt/nas/web-backup/`date +%Y%m%d`/hoge.sql
に改めたところ、ちゃんとデータが入ったファイルが生成されました。

今まで気にしたことが無かったのですが、いつもは echo $PATH でパスの通りを確認した時
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:(以下略
と、『/usr/local/bin』の記述があるのでパスが通っているものだと思っていたのですが、
crontabの時はrootとは別の.bash_profileが機能しているのでしょうか?

ついで質問で申し訳ないのですが、ご教授いただけますでしょうか?
宜しくお願い致します。
117NAME IS NULL:2008/02/18(月) 19:59:30 ID:???
>>116
mysql じゃなくて unix の話になっちゃうけど、、、
cron で起動した場合は root ユーザがログインして実行する訳じゃないから
.bash_profile は読み込まれない
必要な環境変数は crontab ファイルの中に記述するか
起動されるスクリプトの中に書いておく
118112:2008/02/18(月) 20:44:41 ID:???
>>117
すみません、『ここはMySQL板です』って言われるの覚悟だったのですが
話の流れでお聞きできればとおもったので。
/etc/crontabの中にもPATH=設定があるんですね・・・勉強になります。
ご教授有り難う御座いました。
119NAME IS NULL:2008/02/18(月) 20:47:17 ID:DnOVHGDT
大規模サイト作ってる最中なんだけど普通DBは一個だけでいいよね?
120NAME IS NULL:2008/02/19(火) 08:34:43 ID:???
>>119 どのぐらいが大規模かテーブル数ぐらい書かないとなんともいえないぞ
1つのDBでやる必要性と複数DBがもてるのかどうか
ただ、モールのように複数店等やる場合セッションの引き継ぎ等で
同一DBでやる場合もあるから一様にいえないよね
121NAME IS NULL:2008/02/19(火) 11:57:30 ID:???
そんな質問してるぐらいだから1個でいいにきまってんじゃん
122NAME IS NULL:2008/02/19(火) 12:51:39 ID:???
>>120
今はとりあえずプロトタイプとして10涸ほどテーブル持ってる感じ
カラム数は多くても7,8涸で、まあ今後2つとも増やしていく予定

最初は複数DBで運営しようかと考えていたのだけど、ユーザー認証用のtbが既にあるサービスで使うように作ったDBの中に突っ込んじゃった訳ね


摘出してユーザー関連のDB作ってもいいのだけど、こういう作り方ありなのかな〜と思ったので質問させてもらった

機能の拡張性考えたらやっぱりDB分割した方がいい?
123119:2008/02/19(火) 13:02:21 ID:???
ごめ、やっぱいままでのなし
inner joinで結合したりしてるから無理だ
やっぱ一つのDBで済ますしかないのかな・・・・
124NAME IS NULL:2008/02/19(火) 13:06:35 ID:???
MySQLってDB開発以外で役に立つのか?
125NAME IS NULL:2008/02/19(火) 17:38:32 ID:???
は…?
126NAME IS NULL:2008/02/19(火) 21:30:21 ID:???
というか、他の何に使おうとしてんの? w
127NAME IS NULL:2008/02/19(火) 23:05:34 ID:???
MyISAM や InnoDB のデフラグってしてる? 定期的にすべきもの?
128NAME IS NULL:2008/02/20(水) 00:50:39 ID:???
>>127
ものすごい時間かかるよね
129NAME IS NULL:2008/02/20(水) 00:51:18 ID:???
MySQLでlogという変数がありますが、これをONにするにはどうすればよいのでしょう?

mysql> show variables like 'log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log | OFF |
+---------------+-------+
1 row in set (0.00 sec)

MySQLのバージョンは、5.0を使っております。
130NAME IS NULL:2008/02/20(水) 07:39:29 ID:???
>>129
my.cnf に次のように書いて mysqld を再起動。

[mysqld]
log = filename
131NAME IS NULL:2008/02/20(水) 11:07:44 ID:u/qQnTAY
ストアドファンクション使用するときに
テーブルロックがかかってしまう問題は
5.1では解決された(る)のでしょうか?
132NAME IS NULL:2008/02/20(水) 11:24:41 ID:???
>>127
デフラグってどうやってやるんだっけ?
一度ダンプして入れなおすしかないって
聞いたことあんだけどアレ嘘?
133NAME IS NULL:2008/02/20(水) 14:37:10 ID:t1FXjQC1
素朴な疑問ですが、トランザクション・コミットを使用するには
InnoDBにしなければいけない、MyISAMだと使用出来ないと
マニュアルに書いています。

しかし、速度の面からすべてのテーブルをMyISAMにしているのですが、
InnoDBにする利点ってトランザクション・コミット以外にあるのでしょうか?
134NAME IS NULL:2008/02/20(水) 19:17:37 ID:???
書き込んでる途中に読める
135NAME IS NULL:2008/02/20(水) 20:20:46 ID:Sgz5aacp
MySQLの文字セットをEUCにするのにどうすれば良いのでしょうか?
本やらネットで調べて

/etc/my.cnf に

[mysqld]
default-character-set=ujis
[client]
default-character-set=ujis
[mysql]
default-character-set=ujis
[mysqldump]
default-character-set=ujis

と書き加えてみたのですが、何か上手くいってない雰囲気なのですが。
136NAME IS NULL:2008/02/20(水) 20:47:07 ID:???
>>135

うちは

cat /etc/my.cnf
[mysql]
default-character-set=ujis

[mysqld]
default-character-set=ujis

で上手くいってますが。
137NAME IS NULL:2008/02/20(水) 21:17:18 ID:o//3cEXb
同じデータ構造を持つテーブル群のデータベースを
一個のデータベースにまとめたいのですが、
mysqldumpでダンプしてからリカバリーしようとすると、
新しいものに上書きされてしまって、一つにまとめることができません。

なにか良い方法はないでしょうか?
宜しくお願いします。
mysqldumpがテーブル毎にダンプできればいいのですが・・・
138NAME IS NULL:2008/02/20(水) 22:12:56 ID:???
>>137
MERGEテーブルなんてどうだい?
ttp://dev.mysql.com/doc/refman/4.1/ja/merge.html
139NAME IS NULL:2008/02/21(木) 00:31:24 ID:???
>>132
OPTIMIZE TABLE という命令がある。
140NAME IS NULL:2008/02/21(木) 00:33:12 ID:???
>>137
テーブル毎にダンプできるよ。
というか、mysqldump の出力はテキストなんだから好きに加工すればいい
141NAME IS NULL:2008/02/21(木) 08:58:10 ID:???
/etc/my.cnfで以下のようなdataのディレクトリを設定したのに、
なぜか、/var/db/mysql/{database名}以下にデータが出来てしまい
困っております。
[mysqld]
datadir = /home/xxxx/db

データのディレクトリを変えられるところって他にありましたでしょうか?
ちなみに、環境はFreeBSD6.3R+MySQL5.2です。

どうかお助け下さい
142NAME IS NULL:2008/02/21(木) 13:24:45 ID:???
>141
その /home/xxxx/・・・
ってのは、ユーザーのホームdirっぽいんが、ユーザー:mysqlが、読み書き出来るパーミッションがあるのかね?
143NAME IS NULL:2008/02/21(木) 13:30:57 ID:AwIQMyrc
むしろ mysqld をそのユーザの権限で動かす!
144NAME IS NULL:2008/02/22(金) 15:51:51 ID:???
>102
遅くなりましたが、ありがとうございました。
145NAME IS NULL:2008/02/22(金) 21:59:19 ID:W58pTgXp
質問させてください。

c1 c2

001 abc
001 hyu
002 ded
002 iopsa
001 yui

こんな感じにテーブルがあるとします。

これを一度の処理でこんな感じに取り出したいです。

001 abc
001 hyu
001 yui
002 ded
002 iopsa

distinct を使ったりしてみたのですがどうにも上手くいかず…
ご教授お願いします。
146NAME IS NULL:2008/02/22(金) 23:41:31 ID:???
>>145
意味わからん
select c1, c2 from TBL order by c1,c2;
じゃねーの?
147NAME IS NULL:2008/02/22(金) 23:55:03 ID:???
mysqlをwindowsXP で勉強しているのですが、
INSERT INTO recipe (aaa,bbb) VALUES('日本語',1);
がエラー1366で実行できません。
設定はutf8です。
INSERT INTO recipe (aaa,bbb) VALUES('abc',1);
であれば、実行できます。

もしかして、utf8に設定していると、コマンドから直接入力が無理なのですか?
148NAME IS NULL:2008/02/23(土) 00:12:14 ID:???
>>147
cp9332とかが良いってばっちゃが言ってた
149NAME IS NULL:2008/02/23(土) 00:46:54 ID:???
>>148

cp932
150NAME IS NULL:2008/02/23(土) 10:35:49 ID:plV93xd4
SQLの実行時間を図るのにタイムウォッチを使っているのですが、
MySQLで便利なSQLの実行時間がわかる方法ってないでしょうか?
151NAME IS NULL:2008/02/23(土) 15:48:17 ID:M9EfVzmK
mysql4.1

select
a + b
from


こんな感じの場合、a,bどちらかがnullだと結果全部nullになるんですが、
nullは0とて計算したい場合、どのようにすればよいんでしょうか?
m(_ _)m
152NAME IS NULL:2008/02/23(土) 16:02:37 ID:qXPAWXxv
innoDBを使うとSELECT COUNT(*)の処理がMyISAMと比べて桁違いに遅いと思いますが、
COUNT処理を高速化するために、何か方法はないでしょうか?

前にどっかのサイトで、innoDBでのCOUNT処理を速くするテクニックが書かれていたと思うのですが、
どこだか見つけることができませんでした。

宜しくお願いします。
153NAME IS NULL:2008/02/23(土) 16:39:57 ID:???
MySQL5.1から行レベルレプリケーションというものが採用されたということなのですが、
行レベルレプリケーションとは具体的にはどういうものでしょうか?
154NAME IS NULL:2008/02/23(土) 16:45:15 ID:???
>>152
innodbのcount(*)検索が遅いのは、クラスタインデックスという仕組みのためらしいです。
これを怪傑する方法としては、force keyを使って、
主キーインデックス以外のカラム(もちろんindexはらないとだめ)を
指定するのが常套手段だったと思います。

これの方法だと、1レコードのサイズが大きいほど劇的に性能あがりますね。
155>>154:2008/02/23(土) 16:47:39 ID:???
訂正。
force keyじゃなく、force indexだった。
select count(*) from test_table force index(col);
156NAME IS NULL:2008/02/23(土) 16:52:23 ID:???
>>151
そういうときは、caseだ。ばか。
157NAME IS NULL:2008/02/23(土) 17:18:48 ID:???
>>151
select ifnull(a,0)+ifnull(b,0) ...
158NAME IS NULL:2008/02/23(土) 17:32:11 ID:???
>>153
今まではクエリを転送してスレーブ側で実行していたが、変更されたレコードデータその物を転送するようになった。
159NAME IS NULL:2008/02/23(土) 23:01:13 ID:rFdPd3m0
すみません。ビューを作成時のSQL文にバグがあったので、作成時のSQL文を確認したいのですが、
どのようなコマンドを打てばいいのでしょうか。
160160:2008/02/23(土) 23:20:53 ID:???
事故解決しました。
HDDが飛んでしまったようです。
161NAME IS NULL:2008/02/24(日) 11:39:20 ID:???
>>115
Handler_read_rnd_nextはテーブルのフルスキャンで何行読んだかを
示しているので、log_slow_queriesに加えてlog_queries_not_using_indexesを
ONにするとどのクエリがやらかしてるのか分かると思う。

>>159
show create view XXX

162NAME IS NULL:2008/02/24(日) 12:01:12 ID:???
あるCMSをインスコしたときテーブルをいっぱい作成されました。

そのテーブルとテーブル内のフィールドのCollationの値を
すべて変更したいんですが、どうやるのが一番かっこいいんでしょうか?

おねがいします。phpMyAdminは使えます。
163NAME IS NULL:2008/02/24(日) 14:30:31 ID:???
>>162
DROP DATABASE "DB名";
これが一番最強でクール。
164NAME IS NULL:2008/02/24(日) 14:46:35 ID:???
>>163
すでにデータが少し入ってるので消したくないんです。
165NAME IS NULL:2008/02/24(日) 15:13:59 ID:???
MySQLクライアントで10万件のレコードをselectしたとき、最後に
100000 rows in set (1.26 sec)
と表示されます。
1.26secかかったことになっているのですが、実際には25秒かかっています。(

実際の実行時間を表示するにはどうすればよいのでしょうか?
166NAME IS NULL:2008/02/24(日) 16:05:37 ID:???
25秒ってのは表示とかよけいな処理を含んでるんじゃないの?
167NAME IS NULL:2008/02/24(日) 16:09:06 ID:???
mysqlってテーブル単位でアクセス権設定できますか?
hogeデータベースのfugaテーブルのみにアクセス可能なユーザを
設定したいのです。
168NAME IS NULL:2008/02/24(日) 16:13:12 ID:???
10万件のレコードを1秒かそこらで取得できるわけないでしょw
釣りですか?
169NAME IS NULL:2008/02/24(日) 16:47:56 ID:PjrHaGxS
ディスクのIOにかかる部分はシステムコール内で
消費されているからなぁ.その分は1.26秒には
入っていないでしょ.
170NAME IS NULL:2008/02/24(日) 18:22:21 ID:???
あんまり正確じゃないけど

select count(*) from
(
計りたいSQL
);

というのをよくやる
171名無しさん:2008/02/25(月) 00:10:58 ID:9FzPKS4K
MYSQL導入するのに丸一日かかった
頑張って勉強するお
172NAME IS NULL:2008/02/25(月) 00:24:21 ID:???
>>171
administratorとQueryBrowserいれとけよ、便利だから
173NAME IS NULL:2008/02/25(月) 00:30:39 ID:???
>>165
1.26secというのはクエリをサーバーに投げてから結果が返ってくるまでの時間。
25秒は表示にかかった時間も計っているのでは?
174NAME IS NULL:2008/02/25(月) 00:31:59 ID:???
>>162
alter table xxxx convert to charset utf8
とか?
175NAME IS NULL:2008/02/25(月) 00:34:07 ID:???
>>170
表示をころすわけね
176NAME IS NULL:2008/02/25(月) 01:53:59 ID:z+rzzFbc
http://dev.mysql.com/doc/refman/5.1/ja/routine-restrictions.html
↑で
「ストアド ルーチン内 (ステートメントをストリングとして動的に構築し、実行する場 ) で動的 SQL を使うことはできない。」
という記述を見つけたんだけど、ストアド内でSQL文字列を構築して実行っていうのができないってことですか?
177NAME IS NULL:2008/02/25(月) 02:13:10 ID:z+rzzFbc
set @vals = "'a','b','c'";
select * from tbl where fld in (@vals);

@valsが動的に変わる場合、↑のようなことをやる良い方法はないでしょうか?
178phpMyAdminの使いかた:2008/02/25(月) 03:07:09 ID:Zgifsms/
phpMyAdminについて質問があります。

現在、次の環境でphpMyAdminをインストールしようとしいるのですが最後の"pma"
ユーザに対するパスワードの設定がうまくいきません。
その為、動作確認の為に次のURLにアクセスをしたところトップページ
は表示されるのですが、幾らパスワードを入力しても弾かれてしまいます。(エラー発生)

http://localhost/phpMyAdmin/
【エラーメッセージ】
  エラー #1045 - Access denied for user 'pma'@'localhost'
  (using password: YES)
【環境】
  ・Linux(CentOS5)・MySQL5・PHP5
  ・(phpMyAdmin-2.11.4-all-languages-utf-8-only
   (これをインストールする予定)
【phpMyAdminの設定ファイル】
  # vi config.inc.php
  17 $cfg['blowfish_secret'] = 'tekitounamoziwoireta';
  
  /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
  37 $cfg['Servers'][$i]['controluser'] = 'pma';
  38 $cfg['Servers'][$i]['controlpass'] = 'pass';

どうすればphpMyAdminを使える様になるのでしょうか?

179phpMyAdminの使いかた:2008/02/25(月) 03:20:06 ID:Zgifsms/
補足です。

【参考サイト】
  http://www.okku.jp/wiki/hiki.cgi?(Linux)CentOS+4.1%A4%C7phpMyAdmin%A4%F2%BB%C8%A4%A6
【エラーが発生するコマンド】
  set password for pma@localhost=password('pass');
【エラーメッセージ】
  ERROR 1133 (42000): Can't find any matching row in the user table

どなたか詳しい方お願い致します。
180>>165:2008/02/25(月) 10:42:16 ID:???
みなさん、ありがとうございます。
みなさんは、性能実測行うときにどのような方法でやられているのでしょうか?
私は、時計使ってやっているのですが、、
181NAME IS NULL:2008/02/25(月) 11:28:26 ID:???
>>179
MySQLにpma@localhostが登録されてないんじゃね?
182NAME IS NULL:2008/02/25(月) 17:10:30 ID:pyl/7W05
6万行のテーブルにプライマリーキーで検索を掛けると、
300回に1回程度、実行速度が5秒くらいになることがあります。
アクセスが多い(平均35クエリー/秒)ので、それが原因かもしれませんが、
他にひっかかりそうなボトルネックになるような箇所は考えられませんね。
183179:2008/02/26(火) 01:21:13 ID:vmOg1J9D
>>181
MySQLの登録ユーザに"pma"を追加するという事でしょうか?
(つまり、rootユーザの様にコマンドラインからユーザを追加するSQLを
流すという事)
184179:2008/02/26(火) 02:19:02 ID:vmOg1J9D
>>181
ありがとうございます。
解決しました^^;
185NAME IS NULL:2008/02/26(火) 09:47:14 ID:yVz26w0r
InnoDBをMEMORYに変換しようとすると、TEXT/BLOG型はサポートしていないと
怒られるのですが、10000文字程度を格納しているフィールドがありVARCHARに出来ないのですが、何かよい方法はありますか?
ヨロシクお願いします。
186NAME IS NULL:2008/02/26(火) 14:39:58 ID:???
>>182
メモリが足りなくてスワップしてるとか
187NAME IS NULL:2008/02/26(火) 22:58:36 ID:1h0phFuN
page.txt revision.txt text.txtの3つのファイルを
mysqlにインポートしたいのですがERROR 1064 (42000)がでます

mysqlimport -u root -L corpus /dir/data/*.txt

mysqlimportコマンドのどこがいけないでしょうか
188NAME IS NULL:2008/02/26(火) 23:34:15 ID:???
>>187
エラーの詳細をkwsk
txtファイルの内容は間違いないの?
改行コードが2バイトになってるとか
189NAME IS NULL:2008/02/27(水) 00:26:54 ID:???
>>182
>300回に1回程度、実行速度が5秒くらいになることがあります。
このとき、MySQLクライアントでshow processlist;したら何かわかりませんか?
190NAME IS NULL:2008/02/27(水) 01:44:17 ID:???
start slaveしたら以下のエラーが出て、masterサーバとつなげません。

080227 10:20:35 [ERROR] Slave I/O thread: error connecting to
master 'replications@hoge:3306': Error: 'Lost connection to
MySQL server during query' errno: 2013
retry-time: 60 retries: 86400

たぶんerrno: 2013がその理由だと思うのですが、
このエラー番号の意味ってどこを見ればわかるんでしょうか?

191NAME IS NULL:2008/02/27(水) 09:12:12 ID:Ry3s+xrT
日時が入っているfield_nameに対して、日付のみに着目して
今日だけのデータを取りだしたい時に、下のようにやると、
INDEXが機能せず、フルスキャンになってしまいます。


TO_DAYS(NOW()) = TO_DAYS(field_name)


何か実装方法としていい方法はないでしょうか?お願いします。
192NAME IS NULL:2008/02/27(水) 09:53:05 ID:???
関数入れるとインデックスは使われません。
日時の場合は、当日以上翌日未満にすればよいです。
193NAME IS NULL:2008/02/27(水) 12:19:22 ID:???
今更ながらですが、トランザクションが必要がない場合に
INNODBとMYISAMって使い分けをした方がいいでしょうか?

データーベースの中にトランザクションを必要とするものがありまして、
全部INNODBにしているのですが、トランザクションを必要としないものを
MYISAMにするかどうか検討しています。

HPを色々見ても、大して変わらないという人や、むしろINNODBの方が速いという人までいて、
決めかねています。皆さんのご意見をお伺いできたらと思っています。
私は、5.1を使っています。ヨロシクお願いします!
194NAME IS NULL:2008/02/27(水) 13:09:00 ID:???
使い方次第
195NAME IS NULL:2008/02/27(水) 14:47:14 ID:3YI/hApE
MySQLはサンマイクロに買収されたのか。
196NAME IS NULL:2008/02/27(水) 15:11:45 ID:???
>>193
長短所を理解すれば答えはおのずと出るはずです。

>>195
それ、2,3月も前の話でしょ。 もうコバルトの話とかいらんでw
197NAME IS NULL:2008/02/27(水) 20:50:25 ID:IDLP0qwH
SELECT id FROM a INNER JOIN b USING(id) WHERE id='1'

として結果が0(ヒットしない)場合、WHEREの条件を無しにして
全体のレコードを取得したいと思います。
上記をどのように変更すればいいのでしょうか?
198NAME IS NULL:2008/02/27(水) 21:03:08 ID:???
SELECT id FROM a INNER JOIN b USING(id) WHERE id=id
199NAME IS NULL:2008/02/27(水) 21:51:08 ID:IDLP0qwH
>>198
すみません、あくまで「id=検索値」の結果が無かった場合に
全体のレコードを取得したいので、最初から全体を取得するのではないです。。
200NAME IS NULL:2008/02/27(水) 22:08:07 ID:???
無かった場合に実行すればよい
201NAME IS NULL:2008/02/28(木) 00:09:47 ID:???
>>193
そのシステムが命に関わるような場合、迷わずInnoDB
そのシステムが途中でデータ消えてもいいのでとにかく早くしたい場合MyISAM
(MyISAMでも一時間に一回バックアップとればそんなに問題にはならないでしょう。)
202NAME IS NULL:2008/02/28(木) 00:26:11 ID:???
InnoDBって遅いってイメージがあったけど、
実際違うなら、トランザクション使えるし、InnoDBの方がよくねぇ?
203NAME IS NULL:2008/02/28(木) 00:34:52 ID:???
>>201
このMyISAMならデータが消えるって、何を前提にしてんだ?
204NAME IS NULL:2008/02/28(木) 02:13:50 ID:???
>>203
>>201じゃないが、実際に両方とも運用していると、
MyISAMは一ヶ月に1回位、データがクラッシュする。
「XXXX marked as crashed」とかっていうエラーを吐き出す。
その場合は、REPAIRすると95%は直るが、5%はREPAIREも失敗する。

信頼性を犠牲にして速度を速めているのがMyISAMという認識でいる。
205NAME IS NULL:2008/02/28(木) 09:41:04 ID:???
MyISAMは確かに壊れやすいと思う。
読み出しと重ならなくても、更新が多い場合は避けるようにした。
追記だけとか、読むだけのテーブルなら良いと思うけど。

あんまり使ってないけど、MyISAMでもFixedなら壊れたことはないかな。
206NAME IS NULL:2008/02/28(木) 10:30:38 ID:???
っていうかDBで壊れやすいって致命的な欠陥じゃね?
車に例えれば、時々ブレーキが利かなくなることがあるってことだろ?

Oracleと比べるのは酷だが、どんなに機能が充実してOracleに近づいたといっても、
クリティカルなところ(お金に関わる部分や基幹業務、公共インフラ)では採用できないDBだな。
207NAME IS NULL:2008/02/28(木) 13:16:55 ID:???
当たり前です
208NAME IS NULL:2008/02/28(木) 14:20:53 ID:vUxSrTHj
かなり大きなvarcharを抱えているテーブルで文字検索をしたいのですが
全文検索用のインデックスを作って検索を高速化してくれるようなMySQLのアドオンってないでしょうか?
やっぱり正攻法でそういうことは全文検索用のソフトウェアにさせるべきなのでしょうか?
209NAME IS NULL:2008/02/28(木) 14:57:51 ID:???
>>206
それはちょっとちゃうな。
君はコンビニに買い物に行くとき、防弾チョッキ着て、護衛を付け、
遭難用携帯食料3日間分を念のため持って出かけるわけかい?
210NAME IS NULL:2008/02/28(木) 19:00:53 ID:???
>>206,209
どっちも両極端な意見すぎ!
特徴を理解した上で適材適所で使え。
211NAME IS NULL:2008/02/28(木) 23:43:23 ID:???
>>206
誰もMySQLの信頼性の話してない。
壊れやすいといっているのはMyISAMの話。
MyISAMの信頼性の話をしている。

MyISAMの信頼性が低いのは事実だが、
全体バックアップ+バイナリログで普通に復旧できるので壊れてもすぐに復旧できる。



212NAME IS NULL:2008/02/28(木) 23:46:25 ID:???
話は変わるが、MyISAMってみんななんてよんでるの?
おれの周りでは、"ミィザム"とか"マイサム"とか
"エムワイアイエスエーエム"とかいろいろなんだが、
統一しないか?
213NAME IS NULL:2008/02/29(金) 00:00:14 ID:???
勲は俺のもの での統一でいいと思うけど
214NAME IS NULL:2008/02/29(金) 00:41:08 ID:???
>>208
Tritonn
215NAME IS NULL:2008/02/29(金) 00:42:11 ID:???
いや、MyISAMだって、OSのクラッシュとかがなければ壊れないでしょ。フツー。
216NAME IS NULL:2008/02/29(金) 01:33:15 ID:???
IO弱いと壊れやすいんじゃね?
217NAME IS NULL:2008/02/29(金) 03:23:40 ID:???
mysql4.1から5.0のサーバーに移行しようとしてmysqldumpで全てのDBのバックアップを取ったんですが
なぜか新しい環境でユーザーは適用されているもののパスワードが反映されないです。

パスワード無しで接続できてしまい、逆に前の環境のパスワードを指定すると弾かれます。

mysql.userテーブル見てみたんですが、一応それぞれのユーザーに別々のパスワードは付与されているみたい。

なんでパスワードが適用されないんでしょう
教えてえろい人
218NAME IS NULL:2008/02/29(金) 11:38:26 ID:???
changelogみると、MyISAMが壊れるの直したってよく出てくるよね。
219NAME IS NULL:2008/02/29(金) 13:28:53 ID:q3z3v3NL
>>214 THX
こういうものがあったとは.
namazu とかで別途全文検索機能は実現するかぁ,
とか思っていたけどこりゃ便利そうだ.
というか,MySQL の FULLTEXT っていつの間にか
UTF-8にも対応していたのか.といっても分かち書きが
必要なので結局は Tritonn のお世話にならなきゃってことですね.
220NAME IS NULL:2008/02/29(金) 18:05:13 ID:???
MySQLで問い合わせ時間を得たいのですがどうすればいいでしょうか?

mysql> select sum(1+2) as sum from dual;

+----------+
| sum   |
+----------+
| 3 |
+----------+
1 row in set (0.00 sec)

この場合、sumと問い合わせ時間(0.00 sec)を返してほしいです。
221NAME IS NULL:2008/02/29(金) 18:24:59 ID:???
>>220
度々似たような質問を見かけるんだが、
前スレにもあったように、問い合わせの時間が表示されるのは、mysql(クライアントプログラム)の独自機能であって、
mysqld(サーバー)の機能ではない。

よって時間を得たければ、例えばPerlなら、use Time::HiRes ; とすりなり、
PHPなら microtime(true) するしかないじゃないの。(てか俺はそうしてる。)
222NAME IS NULL:2008/02/29(金) 19:16:51 ID:???
mysql v4.0.20で文字コードにujis使用のサーバから
Win機でODBC接続してVB6でデータ取得について質問

MyODBC-3.51.06試したけどダメだった...
で myodbc-3.51.06-conv_ujis.zip 拾って使ってます。

HPからのリンク切れてるけどこれ使ってもいいの?
223NAME IS NULL:2008/02/29(金) 21:18:05 ID:???
あるサーバから別のサーバへMySQLのデータベースを
移動したいのですが、
.frm .MYD .MYI をそのまま移動させて
使用することってできるのでしょうか?
以前SQL文でエクスポートしてたんですが、
文字化けとかでかなり手こずった記憶がありまして、
できれば簡単な方法が良いなと思っています。
224NAME IS NULL:2008/02/29(金) 21:26:22 ID:dsP0ZzyD
mysql 5.0.27 でレプリケーションを組んだのですが、slaveサーバーでsyntax
エラーを起こします。
mysqlのバージョンは一緒だし、文字コードも show variable で見るとmasterと
slaveは同じものだし、、、
どうもバイナリー項目の辺りでおかしいのかな?と思いますが、なぜだかわかりません。
どなたか、解決方法ご存知の方、おりませんか?
225NAME IS NULL:2008/02/29(金) 23:13:19 ID:i7o2Y2Yb
IDEXをいくつか貼ってあるテーブルにINSERTをする場合に、
1万件の場合と、1000万件の場合で処理速度が大幅に変わりますか?

ログ系のテーブルなので、これからどんどん溜まっていったときに、
どんどん処理が遅くなるんじゃないかと不安に思っているのですが・・・

InoDBは確かBTREEだったと思いますが、BTREEの作成コストがその大きさに依存するかどうか知りたいです。
宜しくお願いします。
226NAME IS NULL:2008/03/01(土) 01:32:50 ID:???
>>223
同じバージョンならできる。
227NAME IS NULL:2008/03/01(土) 01:33:24 ID:???
>>224
バイナリログの中のエラーになったクエリを見ればいいんじゃないかな。
228NAME IS NULL:2008/03/01(土) 10:51:32 ID:???
レプリケーションについて教えてください。

レプリケーションの方式として、
1master-複数slave
という方式と
mutil-master
という方式があるみたいなのですが、
どういう場合にどちらを選ぶべきなのでしょうか?
229NAME IS NULL:2008/03/01(土) 11:49:48 ID:??? BE:835119239-2BP(0)
>>224
変わる。
もちろんインデックスのサイズとメモリ量による。
ログ系のテーブルなら、そんな複雑なインデックス貼らないだろうし(created_onとserver_idとstatusくらいか)
1000万件くらい大丈夫だと思うが。だめならパーティショニング。
それよりストレージエンジンをどうするか考えたほうがいいと思う。InnoDBかMyISAMかARCHIVEか。

>>228
シングルマスタはマスタがフェイルポイントになる。
マスタが死ぬと更新がまったく出来なくなる。
スレーブ1台をマスタに昇格させて復旧させる。

デュアルマスタはフェイルポイントがない。
auto_increment問題は、auto_increment_incrementとauto_increment_offsetを設定すれば大丈夫。
unique keyの重複したINSERTと、同一行の更新をどうするかが問題となる。
追加・更新のクエリを片方に寄せるというのも手。

3台以上のマルチマスタは手間の割にあまり利点ないので略。
230NAME IS NULL:2008/03/01(土) 17:49:39 ID:4HUS0plA
デュアルマスタってのはお互いがお互いのマスタであり
スレーブであるっていう設定のこと?
んで,3台以上ってのはそれをリング状にしたってこと?
231NAME IS NULL:2008/03/01(土) 19:12:32 ID:???
自鯖のMySQL入れようと思うんだけど5を入れとくべき?
232NAME IS NULL:2008/03/01(土) 19:13:47 ID:???
うん
233NAME IS NULL:2008/03/01(土) 19:40:11 ID:???
4系でもいいと思うけどな
234NAME IS NULL:2008/03/01(土) 20:15:00 ID:??? BE:1391863695-2BP(0)
>>230
そう。
あと、それぞれのマスタにスレーブをぶら下げたりもできる。
235NAME IS NULL:2008/03/01(土) 23:52:18 ID:4HUS0plA
>>234
デュアルマスタまではやったことあるけど,
リング状ってのはまだやったことないな.
同じデータベースに対していどちらのマスタでも
更新ってのは怖くてやったことがない.
236NAME IS NULL:2008/03/02(日) 01:26:02 ID:???
>>228
俺もあまりよくしらないが、考えてみた。

まず、1マスタNスレーブの場合。
参照するたのslaveサーバが複数あるのだから当然、参照の負荷分散になる。
更新するためのmasterサーバも参照のアクセスと競合しないので、
負荷分散になるんだと思う。
>>229の指摘でマスタが壊れたら更新ができなくなるといっているが
それはmutil-masterも同じことだ。
確かに更新はできるが、データの不一致が起こるので、
むしろ障害発生時に更新をとめるような仕組み必要ではないか。

次、multi-masterの場合。
1マスタNスレーブと比べると、参照のためのサーバが一台増えるわけだから、
参照だけを考えると、1マスタnスレーブよりすぐれているんだと思う。
更新は、あるサーバの更新が他のサーバ全てにレプリケーションされるわけだから、
更新については全く負荷分散にはならないんだと思う。

>どういう場合にどちらを選ぶべきなのでしょうか?
結論としては、更新が比較的多い場合、1マスタnスレーブを考えるべき。
参照メインで更新が殆どない場合、mutil-masterということになるんだろう。

237NAME IS NULL:2008/03/02(日) 02:24:27 ID:???
覚醒せよ
238NAME IS NULL:2008/03/02(日) 02:44:46 ID:LX2+C4Nj
助けて下さい。
mysqlで、間違えてデータベースを作ってしまいました。
その間違いを訂正しようとして、mysqlに登録したroot権限で
入っても、何をしたら良いかわからなくて。。
全部無かったことにしたくて、アンインストールしたりしましたが、
またインストールしたら間違えた設定のまま消えません。
完全に消去するには、どうすれば良いのでしょうか?
ちなみにosはfedora8です。
239NAME IS NULL:2008/03/02(日) 09:48:34 ID:???
>>212
まいあいさむ
240NAME IS NULL:2008/03/02(日) 09:50:37 ID:???
>>217
4→5で認証方法変更されてるんだが
241229:2008/03/02(日) 12:17:28 ID:??? BE:773258055-2BP(0)
>>236
> >>229の指摘でマスタが壊れたら更新ができなくなるといっているが
> それはmutil-masterも同じことだ。

いいえ。

> 確かに更新はできるが、データの不一致が起こるので、

『データの不一致』はどのサーバ間をさしている?

> 次、multi-masterの場合。
> 1マスタNスレーブと比べると、参照のためのサーバが一台増えるわけだから、
> 参照だけを考えると、1マスタnスレーブよりすぐれているんだと思う。

シングルマスタでマスタを参照してもいいので、1台増える訳ではない。
# というか、レプリケーションの時間差が許されない場面では普通はマスタを参照する。

> 更新は、あるサーバの更新が他のサーバ全てにレプリケーションされるわけだから、
> 更新については全く負荷分散にはならないんだと思う。

ここだけは合っている。
しかし、5.1の行レプリケーションを考慮した場合は間違いになる。

全般的にめちゃくちゃだ。
レプリケーションの仕組みをもうちょっと学んだほうがいい。
242>>236:2008/03/02(日) 15:14:39 ID:???
>>241

>> 確かに更新はできるが、データの不一致が起こるので、
>『データの不一致』はどのサーバ間をさしている?
故障したサーバとそれ以外のサーバ。
たとえば、3台でリング上のレプリケーション組んでるとするだろ。
それぞれ、A、B、Cとする。データの流れは、A→B→C→A...とする。
Bが壊れた場合、AからCのデータの流れが途絶えるわけだから、
Cの更新はAに反映されるが、Aの更新はCに反映されない。

>シングルマスタでマスタを参照してもいいので、1台増える訳ではない。
># というか、レプリケーションの時間差が許されない場面では普通はマスタを参照する。
mutil-masterの話なのに、この話がでるのが意味不明。説明してほしい。

>しかし、5.1の行レプリケーションを考慮した場合は間違いになる。
そのとおりだね。間違いでした。
243NAME IS NULL:2008/03/02(日) 15:23:45 ID:???
レプリケーションって難しいねw
というか俺の頭が悪いのかorz

で、>>241に聞きたいのですが、
>どういう場合にどちらを選ぶべきなのでしょうか?
に対する答えは、>>236さんの答えでは不十分ってこと?
そこらへんを解説きぼんぬ。
244NAME IS NULL:2008/03/02(日) 20:41:09 ID:Fblr/lkn
selectの結果で実行するsql文を変更したいのですが
ストアドプロシージャ・ファンクションを使わずに
するにはどうしたらいいですか?
例sql文を教えてください。
245NAME IS NULL:2008/03/02(日) 21:28:44 ID:???
windows+linux のクラサバなんだけどjavaで動かしている時って
mysqlの文字コードはsjisにしてる?それともutf8?
vistaだとutf8が4バイトらしいんだが・・
246NAME IS NULL:2008/03/02(日) 22:05:28 ID:???
フハハ、utf-8は最大6バイトまであるわっ
247NAME IS NULL:2008/03/02(日) 23:33:09 ID:???
MySQLに限ってはutf-8だと3byteが上限
They can be encoded with 8, 16, or 24 bits, as in utf8
248229:2008/03/03(月) 12:49:38 ID:???
>>242
>>『データの不一致』はどのサーバ間をさしている?
> 故障したサーバとそれ以外のサーバ。
> たとえば、3台でリング上のレプリケーション組んでるとするだろ。
> (略)

そうだね。だから3台以上のマルチマスタはあまり意味ないよ。
と、すでに229に書いた。
考えるならシングルマスタとデュアルマスタだけにした方がいいだろう。
『データの不一致』はデュアルマスタの場合にはどうなる?
3台以上のマルチマスタしか考えていない?

>>シングルマスタでマスタを参照してもいいので、1台増える訳ではない。
>># というか、レプリケーションの時間差が許されない場面では普通はマスタを参照する。
> mutil-masterの話なのに、この話がでるのが意味不明。説明してほしい。

あなたは『1マスタNスレーブと比べると、参照のためのサーバが一台増えるわけだから、参照だけを考えると、1マスタnスレーブよりすぐれているんだと思う』と書いているけど、増えないでしょ。1マスタNスレーブでマスタを参照してもかまわないわけだし。
1マスタ1スレーブの場合もデュアルマスタの場合も、参照は2台からできる。

>>243
> レプリケーションって難しいねw

いや、そんなに難しくないよ。5.0までのは、
マスタ: クエリを実行 -> 実行終了 -> 更新系のクエリなら(ちょこっと変えて)バイナリログに書く
スレーブ: マスタからバイナリログを取ってくる -> 実行
ってやってるだけだし。bin/mysqlbinlogで見ると分かるが。

> >どういう場合にどちらを選ぶべきなのでしょうか?
> に対する答えは、>>236さんの答えでは不十分ってこと?

不十分つーか、236のは過程もひどいし結論は意味不明すぎる。
シングルマスタとデュアルマスタの得失を229に書いといたから、自分の環境にあわせて選べばいい。
でも、228の人のレベルからするとシングルマスタの方がいいと思うが...デュアルマスタはフェイルポイント無くなるけど、代償も多いからハマりそう。
249NAME IS NULL:2008/03/03(月) 17:55:10 ID:ABajaOyx
>>227
見たのだけれど、update行のバイナリー項目で変にスペースが入ったり\0が並んでたりで、、、
バイナリーログにも出力文字コードがあったりするのでしょうか?
なぜ syntaxエラーなのか、、、

250NAME IS NULL:2008/03/03(月) 23:27:48 ID:???
208 名前:Trader@Live![] 投稿日:2008/03/03(月) 23:24:21.29 ID:oVO24yUj
個人でも商売でもバイナリデータを直接操れよ
データベースやエクセルとかいうやつは初心者だよ

-----
と言われたんですが
251NAME IS NULL:2008/03/04(火) 00:01:37 ID:???
左様か
252NAME IS NULL:2008/03/04(火) 01:37:03 ID:2te2Hach
>1マスタNスレーブでマスタを参照してもかまわないわけだし
この場合、更新クエリはマスタで、参照クエリはスレーブに投げるものだと思ったけど、
勘違いかな。。。

253229:2008/03/04(火) 01:46:40 ID:??? BE:1237212285-2BP(0)
>>252
>>1マスタNスレーブでマスタを参照してもかまわないわけだし
> この場合、更新クエリはマスタで、参照クエリはスレーブに投げるものだと思ったけど、
> 勘違いかな。。。

そういう風に使うことも多いが、別に決まっている訳じゃない。
更新よりも参照のほうがはるかに多いなら、マスタも参照して全体の負荷下げるほうがいいし。
大きいトランザクションを投げることがあるなら、レプリケーションに遅れが出るけど、
その遅れが許されない場合はマスタを参照すべきだし。
254NAME IS NULL:2008/03/04(火) 06:13:01 ID:???
>>238
遅レスだが、OSも再インストールすればOK
255NAME IS NULL:2008/03/04(火) 08:09:26 ID:???
>>238

発想がすごいな。データベース触らないほうがいいかも知れないよ。
256NAME IS NULL:2008/03/04(火) 09:31:06 ID:???
>>238
まちがえたデータベースを削除すればいいだけではないの?
257NAME IS NULL:2008/03/04(火) 11:09:12 ID:???
データベース消してさらにアンインストールもしても
ディスク上には残ってるから完全に消したことにはならない
OSインストールしなおしてもデータベースが作られた
場所によってはそれでもまだ消えずに残っているかもしれない
HDD消去ツールを使って完全に消去してから
OSのインストールとMySQLのインストールをすることを薦める
258NAME IS NULL:2008/03/04(火) 13:49:23 ID:???
ちょっと相談

PHP
259NAME IS NULL:2008/03/04(火) 19:51:00 ID:Wg0XzILf
どこにも書けないからここで叫ばせてくれ!!

みんなー!!! releaseは予約語だぞー!!!
カラム名に使ったらダメだぞーーーー!!!!!
でもバッククォートでくくれば使えるぞーーーー!!!!

http://dev.mysql.com/doc/refman/4.1/ja/reserved-words.html
は、あくまで4.X系列のマニュアルだぞーーー!!!

http://www.rfs.jp/sb/sql/02/01.html
が参考になるぞーーーー!!!!
260NAME IS NULL:2008/03/05(水) 01:17:03 ID:???
>>259
何、このきちがい。
261NAME IS NULL:2008/03/05(水) 11:22:43 ID:???
たぶんreleaseを使ってはまったんでしょ。
どうせならこっちを参考にすればいいのに。
http://dev.mysql.com/doc/refman/5.1/ja/reserved-words.html
262NAME IS NULL:2008/03/05(水) 11:46:59 ID:j7//b68F
my-small.cnf
my-medium.cnf
my-large.cnf
my-huge.cnf
それぞれどの程度のマシンスペックを想定してるんでしょうか?
最近は2Gオーバーのマシンも珍しくなくなっているので、
策定時の大きさの感覚とはギャップが出てきてるんじゃないかとも思うのですが・・・
263NAME IS NULL:2008/03/05(水) 12:04:09 ID:PwmTWvdf
>>261
ごえぇぇぇぇぇっ! 5.1版って和訳されてたのぉぉぉぉ!?!?!?!?!?!?!?
うぎゃぁぁぁぁあっぁあぁ!!!!!
ヘーターこーいぃぃぃたーーーーーーー!!!!!

俺の半日を返せええええぇぇぇぇぇぇぇぇえぇぇぇぇぇっっっ!!!
264NAME IS NULL:2008/03/05(水) 17:41:55 ID:???
>>262
DB専用サーバか、apacheやアプリケーションサーバと共有するか、DBの負荷程度、etc・・
状況によってどれをテンプレにするか決める。
メモリのギリまで各サービスに最適なメモリを命一杯割り当てる。
決してスワップさせないように。
265NAME IS NULL:2008/03/05(水) 21:46:04 ID:XFVJ2OUC
すいません。複数フィールドに対するユニーク制約の仕方がよくわからないんですが、
以下のようなテーブルがあったとき、

  ID | DAT1 | DAT2 |
  1 |  1   |  2   |
  2 |  1   |  3   |

  3 |  2   |  1   | ← ×
  4 |  3   |  1   | ← ×

すでにあるdat1とdat2の逆は登録させたくないのですが、どのようにすれば良いでしょうか?
266NAME IS NULL:2008/03/05(水) 22:10:05 ID:??? BE:927909465-2BP(0)
> 策定時の大きさの感覚とはギャップが出てきてるんじゃないかとも思うのですが・・・

my-huge.cnfでもかなり少なめの設定。
KLabの記事でも読むといい。
267NAME IS NULL:2008/03/05(水) 23:13:30 ID:???
下記のようなデータがあったとき、
nameフィールドの中に入っている項目が多い順にソートして、なお且つ重複を取り除いて抽出するにはどういったSQLを書けばいいでしょうか?
この例では
りんご
みかん
ぶどう
という順に、入っているデータが多い順に一つにまとめて取り出したいです。

ID name
------------
01 りんご
02 みかん
03 ぶどう
04 りんご
05 りんご
06 みかん
07 りんご
08 みかん

宜しくおねがいしますm(_ _)m
268NAME IS NULL:2008/03/06(木) 08:44:36 ID:??? BE:556745292-2BP(0)
SELECT id, name, count(*) FROM rtfm GROUP BY name ORDER BY count(*) DESC;
マニュアル読めよ。
269NAME IS NULL:2008/03/06(木) 08:57:15 ID:???
すいません、ありがとうございます
270NAME IS NULL:2008/03/06(木) 09:17:39 ID:???
マニュアルつーかSQLの基本だわな
271267:2008/03/06(木) 09:20:27 ID:???
>>268
お礼に、よろしかったらこのリンゴいかがですか。いっぱい取れたもので。
272NAME IS NULL:2008/03/06(木) 09:23:00 ID:UrAOuO7y
いただきます
273NAME IS NULL:2008/03/06(木) 11:58:06 ID:???
>>265
おそらく設計が間違ってる気がするけど、とりあえずtriggerでも使えば?
(5.0以降だよね?)
274NAME IS NULL:2008/03/06(木) 13:26:01 ID:???
>>265
正規化して dat1,dat2 を別テーブルにもつ
別テーブルに、IDと datで uniqueインデックスを貼る
275NAME IS NULL:2008/03/06(木) 20:46:55 ID:Ai2/bdLU
すみません、質問させて下さい。
phpでmysqlを使っているのですが、並び替え(order)ではなく任意の行を
最初に取得することはできますか?

|0001|hoge1|
|0002|hoge2|
|0003|hoge3|

orderだと、hoge1,hoge2,hoge3と取得することはできますが、
hoge2(任意),hoge1,hoge3という順番で参照する方法を探しています。

最悪、ループを二回にわけようかとは思いますが。
よろしくお願いします。
276NAME IS NULL:2008/03/06(木) 20:58:36 ID:???
>>275
order by (id='0002') desc, id
じゃダメ?
277275:2008/03/06(木) 21:14:21 ID:???
>>276
!!!!!!
そんなのあったんですか。。orz
とてつもなくありがとうございました。
278NAME IS NULL:2008/03/06(木) 21:25:21 ID:???
>>275
オレならソート用のマスタテーブルを joinして sortカラムとかで order する
279NAME IS NULL:2008/03/07(金) 23:35:42 ID:???
macアドレスは偽装することが可能だし、
それを認証代わりにすることはリスキーでしょ。
暗号鍵を併用したほうがいい。
280NAME IS NULL:2008/03/08(土) 02:20:04 ID:???
>>278
激重仕様だなw
281NAME IS NULL:2008/03/08(土) 14:40:21 ID:C6vdEUqT
接続元が動的IPの場合のアクセス制限ってどうやればいいですか?
282NAME IS NULL:2008/03/08(土) 16:46:49 ID:???
技術的に無理じゃなかろうか。
283NAME IS NULL:2008/03/08(土) 19:21:32 ID:???
>>281
マスクごと制限しろ
284NAME IS NULL:2008/03/08(土) 23:07:54 ID:???
INってどういう意味なんですか?
「mysql IN」でぐぐってもINの部分が全く考慮されない検索結果しか出ない(´Д`)
285NAME IS NULL:2008/03/08(土) 23:11:39 ID:???
>>284
orの代わりに使うもの

select hogehoge in (10,20,30) とあれば
hogehogeが10,20,30のいずれかのものが得られる
286NAME IS NULL:2008/03/09(日) 00:20:40 ID:???
即レスありがとうございます。
なるほど。

SELECT hogehoge FROM aaaaa WHERE hogehoge = 10 OR hogehoge = 20 OR hogehoge = 30;

と同じ結果が返ってくるのですね。
287NAME IS NULL:2008/03/09(日) 03:21:58 ID:???
ストアドプロシージャを使って、表を返すスクリプトを作ったのですが、
PHPからCALLすると can't return a result set in the given context と出ます。

コマンドプロンプトでCALLすると、表が表示されるのですが
どうすれば良いでしょうか。 よろしくお願いします。
288NAME IS NULL:2008/03/09(日) 09:36:22 ID:???
>>287
スレ違い、と言いたいところだが優しくしてあげよう

mysqli関数群を使わないとダメです
289NAME IS NULL:2008/03/11(火) 02:36:31 ID:???
>>284
ぐぐる前にマニュアル嫁
290NAME IS NULL:2008/03/11(火) 13:54:45 ID:???
すんません、PHP開発環境のためXAMPPをつかってMySQLインストールしたんですが、
停止できなくなっちゃいました。なんででしょう?
誰かわかったら教えてください。(T_T

エラー:MySQLを停止中にエラーが発生しました。 [0]
とでてます。

前に一度phpMyAdminにアクセスできなくなってパスワードをリセットしようと
したんですが、なんかうまくいかなくて結局再インストールしました。
とりあえず、アクセスできなくなった原因(Cookie)を消去してました。
それが原因かわかりませんがそれ以降再インストールしてもMySQLがXAMPPの
コンパネから終了できなくなりました。

OS:Win
MySQL 5.0.51a
XAMPP 1.6.6a
phpMyAdmin 2.11.4

xampp\mysql\data\.errの書き込み

080311 10:50:33 [Note] mysql\bin\mysqld.exe: ready for connections.
Version: '5.0.51' socket: '' port: 3306 Source distribution
080311 11:59:51 [Note] mysql\bin\mysqld.exe: ready for connections.
Version: '5.0.51' socket: '' port: 3306 Source distribution
080311 12:04:05 [Note] mysql\bin\mysqld.exe: ready for connections.
Version: '5.0.51' socket: '' port: 3306 Source distribution
InnoDB: The first specified data file .\ibdata1 did not exist:
InnoDB: a new database to be created!
080311 13:23:56 InnoDB: Setting file .\ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
080311 13:23:56 InnoDB: Log file .\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
080311 13:23:56 InnoDB: Log file .\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
080311 13:23:57 InnoDB: Started; log sequence number 0 0
080311 13:23:57 [ERROR] Do you already have another mysqld server running on port: 3306 ?
080311 13:23:57 [ERROR] Aborting

080311 13:23:57 InnoDB: Starting shutdown...
080311 13:23:59 InnoDB: Shutdown completed; log sequence number 0 43655
080311 13:23:59 [Note] MySql: Shutdown complete

よろしくお願いします
291NAME IS NULL:2008/03/11(火) 16:27:44 ID:???
Do you already have another mysqld server running on port: 3306 ?
292NAME IS NULL:2008/03/11(火) 18:48:39 ID:???
>>291
You are a fool boy!
293NAME IS NULL:2008/03/12(水) 11:37:07 ID:???
>>290
起動してないから停止できないんじゃないの?
294NAME IS NULL:2008/03/12(水) 18:43:33 ID:???
こういう奇妙な現象の多くは
操作ミスか設定ミスか。
295NAME IS NULL:2008/03/12(水) 21:28:16 ID:/qYtQmQP
where句にIFをつかい

where IF(a is null,b=1,c=1)
みたいな感じにしてるんですけど、これを入れ子にするにはどうすればよいのでしょうか?

where IF(a is null,IF(b is null,〜,〜),c=1)
イメージはみたいな感じです。

MYSQL4.1.20

296NAME IS NULL:2008/03/13(木) 00:36:27 ID:???
>>295
ん?それでええやん
297NAME IS NULL:2008/03/13(木) 02:18:21 ID:???
MySQLであるレコードのサイズを求める場合って、手計算しかないでしょうか?
あるレコードのサイズをMySQLの関数とかで求める方法ってありますでしょうか?
298NAME IS NULL:2008/03/13(木) 09:30:48 ID:7ofIu9vE
>>296
あぁ〜。
エラーをキチンと読んでませんでした。
どうもありがとう。
299NAME IS NULL:2008/03/13(木) 11:06:32 ID:???
>>297
本当は何がしたいの?
その手の質問の時に本当にやりたいことは「レコードのサイズを求める」じゃない事が多いんだけど。
300NAME IS NULL:2008/03/13(木) 14:59:48 ID:oJPAtZrA
HPHとの組み合わせですが、
ブラウザ側に

okuri.html
<A/ href="tt.php?a=777">777を送信</A>

サーバーサイドに

tt.php
<?php
print $_get["a"]."を受信";
?>

とファイルを置いても実行すると

を受信

としか表示されません。スーパーグローバル変数の綴り間違いとかじゃないと思ったんですがわかりません。お助けください。
301NAME IS NULL:2008/03/13(木) 15:00:33 ID:???
↑PHPの間違いです汗
302NAME IS NULL:2008/03/13(木) 15:11:13 ID:???
ありそうで、今まで誰もしたことのない間違い。
間違えるなら「はみちつ」くらい面白いことやって。
303NAME IS NULL:2008/03/13(木) 15:23:45 ID:???
>>301
可愛いから許す
304NAME IS NULL:2008/03/13(木) 15:56:45 ID:???
>>300
webprog池。
といいつつ、 _GET って大文字じゃないといかんのじゃないかと。
305NAME IS NULL:2008/03/13(木) 16:25:21 ID:???
>>304
解決した。サンクス
306NAME IS NULL:2008/03/14(金) 16:54:43 ID:3GRgoYZ0
質問です。mysql5.0.22
select
a_date,
b_date
from
a,b

aとbとのdateを足して、日付はユニークで
一つにまとめて欲しいのですが、、

どうすれば?
307NAME IS NULL:2008/03/14(金) 16:59:44 ID:???
意味わからん
a, b はテーブル?
欲しい値は?ユニークとは?
好きな物は最初に食べるタイプ?
308NAME IS NULL:2008/03/14(金) 17:04:51 ID:???
select distinctrow
a_date + b_date as hoge
from
a,b
309NAME IS NULL:2008/03/14(金) 17:24:30 ID:???
>>308
306の要求通り合計してあげるなんて親切ですね。
310NAME IS NULL:2008/03/14(金) 17:37:09 ID:3GRgoYZ0
>>308
早速の回答ありがとうございます。
ただ、結果が
hoge
4006
4007
4008

みたいに、日付でないなぞの数字になってしまうのですが・・
どうしてでしょう?
311NAME IS NULL:2008/03/14(金) 19:25:13 ID:???
>>310
そもそも日付と日付を加算する、という意味が分からない。
日付と日数なら分かるけど。
312NAME IS NULL:2008/03/14(金) 19:55:29 ID:???
2008/2/29 - 2007/2/28
=2008÷2÷29 - 2007÷2÷28
=34 - 35
= -1
答え -1
~~~~~~~~~
313NAME IS NULL:2008/03/14(金) 20:25:25 ID:???
日付を足すwww 結果4016年とか?大変ですねwww
314NAME IS NULL:2008/03/15(土) 01:30:43 ID:HlMwlm98
>>311>>312>>313
ごめんなさい。
1日プラス(足す)って表現は、一般常識で考えると
2008/01/01+2008/01/02で4016年02月03日
と確かになります。

表現がちょっと難しかったかもしれません。
ごめんなさい。

頭の悪い人に、聞いて一応問題は解決しました。
315NAME IS NULL:2008/03/15(土) 17:58:02 ID:???
何故頭の良い人に聞かぬ
316NAME IS NULL:2008/03/15(土) 19:32:24 ID:???
317NAME IS NULL:2008/03/15(土) 21:54:30 ID:KoOOhNjo
PHPファイルにアクセスしたら、mysqldumpで
バックアップが取れるようにしたいと思っています。

mysqldump -u root -p パスワード hogehoge < test.sql
(hogehogeはテーブル名)

とすればいいのでしょうか?
318NAME IS NULL:2008/03/15(土) 22:21:31 ID:???

mysql -u root -p パスワード hogehoge < test.sql
319NAME IS NULL:2008/03/16(日) 13:02:48 ID:x85Y71fw
MySQL 5.0.32を使っているのですが、
Tomcat5.5からJNDIを使ってMySQLに接続しようとすると、
Access denied for user 'user'@'localhost' (using password: YES)
というエラーが出てしまいます。
mysql -uuser -p testdb
として、JNDIの設定と同じパスワードを入れると入れます。
320290:2008/03/17(月) 10:33:56 ID:???
すんませんした。無事直りました。
ウイルスソフトとファイアーフォールが悪さしてたみたいで、
それを切ってインストールしなおしたらうまくいきました。

>293
おそらくその通りだと思います。
コマンドプロンプトでもうまく作動しなかったので。
上記インストールしなおしたらうまくいきました。

初歩的なところでつまずいてお手数をおかけしました。
これから色々勉強しときます。
うまくいきました。
321NAME IS NULL:2008/03/17(月) 12:39:13 ID:CtPRxUzO
MySQL5を使っています。
AテーブルとBテーブルがあり、それを一緒にしてSELECTしたいのですが
こういった結合はできないのでしょうか?

Aテーブル
id | hoge | aaa | bbb | ccc

Bテーブル
id | hoge | ddd | eee | fff

SELECT `id`,`hoge` FROM Aテーブル;
SELECT `id`,`hoge` FROM Bテーブル;

この2つのSQLを1つにまとめて、AとB両方から id と hoge カラムデータを
持ってきたい。
322NAME IS NULL:2008/03/17(月) 12:53:16 ID:???
UNION
323321:2008/03/17(月) 13:58:39 ID:???
>>322
ありがとです。
SELECT `id`,`hoge` FROM Aテーブル
UNION ALL
SELECT `id`,`hoge` FROM Bテーブル;
でできました!
324NAME IS NULL:2008/03/17(月) 20:54:44 ID:I74vD0d5
質問させて下さい。
MySQL5.0.45を使用しております。
正確には、5.0.45-Debian_1ubuntu3.1です。
今回windowsからLinuxに変えてみようと思い色々設定しています。
メモリの挙動についてお伺いしたいのですが、key_buffer=256Mとしているのにtopコマンド確認上では130M程しか使用しておりません。
このほかにも色々メモリを多めに設定しているのですが依然変わらずです。

全体メモリは512MBでスワップは発生していません。
windows(MySQL5)の時は設定したメモリ分だけ予め確保するような挙動でした。
Linuxでは使用限界値として設定され、必要に応じてその範囲まで徐々に使用されていくと言うようなものなのでしょうか?
まだまだ勉強不足で申し訳ありませんが、アドバイス頂ければ幸いです。
325NAME IS NULL:2008/03/18(火) 00:20:32 ID:saWXbSut
今ふと思ったんだけど、複数のSQLをUNIONで一回で実行するのと、
ストアドプロシジャ使うのとどちらが早いんだろ?

326NAME IS NULL:2008/03/18(火) 02:14:37 ID:???
MySQLのバージョンとConnectorのバージョンって連動しているのでしょうか?
MySQL5.0とConnector/Jの5.1の組み合わせだとSELECTのASで別名とか使えないんですね…
Connector/Jを5.0にすると問題ないのですが、そういうものなのでしょうか。
327NAME IS NULL:2008/03/18(火) 07:43:16 ID:???
UNIONだとソートが発生するからストアドのほうが早い
UNION ALLだとSQL内で完結するから、
ストアドとSQLのコンテキストスイッチが無い分UNION ALLの方が早い

・・・と思う
328NAME IS NULL:2008/03/18(火) 11:09:13 ID:???
まずはベンチマークだな。
329NAME IS NULL:2008/03/18(火) 16:38:17 ID:???
ORDER BYで2つ以上のパラメータからソートすることはできるんでしょうか?

ORDER BY hoge_id DESC, hoge_id2 DESC
hoge_idで降下順でソートして同じ値のものはhoge_id2の降下順になるようにしたいです
330NAME IS NULL:2008/03/18(火) 17:01:41 ID:???
MySQL Query Browser 1.1.17 を win XP で使っています。
画面上のテキストエリア(?) に SQL を書いて、 Ctrl + Enter を押せば SQL が実行されますが、
CSE や OsqlEdit みたいに、テキストエリア内に複数 SQL を書いて、
「マウスで選択して、選択した文字列を SQL として実行」
はできないのでしょうか?

Ctrl + Enter を押すと、テキストエリア内の文字列をすべて実行しているように見受けられます。
なので、複数 SQL を書いて、実行したい SQL の行頭に # をつけたり消したりすることで切り替えています。

これができたら CSE や OsqlEdit みたいで使い勝手がいいんだけどなぁ・・・



331NAME IS NULL:2008/03/19(水) 01:00:35 ID:???
WindowsでMySQL 4.0.26から5.0.51aに変更してみたところ
ハンドル数が常時4600程度だったのがMySQLサービス起動直後でも39000程度もあり
少し使っていると42000とか増えていく
65000とかハンドルを消費するとWindows自体が不安定になったことがあるけど大丈夫なのか?
332NAME IS NULL:2008/03/19(水) 01:48:10 ID:???
Vistaは起動直後で10万越えてるよ
333NAME IS NULL:2008/03/19(水) 02:13:44 ID:???
MySQLってオラクルみたいに、GUIで操作できる画面ってないでしょうか?
334NAME IS NULL:2008/03/19(水) 02:13:53 ID:???
うう
335NAME IS NULL:2008/03/19(水) 02:54:14 ID:???
>>333
何この馬鹿
336NAME IS NULL:2008/03/19(水) 13:17:56 ID:FDALPhtb
windows 2003 serverにmysql4.1を入れているのですが
データベースにアクセスするソフトが2つあって
どちらか片方だけなら普通にアクセスできるのですが
2つとも立ち上げると後から立ち上げたソフトの方がデータベースのオープンに失敗してしまいます。
(mysqlが入っているOSがXPの場合は問題なく2つのソフトでDBアクセスできます)
OSの違いによって何かmysql側で設定が必要なのでしょうか?
337NAME IS NULL:2008/03/19(水) 13:43:23 ID:???
ORDER BYで2つ以上のパラメータからソートすることはできるんでしょうか?

ORDER BY hoge_id DESC, hoge_id2 DESC
hoge_idで降下順でソートして同じ値のものはhoge_id2の降下順になるようにしたいです
338NAME IS NULL:2008/03/19(水) 15:14:53 ID:???
まるちすんな
339NAME IS NULL:2008/03/19(水) 15:19:57 ID:???
>>333
オレはコンソール派だけど、MySQL Query Browser とか SQLyog とか。
340NAME IS NULL:2008/03/19(水) 15:30:08 ID:???
>>337
できる
341NAME IS NULL:2008/03/19(水) 15:30:46 ID:???
>>336
エラーは?
342NAME IS NULL:2008/03/19(水) 15:33:31 ID:FDALPhtb
>>341
データベースのオープンエラーとしか・・・
343337:2008/03/19(水) 16:39:34 ID:???
>>340さん
どんな書き方になるでしょうか?
ヒントでいいのでお願いしますm(_ _ )m
344NAME IS NULL:2008/03/19(水) 17:35:08 ID:???
>>337
自分で答え書いてるじゃん。
ORDER BY hoge_id DESC, hoge_id2 DESC で正解じゃね?
345NAME IS NULL:2008/03/19(水) 17:36:34 ID:???
>>342
まさかと思うが、max_connections=1 だったりとか。
346NAME IS NULL:2008/03/19(水) 18:00:48 ID:FDALPhtb
>>345
すみませんそれはどこでみることができますか><
347324:2008/03/19(水) 18:00:52 ID:???
どなたか>>324
に答えて頂けないでしょうか。
あれからググったりして調べているのですが一向に解決策が見つかりません・・・
348346:2008/03/19(水) 19:39:16 ID:???
コンソールとかで、show variables like "max_connections";
349NAME IS NULL:2008/03/19(水) 19:42:27 ID:???
↑の 名前 は間違い 346 じゃないぞ

>>347
show variables like "key_buffer_size";
は設定通り?
350NAME IS NULL:2008/03/19(水) 19:54:31 ID:???
MySQL 5.0.51aだとMySQLの再起動だけなら問題ないけど
Windowsを再起動するとInnoDBが壊れてるといってMySQLが起動できなくなるなぁ
かといってinnodb_force_recovery=4で起動してcheck tableしても
InnoDBのあるNTFSのディスク自体をchkdskしても全く問題ないので
InnoDB自体が壊れているわけではないようだ
MySQL 5.0.45以前だと全く問題ないんだが・・・
まぁいいか
スキップしよう
351NAME IS NULL:2008/03/19(水) 20:33:46 ID:FDALPhtb
>>348
ありがとうございます。
ところでそれと同様の設定はMySQL Administratorにもありますか?
352NAME IS NULL:2008/03/19(水) 21:10:33 ID:???
>>351
ある
353324:2008/03/20(木) 02:31:15 ID:???
>>349
レス有り難う御座います。
key_buffer_size 2147483648 ということで設定通り2Gになっています。
ubuntu7.1 serverを使っているのですが一つのアプリに使えるメモリ上限みたいなのがあるのかな・・・、my.cnfの設定はこうしていますがおかしな所ありますでしょうか?
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
default-character-set = ujis
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
default-character-set = ujis
character-set-server = ujis
collation-server = ujis_japanese_ci
init_connect = "SET NAMES ujis"
skip-character-set-client-handshake
skip-external-locking
skip-name-resolve
#bind-address = 127.0.0.1
key_buffer = 2G
max_allowed_packet = 16M
thread_stack = 1M
thread_cache_size = 1024
#max_connections = 100
table_cache = 1024
#thread_concurrency = 10
sort_buffer_size = 32M
myisam_sort_buffer_size = 32M
wait_timeout = 10
tmp_table_size = 512M
join_buffer_size = 524288
record_buffer = 16M
query_cache_limit = 16M
query_cache_size = 256M
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
skip-bdb
skip-innodb
max_connections=500
max_connect_errors = 102400
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
default-character-set=ujis
[isamchk]
key_buffer = 16M
!includedir /etc/mysql/conf.d/
354NAME IS NULL:2008/03/20(木) 04:01:00 ID:???
質問です。
仕事でオラクルを使っているのですが、MySQLも勉強してみたいとおもい、
いろいろ調べております。
やはり、MySQLはオラクルと比べて信頼性が低いということなのですが、
こういうシステムには使ってはいけないとかありますでしょうか?
355NAME IS NULL:2008/03/20(木) 08:18:15 ID:???
「MySQLはオラクルと比べて信頼性が低い」と考えている人間が携わるシステム。
356NAME IS NULL:2008/03/20(木) 09:22:09 ID:???
「オラクルはとMySQL比べて信頼性が高い」と考えている人間が携わるシステム。
357NAME IS NULL:2008/03/20(木) 12:05:12 ID:OG+4q6QH
UPDATEするテーブルを複数指定できるのでしょうか?

UPDATE member,item SET member.name='aaa',item.date='2008-03-200'
WHERE member.id='1'

みたいなSQLを書いているのですが、実行されません。
358NAME IS NULL:2008/03/20(木) 12:29:18 ID:???
>>357
それはMySQLでは出来ない。あきらめよう。
359NAME IS NULL:2008/03/20(木) 14:00:42 ID:???
>>353
OSのarchはi386?
i386だと、ユーザー空間のメモリは2Gが上限で、MySQLマニュアルのどっかにあったと思うけど、
key_buffer_size以外に、各種クライアントが使用する変数郡をすべて足し合わせた合計が
2Gを越えないように設定しないといけないハズ。

i386でも、PAE-kernel使うとか、自前でコンパイルオプションやスイッチ変更したら2G以上使えるらしいけど、
そこらへんは詳しくない。

つうか、そもそも物理メモリ512Mしかないのに、設定で2Gのメモリを使うようにしてるところが
大問題なんじゃないのかね??
(それが、>>324の現象と関係あるかどうかは知らんが・・)
360324:2008/03/20(木) 14:22:51 ID:???
>>359
すみません、ここ数日色々試してとっかえひっかえしていたため、情報がごっちゃになってしまいまました。
>>324 の時はメモリ512Mだったのですが違うマシンでメモリ4Gにして試してみたのが>>353です。

OSはubuntu7.1 server、x86、32bit版です。
OS上では4Gを認識しております。
あれから512M、1G、2G、4Gを各上限とする設定を試してみたのですが全て同じメモリ使用量となってしまいます。

LinuxのMySQLも通常は起動時にkey_buffer_sizeで指定したメモリ分だけドカンと使用されるのでしょうか?
361359:2008/03/20(木) 15:13:57 ID:???
>>360
ウチの環境でやってみら、起動直後には確保されてない。
create tableしたり、create indexしたり、select 〜〜 とかやってると、徐々に増えていくようだ。

ちなみに、Win環境でも、おんなじような増え方するけど・・・。

環境1 CentOS/4.6 mysql/5.0.58 mem/256MB
環境2 WinXp-sp2 mysql/5.0.56 men/1GB

Linuxはtop及びfree、Winはタスクマネージャの「プロセス」->「メモリ使用量」の項目で。
362NAME IS NULL:2008/03/20(木) 16:21:56 ID:???
>>324
>>359
key_buffer_size=2Gでも、起動直後には確保されない。
もしくはmallocで確保はしているが、未使用なのでLinux kernelが実メモリをまだ割り当てていないのかもしれない。
使っているうちにインデックスがメモリに載るようになる。
その辺、最初からのせたかったらサイボウズラボの奥一穂さんの記事が参考になるかな。
http://labs.cybozu.co.jp/blog/kazuho/archives/2007/10/innodb_warmup.php
MySQL のウォームアップ (InnoDB編)
これはInnoDB用だが、インデックスのところはMyISAMでも使えるんじゃないだろうか。
363NAME IS NULL:2008/03/20(木) 16:23:13 ID:???
>>357
無理。トランザクションでやるしかない。
364NAME IS NULL:2008/03/20(木) 16:25:39 ID:???
>>359
> i386だと、ユーザー空間のメモリは2Gが上限で、MySQLマニュアルのどっかにあったと思うけど、
> key_buffer_size以外に、各種クライアントが使用する変数郡をすべて足し合わせた合計が
> 2Gを越えないように設定しないといけないハズ。

Linux kernel 2.6なら、3GBまでいける。
ちなみにPAE使っても、プロセス単体は3GBまでしか無理だと思われる。
365324:2008/03/20(木) 16:53:48 ID:???
>>361
>>362
>>364
みなさんレス本当に有り難う御座います。
頂いた情報を元にもう少し調べてみます。
因みに以前の環境はwindowsXP SP2 でMySQLは5.0.45-community-nt
搭載メモリは2Gでkey_buffeは1G、その他諸々設定で
起動時には1.6G程コミットチャージされていました。
366357:2008/03/20(木) 17:09:49 ID:???
>>358,363

そうですか・・・。マニュアルには出来そうな感じしたのですが、
ちょっと違うみたいですね。。処理を分けて対処します。
367NAME IS NULL:2008/03/20(木) 19:31:17 ID:???
>>366
機能は有るんだから構文が間違ってるんだろ?
http://dev.mysql.com/doc/refman/4.1/ja/update.html
そのままSQLを分離して上手く動く事は確認済み?
'2008-03-200'←こんなのを見ると大丈夫か?と思うわけだが。
368NAME IS NULL:2008/03/21(金) 05:57:31 ID:vtga5C69
レンタルサーバでMySQLを使ってるけど
なんだか新しいバージョンでは、デフォルトでUTC-8を使うようになってるらしく
DBをEUCで作成して、そこからcgiでアクセスする際に
予め、コネクションが完了した直後に
まず 'SET NAMES ujis' みたいなクエリーを発行しないと、文字化けしてしまう…
phpMyAdminからなんか設定して回避は出来ない よね…(ローカルのだったらMySQLの設定ファイル変更で回避出来るみたいだけど)
369NAME IS NULL:2008/03/21(金) 05:59:47 ID:???
×UTC-8
○UTF-8

あぁ…
370NAME IS NULL:2008/03/21(金) 06:23:41 ID:???
371NAME IS NULL:2008/03/21(金) 08:14:44 ID:pV5z+1bm
「mogura」って言うphp+mysqlアクセス解析スクリプトを自鯖に設置したんだけど、
setup.php呼び出してセットアップしようとしたら以下のエラー返ってきた。
調べたら「MySqlが起動していない」って事らしいんだけど起動はしてる。


【エラー内容】

Error Message: DB Error: connect failed

Debug: [nativecode=Can't connect to MySQL server on 'localhost' (10061)] ** mysql://root:パスワード@localhost/analysis

ユーザ名やパスワードも合ってるしデータベースも作成済み、phpもちゃんと設定したし。誰か原因分かる人居ない?
372NAME IS NULL:2008/03/21(金) 08:16:13 ID:???
あ、PHP5+Mysql5
サーバはAnhttpdでOSはWinVistaでそ。
環境はこれと言って問題ない筈なんだけど
373363:2008/03/21(金) 08:45:25 ID:???
>>367
複数テーブルのUPDATE出来るのか...。嘘教えてすまん >>357
374NAME IS NULL:2008/03/21(金) 09:15:49 ID:???
>>371
設定がヘボいと、ネットワーク越しにアクセスできても
ローカルでアクセスできないということはよくある。
375NAME IS NULL:2008/03/21(金) 09:39:11 ID:???
>>374
設定kwsk
これは「アクセスできない」って事で良いんだろうか。間違いなくmysqlは起動してるんだ。
376NAME IS NULL:2008/03/21(金) 10:03:06 ID:Qg2uDul9
>>352
どこの画面でやるのでしょうか?
377NAME IS NULL:2008/03/21(金) 11:52:08 ID:???
>>376
って、少しは努力しろよw
378NAME IS NULL:2008/03/21(金) 12:12:04 ID:???
>>377
知らないならレスしないで下さい。ウザイです。
379NAME IS NULL:2008/03/21(金) 15:01:06 ID:???
>>378
MySQL Administrator にあるだろ馬鹿
380NAME IS NULL:2008/03/21(金) 15:08:12 ID:???
>>379
知らないならレスしないで下さい。ウザイです。
381NAME IS NULL:2008/03/21(金) 15:08:44 ID:???
>>379
全く努力しない聞くだけチャンはほっとけ。
382NAME IS NULL:2008/03/21(金) 15:17:42 ID:???
>>381
知らないならレスしないで下さい。ウザイです。
383NAME IS NULL:2008/03/21(金) 15:33:05 ID:???
>>371
コンソールから
mysqladmin -u root -p xxx
でアクセスできるか?
384NAME IS NULL:2008/03/21(金) 15:34:14 ID:???
もとい。こっち。
mysql -u root -p xxx
385NAME IS NULL:2008/03/21(金) 15:41:50 ID:pV5z+1bm
MySQL Command Line Clientで良いんだよね?
メッセージとか出ないなww少し拍子抜けwww
386NAME IS NULL:2008/03/21(金) 15:44:44 ID:???
あ、ごめん間違い。

ちゃんとEnter Passwordになるね。
387NAME IS NULL:2008/03/21(金) 15:46:39 ID:???
って思ってたらなんぞこれー
パスワード入力したら

ERROR 1049 (42000): Unknown database 'ぱすわーど'

C:\Program Files\MySQL\MySQL Server 5.0>

あひー
388NAME IS NULL:2008/03/21(金) 15:52:38 ID:???
スマン、寝不足のせいかボケてんのか俺?

「xxx」はデータベース名だよね?
一応>>371の[analysis]にしたらちゃんと返って来たわ(Welcom to th MySQL monitor)
389NAME IS NULL:2008/03/21(金) 16:58:03 ID:???
>>388
起動はしてるんだな。じゃ、ポート番号が合ってないんじゃね?
390NAME IS NULL:2008/03/21(金) 17:06:03 ID:???
ここで質問していいのかわからないのですが、初心者用のスレがみつからなかったので、書き込ませていただきます。

MySQLが起動できないようです。
 MySQL 4.0.20
 Mac 10.3
ターミナルで
 sudo ./bin/mysqld_safe
としても、
Starting mysqld daemon with databases from /usr/local/mysql/data
mysql ended
とでて先へ進めません。
どうしたらよいか、どなたかよろしくお願いいたします。
391文字化けらった:2008/03/21(金) 17:22:46 ID:ZUe7Mqjc
申し訳ありませんが教えてください。

MS ACCESS (文字コードはおそらくSJIS)で作成したデータを、
mysql(文字コードはUTF8)のDBに移行するには、
どのようにすればよろしいでしょうか。
また、移行後、mysqlのDBのデータを
文字コードUTF8で、挿入、更新、削除を行いたいのですが、
どのようにすればよろしいでしょうか。

392NAME IS NULL:2008/03/21(金) 17:26:47 ID:???
>>390
データディレクトリのパーミッションとか色々ファクタがあるが、
エラーログファイル見た?
/usr/local/mysql/data に、xxxx.err とかで記録されているはず。

393NAME IS NULL:2008/03/21(金) 17:29:47 ID:???
>>391
CSVにして LOAD DATA INFILE
UTF-8でDBやテーブル作って文字コード合わせて queryしる。
394NAME IS NULL:2008/03/21(金) 17:32:13 ID:ZUe7Mqjc
>>393
ありがとうございます。
便利ツールなどはご存知ありませんでしょうか。
395NAME IS NULL:2008/03/21(金) 17:39:18 ID:???
396390:2008/03/21(金) 20:08:44 ID:???
>>392 ありがとうございます。
dateはアクセス不可だったのでパーミッションをかえて開いたところ、
たしかに[pc名].local.errというファイルがありました。
しかし、これをどうやって開ければいいかがわからず。。
とりあえずmiで開いてみたら、なにも書かれていませんでした。
他のアプリケータなどで開くのでしょうか。
ものすごく初歩的な質問で申し訳ありませんが
よろしくお願いいたします。
397NAME IS NULL:2008/03/21(金) 20:24:25 ID:???
>>396
datadir 内の全てのファイルは、mysqlが読み書き出来るようになってないとだめなんだが、
違ってるんならパーミッションを全部変えてみ。(通常 mysqlユーザ)
398NAME IS NULL:2008/03/21(金) 23:54:49 ID:???
>>396
> 他のアプリケータなどで開くのでしょうか。

ttp://ja.wikipedia.org/wiki/%E3%82%BF%E3%83%B3%E3%83%9D%E3%83%B3#.E5.BD.A2.E7.8A.B6
399NAME IS NULL:2008/03/22(土) 01:42:27 ID:???
>>389
そのPHPにポート指定する所無いなぁ…
ポート番号がセッティングウィザードのデフォルトのままだし…
400390:2008/03/22(土) 09:11:45 ID:???
>>398 アプリケーションですね。すみません。
>>397
ありがとうございます。
もともとは「オーナー:mysql」になっていました。
それだとfinderから開けなかったので、自分のユーザー名に変えてmiで開こうとしてみたら、
空だったのです。。
401NAME IS NULL:2008/03/23(日) 12:16:20 ID:+Imhz/jV
指定したデータベースだけcharsetを変える方法があれば教えてください
デフォルトのcharsetがutf-8なのですが、互換性の問題からeucjpで格納したいです
テーブルのコレーションをujis_japanese_ciに変えたのですが、
コレーションを変えてもデータ格納形式自体は変わってないみたいです
402NAME IS NULL:2008/03/23(日) 14:06:44 ID:???
      \ │ /
       / ̄\
     ─( ゚ ∀ ゚ )─
       \_/
      / │ \
    ○○○   ○○○
   ○,,・ω・○  ○・ω・,,○
    ○○○   ○○○ o
 o〜(,_uuノ    とuu_,)ノ

     FREE TIBET
403NAME IS NULL:2008/03/23(日) 22:28:01 ID:???
>>402
NO TIBET!
FREE CHINA!!

404NAME IS NULL:2008/03/23(日) 23:30:16 ID:???
>>401
一旦 utf8 で作ったテーブルの charset を eucjpms に変えても、カラムの charset は utf8 のまま。
手っ取り早いのはテーブルを作り直すこと。

もしかしたら、
alter table xxx convert to charset eucjpms;
でも出きるかもしれないけど、やったことないからわからん。
405NAME IS NULL:2008/03/24(月) 10:54:10 ID:???
>>400
データベースの初期化からやり直したらどう?
mysql_install_db --user=mysql
406NAME IS NULL:2008/03/24(月) 17:10:55 ID:???
mysqlhotcopy でデータベースコピーしたあと
mysqldの再起動以外でデータベース読み込ませる方法ないでしょうか。
常時起動させているものなので極力再起動は避けたいです。
407NAME IS NULL:2008/03/24(月) 18:30:46 ID:???
>>406
やったことは無いけど、mysqladmin refresh でどう?
408NAME IS NULL:2008/03/24(月) 20:08:29 ID:???
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'group
varchar(40),

こんなエラーメッセージが出ましたが、どういうことですか?
409NAME IS NULL:2008/03/24(月) 20:10:30 ID:???
SQL文も晒してね
410NAME IS NULL:2008/03/24(月) 21:41:31 ID:???
reate table entry(
mail varchar(15),
domain varchar(15),
is_a_group bool,
name varchar(20),
group varchar(40),
post varchar(20),
prefecture varchar(8),
station varchar(20),
adress varchar(40),
tel1 int(4),
tel2 int(4),
tel3 int(4),
birthday date,
industry varchar(40),
type varchar(40),
job varchar(20),
user varchar(20),
agree bool
);
411NAME IS NULL:2008/03/24(月) 21:53:10 ID:???
reate table entry(
'mail' varchar(15),
'domain' varchar(15),
'is_a_group' bool,
'name' varchar(20),
'group' varchar(40),
'post' varchar(20),
'prefecture' varchar(8),
'station' varchar(20),
'adress' varchar(40),
'tel1' int(4),
'tel2' int(4),
'tel3' int(4),
'birthday' date,
'industry' varchar(40),
'type' varchar(40),
'job' varchar(20),
'user' varchar(20),
'agree' bool
);
412NAME IS NULL:2008/03/24(月) 22:32:30 ID:???
ありがとうございます。
413NAME IS NULL:2008/03/25(火) 00:35:21 ID:VYc3xvqf
ファイルをキャッシュするのにmysqlを使おうと思います
ファイルパスをキーにしてインデックスを張ることになるかと思いますが
そうなると255文字程度の長さは必要になります
そんな長いインデックスは実用的なのでしょうか?
414NAME IS NULL:2008/03/25(火) 09:00:49 ID:???
そんなときは、数値でID付けてそのIDを結合したものにインデックス張るといいよ。
415390:2008/03/25(火) 10:29:09 ID:???
>>405
ありがとうございます。
「MySQL入門以前」という本を見ながらやっているのですが、
「データベースの初期化」というのは書いておらず、まだ一度もやっていません。
もうすこしよく勉強して、はじめからやり直してみようと思います。
ありがとうございました。
416NAME IS NULL:2008/03/25(火) 11:52:42 ID:???
ファイルパスからmd5とかでhash値出せばそれなりに実用になる
417NAME IS NULL:2008/03/25(火) 12:17:57 ID:rCxdFsPn
ファイルパスにmd5使うって超いいじゃん
バッティングすることなんて天文学的確率だろ
キャッシュ用途としては充分じゃね?
418NAME IS NULL:2008/03/25(火) 16:02:40 ID:???
Winnyがそうだから
419NAME IS NULL:2008/03/25(火) 17:11:37 ID:???
レコードの電話番号フィールドに「012-3456-7890」のような文字列が入ってるとして、
「01234567890」でもselect文で検索できるような方法はありますか?

concatのようなselect文中に挿入してレコードの文字列を置き換え(削除)つつ検索できたら
とても幸せなのですが、何かありますでしょうか?
420NAME IS NULL:2008/03/25(火) 17:50:42 ID:???
>>419
お幸せに・・
select * from hoge where REPLACE(tel,"-", "")="01234567890"
421NAME IS NULL:2008/03/25(火) 17:51:36 ID:???
>>419
フィールドが半角のみ確実なら正規表現 REGEXP 使えるよ
422419:2008/03/25(火) 20:55:10 ID:???
__________
   ||
   ||     ⊂⊃
   ||    ∧ ∧  >>420さん >>421さん
   ||    (  ⌒ ヽ ありがとう、幸せになれると思います
 ∧||∧   ∪  ノ
(  ⌒ ヽ 彡  V
 ∪  ノ  フワーリ
  ∪∪
423NAME IS NULL:2008/03/25(火) 23:29:33 ID:fL5GORe0
質問で申し訳ないのですが、こんなトリガを書きました。

create TRIGGER Ins_T101
BEFORE INSERT ON `T101_BizUnit`
FOR EACH ROW
BEGIN
DECLARE PrevVer integer DEFAULT 0;
DECLARE InsVer integer DEFAULT 0;
DECLARE PrevExpiration_Date DATE DEFAULT CURRENT_DATE;
DECLARE PrevRecords integer DEFAULT 0;
SELECT COUNT(`ID`) into PrevRecords from `T101_BizUnit` src WHERE src.`Category` = NEW.`Category` AND src.`ID` = NEW.`ID` limit 1;
SET InsVer = NEW.`Version`;
IF PrevRecords > 0 THEN
IF InsVer = 1 THEN
select max(`Version`) into PrevVer from `T101_BizUnit` where `Category` = NEW.`Category` and `ID` = NEW.`ID` limit 1;
SET NEW.`Version` = PrevVer + 1 ;
SET PrevExpiration_Date = NEW.Register_Date - 1;
END IF;
UPDATE `T101_BizUnit` SET `Expiration_Date` = PrevExpiration_Date
WHERE `Category` = NEW.`Category` and `ID` = NEW.`ID` AND `Version` = PrevVer;
END IF;
END;

で登録自体はうまくいったのですが、テーブルに↓こんな感じで、

 mysql> insert into T101_BizUnit set `Category` = 1, `ID` = 4, `Register_Date` = '2008-03-25';

Insertを試みると、↓のように怒られてしまいます。

 ERROR 1442 (HY000): Can't update table 'T101_BizUnit' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

基本的に、トリガというのは呼び出し元がいじっているテーブルそのものはいじれないのが
仕様なのでしょうか?
よろしかったらご意見お聞かせください。
424NAME IS NULL:2008/03/26(水) 12:35:25 ID:???
質問です。
データベース名にアンダーバーを入れるとなぜかたまにエラーになります。
たとえば「user_address」と言うデータベースを作るとなぜかエラーになる。
前後を区切りたいときは普通アンダーバーで区切ると思っていたのですがたまにエラーになるのでやめます。
普通はどの文字で区切るのかわかりません。
というかアンダーバー以外で区切る方法他にいい案ありますか?
425423:2008/03/26(水) 13:42:35 ID:???
>>423 自己解決しますた。
http://dev.mysql.com/doc/refman/5.1/ja/routine-restrictions.html

ストアド ファンクションまたはトリガ内では、その関数やトリガを実行したステートメントが
( 読み取り、または書込みに ) すでに使用しているテーブルを改変することはできない。

うぎゃー! 役に立たねージャン!
別テーブルに意図する操作内容を逃がして、定時トリガとかで反映させるくらいしか
アイディアが浮かばない。
どうしたらいいか、引き続きアイディア募集中!
426NAME IS NULL:2008/03/26(水) 15:22:47 ID:???
>>424
なんでエラーなるの?エラーの内容は?
427424:2008/03/26(水) 15:36:15 ID:???
>>426
エラーというかデータベースが作れなかった。
何度やっても作れなかったがアンダーバー外したら作れた。
428NAME IS NULL:2008/03/26(水) 16:39:55 ID:???
>>427
それは、mysqlというよりかはOSのファイルシステムの問題じゃね。
429424:2008/03/26(水) 19:32:52 ID:???
>>428
まあそういうことになります。
どこで聞くべきかわからなかったので
とりあえずmysqlでエラーがでたのでここで聞いてみました。
失礼しました。
430NAME IS NULL:2008/03/26(水) 20:55:26 ID:???
質問です。
CREATE TABLE でPARTITION(TABLESPACEとか)を指定しなかったら
テーブルデータはどこに格納されるのでしょうか?
431NAME IS NULL:2008/03/26(水) 22:21:19 ID:edZp6jWv
SELECT * FROM sales WHERE SUM(price)<'10000' GROUP BY sales_id

としたのですが、SQLが間違っているとエラーになります。
WHEREで検索する時、合計値を検索できないのでしょうか?
MySQLは4.1.20を使っています。
432NAME IS NULL:2008/03/26(水) 23:01:48 ID:???
>>431
having
433NAME IS NULL:2008/03/27(木) 11:11:21 ID:???
>>425
別テーブルに書き込んで、SELECTするときにJOINするとかどうよ?
434NAME IS NULL:2008/03/27(木) 13:02:47 ID:???
>>430
ん?何が知りたい?データディレクトリ?
435NAME IS NULL:2008/03/27(木) 13:22:21 ID:haXSw+o7
insertのときに、たとえ1文字であってもひらがなや漢字等を使うと

Data too long for column と出てしまうのはなぜですか?
436:2008/03/27(木) 13:56:58 ID:???
seqtable
---------------------------
id   seq   notes
a    1    ほげ1
a    2    ほげ2
a    3    ほげ3
b    1    ふが1
b    2    ふが2
b    3    ふが3
....
b   100    ふが100
---------------------------
IDごとにseqが振られているテーブルなんですが、
delete table seqtable WHERE id='b' and (seq=77||seq=97);
したあとに
ID:bの連番の欠番を低い順から抜き出すことはできますでしょうか?
(欠番がない場合は最大値+1を返してくれるようにしたいです。)
最大値は以下で取れるので
SELECT (MAX(seq)+1) As max FROM seqtable WHERE id='b';
>ID:bの連番の欠番を低い順
をお願いします。
437NAME IS NULL:2008/03/27(木) 14:09:24 ID:4i6HCVKz
438:2008/03/27(木) 14:53:09 ID:???
>437さん
ありがとうございます!
上のものでやりたいことは完璧にできました
439NAME IS NULL:2008/03/27(木) 15:14:54 ID:???
>>435
テーブルの定義見せて。
440NAME IS NULL:2008/03/27(木) 15:36:58 ID:haXSw+o7
create table railroads(
railroad varchar(20)
);
441NAME IS NULL:2008/03/27(木) 17:22:48 ID:???
>>440
入力した文字コードとテーブルの文字コードが合っていないに一票
442NAME IS NULL:2008/03/27(木) 18:48:04 ID:???
>>434
データベースのデータがOS上のどこに
保管されているのか知りたいです。

例えば、Oracleの場合、tablespaceの
容量を超えてデータを入れようとすると
エラーになります。(自動拡張OFFで)
その場合は、tablespaceに対して
物理的なデータファイルを追加して
領域拡張してやるのですが、
MySQLの場合は、あちこち調べても
その部分の説明がほとんどされて
おらず、不思議に思っています。

DISKの領域がゆるす限りいくらでもデータを登録できるのか?
そうだとしてもDISK上のどのパーティション(Windowsなら
どのドライブ)に存在するのか知っていないと最大のデータ
格納量も予測できず、不安ではないかと思うのですが。

443NAME IS NULL:2008/03/27(木) 19:11:34 ID:???
>>442
 どこに置かれるかはここに書いてるよ。
ttp://dev.mysql.com/doc/refman/5.1/ja/installation-layouts.html
「データベース」って書かれてるとこね。

 んで、実際のファイルは使っているストレージエンジンによります。
ttp://dev.mysql.com/doc/refman/5.1/ja/storage-engines.html
 普通はMyISAMかInnoDBなので、該当の部分を読んでください。
444NAME IS NULL:2008/03/27(木) 19:13:09 ID:???
>>442
つ http://dev.mysql.com/doc/refman/5.1/ja/storage-engines.html
ここらへんをよく読もう。

各table typeによって格納される場所は異なる。
445NAME IS NULL:2008/03/27(木) 19:14:00 ID:???
かぶった・・・orz
446NAME IS NULL:2008/03/27(木) 19:47:28 ID:???
>>442
っていうか、show variables like 'datadir';
447NAME IS NULL:2008/03/27(木) 21:07:09 ID:???
下記のようなSQLを書いた場合、
何故か id が 0 のものが抽出されてしまいます。
なぜでしょうか?
また、回避法はありますでしょうか?
※検索に利用する為、0と検索された場合はidが0のものが抽出されるようにしたいので
AND id <> 0
は使わないでやりたいです。

SELECT * FROM users WHERE id = 'うんこ'

448442:2008/03/27(木) 21:16:49 ID:???
ありがとうございます。
ある意味オラクルよりややこしいですね。
449NAME IS NULL:2008/03/27(木) 21:33:34 ID:???
>>447
usersのCREATE TABLEみせて
450NAME IS NULL:2008/03/27(木) 23:15:04 ID:???
>>449
こちらになります。

create table users (
index int(11) not null auto_increment,
id int(11) default '0' not null ,
pw varchar(40) not null ,
PRIMARY KEY (index)
);
451NAME IS NULL:2008/03/27(木) 23:40:57 ID:???
数値と文字列比べちゃダメでしょ。
452NAME IS NULL:2008/03/27(木) 23:45:22 ID:???
とりあえず、
SELECT cast('hoge' as signed);
を実行してみればいいと思うよ。
453NAME IS NULL:2008/03/27(木) 23:51:10 ID:???
その場をしのぎたいだけなら、idを文字列にキャストして比較すればいいよ。

SELECT * FROM users WHERE cast(id as char(11)) = 'うんこ';

でもこれだと、idにインデックスが張ってあっても
インデックスが使われないかもしれない。

というか、列にindexとidがあるのがそもそもおかしい。
普通、indexなんて名前付けずに、idにして、
idはnameとかuserとかにして、varcharとかcharにするのが普通じゃないかな。

CREATE TABLE Users (
id int(11) UNSIGNED NOT NULL AUTO_INCREMENT
, user_name char(11) NOT NULL DEFAULT '0'
, pw varchar(40) NOT NULL
, PRIMARY KEY (id)
);
454NAME IS NULL:2008/03/28(金) 10:38:32 ID:???
>>451
数値に対して文字列で比較しても、そもそも型自体が異なるので絶対合致しないもの、と思っておりました。
しかし何故か0のものが抽出されてしまった為、疑問に思いました。

>>452
実行してみました。0が返ってきました。
要するに、数値型のカラムに対して文字列で比較しようとすると、
mysql内部で自動的に cast('hoge' as signed) のような形に変換され、
その結果返ってきた0で抽出条件を掛けてしまう、という事でしょうか?

>>453
ありがとうございます。
期待した通りの結果が返ってきました。
>indexとidがあるのがそもそもおかしい
こちら当方も感じました(他の方が作ったものの修正をしています)。
あと、CREATE TABLE で主キーに UNSIGNED を付ける辺り、なるほどと思いました。
大変勉強になりました、ありがとうございます。
455NAME IS NULL:2008/03/28(金) 12:57:05 ID:???
MySQLのコマンドラインツール(mysql.exe)のログを取る方法はありませんか?
一度に大量のSQLスクリプトを実行するとログが流れてしまって、
エラーが出ていても気づかないということがあるんです。
456NAME IS NULL:2008/03/28(金) 13:01:59 ID:???
リダイレクトしてファイルに落とせば?
457NAME IS NULL:2008/03/28(金) 13:07:56 ID:???
>要するに、数値型のカラムに対して文字列で比較しようとすると、
>mysql内部で自動的に cast('hoge' as signed) のような形に変換され、
>その結果返ってきた0で抽出条件を掛けてしまう、という事でしょうか?

型が違うと、いちど失敗してから変換が発生するから、
明示的に変換するのに比べてオーバーヘッドが発生することだけ頭の片隅にでも置いておけば、
その理解で大体OK
458NAME IS NULL:2008/03/28(金) 13:52:28 ID:???
>>456
mysql -u username -p database < hoge.sql 1>>log.txt 2>>err.txt
でいけました!ありがとうございました。
459NAME IS NULL:2008/03/28(金) 14:14:57 ID:???
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ
あなたが使用している PHP, MySQL のライブラリ(libmysql.dll, libmysqlclient)
の標準キャラクターセットは何かご存じですか?

とありますが、標準キャラクターセットを調べる方法はあるのでしょうか?
460NAME IS NULL:2008/03/28(金) 15:19:09 ID:???
正規表現の置き換えはできますでしょうか?
イメージとしては以下のような感じです。

hogeテーブル(id=1)のnameに'A([0-9]+)'があった場合、
(SELECT rep FROM rep_table WHERE id=$1)
と置き換える
A1の場合だと(SELECT rep FROM rep_table WHERE id=A1)

よろしくお願いします。
461NAME IS NULL:2008/03/28(金) 15:40:00 ID:???
正規表現使いたいときも確かにあるが、
その例の場合単に第一正規化されてないだけじゃ?
idを分割すればそういうのも簡単に実現できるだろ。

SELECT rep FROM rep_table R
WHERE EXISTS (
SELECT * FROM hoge H WHERE H.kind = 'A' AND H.id = R.id)
AND R.kind = 'A';

みたいな。
462NAME IS NULL:2008/03/28(金) 15:56:00 ID:???
>>461さん
レスありがとうございます。

hoge.nameにはA1A3...見たいな感じでA([0-9]+)に複数マッチする可能性があります。(1つもマッチしない場合もあります)
それらすべてを(SELECT rep FROM rep_table WHERE id=$1)の形でとりたいのです。
現状ではプログラム側で、マッチした場合、そのつどSELECTで取得しています。
preg_replace_callback('/A([0-9]+)/','_preg_rep',$query);
function _preg_rep($matches) {
$sql =
"SELECT rep FROM rep_table WHERE id='$matches[1]'";
..
}
わかりづらい質問ですみませんがよろしくお願いします。
463NAME IS NULL:2008/03/28(金) 16:01:21 ID:???
意図が伝わらなかったかな。
要は、テーブル定義(というか設計)見直せば?ってこと。
正規表現を使わなくても、テーブルさえちゃんとしてれば
461で示したSQLで実現できるよね?

もし変更が不可能だとしても、
idから部分文字列を切り出すとかすれば十分実現可能。
464NAME IS NULL:2008/03/28(金) 16:04:00 ID:???
どうしても正規表現が使いたいなら、
http://dev.mysql.com/doc/refman/5.1/ja/regexp.html
ここを参考にすればいい。
でも、正規表現はそこそこ重い処理だから、
RDBMSでは極力使わないほうがいい。
465NAME IS NULL:2008/03/28(金) 17:53:51 ID:???
>>459
PHPでmysqldに接続して(mysqld側の起動オプションで、charset絡みを何も指定せずに)
show variables like '%char%' ;

で、clientとconnectのところ。
466NAME IS NULL:2008/03/28(金) 20:02:50 ID:t4tLBd+a
>>455
tee
467NAME IS NULL:2008/03/28(金) 22:31:08 ID:???
>>466
tee log.txt でコンソールに表示されるログがすべて記録されるんですね。ありがとうございます。
468NAME IS NULL:2008/03/29(土) 00:05:43 ID:???
% mysql hogehoge | tee log.txt
469NAME IS NULL:2008/03/29(土) 12:17:05 ID:???
% mysql hogehoge | tee -a log.txt
470NAME IS NULL:2008/03/29(土) 23:35:55 ID:3fgyplCn
471NAME IS NULL:2008/03/31(月) 05:40:50 ID:0Cxuk5my
同一テーブルをサブクエリでselectしてdelete出来ないので
テンポラリテーブルを使おうと思いますが、
テンポラリテーブルを削除する前に
何らかの形で操作側のプロセスが死んだ場合、
テンポラリテーブルだらけになるんじゃないかと思うのですが、
そのあたりはどうなってるのでしょうか?
472NAME IS NULL:2008/03/31(月) 11:24:38 ID:???
>>471
 接続が終了するとDROPされるから問題ないんじゃね?
ttp://dev.mysql.com/doc/refman/5.1/ja/create-table.html
473NAME IS NULL:2008/03/31(月) 22:16:20 ID:cXmxkjaY
RHEL 5 + MySQL5.0.26で構築してます。

disk容量の監視をしているのですが、
たまに / の下が圧迫されているようです。

どうやら
/tmpの下にキャッシュファイル?をMySQLが作っているようなのですが
どのタイミングでどのようなファイルを吐いているのかわかりません。

Order by などではテンポラリファイルをつくるようですが
前回 Diskが圧迫されたときには、Order byではなく
600万件ほどのテーブルから、uniqueデータのdeleteを繰り返していました。(対象は100万件程)

/tmpの下ってMySQLは何を吐きますか?
delete,updateをするときでも吐きますか?

474NAME IS NULL:2008/03/31(月) 22:57:45 ID:C7l3mT1c
環境の移行をしているのですが、
DB更新処理が既存と同じように動かず困っております。
#新環境の方がバージョンが古いのは気にしないで下さい。

○旧環境
 OS     - CentOS release 5
 perl    - 5.8.8
 DBI     - 1.52
 DBD::mysql - 4.005

○新環境
 OS     - Red Hat Enterprise Linux ES release 3
 perl    - 5.8.0
 DBI     - 1.52
 DBD::mysql - 2.1021


【現象】
 update で、更新先が更新元と同じ値だった場合
 (結局レコードの値は何も更新されなかった場合)、
 excute() の戻り値が、

 旧環境:1
 新環境:0E0

 となります。
 新環境でも 1 となるようにしたいのですが、
 何がマズいのでしょうか?
475NAME IS NULL:2008/04/01(火) 10:38:18 ID:???
>>473
show variables like 'tmpdir';
デフォルトは確か /tmp
作られるのは最適化されていないクエリを発行した場合
476NAME IS NULL:2008/04/01(火) 10:40:09 ID:???
>>475
mysqlというよりかは、DBIの問題じゃね?
477NAME IS NULL:2008/04/01(火) 10:40:47 ID:???
↑ おっと、>>474 へのレスだ
478NAME IS NULL:2008/04/01(火) 11:16:33 ID:???
>>474
DBD::mysqlのバージョンが違うからたぶんそれだな。
バージョン合わせるわけにはいかんの?
479NAME IS NULL:2008/04/01(火) 16:05:23 ID:cwXA9zGK
大変低レベルの質問で恐縮です。

web上のDBを触るのは初めてです。
レンタルサーバー上のMysqlのサービスを利用しようとしています。
接続方法に「アドレス=localhost  内部からの接続のみ許可 」 とあったのですが、
ファイルを操作するときと同じように
FTPツールでサーバーに接続すればいいのでしょうか?
クライアントにMysqlをダウンロードしておいて、
作ったテーブルをサーバーにアップロードするのでしょうか?
UP先は/public_html以下でいいのでしょうか

accessとOracleの使用経験があるのでSQL文は多少分かります。
今回はそれ以前の問題というか…webのことはさっぱりですみません

※こちらが相応しくなければ該当スレお教えください
480NAME IS NULL:2008/04/01(火) 16:12:32 ID:???
perl/php などのスクリプトに接続IDとパスを書いて
そのmysql、この場合はlocalhostみたいだから鯖にphp置いてそこから
接続にいく感じ
ftpはそういうスクリプトを上げるときにつかうけど
mysqlにつかうときはバックアップを取るときくらいか
481使ってるのはPython-SQLObject:2008/04/01(火) 19:10:39 ID:???
ここでいいのかよくわかりませんが、疑問・質問等のスレッドがなかったのでここに書きます。使っているのはMySQLなのでここに書きますがデーターベース全般についてです。

ユーザー
+名前
+役割(役割テーブル)
役割
+名前
+説明

のように作る場合に役割を別のテーブルとして定義するとします、これは理解できるのですが。


+住所
住所
+都道府県
+市町村とかそれ以外

のようにデーターベースでは分けるでしょうか?
Pythonのようなオブジェクト指向言語で組み立てれば「駅」オブジェクトは「住所」インスタンスを持つことになると思うので、このようなテーブル構造を思いついたのですが「駅」には固有の「住所」しか当てはまらないので別テーブルにする利点が無い。
「住所」なんてテーブルだと「家」というテーブルを作ったときにこのテーブルからも「住所」を参照することになって「住所」テーブルには「駅」「家」二つのテーブルの住所が記録されることになって美しくない。このような場合どのようにするのがベストでしょうか?
乱文・長文で失礼いたしました、気に触ったらスルーしてください。
482NAME IS NULL:2008/04/01(火) 19:48:45 ID:???
とりあえず、リレーショナル理論とか正規化について勉強すれば?
RDBMSとかSQLは、オブジェクト指向だとか、
手続き型だとかとは全然違うことがわかると思う。
483NAME IS NULL:2008/04/01(火) 20:36:08 ID:???
>482
ここまでオブジェクト指向とにていると、どうしてもそれで考えてしまいますorz
おっしゃるとおり、やはりデーターベースの考え方をしっかり学んだほうがいいようですねorz
ttp://www.oreilly.co.jp/books/database/
のものを読んでみようと思います。ありがとうございました。

484NAME IS NULL:2008/04/01(火) 22:15:46 ID:ZI2HJoUM
test BETWEEN '100' AND '1000'

で、100〜1000の間を抽出出来ますが、
「100〜1000以外」というNOTにしたい場合、どうすればいいのでしょうか?
485NAME IS NULL:2008/04/01(火) 22:21:36 ID:???
そこでなぜ引用符をつける。
486474:2008/04/01(火) 22:27:15 ID:GR+VJpfB
> 478

やっぱ、DBD::mysql 怪しいっすよね〜

実は新環境と同じ環境ってのが別にあって、
そいつは自分では触れない環境なのですが
そこではちゃんと動いてるらしく、
バージョンは変えたくないらしいのです。。
487NAME IS NULL:2008/04/01(火) 22:30:35 ID:???
SELECT hoge FROM Nanika WHERE test BETWEEN 100 AND 1000;

SELECT N1.hoge FROM Nanika N1
WHERE N1.test NOT IN (
SELECT N2.test FROM Nanika N2
WHERE 100 AND 1000
);

・・・ごめんなさい。

SELECT hoge FROM Nanika WHERE test < 100 OR test > 1000;
488484:2008/04/01(火) 22:47:34 ID:???
すみません、単純に
test NOT BETWEEN '100' AND '1000'

で、目的の結果を得ることが出来ました。お騒がせしました。
489NAME IS NULL:2008/04/02(水) 11:15:13 ID:???
>>486
ChangeLogのこれかな。

2003-06-22 Rudy Lippan <[email protected]> (2.9002)
* Changed the default behaviour of mysql_found_rows, so now
'UPDATE table set field=?' will return the number of rows matched
and not the number of rows physically changed. You can get the old
behaviour back by adding "mysql_found_rows=0" to the dsn passed
to connect.
490NAME IS NULL:2008/04/03(木) 16:45:12 ID:???
mysqlをインストールして適当にデータを入れてみたのですが、このデータをhtml上に呼び出すのってどうすればいいのでしょうか?
491NAME IS NULL:2008/04/03(木) 16:47:14 ID:???
これまた大味な
492490:2008/04/03(木) 16:54:27 ID:???
SQLでselectしてデータを取り出すというのは分かるのですが、それをどうやったらページ上に表示できるのかなぁと
javascriptみたいにhtml上に直接かけるわけでもないですし
493NAME IS NULL:2008/04/03(木) 17:03:12 ID:???
PHP、CGI、JSP、ASP、ASP.NET
さぁ、好きなのをお選び。
494NAME IS NULL:2008/04/03(木) 17:07:39 ID:???
>>493
MySQLからSQLでデータを取り出し、それからさらにPHPなどでHTMLに渡すという事でしょうか?
めんどくさいですね・・・
495490:2008/04/03(木) 17:13:13 ID:???
phpを使う場合はphpの中にSQLを書く事ができるんですね
496NAME IS NULL:2008/04/03(木) 17:14:52 ID:???
他でも一緒だよ
とりあえず、これ以上はスレ違い、というより板違いな気が
497NAME IS NULL:2008/04/03(木) 17:32:17 ID:???
それが面倒だと思うなら、Flashから直接SQLサーバと通信してください。
サーバ系は一切必要なくなりますよ。

http://asql.mooska.pl/
498NAME IS NULL:2008/04/03(木) 23:08:13 ID:???
SQLでデータベースからデータをselectした後、そこからさらにデータを絞り込む事はできますか?
具体的に言いますと、抜き出したデータの5行目〜10行目だけを選択するという感じなのですが、可能でしょうか?
499NAME IS NULL:2008/04/03(木) 23:20:23 ID:???
可能です
500NAME IS NULL:2008/04/03(木) 23:38:14 ID:???
>>499
それってSQLだけで可能ですか?
501NAME IS NULL:2008/04/04(金) 02:01:41 ID:???
WebProgの質問スレにいた、車のデータベースの人?
502NAME IS NULL:2008/04/04(金) 05:27:22 ID:???
>>500
可能です
503NAME IS NULL:2008/04/04(金) 05:44:09 ID:???
>>502
マジで?
504NAME IS NULL:2008/04/04(金) 06:26:05 ID:???
マジで
505NAME IS NULL:2008/04/04(金) 09:53:27 ID:???
ストアドプロシージャ
506NAME IS NULL:2008/04/04(金) 10:25:42 ID:???
ストアドプロシージャはSQLじゃないだろ。
というか、なんで5〜10行目が必要なんだ?
それは何かがおかしい気がする。
507NAME IS NULL:2008/04/04(金) 11:55:27 ID:???
>>502
ありがとうございます

>>501
えっと・・・何のことでしょうか?
508NAME IS NULL:2008/04/04(金) 12:57:49 ID:???
>>498
limit
509NAME IS NULL:2008/04/04(金) 13:42:21 ID:???
uniqueキーを削除したいのですがテーブル定義時に
UNIQUE KEY(`hoge_id`,`sequence`)
としてしまいました。
この場合どうやって削除すればいいのでしょうか?
510NAME IS NULL:2008/04/04(金) 14:27:21 ID:???
>>509
drop index
511NAME IS NULL:2008/04/04(金) 19:34:13 ID:???
>>493
PHPだってCGIだろ
知ったか乙
512NAME IS NULL:2008/04/04(金) 20:13:39 ID:???
PHPとCGIは区別するべき
知ったかぶりはどっちだか
513NAME IS NULL:2008/04/04(金) 21:04:28 ID:???
PHPはSSIだな
514486:2008/04/05(土) 10:35:42 ID:C1KIQxkZ
> 489

それだ!!!
ありがとうございます。

きっと新環境と同じ環境の DBD::mysql は、
2.9002以降が入ってるんだろうな〜
確認してみます。

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


515NAME IS NULL:2008/04/05(土) 15:23:56 ID:gepjJM1m
質問させて下さい。
バックアップについての質問なのですが、テンプレで紹介して頂いているphpMyBackupProを使用してみました。

MySQL5.0.45、phpMyBackupPro2.1、phpMyAdmin2.10.3、PHP5
を使用しています。

phpMyBackupProを使ったデータのバックアップ時に大きいDB(300MB程)のバックアップができません。
数MB程のDBなら何事もなくバックアップできています。
また、何も設定を変えずともphpMyAdminであれば全てのDBをバックアップできることを確認しています。

この状況で、phpMyBackupProの拡張設定:PHP 時間制限 (秒)を600秒にし、
php.iniでmax_execution_time = 600、max_input_time = 600にし、
apacheを再起動したのですが、phpMyBackupProの挙動はかわりありません。

純粋なSQLの質問ではないのでどこに質問したらいいのか迷ったのですが
総合と言うことで質問させて頂きました。

色々調べてみたのですが私には検討がつかず困っています。
お力添え頂けないでしょうか。
宜しくお願い致します。
516515:2008/04/05(土) 16:03:48 ID:???
すみません、php.iniをmemory_limit = 512Mとすることで解決できました。
自己レスですが失礼致します。
517NAME IS NULL:2008/04/06(日) 07:05:21 ID:UtTMq1DC
教えて頂けますでしょうか。
MySQLのSQL文チューニングに関してもっと知りたいのですが
EXPLAINの見方や、primary、index、unique、複合index等に詳しいサイト、もしくはオススメの本などありますでしょうか?
やっと時間ができたので調べたいなと思っています。
518NAME IS NULL:2008/04/06(日) 09:57:59 ID:???
教えてください
MySQL始めようと思っています
とりあえず趣味程度で勉強も兼ねて
フォームとかレポートとかを作るのに必要なものは何ですか?
お勧めは何ですか?
当方はAccessしか使ったことなく、そういった知識がありません。
519NAME IS NULL:2008/04/06(日) 12:00:06 ID:???
>518
フォームもレポートもSQLに関係ない気がするんだけど
それは僕が初心者だからなのでしょうか?

とりあえず使用目的と環境とフロントエンド次第じゃねーの?
520NAME IS NULL:2008/04/06(日) 12:03:00 ID:???
関係あるかどうかも解らないアフォウです
MySQLのデータをフォームで入出力更新したり、レポートで集計してプリントしたりするためには
何を用意すれば良いですか?
521NAME IS NULL:2008/04/06(日) 12:51:24 ID:???
フォームを作ったり、データを集計して出力するプログラム。
522NAME IS NULL:2008/04/06(日) 14:34:18 ID:???
お勧めは何ですか?
523NAME IS NULL:2008/04/06(日) 14:39:38 ID:???
用途と環境と貴方の知識による。
524NAME IS NULL:2008/04/06(日) 15:36:28 ID:???
フロントエンドって何ですか?
用途:個人事業で使うデータを扱いたいんだけど、1万件前後、あと簡単な計処理と、3人いる愛人とのプレイデータ管理もしたいです
環境:年々、温暖化が進行してる気がします
知識:Accessを使いこなせる程度と英検1級
525NAME IS NULL:2008/04/06(日) 19:14:05 ID:???
以前から終わってる ってことだよ
526NAME IS NULL:2008/04/06(日) 20:14:26 ID:???
インデックスにはユニークID、PRIMARY KEY、インデックスなどがありますが、これって全部同じものですか?
527524:2008/04/06(日) 21:25:16 ID:???
教えてください<m(__)m>
528NAME IS NULL:2008/04/07(月) 01:40:05 ID:???
>>526
ちがうよ
529NAME IS NULL:2008/04/07(月) 07:22:36 ID:???
>527
質問者本人以外に答える必要はないと思うんだ
530NAME IS NULL:2008/04/07(月) 15:35:41 ID:???
>>528
どのように違うのでしょうか?
531NAME IS NULL:2008/04/07(月) 15:40:35 ID:???
>>530
用途も意味も何もかも全部ちがうよ
532NAME IS NULL:2008/04/08(火) 00:15:31 ID:???
人生の選択も含めて全部ちがう
533NAME IS NULL:2008/04/09(水) 11:06:13 ID:rr+k5v3w
MySQLのストアドプロシージャで質問です。

引数を可変にしたいんですが、どうしたらよいでしょうか?

call sp ( 123, 445);
でも
call sp (123);
でも動作する。
445が指定されていれば内部で取得できる。
ということがしたいです。
534NAME IS NULL:2008/04/09(水) 14:19:54 ID:???
535NAME IS NULL:2008/04/09(水) 19:26:18 ID:???
>>533
なんでそんなことしたいん?
NULLでも渡しておけば?
536NAME IS NULL:2008/04/10(木) 00:35:24 ID:9S23/fv1
MySQL5.1でlock tablesに関する質問なのですが、
lock tables
単一テーブルに対するsql文
unlock tables
とすると、TOPコマンドでのロードアベレージが2前後から一気に30前後になってしました。
ただ、サイトの表示自体は早くなっている感があります。
この場合、ディスクが足を引っ張っているのかデッドロックになっているのか
そもそもロードアベレージは下がると期待していたのですがとまどっています。
同様事例の参考資料が見つからず途方に暮れております。
宜しければアドバイスお願いできないでしょうか。お願いします。
537NAME IS NULL:2008/04/10(木) 09:50:41 ID:???
すみません、質問させてください。
MySQL5.0を使用しているマシンで、ほぼ毎日午前3時前後に下記のようなエラーログが出力されます。
特に午前3時と指定して実行している処理はないと思うのですが、
下記はどのような場合に出力されるエラーなのでしょうか?

080407 3:15:28 InnoDB: ERROR: the age of the last checkpoint is 188694697,
InnoDB: which exceeds the log group capacity 156653568.
InnoDB: If you are using big BLOB or TEXT rows, you must set the
InnoDB: combined size of log files at least 10 times bigger than the
InnoDB: largest such row.
080408 3:11:29 InnoDB: ERROR: the age of the last checkpoint is 156654082,
InnoDB: which exceeds the log group capacity 156653568.
InnoDB: If you are using big BLOB or TEXT rows, you must set the
InnoDB: combined size of log files at least 10 times bigger than the
InnoDB: largest such row.
538533:2008/04/10(木) 11:21:47 ID:zXvXwiNf
>535
デバッグフラグを立てたいのさ。
通常は使用しないから引数を意識させたくない。
539NAME IS NULL:2008/04/10(木) 13:30:20 ID:???
hoge_tbl
--------------------
id   time
1   21:00
1   22:00
1   21:00
1   23:00
1   12:00
1   21:00
1   21:00
...
--------------------
こんなログを保存しているテーブルがあるとして
時間ごとのアクセス数を取得したいのですがどのような書き方があるでしょうか?

とり方としては
-------------------------
id   time   cnt
1     01   52
1     02   41
1     03   12
1     04   9
1     05   4
...
-------------------------
もしくは
------------------------------
id  01  02  03  04 .....
1   52  41  12   9
------------------------------
どちらでもかまいません。(可能であれば後者)

以下は自分なりに書いてみたものです。

SELECT
DISTINCT(id),
(SELECT COUNT(*) FROM hoge_tbl WHERE id=a.id and DATE_FORMAT(time,'%H') = '01') As `01`,
(SELECT COUNT(*) FROM hoge_tbl WHERE id=a.id and DATE_FORMAT(time,'%H') = '02') As `02`,
....
FROM hoge_tbl a
WHERE id=1;

一応、自分で書いたSQL文でもできましたがidが複数あり処理に時間がかかりすぎるため熟練者さまのご意見を聞ければと思います。
長文になりましてすみませんがよろしくお願いいたします。
540NAME IS NULL:2008/04/10(木) 14:20:32 ID:???
>>539
SELECT DATE_FORMAT(time,'%H') as TH
FROM hoge_tbl a
WHERE id=1
GROUP BY TH
ORDER BY TH

これでtimeにインデックスがあっても多分効くはずです。
(DATE_FORMAT()書式は未検証)
541540:2008/04/10(木) 14:22:01 ID:???
誤> SELECT DATE_FORMAT(time,'%H') as TH
修正> SELECT DATE_FORMAT(time,'%H') as TH, COUNT(*)
542NAME IS NULL:2008/04/10(木) 14:46:03 ID:???
>>540
ありがとうございます!
こちらの環境で試してみたところ3倍以上の高速化を実現できました!

本当にありがとうございます!
543NAME IS NULL:2008/04/10(木) 15:12:05 ID:9ckzVTRD
mysqlで別のdbを、mysqladmin -u root -p hogeしたあとに、

select * from users limit 1;

すると、
ERROR 1033 (HY000): Incorrect information in file: './gege/users.frm'

となったのですが、復旧するにはどのようにすればよいでしょう。
よろしくお願いいたします。
544NAME IS NULL:2008/04/10(木) 15:24:24 ID:???
MySQLにかぎったことではないのですが、
列や制約を追加したり消したりするALTERについてなんですが、
これって一昔前はありませんでした?
40代の元技術者の方に話を聞いたところ、
テーブルの設計は後から変更できないので慎重にやらないといけない。
というようなことを聞いたんですが。
545NAME IS NULL:2008/04/10(木) 15:57:09 ID:???
>>544
設計の規約の上での話じゃないの?
機能的には可能でも、「できるんだからしちゃっておk」ってスタンスで居ると
後々収集が付かなくなるという
546NAME IS NULL:2008/04/10(木) 16:48:02 ID:???
こんなことってできますか?

WHERE句に当てはまる
powerの合計値と、すべてのmessageを連結してさせたものを取得したいです。

power   message
 101   五月雨
 32    孔雀
 43    春菊
  4    春雨

こんなテーブルだったら
power  message
 180   春雨孔雀春菊五月雨

こんな形で取り出したいです。
連結させる順序は指定できなくてもいいです。
547544:2008/04/10(木) 16:54:48 ID:???
>>545
そういうことでしたか。言葉の意味を取り違えていたようですね。
レスどうもありがとうございます。
548NAME IS NULL:2008/04/10(木) 21:44:38 ID:???
目的:バックアップスケジュールを設定したい
OS:XP SP2
MySQL 5.0
password storage methodをObscuredにした
Write Log File for Scheduled Backupsにチェックを入れた

Administrator1.2.12のバックアップで、
schedule this backup projectをチェックするとAttentionが出てしまいます。
オプションのconnectionsを設定すればいいと思うのですが、
その設定を教えてください。
549NAME IS NULL:2008/04/10(木) 22:28:58 ID:???
>>546
select sum(power),group_concat(message separator '') from hoge
550NAME IS NULL:2008/04/11(金) 00:00:40 ID:13YgqV5Q
バイナリログってバックアップ対象ですか?
巨大だから外したいんですが・・
551NAME IS NULL:2008/04/11(金) 11:23:51 ID:???
>>550
っていうか不要なBINログは定期的に消す。オレのメモを嫁。
◆mysql masterのレプリケーション バイナリログの削除方法
・スレーブ側で現在参照中のバイナリログを参照する
show slave status;
・マスタ側でそのファイル名を指定してその番号以前のファイルを削除する
※指定したファイルは残るらしい
show master logs;
purge master logs to 'xxx-bin.nnn';
552NAME IS NULL:2008/04/11(金) 15:30:05 ID:???
ありがとうございました
レプリケーションしてないのですが、何となくバイナリログ取ってました
レプリケーションしない場合はとる必要ないですよね
553NAME IS NULL:2008/04/11(金) 16:13:58 ID:???
カラムの型をBIGINT unsigned にしたのですが、最大値が2147483647までしか入りません。
create show tableでもBIGINT unsigned に変わっていることは確認できました。
何が原因なのでしょうか?
554NAME IS NULL:2008/04/11(金) 16:50:22 ID:???
MyISAMしか使っていないはずなのに、
datadirの中にibdata1があります。
なんですこれは?
555NAME IS NULL:2008/04/12(土) 02:06:27 ID:???
>>551
--expire_logs_days も良いかも。
556NAME IS NULL:2008/04/12(土) 03:14:08 ID:???
質問させて下さい。
クエリを分割するにはどうのようにすれば良いでしょうか?
MySQL5.0.45でinnodbを使用しているのですが、サブクエリーを使うような長くて少し複雑なクエリを発行しています。
EXPLAINで確認したところ、上手くindexを使ってくれません。
1クエリー1テーブル1インデックスの制約にひっかかってしまいます。

myisamならロックテーブルをかけて
ttp://d.hatena.ne.jp/kenji-u/20071102/p1
のようにすれば一つの処理として完結させられると思うのですが
innodbでのやり方がわかりません。
色々調べてみたのですがそのような記述を見つけることができませんでした。
アドバイス頂けないでしょうか。
宜しくお願い致します。
557NAME IS NULL:2008/04/12(土) 08:06:58 ID:+PKJZE04
質問です
MyQSL Query Browser 1.2.12
を使おうと思ってるんですが
接続時にエラーが出ます
Could not connr\ect totha specified instance
MySQL Error Number 2003
Cant connect to MySQL server on localhost [10061]

if you want rocheck the network connection please click the Ping button.

誰か対処法をお願いします
558554 :2008/04/12(土) 08:48:12 ID:???
削除しても起動時に作成されます
アイドリング的に、前もって作成されるみたいですね
559NAME IS NULL:2008/04/12(土) 12:35:30 ID:???
>>557

そのまんまだよ。

(1)ネットワークを確認
(2)MySQLサーバの起動確認
560NAME IS NULL:2008/04/12(土) 16:06:33 ID:k8Kacv++
すみません、質問させてください
delete文がうまくいったかどうか、確認する方法ないですか?
select の場合、$rs = select文実行 などとして$rsの中身を見て
確認してるんですが、deleteの場合はどうしたらいいんでしょう?
どなたかアドバイスお願いします
561NAME IS NULL:2008/04/12(土) 20:19:02 ID:AD6GVloA
phpMyAdmin
562NAME IS NULL:2008/04/12(土) 21:19:46 ID:???
>>560
プログラミング言語は何?
563NAME IS NULL:2008/04/12(土) 23:17:39 ID:IYNGfhn4
myisamchkのテストをしたいのですが
うまく壊れたファイルがありません
インデックスを壊すにはどうしたらいいですか?
564NAME IS NULL:2008/04/13(日) 00:33:22 ID:4TX2K7e+
稼働中のdb引っ張ってきたらうまいこと壊れてましたが
テーブルのメンテナンスってどうしてます?
チェック→引っかかったら、修復前のファイルを保存
→修復→修復できたら修復前のファイルを削除・
修復できなかったら管理者にメール
こんな感じですか?
565560:2008/04/13(日) 03:31:23 ID:t+wHgJcY
>>562
ごめんなさい 書き忘れてました
php5で作っています
566NAME IS NULL:2008/04/13(日) 08:42:41 ID:???
>>565
普通に mysql_query() の戻り値を調べるのじゃダメなの?
567NAME IS NULL:2008/04/13(日) 15:27:41 ID:???
サーバを ./configure --prefix=/usr/local/mysql --with-charset=ujis --with-extra-charsets=all で
make

phpMyAdminでみるとメインページに UTF−8

MySQL の文字セット: UTF-8 Unicode (utf8) ←どこに依存ですか?
568NAME IS NULL:2008/04/13(日) 23:00:38 ID:i44zPYKS
http://dev.mysql.com/doc/refman/4.1/ja/backup.html
ここを見るとバックアップ前にFLUSH TABLESをしろと書いていますが
/etc/init.d/mysql stop
でサーバを止めた時は、
自動的にFLUSH TABLESも行われていると考えていいのでしょうか?
569NAME IS NULL:2008/04/14(月) 02:22:05 ID:???
>>568
考えていい。
570NAME IS NULL:2008/04/14(月) 03:52:51 ID:???
>>1に紹介されているサイトをささっと見てきたんだけど
実際の画面とか見たかったんだけどどこにあるのかわかんなかった
初心者でも直感的に使えそうなの?
マウス操作でドロップしてデータを入力していくとか
違った文字数の入力も可能なのかな?
1行の構成が日本語で約100文字と約300文字の2種類あり
この2種類で1ページとして2万ページくらい自動入力したい
初心者なんですが直感だけでいけますか?
571NAME IS NULL:2008/04/14(月) 18:56:36 ID:???
下記の様なテーブルがあったとします。
(即席で作ったリストなので細かい事は気にしないで下さいませ)

no type
-----------
1  friend
1  friend
1  family
2  family
2  friend
3  friend
3  friend
3  family
3  family

この時、カラム[no]でGROUP BYを掛けてしまうと、

1 friend
2 family
3 friend

という風になってしまいます。
これをそれぞれのtypeごとにGROUP BYを掛けて下記のように抽出したいです。

1 friend
1 family
2 family
2 friend
3 friend
3 family

どのようなSQLを書けばこのように抽出されますでしょうか?
どうかご教授の程宜しくお願い致します。
572NAME IS NULL:2008/04/14(月) 19:03:28 ID:???
>>571
distinct
573NAME IS NULL:2008/04/14(月) 19:09:39 ID:???
DISTINCTも同じ重複削除の為、真ん中のと同じ結果になってしまいます
574NAME IS NULL:2008/04/14(月) 19:18:02 ID:???
重複してないじゃん。真ん中の結果になるわけなし。 なるならSQLの誤り。
575NAME IS NULL:2008/04/14(月) 19:32:40 ID:???
SELECT DISTINCT(no) FROM hoge
というSQLではない?
576NAME IS NULL:2008/04/14(月) 19:58:06 ID:???
select distinct no,type from hoge
577NAME IS NULL:2008/04/14(月) 20:12:08 ID:???
うわ、こんな書き方できたなんて。。。
SELECT DISTINCT(no), DISTINCT(type) FROM hoge
とかやって、エラー出るからDISTINCTって一つしか指定できないもんだと思ってた。
ありがとうございます!
578NAME IS NULL:2008/04/14(月) 21:42:25 ID:???
>DISTINCTも同じ重複削除の為
ってあたり危ないな。
GROUP BYは重複削除のためにあると思ってないか?
579NAME IS NULL:2008/04/14(月) 22:06:24 ID:???
GROUP BYは集計ですよね、まとめた後にCOUNTとかSUMとか。
でも、DISTINCTもそういう計算が無いバージョンのGROUP BYと思ってた。
580NAME IS NULL:2008/04/15(火) 01:12:39 ID:???
>>577
つうかdistinctで括弧使う変な書き方初めてみたわ
581NAME IS NULL:2008/04/15(火) 08:42:18 ID:???
>>577
その書き方俺も初めて見た
関数じゃないのに勘違いしてないか?
582NAME IS NULL:2008/04/15(火) 12:38:16 ID:???
下のようなテーブルがあったとして
IDごとにアクセス端末がいくつあるか(今日の)カウントした値をとりたいのですがどんな方法がいいでしょうか?

table_log
---------------------------
id   ua     time
1   a  2008-04-07
2   s  2008-04-07
1   i  2008-04-07
1   i  2008-04-07
2   a  2008-04-07
4   i  2008-04-07
1   s  2008-04-07
1   i  2008-04-07
1   i  2008-04-06
.................

SELECT
 (SELECT COUNT(*) FROM table_log WHERE id=a.id and ua='i' and time="2008-04-07") As 'i',
 (SELECT COUNT(*) FROM table_log WHERE id=a.id and ua='i' and time="2008-04-07") As 'a',
 (SELECT COUNT(*) FROM table_log WHERE id=a.id and ua='i' and time="2008-04-07") As 's'
 (SELECT COUNT(*) FROM table_log WHERE id=a.id and time="2008-04-07") As 'all'
FROM table_log a
WHERE id = 1;

こんな感じでとっているのですが1つのIDに12秒くらいかかります。
583NAME IS NULL:2008/04/15(火) 12:56:16 ID:???
select id,ua,count(*) from table_log where time="2008-04-07" group by id,ua order by id,ua;
584NAME IS NULL:2008/04/15(火) 17:28:33 ID:WrDaLq3k
mysqldumpでリモート接続先のdumpを取得しています。
今回、新たにstored procedureを導入しました。
dumpデータにプロシージャも含めるめ、-Rをつけて実行しましたが
リモート接続ではプロシージャのdumpがとられていません。

たぶん、権限の問題ではないかと思いますが、プロシージャのdumpに
必要な権限とはなんでしょうか?

ちなみに現在は、
SELECT,
LOCK TABLES,
EXECUTE,
CREATE ROUTINE,
ALTER ROUTINE ON
を与えています。
585NAME IS NULL:2008/04/16(水) 01:34:54 ID:???
カラムの型をBIGINT unsigned にしたのですが、最大値が2147483647までしか入りません。
create show tableでもBIGINT unsigned に変わっていることは確認できました。
何が原因なのでしょうか?
586NAME IS NULL:2008/04/16(水) 10:56:03 ID:???
>>585
クライアントは何使ってるの? それがintにしか対応してないって可能性はない?
587584:2008/04/16(水) 11:47:23 ID:???
どうやら権限の問題ではなく、定義者の問題のよう。
SPを作成したユーザ=definerがdumpできるようです。
なのでリモート接続するユーザを明示的にdefinerしてやれば
dumpできました。
ただ、SPを実行する際にdefinerの権限で動作する(sudo definerみたいなもん?)
ようなのでSP内でtemporaryテーブルや、insert, deleteを行っていたら
その権限がリモート接続するユーザに対して必要になる。
dumpだけの最小限の権限を考えていたのでちょっと困った。
588584:2008/04/16(水) 12:09:44 ID:???
もっと調べてみると
SQL SECURYTY でdefiner, invokerが指定で着るみたい。
つまり、定義者はリモート接続するユーザで
セキュリティ的には実行者とすることで
解決できそうな予感。
589NAME IS NULL:2008/04/16(水) 14:02:02 ID:Li0u4etG
質問なのですが、MySQL5のレプリケーション、マスタ-スレーブ構成時における
マスタ-スレーブ間のデータの同期間隔はどれくらいなのでしょうか?
調べていく内に仕組み等はわかるようになったのですが、同期間隔に関して詳しく書いている資料を発見できませんでした。
スレーブ側はクエリーログを受け取って順次実行していくので、同期間隔はハード性能に依存するところが大きいのでしょうか?
この変の挙動についてお詳しい方がおられましたら是非教えて頂けませんでしょうか。
590NAME IS NULL:2008/04/16(水) 19:33:33 ID:QEaTF0YF
データベースで
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| kokyaku |
| mysql |
+--------------------+
3 rows in set (0.00 sec)

mysql> use kokyaku
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> insert into address (id,name,zip,city,addr,tel,date) values(1,'山田花子','100-0000','東京都千代田区','千代田1-1-1',012-345-6789',now()) ;
と入れたんですが、ちゃんと入力が完了しません。
Query OKがでないんですが、どうしたらいいですか?
あとReading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

これってなに?
591NAME IS NULL:2008/04/16(水) 20:25:14 ID:???
>>590
電話番号カラムの記述をよく見てみ
592NAME IS NULL:2008/04/16(水) 20:28:36 ID:???
>>589
気にしたことないけど、ネットワーク速度よりかはスレーブ側の更新クエリの
速度に引っ張られるんじゃないかな。
593NAME IS NULL:2008/04/16(水) 20:34:04 ID:???
>>589
何を使ってるかしらぬが、処理側の変数がオーバーフローしてるんじゃね?
594NAME IS NULL:2008/04/16(水) 20:35:15 ID:???
↑ 585 へのレスだった。
595NAME IS NULL:2008/04/16(水) 21:31:19 ID:???
ttp://mirror.provenscaling.com/mysql/enterprise/source/5.0/

READMEにデュアルライセンスって書いてあるのですが
購入しないとインストールできない仕組みになっているのですか?
596NAME IS NULL:2008/04/16(水) 22:54:41 ID:???
すいません、意味が分からないので質問変えます

公式では5.0.51aまでしかDLできないので、URLにある5.0.58が非常に気になります。
インストールして使用することに問題はないのでしょうか?
597NAME IS NULL:2008/04/17(木) 00:05:56 ID:???
>>596
>>595のリンク先はEnterpriseで有償
Community Serverは無償
598NAME IS NULL:2008/04/17(木) 03:47:31 ID:???
MySQL Conference & Expo 2008からカキコ
599590です。:2008/04/17(木) 08:37:37 ID:xQuLnTlv
insert into address (id,name,zip,city,addr,tel,date) values (1,'山田花子','100-0000','東京都千代田区',' 千代田1-1-1','012-345-6789',now())
;
これでいくかな?
600NAME IS NULL:2008/04/17(木) 08:44:00 ID:k/clcQ5/
MySQL5.0+php5でシステムを組んでいるのですが、
Out of memory (Needed xxxxxx bytes)
のエラーが頻繁に出て対処に困っています。

メモリーは2GBで、アクセス数は1時間で4000PV位です。
メモリーはサーバーの仕様でこれ以上増やせないのですが、
my.cfのどこかの設定値を変更して対応することは可能でしょうか?
宜しくお願いします。
601NAME IS NULL:2008/04/17(木) 09:41:28 ID:???
>>600
エラーを吐いてるのは mysqld?クライアント側?
602NAME IS NULL:2008/04/17(木) 09:52:46 ID:???
>>600
多分php.iniのココ。
memory_limit = **M
603NAME IS NULL:2008/04/17(木) 09:54:21 ID:k/clcQ5/
>>601
phpから、DBにコネクションを確立した後、SQL文を実行した際に発生しています。
ちなみに、このエラーの発生頻度は約30回/日です。PVは6万PV/日、実行SQL数80万SQL/日です。

宜しくお願いします。
604Zeno ◆5nZQbNmQPs :2008/04/17(木) 16:22:49 ID:dYEsVLTe

Sun Microsystems が MySQL のソースコードをクローズするらしいな。
つまり、 MySQL がオープンソースではなくなるということだ。
買収した会社が Sun 故にこうなることは予想できていたが、その実行が予想より早くなりそうだ。
Sun は本気で死ね。

Sun to Begin Close Sourcing MySQL
ttp://developers.slashdot.org/article.pl?sid=08/04/16/2337224&from=rss

605NAME IS NULL:2008/04/17(木) 16:49:44 ID:???
>>603
大量のクエリ結果を配列にぶち込んでるからじゃね?
606NAME IS NULL:2008/04/17(木) 19:02:36 ID:wr9HmqHR
初心者です。
しょうもない質問ですが、みんな結合テーブルを使ったselectとかバキバキ
利用してるんでしょうか?
http://www.techscore.com/tech/sql/06_02.html を見て今勉強してます
これは、結果的にどういうメリットがあるんでしょう?
複数回クエリする必要がなくなる→負荷とエラーの発生率が下がる ということですか?
607NAME IS NULL:2008/04/17(木) 19:54:13 ID:???
example.jp からのみ許可するMysqlユーザを作成して
example.jp からアクセスしてみたら、

Host 'example.com' is not allowed to connect to this MySQL server

ってエラーが出た。
example.com ってどこから読んでるの?
OSはLinuxって
hostname しても example.jp ってちゃんと表示されるんだけど。
逆引きしてもちゃんとexample.jp になるし。
どなたかヘルプミー
608NAME IS NULL:2008/04/17(木) 20:07:21 ID:???
> example.jp からのみ許可するMysqlユーザを作成して

ここの作業間違ったんだろうが。
609NAME IS NULL:2008/04/17(木) 20:07:45 ID:???
>>606
正規化を勉強しなさい。
610NAME IS NULL:2008/04/17(木) 20:10:22 ID:???
>>608
グローバルIPに対し接続を許可するつもりかい?
611NAME IS NULL:2008/04/17(木) 20:40:54 ID:???
>>607

そのうちわかるよw

localhostとかいろいろトライ。
612NAME IS NULL:2008/04/17(木) 21:04:35 ID:???
>>604
Mickosがはっきり否定してるぞ
http://developers.slashdot.org/comments.pl?sid=525246&cid=23098626

It is not a quesiton of close sourcing any existing code,
nor anything in the core server.
Everything we have released under GPL continues to be under GPL,
and the core server will always be under GPL (or some other FOSS licence).
613606:2008/04/17(木) 21:36:42 ID:wr9HmqHR
>>609
ありがとうございます。
正規化は勉強しているつもりなんですが、気になったので上記の質問をさせてもらいました。
引き続いての質問で恐縮ですが、

SELECT 受注表.納品日,商品表.商品名
FROM 受注表,商品表
WHERE 受注表.納品日 = '20010401'
AND 受注表.商品コード = 商品表.商品コード ;

とあるとき、受注表テーブルまたは商品表テーブルのどちらかがカラの時は
何も結果が返ってこないと考えていいのでしょうか?
かりに商品表テーブルがカラの時、「受注表.納品日」だけでも
戻ってくるということはないと考えていいのかな、と。
ためしに似たようなものを実行して試したんですが、何も戻ってきませんでした
自分のテストミスなのか・それでOKなのかわからないので教えてください すみません
614606:2008/04/17(木) 21:43:59 ID:wr9HmqHR
すみません >>613
>ためしに似たようなものを実行して試したんですが、何も戻ってきませんでした
という部分ですが、
WHERE 受注表.納品日 = '20010401'
AND 受注表.商品コード = 商品表.商品コード ;
はもちろんのこと、二行目を削除して
WHERE 受注表.納品日 = '20010401';
だけでやっても何も戻ってきませんでした
こういうものなんでしょうか?
615NAME IS NULL:2008/04/17(木) 23:40:59 ID:???
GPLなのにclosedに出来るの?
616NAME IS NULL:2008/04/18(金) 03:12:10 ID:???
MySQL、新機能追加は有償版の「MySQL Enterprise」だけを対象に
http://www.technobahn.com/news/2008/200804172000.html

Linuxを代表するオープンソースベースのリレーショナルデータベース管理システムのMySQL
が近くソースコードの公開を停止する方向で準備を進めていることが16日、米カリフォル
ニア州サンタクララで開催中のMySQLコンファレンスの席上で明らかとなった。
617NAME IS NULL:2008/04/18(金) 06:10:56 ID:KIEogQYQ
MySQLオワタ
618NAME IS NULL:2008/04/18(金) 06:49:14 ID:???
Sunノバビッチ!
619NAME IS NULL:2008/04/18(金) 11:28:11 ID:???
すみません、ご教授いただきたいのですが、

◆現状
XOOPS使用の為、MySQL4.0.27を文字コードEUCで稼働

◆やりたいこと
→1台のサーバで、XOOPS・OpenPNEの稼働

◆困っていること
→OpenPNEが文字コードUTF-8の為、文字コードUTF-8のデータベースを用意しなければならないが
  1台のサーバに入っているMySQLで、データベースごとに文字コードを変えられるか分からない

宜しくお願い致します。

もう1台別のサーバを用意して、そっちでUTF-8のMySQLを用意した方が無難ですかね・・・
620NAME IS NULL:2008/04/18(金) 12:30:23 ID:???
>>619
変えられる
621NAME IS NULL:2008/04/18(金) 12:33:57 ID:???
>>614
受注表.納品日 = '20010401' にマッチするデータあるの?
リレーションの前に1テーブルで自在にクエリできるようになれば。
622619:2008/04/18(金) 12:45:41 ID:???
>>620
ありがとうございます。

すみません、教えて君で申し訳ないのですが、がんばってググってはみたのですが、
どうも目的の事象を見つけられず具体的にはどうしたらいいのか分からず困ってます。
普通に CREATE DATABASE `DBNAME` DEFAULT CHARACTER SET utf8 ; でいいのかと思ったのですが、
ERROR 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT CHARACTER SET utf8' at line 1
と、エラーを吐かれてしまって・・・

宜しくお願い致します。
623NAME IS NULL:2008/04/18(金) 13:08:05 ID:???
>>622
データベースは
create database hoge character set 'utf8';
テーブルは
create table hoge (.. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
624619:2008/04/18(金) 13:48:35 ID:???
>>623
ありがとうございます。

create database hoge character set 'utf8'; で、やってみたのですがダメでした・・・

エラーは同じ、
ERROR 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'character set 'utf8'' at line 1
です。

最初のインストール時のオプション指定が影響したりとかってしますか?
ちなみに、こんな感じでインストールしてます。

./configure \
--prefix=/usr/local \
--localstatedir=/var/mysql/data \
--with-mysqld-user=mysql \
--enable-assembler \
--with-mysqld-ldflags=-static \
--with-client-ldflags=-static \
--disable-shared \
--enable-local-infile \
--with-extra-charsets=all \
--with-charset=ujis \
--with-collation=ujis_japanese_ci \
--without-debug \
--without-bench

宜しくお願い致します。
625NAME IS NULL:2008/04/18(金) 14:31:30 ID:???
>>624
うちは5.0だけど、
create database hoge ; で、データベース作成時には何も指定無しで、
create table hage (....) Engine=MyISAM CHARSER=utf8 ; で出来ないか?
(うちはそれで、Serverデフォルトutf8、特定のテーブルのみcp932で動いてるよ。)
626614:2008/04/18(金) 16:21:37 ID:???
>>621
ありがとうございます
>受注表.納品日 = '20010401' にマッチするデータあるの?
あります。
あるなら、まともにクエリ成功してるはず と考えて良いのでしょうか?
僕の操作ミスかな?
627NAME IS NULL:2008/04/18(金) 18:20:04 ID:???
すいません、カラム名を変更したいのですがどなたかご教示いただけないでしょうか。

バージョン:mysql5.0
db:test
table:tabletest
column:key,colum1,colum2
という構成にしています。

colum1をcolumn1に名前を変更したいのですが、
alter table tabletest change colum1 column1;
と入れても

ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
と、エラーが出ます。構文が間違ってると言われているようなのですが、
マニュアルサイトでは
mysql> ALTER TABLE テーブル名 CHANGE 古いカラム名 新しいカラム名;
と記載されておりどこが間違っているのかわかりません。
お願いします。
628NAME IS NULL:2008/04/18(金) 18:52:52 ID:???
すいません、末尾にデータ型を付け足したら変更できました。
629NAME IS NULL:2008/04/18(金) 21:38:16 ID:???
質問させて下さい。
Ubuntu7.1 serverとMySQL5.0.45を使っています。
データのインポートが異常に遅いのです。
以前まではx86版Ubuntuを使っていましたが、64bit版に変えました。
以前と設定もハードウェア構成もは全く同じなのです。
前もってphpmyadminを使ってエクスポートでとっておいたgzip圧縮のSQL文によるバックアップを
現環境のMySQLにインポートしているのですが、インポート実行時間が以前の50倍くらい遅くなっています。
時間をかければインポートできますが、大きめのデータだと何日まてばよいかわからない状況です。

topコマンドでは常にCPU100%でロードアベレージも1です。
メモリは8Gあって空きはまだ4G以上あります。
DBは全てinnodbです。
phpmyadminのランタイム情報を見ると、SQLの実行に関して
失敗回数 1,084 785.67 95.93%
と出ています。
もしかして失敗によるコミットとロールバックを繰り返しているから遅いのかなと思ったりもするのですが
原因がわからずにほとほと困り果てております。

もし宜しければお力添え頂けないでしょうか。
宜しくお願い致します。
630NAME IS NULL:2008/04/18(金) 22:06:28 ID:qYojHQc3
今月〜来月の間(1ヶ月間)と言うのを出したいと思っています。

PHPを使って今月と来月をdate関数で出して、範囲検索で抽出できると思いますが、
それをSQLだけでする方法ってありませんでしょうか?
631NAME IS NULL:2008/04/18(金) 22:14:43 ID:???
>>630
今月〜来月の間の「何を」出したいんだ?

質問をする前に人に分かる日本語を書くよう心がけてよ
632NAME IS NULL:2008/04/18(金) 22:21:54 ID:???
せめて表の構造くらい語ってくれよ…
633630:2008/04/18(金) 22:32:10 ID:qYojHQc3
>>631
申し訳ないです。。
登録されているdateにたいして、
「今月」〜「来月」という値を抽出したいと思っています。

考え方としては
WHERE date BETWEEN '2008-04-01' AND '2008-04-30'

みたいなSQLでその期間内のデータを抽出できると思いますが、
「2008-04-01」「2008-04-30」という範囲の値を、SQLで出せないかと思っています。
634NAME IS NULL:2008/04/18(金) 23:03:17 ID:???
>>633

それで伝わると思ってるのか。
635NAME IS NULL:2008/04/18(金) 23:55:05 ID:???
>>633
ヒント
DAYOFMONTH(), CURDATE(), ADDDATE()

そういう質問・説明の仕方を仕事でやると怒られないかい?
前提を省いた説明というのは基本的にはしてはいけないよ。
636NAME IS NULL:2008/04/19(土) 12:10:52 ID:???
>>616
ガセネタ紹介乙
637NAME IS NULL:2008/04/19(土) 14:26:10 ID:???
>>630の情報だけで答えられない奴は仕事には向いてない。
実務になったらこんな聞き方するクライアントばっかりだぞ?
638NAME IS NULL:2008/04/19(土) 14:31:55 ID:???
お客さんが説明下手なのは、そりゃしょうがない。
639NAME IS NULL:2008/04/19(土) 14:34:50 ID:???
>>637
じゃあ今日は特別に 君に答える権を授けよう
640NAME IS NULL:2008/04/19(土) 14:53:56 ID:???
>>637
金払えよ
641NAME IS NULL:2008/04/20(日) 22:18:25 ID:???
FreeBSD で
MySQL5.051a を使用しています。
WordPressの初期設定をしているのですが、
以下の部分で止まってしまっております。

# mysqladmin -u root password XXXXXX
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'


どなたか助言をいただけませんでしょうか?
宜しくお願い致します
642NAME IS NULL:2008/04/20(日) 22:29:02 ID:???
>641
rootのpasswordをきちんと設定してますか?
643641:2008/04/20(日) 22:50:37 ID:???
>>642
回答ありがとうございます。
rootのパスワードの設定は以下で問題ないですよね?
(エラーが出てしまっております)
%mysqladmin -u root password xxxxxxx
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)

644NAME IS NULL:2008/04/20(日) 22:56:13 ID:???
http://www.ksknet.net/mysql/mysql_1.html

このあたりを参考にするとか、ググってみるとか。
MySQLのrootパスワードは結構面倒でした(汗)
645641:2008/04/21(月) 10:25:56 ID:???
>>644
すんません。
パスワード設定したのを忘れてましたorz
646NAME IS NULL:2008/04/21(月) 18:24:30 ID:???
>>624
今更だけど、utf8のサポートはMysql 4.1以降。
だから、4.0でエラーが出るのは仕方ないと思う。
647NAME IS NULL:2008/04/23(水) 19:06:36 ID:???
質問です。バージョンはMySQL 3.23。

時刻を示す文字列が格納されたフィールドがあります。
2008年4月23日19時30分00秒なら、「20080423193000」という感じ。

このフィールドを見て、例えば現在から1ヶ月以内のレコードを抽出するとき、
どのようなクエリを送るのがスマートでしょうか。


WHERE 0+DATE_SUB(NOW(),INTERVAL 1 MONTH) < date AND date <= 0+NOW()

このようにやって期待通りに動いているようには見えるのですが……。
648619:2008/04/23(水) 19:27:01 ID:???
>>646
ありがとうございます。

文字コードのサポートとは・・・まったくノーチェックだった
649NAME IS NULL:2008/04/23(水) 22:22:01 ID:???
>>647
素直にdatetime型にする
650NAME IS NULL:2008/04/23(水) 22:33:33 ID:???
>>647
この先色々なバグに悩まされるのが目に見える設計ですね
651NAME IS NULL:2008/04/23(水) 23:13:59 ID:???
テーブル設計したの俺じゃねーもんっ!
652NAME IS NULL:2008/04/24(木) 00:32:04 ID:???
も、萌え
653NAME IS NULL:2008/04/24(木) 09:31:08 ID:???
>>647
>>649に1票。Datetimeにしたほうが何かと便利じゃね?
654NAME IS NULL:2008/04/24(木) 11:00:03 ID:???
他で散々使われてるテーブルだからなあ……現状ちゃんと動いてるものを弄りたくないw
655NAME IS NULL:2008/04/24(木) 14:49:32 ID:6a37T5mr
質問です
ヤフーでもAmazonでも、大きなポータルみたいなサイトを見ると、トップページに
沢山メニューやカテゴリがあります
(新着、トピック、ニュース、メール受信数、広告などなど)
これは、各領域ごとにSQLの読み込みしてるってことかなと思いますが、一ページに
どの程度リクエスト仕掛けていいんでしょう?
全部をまとめて1リクエストで済ませてるわけじゃないですよね?
そんなにいっぱい一気に読み込んで大丈夫なの?って気になりますが、、
こういうのはメモリとかCPU性能に依存するものなんですか?

変な質問ですみません 
今のところ、1ページ1処理はうまく出来てるんですが、負荷を
沢山かけるものは心配です
参考になるサイトや書籍などあればそれも教えてください お願いします
656NAME IS NULL:2008/04/24(木) 14:55:16 ID:???
それがノウハウというやつでして
657NAME IS NULL:2008/04/24(木) 15:17:51 ID:ZBZQUXh5
質問させて下さい。
table1
---------------------------
no   cat   name
1    1    わかめ
2    3    だいこん
3    2    にんじん
4    2    にく
5    3    こめ
6    4    かいわれ
....
100   100   にがうり
---------------------------

このようなテーブルで各catから一つずつnameを取得したいのですが、
その時に、noの降順を使って取得するにはどのようにすればよいでしょうか?

以下のように取得したいのです
---------------------------
no   cat   name
1    1    わかめ
4    2    にく
5    3    こめ
6    4    かいわれ
---------------------------

上手く伝えられているか不安なのでもう少し書き足しますと
---------------------------
no   cat   name
3    2    にんじん
4    2    にく

のようにcatにおいて重複した結果が出たときにnoの降順に従って
4    2    にく
だけを取得してほしいのです。

以下のようなクエリを実行したのですが、これではnoの降順を無視してグループ化されてしまいます。
SELECT
`no`,
`cat`,
`name`
FROM
`table1`
WHERE
1
GROUP BY `cat`
;

具体的なテーブル構造は下記になります。
CREATE TABLE `table1` (
`no` int(10) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'No',
`cat` int(4) NOT NULL default '' COMMENT 'カテゴリ',
`name` varchar(32) NOT NULL default '' COMMENT '名前',
`up_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新日時',
`del_flg` TINYINT NOT NULL DEFAULT '0' COMMENT '削除フラグ'
) ENGINE = myisam CHARACTER SET ujis COLLATE ujis_japanese_ci COMMENT 'テーブル情報';

どうか宜しくお願い致します。
658NAME IS NULL:2008/04/24(木) 15:34:13 ID:???
SELECT T1.no, T21cat, T2.name FROM
(SELECT max(no) AS no, cat FROM table1 GROUP BY cat) T1
INNER JOIN table1 T2 ON T1.no = T2.no AND T1.cat = T2.cat;

とか?
試してないけど。
659655 :2008/04/24(木) 15:43:59 ID:6a37T5mr
ノウハウってことは社外秘みたいな?
ごくごく基礎的な考え方について、まとめてる本なんて知りませんか?
すみません、気になるんです。。
660NAME IS NULL:2008/04/24(木) 15:50:26 ID:???
ああいうでかいポータルは1アクセス毎に動的にSQLを発行しているのではなく、
静的HTMLを一度作る時だけSQLを発行しているから無問題。

SQLの結果をキャッシュしておきたければmemcacheを使え。
661657:2008/04/24(木) 16:00:29 ID:???
>>658
レス有り難う御座います。
うおっ結構複雑になってしまいますね・・・
今から提示して頂いたクエリを一つ一つかみ砕いて勉強してみます。

>>655
660さんもおっしゃっているような感じのことがメインですが
WEB+DB PRESS Vol.42にニコニコ動画の技術記事があります。
そこにDBとWEBアプリケーションサーバの大規模運用における勘所みたいなことが結構書かれていて
私は勉強になりました。
お力になれれば幸いです。
662NAME IS NULL:2008/04/24(木) 16:29:19 ID:???
分かってると思うけど、T21catはT1.catのtypoね。
試してみたらうまくいったけど、あんまりいい方法ではないよ。
あくまで、答がちゃんと出るレベル。
663658:2008/04/24(木) 17:37:55 ID:???
SELECT no, cat, name FROM table1 T1
WHERE NOT EXISTS(
SELECT * FROM table1 T2 WHERE T1.cat = T2.cat AND T1.no < T2.no
);

とかでもOK
664NAME IS NULL:2008/04/24(木) 19:47:59 ID:???
>>659
ノウハウは社外秘まではいかないだろうけど、それが飯の種ってもんです。
何でも知ってる人に聞いてみましょう。

本だったらSQLの簡単なものから読んだらいいんじゃないかな。
MySQLに限らず、RDBMS共通で勉強するといいかも。
665655 :2008/04/25(金) 06:21:05 ID:???
>>660
ありがとうございます、一度読み込んだ後にキャッシュする機能があるんですね
それが知れただけでもすごく助かりました
>>661
本の紹介、ありがとうございます
ニコニコの仕組みは勉強になりそうですね! ぜひ読んでみたいと思います ありがとう
>>664
完全独学でまわりに詳しい人いないのでここで聞かせてもらいました
またお世話になると思います、よろしくお願いします

どうもありがとうございました
666NAME IS NULL:2008/04/25(金) 22:05:36 ID:mG3NM/VW
副問い合わせが出来ないサーバ(MySQL4.0.25です)を使うことになったのですが、
副問い合わせをにしたいSQL文があり困っています。

この場合、どういうSQL(関数)で代替するのでしょうか?
667NAME IS NULL:2008/04/25(金) 22:22:40 ID:c14dphK1
>>666
泥臭いやり方だが、temporary tableかな
またはアプリケーション側で処理するとか
668NAME IS NULL:2008/04/25(金) 23:01:57 ID:???
JOIN
669666:2008/04/25(金) 23:09:52 ID:mG3NM/VW
>>667
すみません、、ちょっとやり方が見えないのですが、、
例えば以下のようなSQLの場合、どうなるのでしょうか?

SELECT * FROM hoge INNER JOIN(
SELECT hoge_id FROM test
) AS test ON hoge.hoge_id=test.hoge_id
670NAME IS NULL:2008/04/25(金) 23:18:07 ID:???
SELECT * FROM hoge
  INNER JOIN test ON hoge.hoge_id=test.hoge_id

サブセレしなくても普通にこれでいんじゃないの。
それとも例題のために削ってるから?
671666:2008/04/25(金) 23:20:34 ID:???
>>670
例題の為に削っているからです。。
実際、副問い合わせが必要な時は、そこでCOUNTしたり
WHEREで抽出した値を出したいから、という理由が多いです。
672NAME IS NULL:2008/04/27(日) 13:21:26 ID:Tqt++e11
すごい初歩の質問なんだけど、
select * from web where name ='2chan' and category = '2chan' and type = '2chan'
って漢字で、全部2chan(同一単語)で検索したいんだけど、
where以降を縮める方法ってないですか?
PHPのifみたいにフィールド名括弧で括って()='2chan'でもだめだし・・・。
初歩すぎるのか探してもなかなか見つからない。
673NAME IS NULL:2008/04/27(日) 16:05:58 ID:???
むり
674NAME IS NULL:2008/04/27(日) 16:24:11 ID:Tqt++e11
>>673
簡潔な回答ありがとうございます。
675NAME IS NULL:2008/04/28(月) 00:32:12 ID:???
'2chan' IN (name, category, type)
676NAME IS NULL:2008/04/28(月) 03:35:46 ID:???
TEXTカラムから
文字数1000文字区切り、最後の改行
でデータを取り出したいのですが可能でしょうか?

できれば1000文字以下で丸めこみたいです

以下のようにやっては見たのですがどうもすっきりしません。
よろしくお願いします。
SELECT
 CONCAT(SUBSTRING(TEXT,1,1000),SUBSTRING_INDEX(SUBSTRING(TEXT,1000,1000),"
",1)) AS TEXT
FROM hoge;
677NAME IS NULL:2008/04/28(月) 09:10:45 ID:???
>>675
INはORだろ
678NAME IS NULL:2008/04/28(月) 10:01:14 ID:???
>>676
1000文字取り出した後はプログラム側で処理してはいかがでしょう?
679NAME IS NULL:2008/04/28(月) 12:53:41 ID:???
>>671
だったら、そういうクエリを示さないと、解決にならない。
680NAME IS NULL:2008/04/29(火) 16:57:15 ID:???
Windows にインストールしようとしてバイナリを探して
このページを見たところ
http://dev.mysql.com/downloads/mysql/5.0.html

ここだと 5.0.51b しかないようです。
b は beta の略ですよね?
beta 無しの一つ前のバージョンはどこでダウンロードできるのでしょうか?
681NAME IS NULL:2008/04/29(火) 17:23:46 ID:???
>>680
それはベータじゃない。リリース版。

ってかいつの間にか5.0.51bになっててきづかなかった。
5.0.51->5.0.51aの時はSSL絡みのバグ修正だったようだけど、
今回のChanges探したんだが見つからない。

bkbitsのほうにも、Enterpriseには5.0.60きてるけど、
Communityには5.0.51aまでしか記載がない。
682NAME IS NULL:2008/04/29(火) 17:35:14 ID:???
無償版の「MySQL Community Server」の提供は今後も継続されるが、
無償版と有償版の開発は完全に切り離されることとなり、
無償版と有償版の2つのMySQLはまったく別々の進化を遂げることとなる見通しだ。
683680:2008/04/29(火) 18:00:49 ID:???
>>681
レスありがとうございます。
http://dev.mysql.com/doc/refman/5.1/ja/choosing-version.html
ここのバージョンの命名規則に b の意味するところが書いてないようなのですが

51 -> 51a -> 51b は
51 -> 52 にするほどでもない細かい修正だと理解して良いのでしょうか?
684NAME IS NULL:2008/04/29(火) 19:57:40 ID:???
>>683
その通りです。

個人的にはbetaを意識させるbをバージョンに含むのには反対ですけどね。
685680:2008/04/29(火) 20:17:13 ID:???
>>684
なるほど、ありがとうございました。
686NAME IS NULL:2008/04/29(火) 22:52:30 ID:9aVChAdo
MySQL5.1のインストールで
Server Instance Configuration WizardのApply security settingで
エラーがでて完了しません
mysql.serversテーブルがないようなメッセージが出ています
ポートは開放しているはずですが、複数端末で同じようなエラーが出てしまいます
いろいろ調べたのですが、対処法がわかりません。
環境はwindowsXP SP2です
687NAME IS NULL:2008/04/29(火) 22:56:35 ID:vsezzVYU
mysqlのソースコードの解説したサイトとか書籍とか
オススメありませんか?

ググっても出てこないのでお願いします
688NAME IS NULL:2008/04/30(水) 00:50:20 ID:???
>>687
俺は読んでないけど…

http://www.oreilly.co.jp/books/9784873113432/toc.html

つーか、サイトや書籍を当たるよりもいきなりガシガシ
ソースコード読んだ方が速いんじゃないか
689NAME IS NULL:2008/04/30(水) 01:04:19 ID:???
Linuxもいつかは誰かの所有物になるのかな
690NAME IS NULL:2008/04/30(水) 01:37:43 ID:???
そんときは、別のオープンソースOSがLinuxの代わりになってるよ。
691NAME IS NULL:2008/04/30(水) 01:41:19 ID:???
Linux は正式にリーナスの物だけど誰も困ってない
そういう事
692NAME IS NULL:2008/04/30(水) 01:46:55 ID:???
>>688
ありがとうございます

なんと身近な本に普通に載ってたんですね…
693NAME IS NULL:2008/04/30(水) 16:53:35 ID:3+aSlCcR
selectする情報の中にorder byで並び替えた際の順番を入れたいのですが
どう書けば可能でしょうか?
694NAME IS NULL:2008/04/30(水) 17:03:55 ID:???
order byは最後に実行されるから、select句でその情報を取得するのは無理。

SELECT foo AS '2 foo', bar AS '1 bar' FROM Example
ORDER BY bar, foo;

とでもすればいいんじゃないかな?
695NAME IS NULL:2008/04/30(水) 17:40:27 ID:???
テーブルレイアウトがないので、、、テーブル名が sample_table で、
プライマリキーは key_a 並べ替えたいカラムを col_a として書きました。

SELECT
 a.*,
 b.order_num
FROM
 sample_table a
 JOIN (
  SELECT a.key_a, count(*) AS order_num
  FROM sample_table a LEFT JOIN sample_table b ON
  a.col_a > b.col_a
  GROUP BY a.key_a
 ) b
 USING (key_a)
ORDER BY a.col_a

MySQLでの確認はしてませんので、方言が混ざってそうだったら翻訳しといてください
696NAME IS NULL:2008/04/30(水) 23:16:14 ID:6t3erPxs
ExcelとMySQLに関する質問です。

Excelで数千行になる正規化されていないデータを、一気にMySQLに入れることってできるでしょうか?

普段、Excelにデータを溜め込んでいるのですが、それをサーバーに置いて、Web経由でデータの抽出ができるようにしたいんです。
もしいまのExcelのデータをすぐMySQLに入れられたら、造作無いのではないかと思っています。

よろしくお願い致します。
697NAME IS NULL:2008/04/30(水) 23:38:08 ID:???
列がちゃんと決まってるなら行番号あたりをキーにしたテーブル作って
COPY句でも作って突っ込めばいけるんじゃない?
698NAME IS NULL:2008/04/30(水) 23:49:06 ID:???
CSVで保存すれば、取り込める。
正規化せずに取り込むと後でものすごく後悔しそうないがする。
699NAME IS NULL:2008/05/01(木) 01:12:40 ID:V4TVtf8T
$sql = "select ホゲ from ホゲホゲ where ホゲホゲホゲ like '%$word%';";
$result = $db->query($sql);
if (DB::isError( $result )) {
die($result->getMessage());
}
while($row = $result->fetchRow()){
echo $row[0]; // 返却データをループ
}


という感じのプログラムを、テーブル名のみを変更して13行並べているのですが、最後の4つあたりが「DB Error: no such field」というエラーが出て正常に処理されません。
エラーが出ている箇所を上のほうに持ってくると解決するのですが、するとまた下の4つが・・・という感じです。
これって何が原因なのでしょうか?
700NAME IS NULL:2008/05/01(木) 10:54:47 ID:???
>>699
PHPのモジュールの問題じゃね?
701NAME IS NULL:2008/05/01(木) 13:42:14 ID:???
>>699
$db にfinishっぽい関数あったら、ループ後に呼んでみるとか
702NAME IS NULL:2008/05/01(木) 13:59:30 ID:/NYPxvw/
SQLのみを使って
mysqlの変数に
クエリの結果を代入する方法があれば教えてください
703NAME IS NULL:2008/05/01(木) 21:04:05 ID:???
質問です。

cpu:Core2Duo E6320
os:debian sarge
db:mysql 5

上記組み合わせで、このサーバをDB専用サーバーとして稼動させた
場合、mysqlのチューニングによってはCPUが最大で50%(1cpu)まで
しか使えない可能性ってありますでしょうか?
704NAME IS NULL:2008/05/01(木) 22:57:20 ID:???
きれーにするーされたな
705NAME IS NULL:2008/05/01(木) 23:13:07 ID:???
>>702
mysqlの変数って何?
ストアドファンクションを作ってるのかな。

>>703
smpのカーネルじゃないとそうなることもあるのかもしれない?
有識者の方お願いします。

>>704
何がしたいのか分かりません。
706NAME IS NULL:2008/05/02(金) 11:35:50 ID:???
>>702
select @name:=name from hoge;
select @name;
707696:2008/05/02(金) 19:34:28 ID:gVoO+8Lg
>>697
>>698
どうもありがとうございます。
参考になりました。
708NAME IS NULL:2008/05/02(金) 22:12:33 ID:???
MySQLの無料版ってなくなっちゃうんですか?
709NAME IS NULL:2008/05/02(金) 22:14:32 ID:???
無くならないよ
710NAME IS NULL:2008/05/03(土) 03:45:01 ID:UXm9qTN+
質問します カラムの値がNULLのものを削除したくて以下を実行しましたが
うまくいきません
delete from schedule where `evId` =''
delete from schedule where `evId` =NULL
両方ともだめです 何が原因として考えられるでしょう?
誰かご意見お願いします
711NAME IS NULL:2008/05/03(土) 04:10:50 ID:???
evId IS NULL
712NAME IS NULL:2008/05/05(月) 05:16:45 ID:???
データベースのフィールドの順番を変えるにはどんな命令を使うんでしょうか。
例えば

A B C D

となっているフィールドを

A C B D

にしたいんですが。
713NAME IS NULL:2008/05/05(月) 06:08:56 ID:???
変える必要なんてあるの?
714NAME IS NULL:2008/05/05(月) 06:15:56 ID:???
データファイル読み込むとき、フィールドの順番とデータの順番が逆になってたんで。

データのほうをいじってもいいんだけど、一応データベースの方も変えられるなら知っておこうと。
715NAME IS NULL:2008/05/05(月) 11:01:12 ID:???
まあ、速度的な面とかなら。
716NAME IS NULL:2008/05/05(月) 12:41:16 ID:???
DROP → CREATE
717NAME IS NULL:2008/05/05(月) 18:14:35 ID:???
>>712
alter table TBL modify B int after C
とか?
718NAME IS NULL:2008/05/05(月) 21:18:24 ID:umNt+46L
今までパスワードを暗号化せずにそのまま保存していたのですが、
次回の更新ではmd5で暗号化したパスワードを保存し、
その値でログイン出来るようにしたいと思います。

現状のパスワードをmd5化して更新する方法ってありませんでしょうか?
MySQLは4.1.22を使っています。
719NAME IS NULL:2008/05/06(火) 01:21:23 ID:???
>>718
update tbl set col=md5(col)
720NAME IS NULL:2008/05/06(火) 03:26:20 ID:???
>>1
ちわちわ
721NAME IS NULL:2008/05/06(火) 14:56:41 ID:???
巣に帰れ。
722NAME IS NULL:2008/05/06(火) 19:58:26 ID:???
ホスティング会社が3.23→5.0にうpグレードしやがった。
運用していたDBがオワタw
723NAME IS NULL:2008/05/06(火) 20:05:41 ID:???
>>722
アナウンス無しで?
724NAME IS NULL:2008/05/06(火) 20:09:24 ID:???
>>723
アナウンス無しで。
設定はしたから新規のデータは入るようになったけど、
古いデータが破壊されちゃった。

外国の安い会社だから、まぁ自己責任orz
725NAME IS NULL:2008/05/06(火) 20:29:06 ID:???
データ破壊てw
泣くわそんなん
726NAME IS NULL:2008/05/06(火) 20:30:12 ID:???
泣き虫は嫌いだ、じっちゃんも言ってた
727NAME IS NULL:2008/05/07(水) 00:22:52 ID:???
>>719
遅レスですけど上手くできました。ありがとうございました。
728NAME IS NULL:2008/05/07(水) 13:33:51 ID:???
参考サイトをみながらMySQLを勉強している者です。

サイトの説明どおり1ステップづつこなしていたのですが、サンプル用のバックアップファイルをDLしてきて自分の環境で復元するところでつまづいてしまいました。
バックアップファイル内の命令文を1文づつ手作業で打ち込んでいったところ、
CREATE TABLE T01Prefecture (
PREF_CD INT,
PREF_NAME VARCHAR(10),
PRIMARY KEY (PREF_CD)
);
を打ち込んだところで、
ERROR 1005 (HY000): Can't create table 'sampledb040.t01prefecture' (errno: 121)
というエラーが表示されました。

テーブルが作成できないというエラーのようですが、原因がさっぱりわかりません。
テーブル名をT10Prefectureに変えると作成できるのですが…
どなたかこのエラーの原因をお知りでしたら、ぜひお教え願えないでしょうか?
729NAME IS NULL:2008/05/07(水) 14:28:12 ID:???
普通はリダイレクト使ってやるような作業だよね
どっかで打ち間違えたんじゃないの?
730NAME IS NULL:2008/05/07(水) 15:20:47 ID:???
文字を打ち間違えた場合だと、T01prefectureをT10prefectureに変えても通らないはずだと思うのです。

ググっていくつかのサイトを見てみましたが、以前同じ名前のテーブルを作成した事があるのが悪い…のかな?
同じエラーで悩んでいるらしき人のBlogなどは見つかるのですが、何がどう問題なのか理解が及ばない。
731NAME IS NULL:2008/05/07(水) 16:37:15 ID:???
>>730
既にその名前のテーブルが存在するなら作れないですよ。
732NAME IS NULL:2008/05/07(水) 18:27:43 ID:???
DROP TABLE T01Prefecture;
733NAME IS NULL:2008/05/07(水) 22:32:39 ID:???
バックアップファイル内に予めテーブルを削除する文も入っているんです。
後出しでホントすみません。
ttp://mysqlweb.net/category/4037459-1.html
のリンクにある040backup.zipというファイルなのです。

前のステップでsampledb040を使った練習があったけど、やはりこれのデータが変な風に残っているのでしょうか?
734NAME IS NULL:2008/05/07(水) 23:16:52 ID:???
リダイレクトでファイル直接流してみなよ
735728:2008/05/08(木) 14:39:58 ID:???
ご、ごめん。
最初は参考サイトにあるとおりリダイレクト(でいいのかな? Mysql -u ユーザー(root) -p データベース名 <"パス")とやってたのです。
それでテーブルを作成できませんというエラーがでるので1行づつ手打ちしてみたのです。

後出しばかりでホントごめん。
人に相談するには早すぎました。まともな説明ができるようになるまでは独学でがんばります…
736NAME IS NULL:2008/05/08(木) 21:38:34 ID:???
>>735
drop したあと、ほんとにdropできてるか確認してみるとか?

テーブルの作成権限がないだけかもしれないけどMySQLのその辺は
詳しくないので、もしそうなら他の人にお任せします。
737NAME IS NULL:2008/05/09(金) 13:39:41 ID:???
MySQLのトリガーって他のテーブルに対して処理できないって本当ですか?
738NAME IS NULL:2008/05/10(土) 11:00:09 ID:???
>>737
うそです
739728:2008/05/10(土) 12:14:55 ID:???
MySQLのdataフォルダ内にあるsampledb040フォルダを削除し、データベースを作詞するところからやり直したらテーブルが作成できました。
お騒がせしてすみませんでした。

こんな解決方法で良いのかな…?
740NAME IS NULL:2008/05/10(土) 20:35:52 ID:???
LOAD DATA LOCAL INFILEを使うときの、ローカルPC側のファイルパスの指定の仕方って、

"c:\hoge\hoge.txt"
"c:/hoge/hoge.txt"

これ以外に指定方法ってあるんでしょうか。
どちらでやっても、not found (Errcode: 2) になってしまいます><
741NAME IS NULL:2008/05/10(土) 21:25:53 ID:???
hogeディレクトリーにhoge.txtが本当に存在してるかい?
742NAME IS NULL:2008/05/10(土) 21:26:01 ID:???
>>740
\の場合は\\と書かないとダメな気がする
743740:2008/05/10(土) 21:42:07 ID:???
>>741
存在してます。

>>742
\\でやってみましたが、同じくnot foundでした。

ちなみに、xserver(共用レンタルサーバ)上のDBにLOADさせようとしているんですが、
気になっているのが、LOADするファイルはUTF-8なんです。
ところが、xserverのMySQLのcharacter setはujis、character setsは
latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru
latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek
win1250 croat cp1257 latin5 で、utf8がないんですよね。

phpMyAdminで、ALTER TABLE テーブル名 CHARACTER SET utf8; を指定した後に
実行しても結果は同じエラー。
phpでプログラムを組んで、クエリ発行前に"SET NAMES utf8"をやっても同じエラーでした。

ためしに、LOADするファイルをujis、テーブル側もALTER TABLEやSET NAMESでujisに設定してやってみましたが、同じエラーでした。
MySQLのバージョンは4.0.27です。

いろいろ調べてるのですが、解決策が見つからなくて。
744740:2008/05/10(土) 23:10:59 ID:/V9T+N7z
解決しました。
結局、not foundになった理由はわからないんですが、
phpMyAdminの「インポート」からLOADできました。
数時間前まで「インポート」画面には、
「インポートするファイルの形式」は"SQL"しか指定できなかったのですが、
不思議なことに、先ほどみたら"CSV"が指定できるようになっていて、
そこから入力ファイルを指定してLOADできるようになりました。
745NAME IS NULL:2008/05/10(土) 23:32:01 ID:ZRD2El4R
extの中に、
php_mysql.dll
php_mysqli.dll
コピーしましたが、phpinfo()でMYSQL動きません。
プロンプトからは動きます。
extennsion_dir=c://php/etc
extension=php_mysql.dll
extension=php_mysqli.dll
しました。

dllのバージョンは、phpにあわせなければだめですか?
php5.1なのですが、
dllは5.2です。

5.1のダウンロードはどちらで行えばいいんでしょうか?


restart &再起動を行いました。


746NAME IS NULL:2008/05/10(土) 23:46:05 ID:ZRD2El4R
/etc
じゃなくて/ext
の間違いです。
747NAME IS NULL:2008/05/10(土) 23:49:19 ID:???
>>745
copy C:\php\libmysql.dll C:\windows\system32
748NAME IS NULL:2008/05/11(日) 01:49:34 ID:I11LIJS2
system32の中に

libmysql.dll
コピーしてもだめでした。

php5ts.dll
php5apache2.dll
をコピーしてもだめでした。
749NAME IS NULL:2008/05/11(日) 03:10:53 ID:ymTwAShD
Windowsを使わなければ良い
750NAME IS NULL:2008/05/11(日) 17:12:51 ID:Lz+kCEMO
Debian上でMySQL5.0を使用しています。

DBに対して発行された全てのSQLをログ出力したいのですが、
MySQLでそういった処理は可能でしょうか?
751NAME IS NULL:2008/05/11(日) 18:22:01 ID:???
log = /var/log/・・・
752NAME IS NULL:2008/05/12(月) 01:10:50 ID:???
innodbのデータファイルをテーブルごとに作成する方法ってありますか?
753NAME IS NULL:2008/05/12(月) 01:26:19 ID:???
innodb_file_per_table
754NAME IS NULL:2008/05/12(月) 16:10:28 ID:???
>>743
>>646にも書いたけど、4.0系はutfサポートしてません。4.1以降です。
755NAME IS NULL:2008/05/12(月) 20:15:57 ID:8xhRTUUy
質問させて下さい。
table1
---------------------------
name
ねこ
いぬ
うさぎ
かめ
....
ぞう
---------------------------

このようなテーブルで特定の名前を検索し、結果ヒットしなかった名前だけを取得したいのですよがどうのようにしたらよいでしょうか?
例:ねこ、パンダを検索 => パンダを取得

SELECT
1
FROM
`table1`
WHERE
`name` = 'ねこ'
;

このようなクエリをループで数回発行し、取得もできるのですが、できれば1回のクエリで取得したいのです。

ドキュメントを見ていると、 `name` IN ( 'ねこ', 'パンダ' )
として何かすればできそうかなとも思ったのですが上手くかけません。
どうか宜しくお願いします。
756NAME IS NULL:2008/05/12(月) 20:34:25 ID:???
>>755
つまり条件で使用されなかった名前を得たいわけですよね。
通常だと、`name` IN ( 'ねこ', 'パンダ' ) でヒット分を出して
アプリ側で消し込むのが通常かと。
757NAME IS NULL:2008/05/12(月) 21:43:28 ID:???
>>765
レス有り難う御座います。
う〜んやっぱりどちらにしてもアプリ側の処理に頼るしかないのかな。
もう少し自分で粘ってみます。
758NAME IS NULL:2008/05/12(月) 22:12:00 ID:???
NOT EXISTSを使ってできそうな予感
759NAME IS NULL:2008/05/12(月) 22:21:02 ID:???
ごめん、やっぱり純粋なSQLじゃ無理だわ
検索条件を表示するようなクエリが記述できないからね


'ねこ', 'パンダ'で検索したときに、
ねこ
パンダ
を取得するSQL

・・・不可能
760NAME IS NULL:2008/05/12(月) 22:24:42 ID:a2zzvFoH
初めまして。
Windows2K上で「MySQL入門以前」という書籍を見ながらMySQLをインストールしています。

Apache、PHP、MySQLのインストールは終わり、mysqldをサービスとして登録し終わり
再起動すると、MySQLサーバが起動していません。
#書籍で言うと65ページ付近です

コマンドプロンプトから
cd c:\mysql\bin で移動し
C:\mysql\bin>mysql
と打ち込むと
ERROR 2003: Can't connect to MySQL Server on "localhost" (10061)
と表示され、接続できません。

コントロールパネル>管理ツール>サービス でMySQLを確認すると
「スタートアップの種類」は「自動」となっていますが、「サービスの状態」が「停止」となっています。
「開始」をクリックすると
「ローカルコンピュータのMySQLサービスを開始できません。」
「エラー1067:プロセスを途中で強制終了しました」
と表示されます。

色々検索してみて、コマンドプロンプトから
C:\mysql\bin>net start mysql
と打ち込んでも
「システムエラー 1067が発生しました」
「プロセスを途中で強制終了しました」
と表示され、先に勧めない状態です。

同じ書籍で同じようなエラーを対処された方はいらっしゃいませんでしょうか。
どうかご教示ください。
761NAME IS NULL:2008/05/12(月) 22:38:21 ID:???
762NAME IS NULL:2008/05/12(月) 22:39:45 ID:???
763NAME IS NULL:2008/05/13(火) 00:16:15 ID:???
>>761-762
そちらのページを拝見して、サービスの削除・サービスの再インストールを
行いましたが駄目でした。MySQLのアンインストールからやり直してみようと思います。
764NAME IS NULL:2008/05/13(火) 15:44:20 ID:NUBRvh8U
PHP上からMySQLでinsertすると、Duplicate entry '〜' for key 2

PHP MyAdmin やプロンプト上からinsert行うと、普通にinsertできるのでしょうか?
765NAME IS NULL:2008/05/13(火) 15:47:34 ID:???
キーが同じならどこからでも無理だろ
766NAME IS NULL:2008/05/13(火) 18:50:11 ID:???
+-----+-------+
| key | title | que1|
|   1 | test  | test |
|   7 | test  | test |
+-----+-------+-
というテーブルがあり、titleからkeyを取り出したいのですが、
select que1 from question where title ='test';ではqueは取り出せるのに
select key from question where title ='test';では構文エラーになります。
主キーは取り出せないんでしょうか?
767NAME IS NULL:2008/05/13(火) 18:52:43 ID:???
keyは予約語だからでは? `key` とかしてみる。
768NAME IS NULL:2008/05/13(火) 18:54:18 ID:???
ありがとうございます!
無事取り出せました。
769NAME IS NULL:2008/05/13(火) 21:39:29 ID:NUBRvh8U
キーはインクリメントされるので、
異なってるはずなんですが。
770NAME IS NULL:2008/05/13(火) 21:40:40 ID:NUBRvh8U
`key`は基本だとおも。
771NAME IS NULL:2008/05/13(火) 22:04:51 ID:NUBRvh8U
質問日本語になってなかったので、再度質問します。
日本語できなきゃ、SQLできませんね。えへ!

テーブルに登録されていない 
ユニークな列 brandに
日本語文字列'あしっくす' をinsertしようとしているのですが、
あしっくす という文字列が登録されていないのに、

Duplicate entry 'あしっくす' for key 2

とエラー表示されるのはなぜなんでしょうか?



772訂正:2008/05/13(火) 22:07:10 ID:NUBRvh8U
質問日本語になってなかったので、再度質問します。
日本語できなきゃ、SQLできませんね。えへ!

テーブルに登録されている 
ユニークな列 brandに
日本語文字列'あしっくす' をinsertしようとしているのですが、
あしっくす という文字列が登録されていないのに、

Duplicate entry 'あしっくす' for key 2

とエラー表示されるのはなぜなんでしょうか?
773訂正:2008/05/13(火) 23:31:32 ID:NUBRvh8U
カタガナとひらがな で重複すしてました。
774NAME IS NULL :2008/05/14(水) 03:58:48 ID:???

◆6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
http://system-trading.jp/news/index.php?cID=3

5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
  デモトレードの優勝者には賞金三百万円がプレゼントされます。


▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
http://www.fx-gp.com/about/

▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
775NAME IS NULL:2008/05/15(木) 05:20:29 ID:???
http://dev.mysql.com/doc/refman/5.1/ja/mysql-insert-id.html
「マルチ列INSERTステートメントの場合」とか書いてあるけど、
このページ内ほとんど
×列
○行
じゃないかな。
776NAME IS NULL:2008/05/15(木) 08:30:54 ID:/PcvCBei
MYSQLとPHPがどうマニュアルどおりやっても、
phpinfoでMYSQLが認識されない。dllに応じてapacheの対応バージョンが異なるらしいんだけど、
本当ですか?
777NAME IS NULL:2008/05/15(木) 09:58:14 ID:???
ビルドからやってんの?
778NAME IS NULL:2008/05/15(木) 13:04:45 ID:???
mysql5.0.27を使っているんですが、型の制約として、 num = num - 5 とかやっても
0未満にはならないようにとか、そういった制約ってありますか?
入れるときにチェックしないとだめでしょうか?
779NAME IS NULL:2008/05/16(金) 16:40:06 ID:V7rySszX
質問です
文字コードがutf8のデータベースから、eucのデータベースへ中身を
移動させるのって難しいですか?もちろんMysqlです
管理ツールはphpMyadminを使おうと思ってるんですが、、
蓄積されている情報をEUCに書き換えるような作業が必要になるんでしょうか?
カンタンな手順や専用のツールなんてあるんでしょうか?
どなたか教えてください よろしくお願いします
780NAME IS NULL:2008/05/16(金) 17:59:07 ID:???
Alter Table
781NAME IS NULL:2008/05/17(土) 09:05:01 ID:???
>>779
insert into euctable select * from utf8table;
782NAME IS NULL:2008/05/17(土) 19:33:10 ID:dhQBeSfs
GPLの意味がいまいち分かりません。。。


改変したら公開が義務付けられるそうですが、
今のところそういうことをする予定はありません。
「無償版を使うなら、これをしなければいけない、
またこれはやってはいけない。」
というのは他に何がありますか?

商用ライセンスとの違いはなんでしょうか?
サポートを受けられる、というだけのことですか?

「こういうことをやりたいなら、商用版を買うしかない。」
ということはありますか?

783NAME IS NULL:2008/05/17(土) 19:36:46 ID:???
>>782
バレてはいけない
784NAME IS NULL:2008/05/17(土) 20:31:20 ID:???
BINARY型ってどういうときに使うんですか?
785NAME IS NULL:2008/05/17(土) 21:19:27 ID:???
>>784
バイナリーファイル、たとえばdocやxlsの先頭100KBを表に入れたいとき。
786NAME IS NULL:2008/05/17(土) 21:23:16 ID:???
>>784
Winny のハッシュ管理
787NAME IS NULL:2008/05/17(土) 22:00:06 ID:Zz9EtgnE
データを大量に作りたい場合の作成ツールとか
ありませんでしょうか?
788NAME IS NULL:2008/05/17(土) 22:20:18 ID:???
なんでもいいならランダム関数でも使えば?
789NAME IS NULL:2008/05/17(土) 22:23:10 ID:Zz9EtgnE
できればおすすめのツールがあればということなんですが。。。
ランダム関数?
勉強不足で。。。
調べてみます。
790NAME IS NULL:2008/05/17(土) 22:35:01 ID:???
CSVファイルからのINSERTなら何かツールがあるでしょ。
何でもいいからデータを大量に入れたいならランダムを生成する適当な関数作っちゃえばいい。
791NAME IS NULL:2008/05/17(土) 22:37:54 ID:???
つーかこんなんで悩んでる人がMySQLを何に使うんだ。
792NAME IS NULL:2008/05/17(土) 22:41:57 ID:???
初学者は常にいます。
793NAME IS NULL:2008/05/17(土) 22:59:08 ID:dhQBeSfs
mediawikiを自宅のPCで使ってみようと思ったら、
MySQLも必要だと言われたのさ。

データベースなんて職場のアクセスをいじったぐらいだ。。。。
794NAME IS NULL:2008/05/17(土) 23:02:21 ID:???
アクセスはRDBMSではないからな〜
795779:2008/05/17(土) 23:13:43 ID:4inawo49
>>780-781
ありがとうございます
>>780
ALTER TABLE というのは具体的にどうしたらいいんでしょう?

>>781
insertでデータを移動させるということでしょうか?
データベース自体の動いているサーバーが違うんですが、
その場合はどうしたらいいんでしょうか?
796NAME IS NULL:2008/05/18(日) 00:12:40 ID:6bXnmuPh
MySQLver5.0.45の公式バイナリをLinuxにインストールしたあと
初めてのログインで
mysql -u root
を実行したら「root@localhostに権限がありません」的なエラーがでました。
1番始めはrootにパスは設定されてないですよね???

ちなみに
mysql -u root -p
をやるとPassword入力を求められますが何を入力してもログインできませんでした。。

797NAME IS NULL:2008/05/18(日) 00:21:56 ID:???
>>795
>ALTER TABLE
SQL関連のマニュアルか、リファレンスを読んで下さい。
798NAME IS NULL:2008/05/18(日) 00:38:19 ID:???
>>795
Alter table tbl convert to charset 
でもこれは、そのテーブル自体の格納されているデータを変換するもの。
二台別々のDBが動いてんなら、一旦もとのtblからデータを全部dumpして、
それを新しい方のtblに放り込んでやればいいんでない。
(この時に特に変換作業は不要。詳しくはmanual参照。でも多分わかってないとハマりそう)

>>796
原因はようわからんが、一旦data_dir以下の全ファイル(インストしたてって言ってるから、重要なデータは入ってないでしょ)
を削除して、/usr/bin/mysql_install_db(←RHEL系のディストリの場合。他ディスでは違う場所かも知れん。)
を実行してやれば、権限テーブルが再構築されるので、再度mysqldを実行。

>>786
ハッシュ自体を管理するんなら、バイナリな必要ないんじゃない?
ハッシュを生成するためのもとのデータを入れるなら、binaryじゃなきゃいかんけども・・。
799779:2008/05/18(日) 08:06:53 ID:JfDPw4vM
>>797
どうもです ありがとうございました
>>798
詳しい説明ありがとうございました
データ移行の本読むべきですね 基本でした ありがとうございました
800NAME IS NULL:2008/05/18(日) 10:46:41 ID:6+oG6BiD
query browserって
データのインポートは出来ないんでしょうか?
csvファイルを取り込みたいのですが、
どのような方法がベターでしょうか?
801796:2008/05/18(日) 11:08:49 ID:???
mysql_install_dbが権限テーブル作成に失敗していました。
(データベース「MySQL」のusr.MYDファイルを開いてみたら空だった)

原因は/tmpにアクセスする際の
パーミション問題(PCLinuxOSのディストリ的な影響)だったので


TMPDIR=/tmp/
MYSQL_UNIX_PORT=/tmp/mysqld.sock
export TMPDIR MYSQL_UNIX_PORT

という形で環境変数を変更してmysql_install_dbを実行したら問題なく動作しました。

>>797-798
ありがとうございました。助かりました。
802NAME IS NULL:2008/05/19(月) 00:30:52 ID:???
long_query_timeについて質問です。

現在DBI経由で、perlなどからSQL実行していますが
この時 long_query_timeに引っかかったクエリーは
エラーなり、補足捕捉情報かなにかを返すのでしょうか?
またこの時、viewは正しく返ってこない、と考えて良いのでしょうか?
MySQLバージョンは、4.0/4.1/5.0になります。
803NAME IS NULL:2008/05/19(月) 11:48:56 ID:cfRUIA6l
MySQL を CentOS 5.1 で使っています。
一般クエリログを出すようにしているのですが、
このログファイルのローテートは MySQL 自身が
やってくれるのでしょうか?

それとも logrotate を設定しなければならないのでしょうか?
804NAME IS NULL:2008/05/19(月) 14:48:36 ID:???
質問です。
MySQLのソースインストールのconfigureで「--with-readline」オプションがありますが、
この設定はmy.cnf上で後から変更可能でしょうか?
805NAME IS NULL:2008/05/20(火) 07:40:10 ID:???
>>782
GPLと相容れないプログラムとリンクできない
806NAME IS NULL:2008/05/20(火) 11:56:52 ID:FPNVgIjN
phpMyBackupPro ってソケット経由では使えないのでしょうか?
807NAME IS NULL:2008/05/20(火) 21:51:22 ID:???
HEAPテーブルについて、マニュアルには「クライアント間で共有できる」
とありますが、接続毎に隔離されたHEAPテーブルは作れないでしょうか?
バージョン4.1です。
808NAME IS NULL:2008/05/20(火) 22:29:57 ID:GGh+9Iru
PHPでの例ですが

$sql = "UPDATE test SET count=count+1 WHERE id='1'";
$res = mysql_query($sql ,$con);

if($res==false){
// 実行されない場合の処理
}

と言うのをやろうとしたのですが、$resがtrueになります。
もしかして、UPDATEって、登録値が無い場合でもtrueになるのでしょうか?
バージョンは4.1.22を使っています。
809NAME IS NULL:2008/05/20(火) 23:46:08 ID:GuaauZDQ
質問です、
mysqldumpでダンプを取りたいのですが、
mysqldump -u root test > dump.sql と打つと
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near 'mysqldump -u root test > dump.sql' at line 1> dump.sql;
となります。
サイトをさんこうにしてやっていますが
うまくいきません。どこが原因でしょうか?
教えて下さいませ。
810NAME IS NULL:2008/05/21(水) 00:06:16 ID:???
>>807
接続が切れたときに消えてなくなってもいいのであれば、temporary テーブル。
811NAME IS NULL:2008/05/21(水) 00:07:10 ID:???
>>809
それ、mysql> プロンプトからやってないか?
812NAME IS NULL:2008/05/21(水) 00:08:42 ID:???
>>808
falseはSQLの実行エラーの場合です。
updateがあったかは、たしか 影響を受けた行数を取得する
関数があったと思うので実行後にそれを使ってください。
813NAME IS NULL:2008/05/21(水) 00:33:26 ID:O5tzPctu
>>811
コマンドプロンプトからやってますが何か?
814NAME IS NULL:2008/05/21(水) 00:53:14 ID:???
MYSQLを導入したんだけどPHPから接続できないですけどどうしてでしょうか?
MYSQLの設定を済ませて
PHP5のphp.iniの設定では
絵xtension=php_mysql.dllのところを;はずしました。
MySQLの動作もちゃんとしてます。
ですが、
<?php
phpinfo()
?>
上で確認したところMySQLの表示してないです。
mySQLのインストールはこちらのURLを参考にしました。
http://vine.1-max.net/MySQL.html
こちらには、php5-mysqlが乗ってなかったので追加して
インストールしました。
どこが悪いのでしょうか?


以下がバーションになります。
LINUX:vinelinux3.2
apache:1.3 場所:/etc/httpd/
php5:5.2 /etc/php5/
MYSQL:4.0 /usr/share/mysql/
815814:2008/05/21(水) 02:02:33 ID:???
自己解決しました。
816807:2008/05/21(水) 02:50:01 ID:???
>>810
早速有難う御座います。 temporary テーブルでやってみようと思います。
817NAME IS NULL:2008/05/21(水) 02:54:27 ID:???
MySQL 5.0.51a Linux版です。
全テーブルに更新時刻と挿入時刻カラムをつけ、
beforeトリガーでこれらを更新しようと考えていますが、
オーバーヘッドはどんなものでしょうか?
用途は中小規模のグループウェアみたいなものです。
もしオーバーヘッドが大きいならtimestampで更新時刻だけ
記録することも考えるのですが、挿入時刻もあった方がいいようなのです。

MySQLで設計するのは初めてで感覚がわからないので、
なんとなくで結構ですので助言をお願いします。
818NAME IS NULL:2008/05/21(水) 13:12:17 ID:2ndXeLqA
>>813
何お前
ずいぶんと偉そうだな
819NAME IS NULL:2008/05/21(水) 15:25:29 ID:???
>>813
理解できるようになってから出直せ
820>>813:2008/05/21(水) 22:05:35 ID:hrtOIMUi
出来ましたが何か?
821NAME IS NULL:2008/05/21(水) 23:17:40 ID:wc8hj2Sl
mysql 4.1.20 CentOS4.1で質問です。
mysql>select * from XXX; を実行し、結果が多い場合、最初の方の結果がスクロールし、コンソールから消えてしまいます。
ls | moreのような感じで、1画面ずつ見たい場合はどうすればよいでしょうか?
やり方がわからないので、bashから 
user$echo "select * from XXX;" | mysql testDB > result.txt のような感じでテキストファイルに落としています。

よろしくお願いいたします。
822NAME IS NULL:2008/05/22(木) 00:05:25 ID:???
>>821
limit
823NAME IS NULL:2008/05/22(木) 00:18:02 ID:???
>>821
mysql> pager less
824NAME IS NULL:2008/05/22(木) 00:18:18 ID:P5ig6HYl
質問させて下さい。
MySQL5.1を使用しています。

国内IPを判別する為に以下のようなデータを入力したのですがこれを元に
phpにアクセスしてきたipを国内かどうか(定義IP範囲に含まれているかどうか)判別したいのですが
どのような問い合わせをすれば良いでしょうか?
例えば、58.138.127.1をtable1に対してselectしても一致しないですし。当たり前ですが・・・
table1
---------------------------
ip
58.98.0.0/16
58.112.0.0/15
58.138.0.0/17
58.138.128.0/18
....

このような場合、範囲中にあるIPを全て下記のように生成し、登録してselectさせるしかないのでしょうか?
table2
---------------------------
ip
58.138.127.1
58.138.127.2
58.138.127.3
58.138.127.4
....

純粋なクエリ等の問題ではないのかもしれませんが、いくら考えても良い方法がみつからずほとほと困ってしまいました。
どうかお力添え頂けないでしょうか?宜しくお願い致します。
825NAME IS NULL:2008/05/22(木) 00:37:04 ID:???
cidrとip表記をごっちゃにしている時点でどうかと思うが、
phpがトリガならmod_geoipでも使ったらどうか?
826821:2008/05/22(木) 01:08:34 ID:???
>>822 >>823 解決しました。ありがとうございます!!
827824:2008/05/22(木) 01:09:18 ID:???
>>825
レス有り難う御座います。
早速調べてみます。
828NAME IS NULL:2008/05/22(木) 01:18:09 ID:???
>>824
MySQLのみでうちがやるなら、IPはINET_ATON()で整数保管。
マスクは別フィールドに保管。
比較の際は、IPの整数をマスクサイズでビット演算して比較。

現状のテーブルのままやるのなら、文字列だからMySQLの
正規表現関数を使うのが速度的にも妥当では。
829NAME IS NULL:2008/05/22(木) 02:19:27 ID:???
みんな文字化け回避するためにカラムごとに文字コード設定してるの?
830NAME IS NULL:2008/05/22(木) 08:19:01 ID:???

http://mainichi.jp/enta/geinou/graph/200805/21/?inb=yt
ネット証券会社が主催するFX(外国為替証拠金)取引コンテストの発表会が21日、都内で行われた。
コンテストに特別参加するグラビアアイドルの滝沢乃南さん、山本彩乃さん、折原みかさん、山口愛実さん、佐々木梨絵さん
の5人が顔をそろえ、シストレに挑戦する意気込みなどを語った。
同コンテストは、自分で作成したトレードソフトの機能を評価する「シストレソフト部門」と、
FX初心者でも安心の仮想マネーを使った取引を体験できる「トレード部門」で賞金総額2000万円を争う。
シストレ優秀ソフトは、最高2000万円までの範囲内で買い取りの可能性もあるという。登録受付は22日から。
仮想取引は6月2日〜09年4月30日までとなっている。



▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
https://www.click-sec.com/corp/guide/demo/
http://www.fx-gp.com/about/

▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
831NAME IS NULL:2008/05/22(木) 12:15:32 ID:???
>>824 >>828

PHP側でIPのチェックしたいならPrarのNet_IPv4
http://pear.php.net/manual/ja/package.networking.net-ipv4.php
832NAME IS NULL:2008/05/22(木) 12:26:36 ID:???
PrarじゃなくてPearでした。
833NAME IS NULL:2008/05/22(木) 19:08:36 ID:???
varchar (n)の使用バイト数はn+1とのことですが、それなら
本来は100文字までのデータしか入力しないカラムでも
varchar(255)とtinytextの限界で作成しておいて、
アプリ側の入力チェックで100文字制限をするという方針はありでしょうか?

制限を100文字以上に拡張したくなったとき、アプリ側のチェックだけ直して
テーブルは変更する必要がなくていいのではないかと思うのですが。
834NAME IS NULL:2008/05/22(木) 21:54:45 ID:???
>>833の便乗質問ですが各データ型で使用するバイト長ってどこでわかりますか?
835NAME IS NULL:2008/05/23(金) 01:26:43 ID:???
>>834
http://dev.mysql.com/doc/refman/5.1/ja/storage-requirements.html

>>833
別に自分のしたいようにすればいいんでね?(自分にとって、管理しやすいほう、扱いやすいほうで)
ただ、fixed formatでテーブル作成してるんなら、discには実際使ってない部分の領域も書き込まれるけどね。
836834:2008/05/23(金) 01:41:31 ID:???
>>835
ありがとうございます!助かりました
837NAME IS NULL:2008/05/23(金) 21:38:08 ID:Dt8inalF
SQL文だけで、半角カナを全角カナにする方法(関数)って、ありますでしょうか?
838NAME IS NULL:2008/05/24(土) 02:02:00 ID:???
搭載物理メモリ48Gのサーバーで、大きな単一テーブル(80G程度)を上手く扱う方法って無いですか?
(そのテーブル対して、更新&参照&集計が頻繁に発生すします。)

my.conf-hugeを元にいろいろチューニングを試してみたんですが、
io-waitが100%に刺さったまま、ハングしたようになり困っています。

開発当初はoracle案件で、ありきたりのチューニングだけで、問題なく動作していたのですが、
クライアントの方針変更で、急にMySQLで開発することになり、非常に難儀しています。
(ちなみに案件規模は、楽天クラスの商品在庫管理です。)
839NAME IS NULL:2008/05/24(土) 02:15:08 ID:/LSToqrf
その規模になると、MySQLでは、どうやっても無理。パフォーマンスや安定性の面でもお薦めしない。
クラに泣き付いてでも、オラクルに戻してもらえ。
840NAME IS NULL:2008/05/24(土) 02:20:15 ID:???
単一tblって時点で何だかな〜…
大規模すぎてMySQLの範疇じゃないだろ
841NAME IS NULL:2008/05/24(土) 02:36:57 ID:???
>>839-840
ありがとうございます。でも、それは無理っぽいです。

クライアントのライバル会社が全社的にOpenOfficeを採用したとかで、新聞に載ったらしく、
クライアントの経営トップがそれに対抗して、バックエンドにオープンソース採用の方針を
打ち出したいらしく、私が土下座するくらいでは受け入れられそうにも無いです。
842NAME IS NULL:2008/05/24(土) 02:49:35 ID:/LSToqrf
かなり痛いトップだな。
コッド博士クラスの優秀なDB開発者を雇ってMySQLを改造してもらえ。
843NAME IS NULL:2008/05/24(土) 03:34:26 ID:VAruVHOx
バカ相手してても身体壊すだけだから辞めちゃえw
844NAME IS NULL:2008/05/24(土) 03:39:53 ID:???
>>841
土下座て。
やるだけの事はやってちゃんと検証データとボトルネック、仕組み的に無理ですって事を踏まえた上で
それでもなんとかしろと言うならやりますが、紆余曲折、最悪こういう想定事態になりますが
よろしいですか?ってクライアントと折衝する人に言ってもらえばどうでしょうか。
自分の仕事は最低限筋の通った理屈を報告して折衝担当者に理解してもらうこと。
もちろん前向きにね。
自分の仕事を理解し、精一杯やるだけやってしっかりとこなした上で無理難題言う上司や客に必要以上の負担を強いられる道理はないでしょ?
ただその事を丁寧にビジネス用語で当たり障り無く表現して相手に理解、納得してもらうよう「伝える」努力は必要ですけど。

私もそこまでのデータの運用経験はないけど、微力ながら言わせてもらうと
■ハード面
・SASでRAID0+1 ファイバーチャネル使えるならそれに越したことはないけど。
=> ディスクの読み込み速度が上がって結果的にMySQLの更新・参照・集計早くなります。
=> バックアップできます。三世代管理くらいまではしたほうが幸せになれるかも。
=> RAIDはライトキャッシュとBBUのついているものを使用 なるべくキャッシュは多い方がいいです。
2GとかつけれるのもあるけどRAIDカード選びは慎重にね。
ディスクはシークタイムがあるから10000rpmのもので秒間16コミットしかできない
ライトキャッシュ積むといっぱいコミットできます

・レプリケーション
=> レプリケーションしているとは思うけど、なんとなくしてなさそうな節があるのでやって見て下さい。
スレーブサーバに参照を掛けるとスレーブの台数分だけ参照はバンバン早くなります。
ただし、マスターと完全同期ではないので入金処理等精度の必要な部分はマスターを使って下さい。
アプリケーション側でのスレーブ参照制御が面倒なら間にLVSでもなんでもいいからロードバランサー仕込むと吉

・memcacheサーバ
=> 80G程度ならサーバ10台以内で構築できると思う
更新はライトスルーでMySQLにも書いて単純参照はmemcacheからすると涙でるほど早い。
但しきちんと両方更新されたか確認、制御する仕組みは必要。

ソフト面に続く
845NAME IS NULL:2008/05/24(土) 04:32:39 ID:???
■ソフト面
・設計の見直し
=> 詳細知らないので絶対とは言えませんが、MySQL用にテーブル設計、運用設計見直した方がいいと思います。
単一テーブル80Gは異常に思えます。
同一テーブルを複数作って分割・分散したり非正規化してみたり。
内部の詳しい人に相談して下さい。詳細知らないと設計はできません。

・インデックスの見直し
=> 当然ですがインデックスの付け方と発行クエリでMySQLの速度は1000倍違うこともあります。
複合インデックス、プライマリ、単一ユニーク、複合ユニーク気を付けながらexplainしてチューニング。

・クエリの見直し
=> これもexplainしながらチューニング 色々調べてみてください。
=> 拡張インサート、INSERT IGNORE等を使うと便利な局面もあるかもしれません。
=> 集計は、トリガを使ってインサート時に集計値をインクリメントしたりすると負荷がさけれます。
=> DELETEは実行コストが高いので、削除フラグを付けて対応する。一日一回纏めてDELETE処理する等

・MyISAM、InnoDB
=> 参照はMyISAM、更新はInnoDB。
ライトスルー、レプリケーションと合わせて使えばパフォーマンス全然違います。
MyISAMはライトロックが有効かもしれません。デッドロックに気をつけて。

・コンパイル
=> MySQLはソースからICCでコンパイル。速いっす。

・文字コード
=> できればUTF-8。一番苦労しなくて済みます。MySQLの内部コードもUTF-8。

・チューニング
=> ケースバイケースなんでなんとも言えませんが
tmp_table_size
max_heap_table_size
は同じ値にしないとダメですよー
query_cacheをしてみてください
禁断のチューニング
innodb_support_xa = OFF
innodb_flush_method = O_DIRECT
sync_binlog = 0
innodb_flush_log_at_trx_commit = 2
innodbを使用している場合上記設定だとディスクIOがガンガン減るので更新負荷がガクンと下がります。
ただし、データの保存性は最悪。
予期せぬマシンダウンがあれば復旧できない場合もあります。

・専門のコンサル
=> 実現までの早さと質が必要ならMySQLに習熟してる会社にコンサル依頼するのが一番早いような気が・・・
KLABさんにでも頼んでみたら?とふと思いました。
私も規模が大きくなるに連れて運用に悩まされ、夢の中のトイレで自分のションベンの放物線を眺めている時でさえMySQLの事を
考えていた時期が三ヶ月ほどありました。
データもいっぱい壊しました。いっぱい怒られました。あぁ思い出したらトイレに行きたくなってきたのでこれくらいで。
846NAME IS NULL:2008/05/24(土) 04:38:50 ID:???
追記:あっSUNが買収してオープンソースでなくなるんじゃなかったっけ?
847NAME IS NULL:2008/05/24(土) 08:15:30 ID:???
>>844-846
実例を入れて膨らませて、本にしてくれませんか。絶対買います。
848NAME IS NULL:2008/05/24(土) 08:50:47 ID:???
( ;∀;) イイハナシダナー
849NAME IS NULL:2008/05/24(土) 13:53:59 ID:???
>>844
ありがとう、めっさ参考になった。
850NAME IS NULL:2008/05/24(土) 20:05:43 ID:???
>>844-845
ちょっと、ブログかなんかに書いておくれよ
851NAME IS NULL:2008/05/24(土) 21:17:02 ID:???
 
852NAME IS NULL:2008/05/25(日) 11:54:18 ID:G//yp2T+
テーブルの結合に関しての質問です。

MySQLでテーブルを結合する方法として以下の二つがあります。
1.select * from HOGE as a, FOO as b where a.id = b.id
2.select * from HOGE as a inner join FOO as b on a.id = b.id

この二つの方法のうち、どちらが人気でしょうか?
また、性能の違いはありますでしょうか?
853NAME IS NULL:2008/05/25(日) 13:58:22 ID:CfdJAAug
まぁ単に
結合条件をFROM句に書いたか
WHERE句に書いたかの違いだけだと思うけど。
性能の違いはないんじゃないかな?
1のように結合条件をWHERE句にごちゃごちゃとかくよりも
2みたいにFROM句に書いたほうが
テーブルとの関係が分かりやすいのはあるかもね。
でも自分は1の方法が多いかな。

以上、末節ながら。。。
854NAME IS NULL:2008/05/25(日) 15:30:43 ID:???
MySQL5.1で2GBほどのデータベースをインポートしているんですが、すでに170時間以上経過しています
DB元のサイトによると予想時間が八時間ということですが、同じように予想時間二時間のファイルをインポートした時は16時間かかりました
170時間以上経過というのは異常でしょうか? また原因はどこにあるでしょうか?
スペックはCPU:Celeron2.2G,Mem:DDR333の512MB,HDD:UltraATA/100の40GB、Ubuntu8.04上で動かしています
855NAME IS NULL:2008/05/25(日) 15:50:29 ID:???
>>854
MySQL詳しくないんだが、インポートの途中経過とかログに出せないの?
CPU使用率とかディスクアクセス見るしかない?
856NAME IS NULL:2008/05/25(日) 15:54:12 ID:???
>>855
作業を始めてからGUIの動作を受け付けなくなりましたorz
さっき調べたら途中経過を出すステートメントを見つけましたが、作業中でコマンド入力不能……

一度落としてデータベースを空にしてから再開しようかと迷ってます
857NAME IS NULL:2008/05/25(日) 17:20:47 ID:???
>>854
メモリーが少なすぎないか?
せめて1GBは無いと、その規模では予想時間の倍の時間がかかるイメージ。
858NAME IS NULL:2008/05/25(日) 18:14:09 ID:???
>>854
データベース区切った方が早いよ
自分の場合、1GBちょっと約700万のデータを50万レコードごと区切って入れたら1時間くらいだった。
あと基本だけど
・リモートよりサーバにUPしてから、コマンド打って入れたほうが数倍早い
・INSERT文はマルチインサートの方が数十倍早い
・インデックス貼ってるなら削除してからの方が早い

因みに環境はCPU:Athlon 3200 ,Mem:1GB
859NAME IS NULL:2008/05/25(日) 21:50:45 ID:???
charとvarcharが拡張されて65535バイトまで格納できるようになった今
text型を使う意義ってあるのでしょうか?
860NAME IS NULL:2008/05/26(月) 08:30:12 ID:anlWXK4f
text型は例えば「備考」とか「理由」とかいう長文が入る可能性のカラムに対して
明示的に使うことがあるよね。
861NAME IS NULL:2008/05/26(月) 08:35:58 ID:???
txtにしないと内部検索できねーだろ
862NAME IS NULL:2008/05/26(月) 14:24:40 ID:???
お忙しいところ恐れ入ります。下記のように設定したいのですが、
syntaxエラーが出てしまい困っております。
どのように改修したら宜しいでしょうか?
アドバイス頂ければと思います。

create table m_user(
No integer PRIMARY KEY AUTO_INCREMENT,
ID char(8) UNIQUE KEY,
password varchar(20),
name varchar(20),
mail_address varchar(50),
authority varchar(2) NOTNULL);

エラー内容は下記です。
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'NOTNU
LL)' at line 7
863862:2008/05/26(月) 14:42:08 ID:???
追記で申し訳ありません。
MYSQLのVerは5.0です。
宜しくお願いいたします。
864NAME IS NULL:2008/05/26(月) 14:46:05 ID:???
NOTNULL じゃなくて NOT NULL でしょ。
865854:2008/05/26(月) 14:51:12 ID:???
メモリ増設してきました!
一気に三倍の1.5GBにして、HDD領域も少し増やして、改めてテーブルを用意して流し込んでます
結果が出たらまた報告しますね
866862:2008/05/26(月) 14:53:13 ID:???
>>864
ありがとうございました。
なんという・・・俺バカ><
ありがとうございました!
867NAME IS NULL:2008/05/26(月) 21:30:33 ID:+Ce61WTV
怒られそうな質問なんですけど、
コマンドプロンプトでmysql -u root -pって入力した時に入れるパスワード
ってなんですか?
xamppでphpと一括でインストールして始めてやってみようとしたんですけど・・・
868NAME IS NULL:2008/05/26(月) 21:51:49 ID:+Ce61WTV
>>867です
サイトで調べて、mysqladmin -u root password パスワード
と入力したら、
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost (using password: NO)
と出たんですけどどうゆう意味ですか?
869NAME IS NULL:2008/05/26(月) 21:52:09 ID:???
とりあえず -p なしにしてみたら、どうなる ?
870NAME IS NULL:2008/05/26(月) 22:02:48 ID:MQWbRVv1
mysqladmin -u root
っていれたら、英語がいっぱい出てきました!
871NAME IS NULL:2008/05/26(月) 22:12:38 ID:???
とりあえず -q つけてみたら、どうなる?
872NAME IS NULL:2008/05/26(月) 22:18:08 ID:t8RRxsu7
-pって付け足しても同じようなのが出てきました。
873NAME IS NULL:2008/05/27(火) 02:23:53 ID:mN2Gb71B
インスコした時のぱ素ワード入れろよ
874NAME IS NULL:2008/05/27(火) 03:55:09 ID:???
商品テーブルにある、商品単価*数量の結果を
注文明細テーブルにある金額カラムに
自動でインサートしたいんですが何か方法はありますか?

たとえば、
商品単価=100
数量=3
だったら、自動で金額カラムに300とインサートしたいです。
数量を4に変更したら金額が400になって欲しいです。
875NAME IS NULL:2008/05/27(火) 03:58:05 ID:???
サブクエリでいいのでは?
876NAME IS NULL:2008/05/27(火) 03:58:35 ID:???
バージョン書いてないから、解らんけど、トリガー使えば?
877NAME IS NULL:2008/05/27(火) 05:31:49 ID:???
明細インサート、アップデート時に、その計算項目入れれば
878NAME IS NULL:2008/05/27(火) 10:59:28 ID:???
Oracleのストアドプロシージャだと、
INSERT文の中に、算術記号も使えた。

INSERT INTO tbl (金額) VALUES (商品単価*数量);

MySQLも似たようなことが出来るはず。
879NAME IS NULL:2008/05/27(火) 13:35:56 ID:???
「はず」じゃなくて、5.0からできる
880NAME IS NULL:2008/05/27(火) 19:03:30 ID:???
皆さんテーブル名やカラム名は、普通どんなフォーマットにしてる?
「TABLE_NAME」とか大文字とアンダバー組み合わせて統一?

本やググっても「これが定番」という資料がみつからないんで、ちと困ってます。
881NAME IS NULL:2008/05/27(火) 19:05:03 ID:???
itirou とか matui とか matuzaka とかにしてる
882NAME IS NULL:2008/05/27(火) 19:08:35 ID:???
>>880
別に特に気にしてない。気分次第かな。
カラム名については、外部参照するようなidなんかは、
"なんたら_id"みたいな感じ。
ちなみに、大文字小文字については、Unix環境だけでなく、
まったく同じ構成のDBをWin環境でもテストとかするから、小文字で統一。
883NAME IS NULL:2008/05/27(火) 19:14:31 ID:???
SQLの予約語を大文字で書く習慣があるからテーブルやカラム名は小文字
884880:2008/05/27(火) 19:34:23 ID:???
>>881-883
なるほど。参考になります。
小文字に統一しとこう。ありがとうございます。
885NAME IS NULL:2008/05/27(火) 21:15:40 ID:???
>>880
2byteだけはやめとけ。
英語でもローマ字表記でもいいから、ASCII文字の方がOSが変わっても扱いやすい。
886NAME IS NULL:2008/05/28(水) 00:37:08 ID:???
hoge
-----------------------------------
id int
name VARCHAR(128)
priority TINYINT(2) DEFAULT 1
-----------------------------------

こんなテーブルがあったとして以下の条件でデータをとるにはどうすればいいでしょうか?

カラムは5つ
ランダムでとる
priority(優先度)が高いものが選ばれる可能性を高くする


5つとる・ランダムは以下でできますが
SELECT * FROM `hoge` Order By rand() limit 0,5;
優先順位を考慮に入れるとり方が思いつきません。
正確(完璧なアルゴリズム)ではなくてもいいのでご鞭撻のほどお願いします。
テーブルのつくりに問題がある場合もおっしゃっていただけると助かります。

今考えているのは
先に優先順位でソートして上位数件取得
そこからランダム取得
です。
887NAME IS NULL:2008/05/28(水) 02:27:58 ID:???
>>886
優先順位が高いと当たる確立が上がる という意味でしょうか。
その場合でしたら、やり方はいろいろあるでしょうけど、
シンプルなのは優先順位の値に従い該当レコードを
重複させたリストを作り、それに対してランダム取得など。
888NAME IS NULL:2008/05/28(水) 03:40:11 ID:???
>>886
今即席で考えてみた。
priority の値を1〜5として、
select *,(rand()*5 + priority) as rand_col from hoge order by rand_col desc limit 1;
みたいな感じでどうか。(実際はpriorityの数値と、rand()*nのnを適切に与えてやらないといけないが・・)

上の例を、レコード5件、priorityを1.2.3.4.5としてやってみて、10000回の結果(それぞれのidが最大になった回数)
(priorityの値が大きいほうが選ばれやすい。言葉の意味的には逆なような気が??)
1 = 28
2 = 259
3 = 1058
4 = 2767
5 = 5888

割合的には、(約)1:10:40:100:200
もっときれいに分かれるかと思ったけど、微妙だな・・・。
(文系脳ではここら辺が限界、スマソ)
889NAME IS NULL:2008/05/28(水) 09:11:48 ID:l7349jpG
文字コードの変更方法がわからないです。
my.cnfファイルの
[mysqldump]と[client]部分にdefault-character-set=utf8
と記述したんですが、コマンドプロンプトで
Show VARIABLES LIKE 'CHAR%'; と入力し確認したんですが、
latin1のままになってます。
どうすれば変更できますか?
890NAME IS NULL:2008/05/28(水) 10:49:33 ID:???
init-connect='SET NAMES utf8'
891NAME IS NULL:2008/05/28(水) 15:09:44 ID:OeWwUjG2
max_connection ってデフォルトで 100 だったのか・・・
確認せずにボロボロこぼしてしまった.
まぁローカルのサービスだったからよかったけど.
892NAME IS NULL:2008/05/28(水) 15:40:03 ID:NgaxVuoB
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
死ぬとき このレスの事思い出してから地獄いけよ
ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
893889:2008/05/28(水) 17:31:34 ID:xeQEQXZc
>>890
どこの部分に書き込めばいいんですか?
894NAME IS NULL:2008/05/28(水) 18:18:08 ID:???
[mysqld] で
895NAME IS NULL:2008/05/28(水) 18:48:13 ID:???
>>892
落ち着けw
896NAME IS NULL:2008/05/28(水) 19:38:46 ID:???
MySQLでPHPのアプリ作ったら、アプリのソース公開しなきゃいけないっていうのは本当ですか?
GPL汚染とはいえ、SQL叩いただけでというのは意味が分からないんですが・・
897NAME IS NULL:2008/05/28(水) 20:05:24 ID:???
レプリケーションについて、MySQLのマニュアルに、
「MySQL 4.0.2 はレプリケーション目的には適しません」
とありますがこれは何故なんでしょうか?
現在4.027を使っています。
898NAME IS NULL:2008/05/28(水) 20:15:15 ID:???
主キーを追加するのに
ALTER TABLE address ADO PRIMARY KEY (NUMBER);と入力したら、

ERROR 1064 (42000): You habe an error in your SQL syntax; check the manulal that
corresponds to your MySQL serber version for the right syntax to use near
'ADO PRIMARY KEY(number)' at line 1

とゆうエラーが出たんですけどどうゆう意味ですか?
899NAME IS NULL:2008/05/28(水) 20:15:38 ID:???
>>896
アプリ販売するなら一応そうだけど、MySQL+PHPの場合は回避されるはず。それで一回MySQLのサポート外したから>PHP
900ほい!:2008/05/28(水) 20:51:36 ID:3lvkdlof
ほい!
「にっこっこ掲示板」ヤフーで検索してみ!「にっこっこ」でOK
新しいの誕生したよ
まだ規制ないし、色々貼れる
901NAME IS NULL:2008/05/28(水) 20:56:27 ID:???
>>899
そうですかありがとうございます :]

902854:2008/05/28(水) 22:46:11 ID:???
データベースインポート中だった854です。
無事に60時間で作業完了しました!
メモリの増設は効果覿面だったみたいです。
903NAME IS NULL:2008/05/28(水) 23:18:52 ID:???
>>902
結局、どういう方法でインポートしたの?
他の人間の為にも、報告よろ
904NAME IS NULL:2008/05/29(木) 01:27:03 ID:???
>>902
おつかれw
そこの環境だと予想の8倍かかると覚えておけばよいのかなw
905NAME IS NULL:2008/05/29(木) 11:47:29 ID:???
>>898
ADOがTYPOでは?
906NAME IS NULL:2008/05/29(木) 11:51:28 ID:???
>MySQL serber version for

これエラーメッセージからのコピペ?
907NAME IS NULL:2008/05/29(木) 11:51:36 ID:???
>>905
察してやれ。なにしろ you habe に serber だ。
908NAME IS NULL:2008/05/29(木) 11:55:27 ID:???
>>903
MySQLは初めて触れたので、入れたいプログラム
http://www.perseus.tufts.edu/hopper/)の指示通りに
mysql -uユーザー -p データベース名 < importfile.sql
でやりました

>>904
ですねー
一万円で買ったパソコンならこのスピードでも大満足ですwww
909NAME IS NULL:2008/05/29(木) 12:28:55 ID:???
>>908
やっぱりそうか。実は>>854の時から気にはなってたんだが、

http://bugs.mysql.com/bug.php?id=33057

このバグに関係ありかもしれない。
5.0では5.0.52〜5.0.54まで、5.1でも5.1.22とかはコレに該当しそう。

ウチでも、5.0.51ではほんの数秒で完了するインポートが、5.0.52で数分〜十分位かかったから
調べてみて発見した。ちなみに、5.0.56以降、5.1.23以降はFixされてる。
910名無しさん@Vim%Chalice:2008/05/29(木) 17:01:38 ID:VDNC7sY4
mysql workbenchについて質問です。
このソフトってmysql以外のRDBMSに接続することって可能でしょうか?
可能な場合、その種類について教えてください。
リバース、フォワードエンジニアリングができればよいと考えています。

よろしくお願いします。
911NAME IS NULL:2008/05/30(金) 01:21:05 ID:???
ttp://mainichi.jp/enta/geinou/graph/200805/21/?inb=yt
ネット証券会社が主催するFX(外国為替証拠金)取引コンテストの発表会が21日、都内で行われた。
コンテストに特別参加するグラビアアイドルの滝沢乃南さん、山本彩乃さん、折原みかさん、山口愛実さん、佐々木梨絵さん
の5人が顔をそろえ、シストレに挑戦する意気込みなどを語った。
同コンテストは、自分で作成したトレードソフトの機能を評価する「シストレソフト部門」と、
FX初心者でも安心の仮想マネーを使った取引を体験できる「トレード部門」で賞金総額2000万円を争う。
シストレ優秀ソフトは、最高2000万円までの範囲内で買い取りの可能性もあるという。登録受付は22日から。
仮想取引は6月2日〜09年4月30日までとなっている。



ttp://www.fx-gp.com/
●社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
https://www.click-sec.com/corp/guide/demo/
912NAME IS NULL:2008/05/30(金) 03:26:51 ID:???
val_table
number int auto_increment,
title VARCHAR(100) NOT NULL

tag_table
number_tag int auto_increment,
number int,
title VARCHAR(100) NOT NULL


タギングテーブル(tag_table)と商品テーブル(var_table)から検索する際の取り方なのですが、
val_table.titleとtag_table.title(複数の場合や存在しない場合もある)からlikeで調べたいのです。

ただ、タグが複数ある場合、存在しない場合などの際、うまくとれません。
複数ある場合はCONCATで結合、タグが存在しない場合はval_tableのtitleのみから調べて返してほしいのですがどうすればいいでしょうか?

SELECT a.title from hoge_table a,tag_table b where a.number = b.number;
913NAME IS NULL:2008/05/30(金) 06:49:37 ID:???
>タグが複数ある場合、存在しない場合などの際
LEFT JOIN

select a.number,a.title,b.title from val_table as a LEFT JOIN tag_table as b on (a.number = b.number_tag);

>複数ある場合はCONCATで結合
GROUP_CONCAT() # mysql 独特なので注意

select min(a.number),min(a.title),GROUP_CONCAT(b.title) from val_table as a LEFT JOIN tag_table as b on (a.number = b.number_tag) GROUP BY a.number;
914NAME IS NULL:2008/05/30(金) 13:16:38 ID:???
>>897
4.0.2はわからんが、
数年前の4.0.xx(忘れた)のころはレプリケーションにバグがあって
マスターとスレーブの内容が一致しないなんてことが起こった。
その後なおったはずだけど…
915NAME IS NULL:2008/05/30(金) 13:29:24 ID:eZR1pwPY
>>914
そんなので何のために使えるんだろうか・・・
参照系の不完全な負荷分散専用?
916965:2008/05/30(金) 16:36:34 ID:???
>>913さん
ありがとうございます!
結合はそれでいけました。

ただ、GROUP_CONCAT(b.title)をlike 検索できません。
GROUP_CONCAT(b.title) As tags
にして
tags like "%test%"
してみたのですが
unknown column になります。
917912:2008/05/30(金) 16:48:56 ID:???
名前間違えました。。。
そしてHAVING でできました。
913さんほんとうにありがとうございます。
918NAME IS NULL:2008/05/30(金) 19:56:01 ID:Z2jF5HUG
田舎DQN男の家族消えろ 田舎DQN男の親消えろ 田舎DQN男の子供消えろ 田舎DQN男の親戚消えろ
田舎DQN男の家族消えろ 田舎DQN男の親消えろ 田舎DQN男の子供消えろ 田舎DQN男の親戚消えろ
田舎DQN男の家族消えろ 田舎DQN男の親消えろ 田舎DQN男の子供消えろ 田舎DQN男の親戚消えろ
田舎DQN男の家族消えろ 田舎DQN男の親消えろ 田舎DQN男の子供消えろ 田舎DQN男の親戚消えろ
ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
死ぬとき このレスの事思い出してから地獄へ行けよ
ニヤ(・∀・)ニヤ(・∀・)
919NAME IS NULL:2008/05/30(金) 21:17:36 ID:XvuF1EUT
XAMPPのmysqlについての質問です。

rootのmysqlのパスワードをリセットしようとしているのですが、
うまくいきません。

xamppに付属のバッチファイルでパスワード削除できるとFAQに書いてあるのですが、
mysql\resetroot.bat がエラーで動作しません orz

apache friends - xampp windows版faq
http://www.apachefriends.org/jp/faq-xampp-windows.html#password2

エラー内容は、下記です。

ERROR: 1136 Column count doesn't match value count at row 1
080530 21:10:06 [ERROR] Aborting

080530 21:10:06 [Note] bin\mysqld.exe: Shutdown complete


Passwoerter fuer Benutzer "root" und "pma" wurden geloescht.
Passwords for user "root" and "pma" were deleted.

続行するには何かキーを押してください . . .


また同じエラーの下記の対処をしても同じエラーがでてしまました。

リアルシステムズ/IT化・情報化・ホームページの企画・設計・開発:xamppのmysqlでrootパスワードがresetroot.batでリセットできない
http://blog.livedoor.jp/real_systems/archives/51166848.html

どうにかパスワードをリセットする方法はないでしょうか?
920NAME IS NULL:2008/05/30(金) 22:49:27 ID:???
コマンドプロンプトから直接mysqlを叩く
921919:2008/05/31(土) 03:43:29 ID:P9Fe+Y8M
てか、よく考えたらものすごい環境依存っぽいのでxamppのBBSで聞いてきます。
解決しましたらこちらに報告に来ます。
お騒がせしました。
922NAME IS NULL:2008/05/31(土) 10:54:59 ID:w17RNyoM
mysqlで
絶対に打ち込んではいけないコマンドを
私に伝授してください!!!!!!
923NAME IS NULL:2008/05/31(土) 11:52:21 ID:???
DROP TABLE tbl
924NAME IS NULL:2008/05/31(土) 11:54:53 ID:???
select
925NAME IS NULL:2008/05/31(土) 11:55:21 ID:???
>>922
drop database mysql
926NAME IS NULL:2008/05/31(土) 12:01:48 ID:???
exit
927NAME IS NULL:2008/05/31(土) 12:57:23 ID:w17RNyoM
>>925
こら〜!
とんでもないことなってもうたやないかい!
928NAME IS NULL:2008/05/31(土) 13:13:36 ID:yOEBInyW
しかし管理用のデータベースまで普通に見えるのはどうかとも思う。
ファイルシステムでもおなじか
929NAME IS NULL:2008/05/31(土) 13:18:08 ID:???
そうか?
包み隠さないことはいいことだ。
930NAME IS NULL:2008/05/31(土) 13:31:42 ID:???
>>928
まったくだ。 grant なんとか on *.* が mysql.* まで含んでしまうのは、まずいと思う。
まあ *.* するのがまずいんだろうけど。
931NAME IS NULL:2008/05/31(土) 13:36:25 ID:???
>>928
いい加減さもウリの1つです。
932NAME IS NULL:2008/06/01(日) 17:46:19 ID:???
305 Query SHOW COLLATION
305 Query SET NAMES ujis
305 Query SET character_set_results = NULL
305 Query SET autocommit=1
305 Query SET sql_mode='STRICT_TRANS_TABLES'
305 Query SET NAMES sjis <-------これは誰が発行しているのかわかりません

305 Query UPDATE tab1 SET name = 'jdbc 修正 myjava3.java', note = 'myjava   jdbc 修正 ' WHERE number = 70
305 Quit

java のコードに sjis に設定しているってこと?
| character_set_client | ujis |
| character_set_connection | ujis |
| character_set_database | ujis |
| character_set_results | ujis |
| character_set_server | ujis |
933NAME IS NULL:2008/06/01(日) 20:57:44 ID:???
自己解決
934NAME IS NULL:2008/06/01(日) 21:26:07 ID:???
解決案も書かないと。
935NAME IS NULL:2008/06/01(日) 23:39:26 ID:???
ブラウザを立ち上げて
2chを開いて「自己解決しました」
と書き込む
936NAME IS NULL:2008/06/02(月) 16:59:47 ID:???
MySQL4.1.2のテーブル結合について質問させてください。

test テーブル
| id | name | group_id |
+-----------------------+
| 1 | test1 | 0 |
| 2 | test2 | 1 |
| 3 | test3 | 0 |
| 4 | test4 | 1 |
| 5 | test5 | 2 |
| 6 | test6 | 2 |

group テーブル
| id | name |
+-------------+
| 1 | group1 |
| 2 | group2 |

上記のテーブルを結合し、下記結果のように
testテーブルのgroup_idが1以上のデータのみ、
group_idでグループ化して表示させることは可能でしょうか。

| test_name | group_name |
+-----------+------------+
| test1 | NULL |
| test2 | group1 |
| test3 | NULL |
| test5 | group2 |

下記のSQL文を実行してみるも、
group_idを持たないデータまでグループ化されてしまいます。

select test.name as test_name,group.name as group_name
from test
left join group on test.group_id = group.id
group by test.group_id

| test_name | group_name |
+-----------+------------+
| test1 | NULL |
| test2 | group1 |
| test5 | group2 |
937NAME IS NULL:2008/06/02(月) 17:12:43 ID:???
自分だけで解決したのに、なんで役立たずの君たちに教えてあげなくちゃならんのだ
938NAME IS NULL:2008/06/02(月) 17:38:59 ID:???
>>937
面白い発想だ
939NAME IS NULL:2008/06/02(月) 18:02:25 ID:???
思い切って質問させていただいたのですが間違いのようでした。
失礼いたしました。
940NAME IS NULL:2008/06/02(月) 18:35:28 ID:???
>>936
group by の値をユニークにしてやればいいのだから、たとえばこんな感じ?

select min(a.name),b.name from test as a left join group as b on (a.group_id = b.id)
group by case when a.group_id > 0 then a.group_id else a.id -100 end;

-100 はユニークにするためのいい加減な値なので、適当に。
group のような予約語はテーブル名にしない方がいいような気がする。
941NAME IS NULL:2008/06/02(月) 18:57:44 ID:???
4.1.2ではなく5.0を使っているからちょっと判らんけど
left join での接続方法を変えてみたらどうなんだろう

SELECT test.name,group.name,test.id,group.id FROM group LEFT JOIN test ON test.id = group.id GROUP BY group.id HAVING test.group_id > 0

テストテーブル作るのが面倒だったから直書きだから動かなかったらスマン
942NAME IS NULL:2008/06/02(月) 19:01:45 ID:???
あーケアレスミス

SELECT test.name,group.name,test.group_id,group.id FROM group LEFT JOIN test ON test.group_id = group.id GROUP BY group.id HAVING test.group_id > 0
943NAME IS NULL:2008/06/02(月) 19:52:21 ID:???
恥ずかしながら再度確認しに来てしまいましたが、
レスをいただいており、大変感謝いたします。

>>940
>>group のような予約語はテーブル名にしない方がいいような気がする。

例としてわかりやすいテーブル名にしようと思い、
とんだミスをしてしまいました…。気を付けます。

>>select min(a.name),b.name from test as a left join group as b on (a.group_id = b.id)
>>group by case when a.group_id > 0 then a.group_id else a.id -100 end;

この方法で解決できました!
テスト用でも本DBでも正常に動作しました。ありがとうございます。

>>942
>>SELECT test.name,group.name,test.group_id,group.id FROM group LEFT JOIN test ON test.group_id = group.id GROUP BY group.id HAVING test.group_id > 0

この方法も試させていただきました。
すると、group_idを持たないデータは表示されなくなるようです。

| test_name | group_name |
+---------+-----------+
| test2 | group1 |
| test5 | group2 |

しかしながら、大変勉強になるレスをいただきまして
ありがとうございました。
944NAME IS NULL:2008/06/03(火) 20:53:33 ID:9lp1uw3k
mysqlマスターでさえ
打つのをしり込みする
コマンドを
もしあれば
伝授してください!
945NAME IS NULL:2008/06/03(火) 21:28:22 ID:???
>>944
マスターじゃないけど rm -rf でディレクトリを削除するのはやっぱり
不安だよ。何回も確認する。
946NAME IS NULL:2008/06/04(水) 11:22:18 ID:???
 質問させていただきます。
最近、パーティショニングを使い始めました。
やりたいことはPARTITION BY KEY()を使用したパーティショニングをし、
分割したデータやインデックスをdisk分散させるということなのですが、
これを実現させるには個々のパーティションに対し、DATA DIRECTORYと
INDEX DIRECTORYを地道に指定していくしかないのでしょうか?
947NAME IS NULL:2008/06/04(水) 16:53:49 ID:sTUXwMfM
UPDATE test SET name='aaa' WHERE id='1'
UPDATE test SET name='bbb' WHERE id='2'
UPDATE test SET name='ccc' WHERE id='3'

と言うように、各レコードを更新するに辺り
上記のように3回のSQLを実行せずに、まとめて1回で実行する
方法はありますでしょうか?
948NAME IS NULL:2008/06/04(水) 17:20:59 ID:???
UPDATE test SET
 name=IF(id=1,'aaa),
   IF(id=2,'bbb',
    IF(id=3,'ccc', 'xxx')
   )
 )
WHERE id in (1,2,3)
949NAME IS NULL:2008/06/04(水) 17:44:01 ID:???
それで速くなるの?
950NAME IS NULL:2008/06/04(水) 17:46:30 ID:???
試せばわかるんじゃね?
951NAME IS NULL:2008/06/04(水) 19:41:26 ID:???
ぐぁぁああぁ…replace into って、delete → insert だから、
autoincrement のフィールドの値が変わるじゃねぇか…。
952NAME IS NULL:2008/06/04(水) 23:33:29 ID:R8ngxTCT
mysqlで誰にも知られていない
秘密のコマンドがあると聞いた
そのコマンドとは?
953NAME IS NULL:2008/06/04(水) 23:46:50 ID:???
とりあえずマニュアル読めば誰にも知られていないわけではないけれど
>>952が知らないコマンドは出てくるんじゃないの?
954NAME IS NULL:2008/06/05(木) 01:51:04 ID:???
>>952
またかよ…。 だからSELECTだっつってんだろが
955NAME IS NULL:2008/06/05(木) 11:41:51 ID:???
秘密のコマンドはあります。
でも誰も知らないから誰も答えられません。
956NAME IS NULL:2008/06/05(木) 16:34:39 ID:539Qwkef
WebARENA SuitePRO V1を使っていて
mysql-3.23.58-16.FC3.1から
アップデートしたいのですが、
どうすればよいのでしょうか?
957NAME IS NULL:2008/06/05(木) 18:55:13 ID:???
素直にV2 に移行する。
958NAME IS NULL:2008/06/05(木) 20:17:33 ID:539Qwkef
>>957
やはりそれが一番簡単ですかね。
ドメインとメールアカウントが
けっこうあるので移転がめんどうだ・・・
959NAME IS NULL:2008/06/07(土) 02:13:41 ID:YKItF8pv
ここで質問してもいいのかな?
もし、スレ違いだったら誘導してくれると嬉しいです。

服の検索をするためのテーブル設計について行き詰まっています。
同じ服だけど、他種類のサイズがある場合、
どういうテーブル設計にすればいいか考えあぐねています。

現状では、
 (1) 服のサイズ以外の基本情報テーブル
 (2) 服の型番で、各サイズごとに記載したテーブル
を用意しています。

サイズで検索し、当てはまった商品の基本情報と全サイズ一覧を出す場合、
一度のリクエストで、何度もクエリを送信しなければならず、非効率です。

何とか良い方法はないでしょうか?

あるいは、そういう目的別のテーブル設計事例集などがあればいいのですが、
テーブル設計でAmazon検索しても、なぜか魔法瓶が羅列されてしまって、参考になりませんw
お薦めの本、あるいは、複数サイズの洋服の最適なテーブル設計があれば、
ヒントだけでも頂けませんでしょうか?
960NAME IS NULL:2008/06/07(土) 03:54:16 ID:???
JOINしたら一発ででね?
961NAME IS NULL:2008/06/07(土) 07:45:35 ID:???
JOINでもVUEでも一発で出すことはできるんですが、
型番ごとに各サイズを格納するという作業をプログラム側でやってしまうのは、
良い方法なのでしょうか? なんか泥臭い感じがして。
962NAME IS NULL:2008/06/07(土) 09:19:41 ID:???
>型番ごとに各サイズを格納するという作業をプログラム側でやってしまうのは、

あのね、「服の型番」と「サイズ」がどういう関係にあるか自体、業界外の人間には分からないんだ。
「型番」が決まればサイズが決まるのか、それとも、型番→サイズというハイアラーキーになっているのかとか…。

「型番」=「商品の基本情報」(のプライマリキー)で、「型番」→「サイズ」がハイアラーキーなのなら、
「型番ごとに各サイズを格納するという作業」は単なるJOINだから、プログラム側では何もしなくてよいのでは。
963NAME IS NULL:2008/06/07(土) 09:48:42 ID:???
なんだかシステム・エンジニアの要件定義そのもだな。

業界や会社の物事を、いかにコンピューター上で実現するか。
964NAME IS NULL:2008/06/07(土) 10:50:32 ID:???
>>962
例えば、型番「hoge」の中にS(15)、M(20)、L(25)があるというイメージです。
言われているハイアラーキーな関係になるかと思います。

>>959で言うと、
(1) テーブルに、型番「foo」の基本情報のフィールドがあり、
(2) テーブルに、S、M、L というサイズのフィールドが、
型番「foo」に対してそれぞれあります。

上記前提で、
例えばサイズ検索をして、hogeのMが引っ掛かった場合、
「foo」の全サイズ情報も出力したいので、SとLのフィールドが必要になります。

しかし、型番「bar」のサイズ展開は、L、XL、XXLであるため、
型番を元に、サイズをひとつのフィールドにまとめてしまうと、
検索するのに問題が生じます。

よって、それぞれのサイズのフィールドに、
各型番の基本情報をまとめるようなビューを作成しなければならないのです。
この方式だと、検索結果に一致したサイズの型番で
改めてクエリを投げて、結果をまとめるという処理が必要になります。

未熟なので、もっと効率的な方法はいくらでもあるのでしょうし、
指摘されている方法であっけなく片付けられる手順があるのかも知れませんが、
それを学ぶ手段や書籍を見つけられずに試行錯誤しているのが現状です。

MySQLに関してチューニングや入門書はいくらでも見つけられるのですが、
こういう事例に関しての設計例は、一切見つけられなくて困っています。

何とかお知恵あるいは書籍の情報を頂ければと思うのですが。
965NAME IS NULL:2008/06/07(土) 11:14:02 ID:???
>それぞれのサイズのフィールドに、各型番の基本情報をまとめる

の意味が分からん。

単純に、これじゃだめなの?
基本情報に「bar」があり、サイズがMかLのものを取得。

create table dress (RID int primary key auto_increment, ID varchar(24), sz varchar(8));
create table info (RID int primary key auto_increment, ID varchar(24), body text);

insert into dress (ID,sz) values ('foo','S'),('foo','M'),('foo','L),('bar','S'),('bar','M'),('bar','L'),('bar','LL'),('bar','LX');
insert into info (ID,body) values('foo','dress type foo'),('bar','dress type bar');
select distinct D.ID,D.sz,I.body from dress as D left join info as I using (ID) where (I.body like '%bar%' and( D.sz = 'M' or D.sz = 'L'));
966964:2008/06/07(土) 11:14:09 ID:???
・サイズ情報テーブル size
n,type,size,length,width
1,'foo','S',15,40
2,'foo','M',20,45
3,'foo','L',25,50
4,'bar','L',24,52
5,'bar','XL',28,58
6,'bar','XXL',32,64

・商品情報テーブル item
n,type,name,info
1,'foo','ふー','フーな感じです。'
2,'bar','ばー','バーな感じです。'

かなりシンプルにしましたが、
テーブルのイメージとしてはこんな感じです。

ここからsize.lengthで検索し、
一致したtypeの商品情報と他のサイズの情報を取り出したいのです。

良い設計あるいは最適な取り出し方について事例を知っていれば
教えて頂けると嬉しいです。
967964:2008/06/07(土) 11:26:12 ID:???
>>965
すいません、入れ違いました。
ご回答ありがとうございます。
ただ、>>966のようなイメージなのです。

>>965だと、barのLに関するdress, info情報は返ってきますが、
同時に(同時じゃなくてもいいですが)、barのLLとXLのdress情報も欲しいのです。
968NAME IS NULL:2008/06/07(土) 11:30:15 ID:???
サブクエリ exists の定番。

試してないけど
select distinct I.type,I.name,S.size,S.length,S.width from item as I left join size as S using(type)
where exists (select X.type from size as X where (X.size = 'M' and X.length= 15 and X.type = I.type);
969NAME IS NULL:2008/06/07(土) 11:31:40 ID:FRaL8y0I
winmysqladminnとやらは
5.0や6.0のバージョンではないの?
コマンドからしかできないのですかね?
970NAME IS NULL:2008/06/07(土) 11:56:22 ID:???
>>968
ありがとうございます。
非常に参考になります。
かなり欲しい結果に近い部分を得られました。

select distinct I.type,I.name,S.size,S.length,S.width from item as I left join size as S using(type)
where exists (select X.type from size as X where (X.length=15 and X.type=I.type));
で、fooのsize「S」が一致し、fooの全ての情報が取り出せました。

これに、X.length=15にあてはまるS.sizeがどれなのかも合わせて欲しいのです。
やはり、その場合は2回クエリを投げる必要がありますか?

実際のテーブルは規模がもっと大きいので、
検索結果が100件あるとすると、
ひとつのリクエストなのに1+100回クエリを投げないといけなくなり、
どうにか上手にまとめられればと思います。
971964:2008/06/07(土) 12:03:39 ID:???
すいません。>>970は私です。

よく考えると、>>968さんのクエリと、
通常のサイズ検索クエリ(select size from size where length=15;など)の2回やれば、
欲しい結果が全て得られることが分かりました。
1回では不可能な気がするので、現状最善の方法が見つかりました。

これでどうにかなりそうです。
大変勉強になりました。ありがとうございます。
972NAME IS NULL:2008/06/07(土) 20:56:12 ID:???
>>969
GUI tools
973NAME IS NULL:2008/06/08(日) 09:11:08 ID:???
configureについて質問です。ターゲットのプラットホームは Windows XP Pro SP3 で、
mysql-5.1.24-rc-win32.zip をダウンロード&解凍し、インストール自体は問題無くできたのですが、
その後に行う Server Instance Config Wizard の最後のでエラーとなってしまいます。

ttp://sylphys.ddo.jp/upld2nd/pc3/src/1212883375565.png
ttp://sylphys.ddo.jp/upld2nd/pc3/src/1212883466326.png

(恐らく、推測、妄想…)パスワードを設定したのにも関わらず、
パスワードなしでログインしようとしてエラーになっているのでしょうか?だとしたら、バグ?

結局、この最後に行う "Apply Security Settings" って何を行うのでしょうか?
974NAME IS NULL:2008/06/08(日) 13:16:18 ID:???
mysql5で最初から作られている
information_schema
っていうデータベースって削除してよい?
本家の解説読んでもイマイチワカランカッタ
975NAME IS NULL:2008/06/08(日) 13:42:57 ID:???
manual 29.7.5 には、「触るな」と書いてあるが。
976NAME IS NULL:2008/06/09(月) 02:47:03 ID:???
>>974
それVIEWみたいなもんだろ。
各テーブルの情報がテーブルっぽく見えてるだけのような。
消す意味が分からん。
977NAME IS NULL:2008/06/09(月) 02:54:10 ID:???
>>974
おまいは testデータベースも残しておけ
978NAME IS NULL:2008/06/09(月) 22:10:35 ID:???
>>974
information_schemaはRDBMSにとって必須なものだよ。
Windowsのレジストリってよくわからない設定しか書いてないから
消してよい?って言ってるようなもん。
つまり、「それを消すなんてとんでもない。」
979NAME IS NULL:2008/06/10(火) 01:29:46 ID:???
CREATE VIEW v AS SELECT * FROM t;
みたいにしてビューを作ると「*」が展開された形で作成されてしまい、
元のテーブルtのカラムが増減したときビューを作り直さなければならない
のですが、「*」を展開しない状態でビューを作ることはできないのでしょうか?
980NAME IS NULL:2008/06/10(火) 03:18:18 ID:dXdBkxZR
phpMyAdminのクエリ統計で、
? /秒の数値を見ているのですが、
「52.55」になっています。
起動してから一秒当たり52.55回SQLが発行されたという意味だと思いますが、
MYSQLでどの程度まで耐えられるのでしょうか?
これから、アクセスが伸びていくサイトなので、どの辺までが限界が読めなくて困っています。

max_connectionの設定を1000にしてあるので、最大接続数エラーになったことはないのですが、
サーバーのこの数値がここまでいくと、そろそろ限界っていったものがありますか?

宜しくお願いします。
981NAME IS NULL:2008/06/10(火) 08:33:45 ID:???
>>980
そうゆうのは、本番環境に投入する前にベンチなりとっとくもんじゃね?
それに、当然CPU,Memにもよるだろうし、ほかのプロセス(httddとかphpとか)状況にもよるし、
なにより、どんなクエリが発行されるかによって、(同一ハード環境でも)はっきり言って100倍違う。

ちなみにウチの環境だと、
cpu Core Duo 2.0Ghz Men 1GB で、
ごく軽いクエリをmysqldが100%cpu使って20000/s以上出るけど、
ちょっと複雑なクエリにすると、途端に1000/s位になるし、
Apache + mod_perl で実環境に近い状態でやると250/s位。
だからウチの場合ではその近辺まではなんも手ぇ打たんでいいかなと判断してる。(現状 20-25/s位で推移してるし)

もちろんこれはウチの環境に限っての話であって、これらの数値は全く意味をなさないけど。
サーバマシンの構成やデータ量、どんなクエリ投げてるかは、君しか知らんから、一概にいくらとは言えないよ。
982NAME IS NULL:2008/06/10(火) 12:02:34 ID:gwmqg6/k
JMeter でも使ってなんかベンチするとか.
983NAME IS NULL:2008/06/10(火) 12:42:51 ID:???
linuxにてシェルスクリプトでデータベースやテーブルの雛形構成を
作りたいと思っているのですが、手動なら>mysql 起動後に
SQLを打ち込んでいますが、スクリプトからの場合はどのような
方法が良いでしょうか?
984983:2008/06/10(火) 13:45:11 ID:???
すみません、自己解決しました。
テキストファイルにコマンド列記し、
mysql -u root < hoge.txt でいけました。失礼しました。
985NAME IS NULL:2008/06/10(火) 14:13:38 ID:???
mysqldumpで 指定したフォルダに保存したい場合は
どうすればいいんでしょうか?
教えて下さい。
986985:2008/06/10(火) 14:49:42 ID:???
自己解決致しました。
申し訳ありませんでした。
987973:2008/06/10(火) 16:40:12 ID:???
ひょっとして、この現象に見舞われてるのは俺だけなのか?
988NAME IS NULL:2008/06/10(火) 17:11:57 ID:???
いきなりバグ呼ばわりは無視される。
989NAME IS NULL:2008/06/10(火) 23:19:32 ID:???
って言うか、これはバグだろ。俺の方でも起こるし。5.0 使えばいい
990NAME IS NULL:2008/06/11(水) 08:29:18 ID:???
windowsのコマンドプロンプトで

> mysql

> mysqladmin

はどう違うんでしょうか?
991NAME IS NULL:2008/06/11(水) 09:22:08 ID:???
administrator(管理者権限)で入るか入らないかの違い。
992990:2008/06/11(水) 11:27:50 ID:???
>>991
レスありがとうございます。
では、administratorとrootはどう違うんでしょうか?
993NAME IS NULL:2008/06/11(水) 11:43:52 ID:???
root ってのは、単なるアカウント(ユーザー) 名。
994NAME IS NULL:2008/06/11(水) 11:56:36 ID:???
linuxやった方がいいのでは?
995990:2008/06/11(水) 14:23:51 ID:???
>>993
なるほど。よくわかりました。ありがとうございます。

>>994
あまりリナックスはさわったことないので挑戦してみます!
996NAME IS NULL
http://dev.mysql.com/doc/
PHP の Windows Help に続き、↑の Japanese v5.1 の CHM の Windows HTML Help ファイルでも、
キーワード部分が文字化けしてたので、修正した。ヘルププロジェクトファイルとコンテンツファイルをちょびっと弄った。

欲しい人はどうぞ
ttp://toku.xdisc.net/Sn2/up3/www/re2467.zip.html