トップページ⇒db
996コメント362KB

MySQL 総合 Part13

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001NAME IS NULL2008/01/30(水) 03:49:10ID:???
快速 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.|
0002NAME IS NULL2008/01/30(水) 03:49:54ID: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
0003NAME IS NULL2008/01/30(水) 15:44:59ID:???
スレ立て乙です>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
0004NAME IS NULL2008/01/31(木) 01:09:20ID:???
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グループの中の最大値を持つ行を抽出)
0005NAME IS NULL2008/01/31(木) 01:16:45ID:???
>>4です

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

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

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

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

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

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

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

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

例えば、
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です。
0024NAME IS NULL2008/02/04(月) 22:55:26ID:???
インデックス複数張ってるとき、思ったとおりのインデックスを
使ってくれないときに「これ使え」って指示するのってなんだっけ?
0025NAME IS NULL2008/02/04(月) 23:12:50ID:???
>>24
FORCE をつかえ。
0026NAME IS NULL2008/02/04(月) 23:19:03ID:???
>>23
select conv(hex(@aaa),16,10); で良いか?
0027NAME IS NULL2008/02/05(火) 00:13:49ID: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)
を追加しても、上手くできませんでした。
0028NAME IS NULL2008/02/05(火) 00:24:27ID:???
>>24
USE KEY (…)
0029NAME IS NULL2008/02/05(火) 02:09:38ID:???
>>25
マスター・ヨーダ乙
0030NAME IS NULL2008/02/05(火) 03:08:42ID:???
>>26
うおー、でけたー!!!
すごく感動しました。
0031NAME IS NULL2008/02/05(火) 21:10:48ID: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の値が降順 です

ど素人なので、質問自体意味不明だったらすみません
回答をよろしくお願いします
0032NAME IS NULL2008/02/05(火) 21:50:28ID:BphyAXBx
order by photo desc,id desc
0033NAME IS NULL2008/02/05(火) 21:51:17ID:???
>>31
order by phpto,id
0034NAME IS NULL2008/02/05(火) 22:07:34ID:???
>>32-33
ありがとうございます!
質問1の疑問についても、間違ってないってことでいいですよね?
ありがとう
0035NAME IS NULL2008/02/05(火) 22:16:37ID:???
>>34
1は間違い
0036NAME IS NULL2008/02/05(火) 23:41:13ID:???
>>35
まちがってますか?
すみません、どう間違っているのか教えてもらえませんか?
0037NAME IS NULL2008/02/05(火) 23:57:13ID:???
order by で指定していないカラムの順番はDBにお任せ
現在望む形で取得できているのはたまたま
0038NAME IS NULL2008/02/06(水) 01:01:43ID:???
>>27
SELECT id FROM aaa LEFT JOIN bbb ON aaa.id=bbb.id AND (bbb.type != 1 OR name IS NOT NULL)
0039NAME IS NULL2008/02/06(水) 04:26:35ID:???
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の使用方法として、
問題があるのかどうか等、ご教示願えませんでしょうか。
0040NAME IS NULL2008/02/06(水) 19:20:32ID:???
39です。
自己解決しました。ありがとうございます。
0041NAME IS NULL2008/02/07(木) 13:40:29ID:???
>>37
ありがとう そういうものなんですね 助かりました
0042NAME IS NULL2008/02/08(金) 17:36:51ID:???
ユーザーidとゲームidと時間のデータがあります。
ゲームidごとに、同じユーザーのデータが入ったりしています。

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


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

GROUP BY userid

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

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

・Prepare configuration
・Write configuration file

まではいくのですが

・Start service
・Apply security settings

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

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

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

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

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

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

どなたか、ご存知でしたら、どうぞ教えてください。
0063NAME IS NULL2008/02/10(日) 16:50:13ID:???
>>61
ヒント。負数
0064NAME IS NULL2008/02/11(月) 21:16:14ID:???
KURAMAE
0065NAME IS NULL2008/02/12(火) 00:05:59ID: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 を足しました。
0066NAME IS NULL2008/02/12(火) 00:28:15ID:???
>>65
WindowsでUTF8を表示できるのか?

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

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

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

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

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

mysql> select * from customer where c_id = 400;
〜
10 rows in set (0.32 sec)

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

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

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

ありがとうございます。残念ですが、あまり良くないです。
SQL全体にかかった時間ではなく、細かい実行プランが表示されて、その各パー
トでそれぞれどれだけ処理時間がかかったかを見たいのです。
0093NAME IS NULL2008/02/15(金) 18:35:46ID: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)
0094NAME IS NULL2008/02/15(金) 19:05:33ID:???
自己結合させて、できたときに上から順番に番号ふっていきたいんですが、
どうしたらよいでしょう?
0095NAME IS NULL2008/02/15(金) 19:40:20ID:???
MySQL InnoDBのテーブルを mysqldump でバックアップする場合、mysqldは止める必要はあるのでしょうか?
0096NAME IS NULL2008/02/15(金) 21:04:18ID:???
selectでmtimeで降順ソートしたデータの11番目から配列に格納したい。どのようにwhere節を記述すればうまくいくでしょうか。
以下カラム
id : name : titlebody :mtime : (modification time)
0097NAME IS NULL2008/02/15(金) 21:05:19ID:???
訂正です。「配列に格納したい」っていうのを「データを表示したい。」に読み直してください。すいません。PHPと連携してるもんで、、、
0098NAME IS NULL2008/02/15(金) 23:58:00ID:???
select id, name, titlebody, mtime from hogeTBL order by mtime desc limit 10,(取得する行数);
0099>>882008/02/16(土) 08:57:40ID:???
>>89
ありがとうございます。

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

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

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

「ファイル入れて」って、「本来ファイルにあるべきデータをテーブルに入れて」って意味?
0102NAME IS NULL2008/02/16(土) 17:04:40ID:???
>>94
set @cnt=0;
select @cnt:=@cnt+1,col1,col2,col3 from tbl1, ......
0103NAME IS NULL2008/02/16(土) 17:06:11ID:???
centos5でmysql4,1を使っています。
mysqldを削除してしまいました。
yumでmysql-serverをインストールしても見つからないのですが、
mysqldはどこで落とせますか?
0104NAME IS NULL2008/02/16(土) 20:03:14ID:???
>>100
説明内容が複数の意味に取れる部分が多すぎて、
内容がはっきり掴めません。
動画ファイルの扱いなどで例えてください。
0105NAME IS NULL2008/02/16(土) 22:43:10ID:???
ガンダムに例えると
0106NAME IS NULL2008/02/17(日) 00:47:28ID:lcJDrNJv
winで、perlからmysqlを使っているのですが、
insert into a(a) value("あ");
コマンドラインで打つとうまくいくのですが、perlのDBIではうまくいきません。助けてください。
0107NAME IS NULL2008/02/17(日) 00:51:27ID:???
そらぁ、Perlの方の問題であって、ここの問題じゃないっしょ
0108NAME IS NULL2008/02/17(日) 01:56:04ID:???
>>106
文字コード
0109NAME IS NULL2008/02/17(日) 19:27:17ID:???
>>106
「うまくいきません」を具体的に。
0110NAME IS NULL2008/02/17(日) 22:02:44ID: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」
0111NAME IS NULL2008/02/17(日) 22:15:36ID:???
>>110
オレが責任をもってゆりしーを嫁にするから、板違いな話題は控えてくれ
0112NAME IS NULL2008/02/18(月) 11:34:56ID:???
すみません、質問させてください。

まずは環境を。
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データもキチンと取れます。

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

とりあえずチューニング中です,とか何とか言って
ごまかしているけど.
01161122008/02/18(月) 15:52:54ID:???
>>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が機能しているのでしょうか?

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

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


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

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

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

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

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

しかし、速度の面からすべてのテーブルをMyISAMにしているのですが、
InnoDBにする利点ってトランザクション・コミット以外にあるのでしょうか?
0134NAME IS NULL2008/02/20(水) 19:17:37ID:???
書き込んでる途中に読める
0135NAME IS NULL2008/02/20(水) 20:20:46ID: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

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

うちは

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

[mysqld]
default-character-set=ujis

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

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

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

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

c1 c2

001 abc
001 hyu
002 ded
002 iopsa
001 yui

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

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

001 abc
001 hyu
001 yui
002 ded
002 iopsa

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

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

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

select
a + b
from
〜

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

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

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

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

>>159
show create view XXX

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

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

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

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

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

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

@valsが動的に変わる場合、↑のようなことをやる良い方法はないでしょうか?
0178phpMyAdminの使いかた2008/02/25(月) 03:07:09ID: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を使える様になるのでしょうか?

0179phpMyAdminの使いかた2008/02/25(月) 03:20:06ID: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

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

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

mysqlimportコマンドのどこがいけないでしょうか
0188NAME IS NULL2008/02/26(火) 23:34:15ID:???
>>187
エラーの詳細をkwsk
txtファイルの内容は間違いないの?
改行コードが2バイトになってるとか
0189NAME IS NULL2008/02/27(水) 00:26:54ID:???
>>182
>300回に1回程度、実行速度が5秒くらいになることがあります。
このとき、MySQLクライアントでshow processlist;したら何かわかりませんか?
0190NAME IS NULL2008/02/27(水) 01:44:17ID:???
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がその理由だと思うのですが、
このエラー番号の意味ってどこを見ればわかるんでしょうか?

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


TO_DAYS(NOW()) = TO_DAYS(field_name)


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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

レプリケーションの方式として、
1master-複数slave
という方式と
mutil-master
という方式があるみたいなのですが、
どういう場合にどちらを選ぶべきなのでしょうか?
0229NAME IS NULL2008/03/01(土) 11:49:48ID:????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台以上のマルチマスタは手間の割にあまり利点ないので略。
0230NAME IS NULL2008/03/01(土) 17:49:39ID:4HUS0plA
デュアルマスタってのはお互いがお互いのマスタであり
スレーブであるっていう設定のこと?
んで,3台以上ってのはそれをリング状にしたってこと?
0231NAME IS NULL2008/03/01(土) 19:12:32ID:???
自鯖のMySQL入れようと思うんだけど5を入れとくべき?
0232NAME IS NULL2008/03/01(土) 19:13:47ID:???
うん
0233NAME IS NULL2008/03/01(土) 19:40:11ID:???
4系でもいいと思うけどな
0234NAME IS NULL2008/03/01(土) 20:15:00ID:????2BP(0)
>>230
そう。
あと、それぞれのマスタにスレーブをぶら下げたりもできる。
0235NAME IS NULL2008/03/01(土) 23:52:18ID:4HUS0plA
>>234
デュアルマスタまではやったことあるけど,
リング状ってのはまだやったことないな.
同じデータベースに対していどちらのマスタでも
更新ってのは怖くてやったことがない.
0236NAME IS NULL2008/03/02(日) 01:26:02ID:???
>>228
俺もあまりよくしらないが、考えてみた。

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

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

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

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

いいえ。

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

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

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

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

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

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

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

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

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

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

で、>>241に聞きたいのですが、
>どういう場合にどちらを選ぶべきなのでしょうか?
に対する答えは、>>236さんの答えでは不十分ってこと?
そこらへんを解説きぼんぬ。
0244NAME IS NULL2008/03/02(日) 20:41:09ID:Fblr/lkn
selectの結果で実行するsql文を変更したいのですが
ストアドプロシージャ・ファンクションを使わずに
するにはどうしたらいいですか?
例sql文を教えてください。
0245NAME IS NULL2008/03/02(日) 21:28:44ID:???
windows+linux のクラサバなんだけどjavaで動かしている時って
mysqlの文字コードはsjisにしてる?それともutf8?
vistaだとutf8が4バイトらしいんだが・・
0246NAME IS NULL2008/03/02(日) 22:05:28ID:???
フハハ、utf-8は最大6バイトまであるわっ
0247NAME IS NULL2008/03/02(日) 23:33:09ID:???
MySQLに限ってはutf-8だと3byteが上限
They can be encoded with 8, 16, or 24 bits, as in utf8
02482292008/03/03(月) 12:49:38ID:???
>>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の人のレベルからするとシングルマスタの方がいいと思うが...デュアルマスタはフェイルポイント無くなるけど、代償も多いからハマりそう。
0249NAME IS NULL2008/03/03(月) 17:55:10ID:ABajaOyx
>>227
見たのだけれど、update行のバイナリー項目で変にスペースが入ったり\0が並んでたりで、、、
バイナリーログにも出力文字コードがあったりするのでしょうか?
なぜ syntaxエラーなのか、、、

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

mysqli関数群を使わないとダメです
0289NAME IS NULL2008/03/11(火) 02:36:31ID:???
>>284
ぐぐる前にマニュアル嫁
0290NAME IS NULL2008/03/11(火) 13:54:45ID:???
すんません、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

よろしくお願いします
0291NAME IS NULL2008/03/11(火) 16:27:44ID:???
Do you already have another mysqld server running on port: 3306 ?
0292NAME IS NULL2008/03/11(火) 18:48:39ID:???
>>291
You are a fool boy!
0293NAME IS NULL2008/03/12(水) 11:37:07ID:???
>>290
起動してないから停止できないんじゃないの?
0294NAME IS NULL2008/03/12(水) 18:43:33ID:???
こういう奇妙な現象の多くは
操作ミスか設定ミスか。
0295NAME IS NULL2008/03/12(水) 21:28:16ID:/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

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

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

サーバーサイドに

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

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

を受信

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

>>347
show variables like "key_buffer_size";
は設定通り?
0350NAME IS NULL2008/03/19(水) 19:54:31ID:???
MySQL 5.0.51aだとMySQLの再起動だけなら問題ないけど
Windowsを再起動するとInnoDBが壊れてるといってMySQLが起動できなくなるなぁ
かといってinnodb_force_recovery=4で起動してcheck tableしても
InnoDBのあるNTFSのディスク自体をchkdskしても全く問題ないので
InnoDB自体が壊れているわけではないようだ
MySQL 5.0.45以前だと全く問題ないんだが・・・
まぁいいか
スキップしよう
0351NAME IS NULL2008/03/19(水) 20:33:46ID:FDALPhtb
>>348
ありがとうございます。
ところでそれと同様の設定はMySQL Administratorにもありますか?
0352NAME IS NULL2008/03/19(水) 21:10:33ID:???
>>351
ある
03533242008/03/20(木) 02:31:15ID:???
>>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/
0354NAME IS NULL2008/03/20(木) 04:01:00ID:???
質問です。
仕事でオラクルを使っているのですが、MySQLも勉強してみたいとおもい、
いろいろ調べております。
やはり、MySQLはオラクルと比べて信頼性が低いということなのですが、
こういうシステムには使ってはいけないとかありますでしょうか?
0355NAME IS NULL2008/03/20(木) 08:18:15ID:???
「MySQLはオラクルと比べて信頼性が低い」と考えている人間が携わるシステム。
0356NAME IS NULL2008/03/20(木) 09:22:09ID:???
「オラクルはとMySQL比べて信頼性が高い」と考えている人間が携わるシステム。
0357NAME IS NULL2008/03/20(木) 12:05:12ID:OG+4q6QH
UPDATEするテーブルを複数指定できるのでしょうか?

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

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

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

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

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

LinuxのMySQLも通常は起動時にkey_buffer_sizeで指定したメモリ分だけドカンと使用されるのでしょうか?
03613592008/03/20(木) 15:13:57ID:???
>>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はタスクマネージャの「プロセス」->「メモリ使用量」の項目で。
0362NAME IS NULL2008/03/20(木) 16:21:56ID:???
>>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でも使えるんじゃないだろうか。
0363NAME IS NULL2008/03/20(木) 16:23:13ID:???
>>357
無理。トランザクションでやるしかない。
0364NAME IS NULL2008/03/20(木) 16:25:39ID:???
>>359
> i386だと、ユーザー空間のメモリは2Gが上限で、MySQLマニュアルのどっかにあったと思うけど、
> key_buffer_size以外に、各種クライアントが使用する変数郡をすべて足し合わせた合計が
> 2Gを越えないように設定しないといけないハズ。

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

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

あぁ…
0370NAME IS NULL2008/03/21(金) 06:23:41ID:???
http://wordpress.rauru-block.org/?s=mysql+init-connect&search=Search&list=content
http://puchiko.lowtech.ne.jp/?itemid=314&catid=27
http://puchiko.lowtech.ne.jp/?itemid=332&catid=26
http://puchiko.lowtech.ne.jp/?itemid=349&catid=27
0371NAME IS NULL2008/03/21(金) 08:14:44ID: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もちゃんと設定したし。誰か原因分かる人居ない?
0372NAME IS NULL2008/03/21(金) 08:16:13ID:???
あ、PHP5+Mysql5
サーバはAnhttpdでOSはWinVistaでそ。
環境はこれと言って問題ない筈なんだけど
03733632008/03/21(金) 08:45:25ID:???
>>367
複数テーブルのUPDATE出来るのか...。嘘教えてすまん >>357
0374NAME IS NULL2008/03/21(金) 09:15:49ID:???
>>371
設定がヘボいと、ネットワーク越しにアクセスできても
ローカルでアクセスできないということはよくある。
0375NAME IS NULL2008/03/21(金) 09:39:11ID:???
>>374
設定kwsk
これは「アクセスできない」って事で良いんだろうか。間違いなくmysqlは起動してるんだ。
0376NAME IS NULL2008/03/21(金) 10:03:06ID:Qg2uDul9
>>352
どこの画面でやるのでしょうか?
0377NAME IS NULL2008/03/21(金) 11:52:08ID:???
>>376
って、少しは努力しろよw
0378NAME IS NULL2008/03/21(金) 12:12:04ID:???
>>377
知らないならレスしないで下さい。ウザイです。
0379NAME IS NULL2008/03/21(金) 15:01:06ID:???
>>378
MySQL Administrator にあるだろ馬鹿
0380NAME IS NULL2008/03/21(金) 15:08:12ID:???
>>379
知らないならレスしないで下さい。ウザイです。
0381NAME IS NULL2008/03/21(金) 15:08:44ID:???
>>379
全く努力しない聞くだけチャンはほっとけ。
0382NAME IS NULL2008/03/21(金) 15:17:42ID:???
>>381
知らないならレスしないで下さい。ウザイです。
0383NAME IS NULL2008/03/21(金) 15:33:05ID:???
>>371
コンソールから
mysqladmin -u root -p xxx
でアクセスできるか?
0384NAME IS NULL2008/03/21(金) 15:34:14ID:???
もとい。こっち。
mysql -u root -p xxx
0385NAME IS NULL2008/03/21(金) 15:41:50ID:pV5z+1bm
MySQL Command Line Clientで良いんだよね?
メッセージとか出ないなww少し拍子抜けwww
0386NAME IS NULL2008/03/21(金) 15:44:44ID:???
あ、ごめん間違い。

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

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

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

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

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

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

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

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

0393NAME IS NULL2008/03/21(金) 17:29:47ID:???
>>391
CSVにして LOAD DATA INFILE
UTF-8でDBやテーブル作って文字コード合わせて queryしる。
0394NAME IS NULL2008/03/21(金) 17:32:13ID:ZUe7Mqjc
>>393
ありがとうございます。
便利ツールなどはご存知ありませんでしょうか。
0395NAME IS NULL2008/03/21(金) 17:39:18ID:???
>>394
ttp://www.google.co.jp/search?hl=ja&c2coff=1&rls=GGIH%2CGGIH%3A2007-04%2CGGIH%3Aja&q=mysql+csv+%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88+%E3%83%84%E3%83%BC%E3%83%AB&lr=
03963902008/03/21(金) 20:08:44ID:???
>>392 ありがとうございます。
dateはアクセス不可だったのでパーミッションをかえて開いたところ、
たしかに[pc名].local.errというファイルがありました。
しかし、これをどうやって開ければいいかがわからず。。
とりあえずmiで開いてみたら、なにも書かれていませんでした。
他のアプリケータなどで開くのでしょうか。
ものすごく初歩的な質問で申し訳ありませんが
よろしくお願いいたします。
0397NAME IS NULL2008/03/21(金) 20:24:25ID:???
>>396
datadir 内の全てのファイルは、mysqlが読み書き出来るようになってないとだめなんだが、
違ってるんならパーミッションを全部変えてみ。(通常 mysqlユーザ)
0398NAME IS NULL2008/03/21(金) 23:54:49ID:???
>>396
> 他のアプリケータなどで開くのでしょうか。

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

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

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

もしかしたら、
alter table xxx convert to charset eucjpms;
でも出きるかもしれないけど、やったことないからわからん。
0405NAME IS NULL2008/03/24(月) 10:54:10ID:???
>>400
データベースの初期化からやり直したらどう?
mysql_install_db --user=mysql
0406NAME IS NULL2008/03/24(月) 17:10:55ID:???
mysqlhotcopy でデータベースコピーしたあと
mysqldの再起動以外でデータベース読み込ませる方法ないでしょうか。
常時起動させているものなので極力再起動は避けたいです。
0407NAME IS NULL2008/03/24(月) 18:30:46ID:???
>>406
やったことは無いけど、mysqladmin refresh でどう?
0408NAME IS NULL2008/03/24(月) 20:08:29ID:???
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),

こんなエラーメッセージが出ましたが、どういうことですか?
0409NAME IS NULL2008/03/24(月) 20:10:30ID:???
SQL文も晒してね
0410NAME IS NULL2008/03/24(月) 21:41:31ID:???
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
);
0411NAME IS NULL2008/03/24(月) 21:53:10ID:???
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
);
0412NAME IS NULL2008/03/24(月) 22:32:30ID:???
ありがとうございます。
0413NAME IS NULL2008/03/25(火) 00:35:21ID:VYc3xvqf
ファイルをキャッシュするのにmysqlを使おうと思います
ファイルパスをキーにしてインデックスを張ることになるかと思いますが
そうなると255文字程度の長さは必要になります
そんな長いインデックスは実用的なのでしょうか?
0414NAME IS NULL2008/03/25(火) 09:00:49ID:???
そんなときは、数値でID付けてそのIDを結合したものにインデックス張るといいよ。
04153902008/03/25(火) 10:29:09ID:???
>>405
ありがとうございます。
「MySQL入門以前」という本を見ながらやっているのですが、
「データベースの初期化」というのは書いておらず、まだ一度もやっていません。
もうすこしよく勉強して、はじめからやり直してみようと思います。
ありがとうございました。
0416NAME IS NULL2008/03/25(火) 11:52:42ID:???
ファイルパスからmd5とかでhash値出せばそれなりに実用になる
0417NAME IS NULL2008/03/25(火) 12:17:57ID:rCxdFsPn
ファイルパスにmd5使うって超いいじゃん
バッティングすることなんて天文学的確率だろ
キャッシュ用途としては充分じゃね?
0418NAME IS NULL2008/03/25(火) 16:02:40ID:???
Winnyがそうだから
0419NAME IS NULL2008/03/25(火) 17:11:37ID:???
レコードの電話番号フィールドに「012-3456-7890」のような文字列が入ってるとして、
「01234567890」でもselect文で検索できるような方法はありますか?

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

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

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

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

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

Data too long for column と出てしまうのはなぜですか?
0436q2008/03/27(木) 13:56:58ID:???
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の連番の欠番を低い順
をお願いします。
0437NAME IS NULL2008/03/27(木) 14:09:24ID:4i6HCVKz
>>436
http://codezine.jp/a/article/aid/1420.aspx?p=2
とか
http://codezine.jp/a/article/aid/1076.aspx
とかかな。
0438q2008/03/27(木) 14:53:09ID:???
>437さん
ありがとうございます!
上のものでやりたいことは完璧にできました
0439NAME IS NULL2008/03/27(木) 15:14:54ID:???
>>435
テーブルの定義見せて。
0440NAME IS NULL2008/03/27(木) 15:36:58ID:haXSw+o7
create table railroads(
railroad varchar(20)
);
0441NAME IS NULL2008/03/27(木) 17:22:48ID:???
>>440
入力した文字コードとテーブルの文字コードが合っていないに一票
0442NAME IS NULL2008/03/27(木) 18:48:04ID:???
>>434
データベースのデータがOS上のどこに
保管されているのか知りたいです。

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

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

0443NAME IS NULL2008/03/27(木) 19:11:34ID:???
>>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なので、該当の部分を読んでください。
0444NAME IS NULL2008/03/27(木) 19:13:09ID:???
>>442
つ http://dev.mysql.com/doc/refman/5.1/ja/storage-engines.html
ここらへんをよく読もう。

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

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

04484422008/03/27(木) 21:16:49ID:???
ありがとうございます。
ある意味オラクルよりややこしいですね。
0449NAME IS NULL2008/03/27(木) 21:33:34ID:???
>>447
usersのCREATE TABLEみせて
0450NAME IS NULL2008/03/27(木) 23:15:04ID:???
>>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)
);
0451NAME IS NULL2008/03/27(木) 23:40:57ID:???
数値と文字列比べちゃダメでしょ。
0452NAME IS NULL2008/03/27(木) 23:45:22ID:???
とりあえず、
SELECT cast('hoge' as signed);
を実行してみればいいと思うよ。
0453NAME IS NULL2008/03/27(木) 23:51:10ID:???
その場をしのぎたいだけなら、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)
);
0454NAME IS NULL2008/03/28(金) 10:38:32ID:???
>>451
数値に対して文字列で比較しても、そもそも型自体が異なるので絶対合致しないもの、と思っておりました。
しかし何故か0のものが抽出されてしまった為、疑問に思いました。

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

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

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

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

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

よろしくお願いします。
0461NAME IS NULL2008/03/28(金) 15:40:00ID:???
正規表現使いたいときも確かにあるが、
その例の場合単に第一正規化されてないだけじゃ?
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';

みたいな。
0462NAME IS NULL2008/03/28(金) 15:56:00ID:???
>>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]'";
..
}
わかりづらい質問ですみませんがよろしくお願いします。
0463NAME IS NULL2008/03/28(金) 16:01:21ID:???
意図が伝わらなかったかな。
要は、テーブル定義(というか設計)見直せば?ってこと。
正規表現を使わなくても、テーブルさえちゃんとしてれば
461で示したSQLで実現できるよね?

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

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

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

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

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

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

0474NAME IS NULL2008/03/31(月) 22:57:45ID: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 となるようにしたいのですが、
 何がマズいのでしょうか?
0475NAME IS NULL2008/04/01(火) 10:38:18ID:???
>>473
show variables like 'tmpdir';
デフォルトは確か /tmp
作られるのは最適化されていないクエリを発行した場合
0476NAME IS NULL2008/04/01(火) 10:40:09ID:???
>>475
mysqlというよりかは、DBIの問題じゃね?
0477NAME IS NULL2008/04/01(火) 10:40:47ID:???
↑ おっと、>>474 へのレスだ
0478NAME IS NULL2008/04/01(火) 11:16:33ID:???
>>474
DBD::mysqlのバージョンが違うからたぶんそれだな。
バージョン合わせるわけにはいかんの?
0479NAME IS NULL2008/04/01(火) 16:05:23ID:cwXA9zGK
大変低レベルの質問で恐縮です。

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

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

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

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

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

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

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

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

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

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

実は新環境と同じ環境ってのが別にあって、
そいつは自分では触れない環境なのですが
そこではちゃんと動いてるらしく、
バージョンは変えたくないらしいのです。。
0487NAME IS NULL2008/04/01(火) 22:30:35ID:???
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;
04884842008/04/01(火) 22:47:34ID:???
すみません、単純に
test NOT BETWEEN '100' AND '1000'

で、目的の結果を得ることが出来ました。お騒がせしました。
0489NAME IS NULL2008/04/02(水) 11:15:13ID:???
>>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.
0490NAME IS NULL2008/04/03(木) 16:45:12ID:???
mysqlをインストールして適当にデータを入れてみたのですが、このデータをhtml上に呼び出すのってどうすればいいのでしょうか?
0491NAME IS NULL2008/04/03(木) 16:47:14ID:???
これまた大味な
04924902008/04/03(木) 16:54:27ID:???
SQLでselectしてデータを取り出すというのは分かるのですが、それをどうやったらページ上に表示できるのかなぁと
javascriptみたいにhtml上に直接かけるわけでもないですし
0493NAME IS NULL2008/04/03(木) 17:03:12ID:???
PHP、CGI、JSP、ASP、ASP.NET
さぁ、好きなのをお選び。
0494NAME IS NULL2008/04/03(木) 17:07:39ID:???
>>493
MySQLからSQLでデータを取り出し、それからさらにPHPなどでHTMLに渡すという事でしょうか?
めんどくさいですね・・・
04954902008/04/03(木) 17:13:13ID:???
phpを使う場合はphpの中にSQLを書く事ができるんですね
0496NAME IS NULL2008/04/03(木) 17:14:52ID:???
他でも一緒だよ
とりあえず、これ以上はスレ違い、というより板違いな気が
0497NAME IS NULL2008/04/03(木) 17:32:17ID:???
それが面倒だと思うなら、Flashから直接SQLサーバと通信してください。
サーバ系は一切必要なくなりますよ。

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

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

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

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

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


0515NAME IS NULL2008/04/05(土) 15:23:56ID: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の質問ではないのでどこに質問したらいいのか迷ったのですが
総合と言うことで質問させて頂きました。

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

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

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

call sp ( 123, 445);
でも
call sp (123);
でも動作する。
445が指定されていれば内部で取得できる。
ということがしたいです。
0534NAME IS NULL2008/04/09(水) 14:19:54ID:???
>>517
http://www.oreilly.co.jp/books/4873112095/
0535NAME IS NULL2008/04/09(水) 19:26:18ID:???
>>533
なんでそんなことしたいん?
NULLでも渡しておけば?
0536NAME IS NULL2008/04/10(木) 00:35:24ID:9S23/fv1
MySQL5.1でlock tablesに関する質問なのですが、
lock tables
単一テーブルに対するsql文
unlock tables
とすると、TOPコマンドでのロードアベレージが2前後から一気に30前後になってしました。
ただ、サイトの表示自体は早くなっている感があります。
この場合、ディスクが足を引っ張っているのかデッドロックになっているのか
そもそもロードアベレージは下がると期待していたのですがとまどっています。
同様事例の参考資料が見つからず途方に暮れております。
宜しければアドバイスお願いできないでしょうか。お願いします。
0537NAME IS NULL2008/04/10(木) 09:50:41ID:???
すみません、質問させてください。
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.
05385332008/04/10(木) 11:21:47ID:zXvXwiNf
>535
デバッグフラグを立てたいのさ。
通常は使用しないから引数を意識させたくない。
0539NAME IS NULL2008/04/10(木) 13:30:20ID:???
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が複数あり処理に時間がかかりすぎるため熟練者さまのご意見を聞ければと思います。
長文になりましてすみませんがよろしくお願いいたします。
0540NAME IS NULL2008/04/10(木) 14:20:32ID:???
>>539
SELECT DATE_FORMAT(time,'%H') as TH
FROM hoge_tbl a
WHERE id=1
GROUP BY TH
ORDER BY TH

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

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

select * from users limit 1;

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

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

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

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

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

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

myisamならロックテーブルをかけて
ttp://d.hatena.ne.jp/kenji-u/20071102/p1
のようにすれば一つの処理として完結させられると思うのですが
innodbでのやり方がわかりません。
色々調べてみたのですがそのような記述を見つけることができませんでした。
アドバイス頂けないでしょうか。
宜しくお願い致します。
0557NAME IS NULL2008/04/12(土) 08:06:58ID:+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.

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

そのまんまだよ。

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

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

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

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を書けばこのように抽出されますでしょうか?
どうかご教授の程宜しくお願い致します。
0572NAME IS NULL2008/04/14(月) 19:03:28ID:???
>>571
distinct
0573NAME IS NULL2008/04/14(月) 19:09:39ID:???
DISTINCTも同じ重複削除の為、真ん中のと同じ結果になってしまいます
0574NAME IS NULL2008/04/14(月) 19:18:02ID:???
重複してないじゃん。真ん中の結果になるわけなし。 なるならSQLの誤り。
0575NAME IS NULL2008/04/14(月) 19:32:40ID:???
SELECT DISTINCT(no) FROM hoge
というSQLではない?
0576NAME IS NULL2008/04/14(月) 19:58:06ID:???
select distinct no,type from hoge
0577NAME IS NULL2008/04/14(月) 20:12:08ID:???
うわ、こんな書き方できたなんて。。。
SELECT DISTINCT(no), DISTINCT(type) FROM hoge
とかやって、エラー出るからDISTINCTって一つしか指定できないもんだと思ってた。
ありがとうございます!
0578NAME IS NULL2008/04/14(月) 21:42:25ID:???
>DISTINCTも同じ重複削除の為
ってあたり危ないな。
GROUP BYは重複削除のためにあると思ってないか?
0579NAME IS NULL2008/04/14(月) 22:06:24ID:???
GROUP BYは集計ですよね、まとめた後にCOUNTとかSUMとか。
でも、DISTINCTもそういう計算が無いバージョンのGROUP BYと思ってた。
0580NAME IS NULL2008/04/15(火) 01:12:39ID:???
>>577
つうかdistinctで括弧使う変な書き方初めてみたわ
0581NAME IS NULL2008/04/15(火) 08:42:18ID:???
>>577
その書き方俺も初めて見た
関数じゃないのに勘違いしてないか?
0582NAME IS NULL2008/04/15(火) 12:38:16ID:???
下のようなテーブルがあったとして
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秒くらいかかります。
0583NAME IS NULL2008/04/15(火) 12:56:16ID:???
select id,ua,count(*) from table_log where time="2008-04-07" group by id,ua order by id,ua;
0584NAME IS NULL2008/04/15(火) 17:28:33ID:WrDaLq3k
mysqldumpでリモート接続先のdumpを取得しています。
今回、新たにstored procedureを導入しました。
dumpデータにプロシージャも含めるめ、-Rをつけて実行しましたが
リモート接続ではプロシージャのdumpがとられていません。

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

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

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

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

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

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

宜しくお願いします。
0604Zeno ◆5nZQbNmQPs 2008/04/17(木) 16:22:49ID: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

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

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

そのうちわかるよw

localhostとかいろいろトライ。
0612NAME IS NULL2008/04/17(木) 21:04:35ID:???
>>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).
06136062008/04/17(木) 21:36:42ID:wr9HmqHR
>>609
ありがとうございます。
正規化は勉強しているつもりなんですが、気になったので上記の質問をさせてもらいました。
引き続いての質問で恐縮ですが、

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

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

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

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

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

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

宜しくお願い致します。

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

宜しくお願い致します。
0623NAME IS NULL2008/04/18(金) 13:08:05ID:???
>>622
データベースは
create database hoge character set 'utf8';
テーブルは
create table hoge (.. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
06246192008/04/18(金) 13:48:35ID:???
>>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

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

バージョン: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 古いカラム名 新しいカラム名;
と記載されておりどこが間違っているのかわかりません。
お願いします。
0628NAME IS NULL2008/04/18(金) 18:52:52ID:???
すいません、末尾にデータ型を付け足したら変更できました。
0629NAME IS NULL2008/04/18(金) 21:38:16ID:???
質問させて下さい。
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%
と出ています。
もしかして失敗によるコミットとロールバックを繰り返しているから遅いのかなと思ったりもするのですが
原因がわからずにほとほと困り果てております。

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

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

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

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

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

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

そういう質問・説明の仕方を仕事でやると怒られないかい?
前提を省いた説明というのは基本的にはしてはいけないよ。
0636NAME IS NULL2008/04/19(土) 12:10:52ID:???
>>616
ガセネタ紹介乙
0637NAME IS NULL2008/04/19(土) 14:26:10ID:???
>>630の情報だけで答えられない奴は仕事には向いてない。
実務になったらこんな聞き方するクライアントばっかりだぞ?
0638NAME IS NULL2008/04/19(土) 14:31:55ID:???
お客さんが説明下手なのは、そりゃしょうがない。
0639NAME IS NULL2008/04/19(土) 14:34:50ID:???
>>637
じゃあ今日は特別に 君に答える権を授けよう
0640NAME IS NULL2008/04/19(土) 14:53:56ID:???
>>637
金払えよ
0641NAME IS NULL2008/04/20(日) 22:18:25ID:???
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)'


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

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

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

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

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


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

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

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

変な質問ですみません 
今のところ、1ページ1処理はうまく出来てるんですが、負荷を
沢山かけるものは心配です
参考になるサイトや書籍などあればそれも教えてください お願いします
0656NAME IS NULL2008/04/24(木) 14:55:16ID:???
それがノウハウというやつでして
0657NAME IS NULL2008/04/24(木) 15:17:51ID: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 'テーブル情報';

どうか宜しくお願い致します。
0658NAME IS NULL2008/04/24(木) 15:34:13ID:???
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;

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

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

>>655
660さんもおっしゃっているような感じのことがメインですが
WEB+DB PRESS Vol.42にニコニコ動画の技術記事があります。
そこにDBとWEBアプリケーションサーバの大規模運用における勘所みたいなことが結構書かれていて
私は勉強になりました。
お力になれれば幸いです。
0662NAME IS NULL2008/04/24(木) 16:29:19ID:???
分かってると思うけど、T21catはT1.catのtypoね。
試してみたらうまくいったけど、あんまりいい方法ではないよ。
あくまで、答がちゃんと出るレベル。
06636582008/04/24(木) 17:37:55ID:???
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
0664NAME IS NULL2008/04/24(木) 19:47:59ID:???
>>659
ノウハウは社外秘まではいかないだろうけど、それが飯の種ってもんです。
何でも知ってる人に聞いてみましょう。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

とでもすればいいんじゃないかな?
0695NAME IS NULL2008/04/30(水) 17:40:27ID:???
テーブルレイアウトがないので、、、テーブル名が 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での確認はしてませんので、方言が混ざってそうだったら翻訳しといてください
0696NAME IS NULL2008/04/30(水) 23:16:14ID:6t3erPxs
ExcelとMySQLに関する質問です。

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

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

よろしくお願い致します。
0697NAME IS NULL2008/04/30(水) 23:38:08ID:???
列がちゃんと決まってるなら行番号あたりをキーにしたテーブル作って
COPY句でも作って突っ込めばいけるんじゃない?
0698NAME IS NULL2008/04/30(水) 23:49:06ID:???
CSVで保存すれば、取り込める。
正規化せずに取り込むと後でものすごく後悔しそうないがする。
0699NAME IS NULL2008/05/01(木) 01:12:40ID: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つが・・・という感じです。
これって何が原因なのでしょうか?
0700NAME IS NULL2008/05/01(木) 10:54:47ID:???
>>699
PHPのモジュールの問題じゃね?
0701NAME IS NULL2008/05/01(木) 13:42:14ID:???
>>699
$db にfinishっぽい関数あったら、ループ後に呼んでみるとか
0702NAME IS NULL2008/05/01(木) 13:59:30ID:/NYPxvw/
SQLのみを使って
mysqlの変数に
クエリの結果を代入する方法があれば教えてください
0703NAME IS NULL2008/05/01(木) 21:04:05ID:???
質問です。

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

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

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

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

A B C D

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

A C B D

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

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

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

外国の安い会社だから、まぁ自己責任orz
0725NAME IS NULL2008/05/06(火) 20:29:06ID:???
データ破壊てw
泣くわそんなん
0726NAME IS NULL2008/05/06(火) 20:30:12ID:???
泣き虫は嫌いだ、じっちゃんも言ってた
0727NAME IS NULL2008/05/07(水) 00:22:52ID:???
>>719
遅レスですけど上手くできました。ありがとうございました。
0728NAME IS NULL2008/05/07(水) 13:33:51ID:???
参考サイトをみながら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に変えると作成できるのですが…
どなたかこのエラーの原因をお知りでしたら、ぜひお教え願えないでしょうか?
0729NAME IS NULL2008/05/07(水) 14:28:12ID:???
普通はリダイレクト使ってやるような作業だよね
どっかで打ち間違えたんじゃないの?
0730NAME IS NULL2008/05/07(水) 15:20:47ID:???
文字を打ち間違えた場合だと、T01prefectureをT10prefectureに変えても通らないはずだと思うのです。

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

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

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

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

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

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

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

いろいろ調べてるのですが、解決策が見つからなくて。
07447402008/05/10(土) 23:10:59ID:/V9T+N7z
解決しました。
結局、not foundになった理由はわからないんですが、
phpMyAdminの「インポート」からLOADできました。
数時間前まで「インポート」画面には、
「インポートするファイルの形式」は"SQL"しか指定できなかったのですが、
不思議なことに、先ほどみたら"CSV"が指定できるようになっていて、
そこから入力ファイルを指定してLOADできるようになりました。
0745NAME IS NULL2008/05/10(土) 23:32:01ID: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 &再起動を行いました。


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

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

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

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

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

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

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

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

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

・・・不可能
0760NAME IS NULL2008/05/12(月) 22:24:42ID: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が発生しました」
「プロセスを途中で強制終了しました」
と表示され、先に勧めない状態です。

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

PHP MyAdmin やプロンプト上からinsert行うと、普通にinsertできるのでしょうか?
0765NAME IS NULL2008/05/13(火) 15:47:34ID:???
キーが同じならどこからでも無理だろ
0766NAME IS NULL2008/05/13(火) 18:50:11ID:???
+-----+-------+
| 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';では構文エラーになります。
主キーは取り出せないんでしょうか?
0767NAME IS NULL2008/05/13(火) 18:52:43ID:???
keyは予約語だからでは? `key` とかしてみる。
0768NAME IS NULL2008/05/13(火) 18:54:18ID:???
ありがとうございます!
無事取り出せました。
0769NAME IS NULL2008/05/13(火) 21:39:29ID:NUBRvh8U
キーはインクリメントされるので、
異なってるはずなんですが。
0770NAME IS NULL2008/05/13(火) 21:40:40ID:NUBRvh8U
`key`は基本だとおも。
0771NAME IS NULL2008/05/13(火) 22:04:51ID:NUBRvh8U
質問日本語になってなかったので、再度質問します。
日本語できなきゃ、SQLできませんね。えへ!

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

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

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



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

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

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

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

◆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万円
0775NAME IS NULL2008/05/15(木) 05:20:29ID:???
http://dev.mysql.com/doc/refman/5.1/ja/mysql-insert-id.html
「マルチ列INSERTステートメントの場合」とか書いてあるけど、
このページ内ほとんど
×列
○行
じゃないかな。
0776NAME IS NULL2008/05/15(木) 08:30:54ID:/PcvCBei
MYSQLとPHPがどうマニュアルどおりやっても、
phpinfoでMYSQLが認識されない。dllに応じてapacheの対応バージョンが異なるらしいんだけど、
本当ですか?
0777NAME IS NULL2008/05/15(木) 09:58:14ID:???
ビルドからやってんの?
0778NAME IS NULL2008/05/15(木) 13:04:45ID:???
mysql5.0.27を使っているんですが、型の制約として、 num = num - 5 とかやっても
0未満にはならないようにとか、そういった制約ってありますか?
入れるときにチェックしないとだめでしょうか?
0779NAME IS NULL2008/05/16(金) 16:40:06ID:V7rySszX
質問です
文字コードがutf8のデータベースから、eucのデータベースへ中身を
移動させるのって難しいですか?もちろんMysqlです
管理ツールはphpMyadminを使おうと思ってるんですが、、
蓄積されている情報をEUCに書き換えるような作業が必要になるんでしょうか?
カンタンな手順や専用のツールなんてあるんでしょうか?
どなたか教えてください よろしくお願いします
0780NAME IS NULL2008/05/16(金) 17:59:07ID:???
Alter Table
0781NAME IS NULL2008/05/17(土) 09:05:01ID:???
>>779
insert into euctable select * from utf8table;
0782NAME IS NULL2008/05/17(土) 19:33:10ID:dhQBeSfs
GPLの意味がいまいち分かりません。。。


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

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

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

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

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

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

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

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

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

>>786
ハッシュ自体を管理するんなら、バイナリな必要ないんじゃない?
ハッシュを生成するためのもとのデータを入れるなら、binaryじゃなきゃいかんけども・・。
07997792008/05/18(日) 08:06:53ID:JfDPw4vM
>>797
どうもです ありがとうございました
>>798
詳しい説明ありがとうございました
データ移行の本読むべきですね 基本でした ありがとうございました
0800NAME IS NULL2008/05/18(日) 10:46:41ID:6+oG6BiD
query browserって
データのインポートは出来ないんでしょうか?
csvファイルを取り込みたいのですが、
どのような方法がベターでしょうか?
08017962008/05/18(日) 11:08:49ID:???
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
ありがとうございました。助かりました。
0802NAME IS NULL2008/05/19(月) 00:30:52ID:???
long_query_timeについて質問です。

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

それとも logrotate を設定しなければならないのでしょうか?
0804NAME IS NULL2008/05/19(月) 14:48:36ID:???
質問です。
MySQLのソースインストールのconfigureで「--with-readline」オプションがありますが、
この設定はmy.cnf上で後から変更可能でしょうか?
0805NAME IS NULL2008/05/20(火) 07:40:10ID:???
>>782
GPLと相容れないプログラムとリンクできない
0806NAME IS NULL2008/05/20(火) 11:56:52ID:FPNVgIjN
phpMyBackupPro ってソケット経由では使えないのでしょうか?
0807NAME IS NULL2008/05/20(火) 21:51:22ID:???
HEAPテーブルについて、マニュアルには「クライアント間で共有できる」
とありますが、接続毎に隔離されたHEAPテーブルは作れないでしょうか?
バージョン4.1です。
0808NAME IS NULL2008/05/20(火) 22:29:57ID: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を使っています。
0809NAME IS NULL2008/05/20(火) 23:46:08ID: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;
となります。
サイトをさんこうにしてやっていますが
うまくいきません。どこが原因でしょうか?
教えて下さいませ。
0810NAME IS NULL2008/05/21(水) 00:06:16ID:???
>>807
接続が切れたときに消えてなくなってもいいのであれば、temporary テーブル。
0811NAME IS NULL2008/05/21(水) 00:07:10ID:???
>>809
それ、mysql> プロンプトからやってないか?
0812NAME IS NULL2008/05/21(水) 00:08:42ID:???
>>808
falseはSQLの実行エラーの場合です。
updateがあったかは、たしか 影響を受けた行数を取得する
関数があったと思うので実行後にそれを使ってください。
0813NAME IS NULL2008/05/21(水) 00:33:26ID:O5tzPctu
>>811
コマンドプロンプトからやってますが何か?
0814NAME IS NULL2008/05/21(水) 00:53:14ID:???
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/
08158142008/05/21(水) 02:02:33ID:???
自己解決しました。
08168072008/05/21(水) 02:50:01ID:???
>>810
早速有難う御座います。 temporary テーブルでやってみようと思います。
0817NAME IS NULL2008/05/21(水) 02:54:27ID:???
MySQL 5.0.51a Linux版です。
全テーブルに更新時刻と挿入時刻カラムをつけ、
beforeトリガーでこれらを更新しようと考えていますが、
オーバーヘッドはどんなものでしょうか?
用途は中小規模のグループウェアみたいなものです。
もしオーバーヘッドが大きいならtimestampで更新時刻だけ
記録することも考えるのですが、挿入時刻もあった方がいいようなのです。

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

よろしくお願いいたします。
0822NAME IS NULL2008/05/22(木) 00:05:25ID:???
>>821
limit
0823NAME IS NULL2008/05/22(木) 00:18:02ID:???
>>821
mysql> pager less
0824NAME IS NULL2008/05/22(木) 00:18:18ID: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
....

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

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

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万円
0831NAME IS NULL2008/05/22(木) 12:15:32ID:???
>>824 >>828

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

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

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

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

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

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

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

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

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

ソフト面に続く
0845NAME IS NULL2008/05/24(土) 04:32:39ID:???
■ソフト面
・設計の見直し
=> 詳細知らないので絶対とは言えませんが、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の事を
考えていた時期が三ヶ月ほどありました。
データもいっぱい壊しました。いっぱい怒られました。あぁ思い出したらトイレに行きたくなってきたのでこれくらいで。
0846NAME IS NULL2008/05/24(土) 04:38:50ID:???
追記:あっSUNが買収してオープンソースでなくなるんじゃなかったっけ?
0847NAME IS NULL2008/05/24(土) 08:15:30ID:???
>>844-846
実例を入れて膨らませて、本にしてくれませんか。絶対買います。
0848NAME IS NULL2008/05/24(土) 08:50:47ID:???
( ;∀;) イイハナシダナー
0849NAME IS NULL2008/05/24(土) 13:53:59ID:???
>>844
ありがとう、めっさ参考になった。
0850NAME IS NULL2008/05/24(土) 20:05:43ID:???
>>844-845
ちょっと、ブログかなんかに書いておくれよ
0851NAME IS NULL2008/05/24(土) 21:17:02ID:???
 
0852NAME IS NULL2008/05/25(日) 11:54:18ID: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

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

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

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

因みに環境はCPU:Athlon 3200 ,Mem:1GB
0859NAME IS NULL2008/05/25(日) 21:50:45ID:???
charとvarcharが拡張されて65535バイトまで格納できるようになった今
text型を使う意義ってあるのでしょうか?
0860NAME IS NULL2008/05/26(月) 08:30:12ID:anlWXK4f
text型は例えば「備考」とか「理由」とかいう長文が入る可能性のカラムに対して
明示的に使うことがあるよね。
0861NAME IS NULL2008/05/26(月) 08:35:58ID:???
txtにしないと内部検索できねーだろ
0862NAME IS NULL2008/05/26(月) 14:24:40ID:???
お忙しいところ恐れ入ります。下記のように設定したいのですが、
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
08638622008/05/26(月) 14:42:08ID:???
追記で申し訳ありません。
MYSQLのVerは5.0です。
宜しくお願いいたします。
0864NAME IS NULL2008/05/26(月) 14:46:05ID:???
NOTNULL じゃなくて NOT NULL でしょ。
08658542008/05/26(月) 14:51:12ID:???
メモリ増設してきました!
一気に三倍の1.5GBにして、HDD領域も少し増やして、改めてテーブルを用意して流し込んでます
結果が出たらまた報告しますね
08668622008/05/26(月) 14:53:13ID:???
>>864
ありがとうございました。
なんという・・・俺バカ><
ありがとうございました!
0867NAME IS NULL2008/05/26(月) 21:30:33ID:+Ce61WTV
怒られそうな質問なんですけど、
コマンドプロンプトでmysql -u root -pって入力した時に入れるパスワード
ってなんですか?
xamppでphpと一括でインストールして始めてやってみようとしたんですけど・・・
0868NAME IS NULL2008/05/26(月) 21:51:49ID:+Ce61WTV
>>867です
サイトで調べて、mysqladmin -u root password パスワード
と入力したら、
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost (using password: NO)
と出たんですけどどうゆう意味ですか?
0869NAME IS NULL2008/05/26(月) 21:52:09ID:???
とりあえず -p なしにしてみたら、どうなる ?
0870NAME IS NULL2008/05/26(月) 22:02:48ID:MQWbRVv1
mysqladmin -u root
っていれたら、英語がいっぱい出てきました!
0871NAME IS NULL2008/05/26(月) 22:12:38ID:???
とりあえず -q つけてみたら、どうなる?
0872NAME IS NULL2008/05/26(月) 22:18:08ID:t8RRxsu7
-pって付け足しても同じようなのが出てきました。
0873NAME IS NULL2008/05/27(火) 02:23:53ID:mN2Gb71B
インスコした時のぱ素ワード入れろよ
0874NAME IS NULL2008/05/27(火) 03:55:09ID:???
商品テーブルにある、商品単価*数量の結果を
注文明細テーブルにある金額カラムに
自動でインサートしたいんですが何か方法はありますか?

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

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

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

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

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

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


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

今考えているのは
先に優先順位でソートして上位数件取得
そこからランダム取得
です。
0887NAME IS NULL2008/05/28(水) 02:27:58ID:???
>>886
優先順位が高いと当たる確立が上がる という意味でしょうか。
その場合でしたら、やり方はいろいろあるでしょうけど、
シンプルなのは優先順位の値に従い該当レコードを
重複させたリストを作り、それに対してランダム取得など。
0888NAME IS NULL2008/05/28(水) 03:40:11ID:???
>>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
もっときれいに分かれるかと思ったけど、微妙だな・・・。
(文系脳ではここら辺が限界、スマソ)
0889NAME IS NULL2008/05/28(水) 09:11:48ID:l7349jpG
文字コードの変更方法がわからないです。
my.cnfファイルの
[mysqldump]と[client]部分にdefault-character-set=utf8
と記述したんですが、コマンドプロンプトで
Show VARIABLES LIKE 'CHAR%'; と入力し確認したんですが、
latin1のままになってます。
どうすれば変更できますか?
0890NAME IS NULL2008/05/28(水) 10:49:33ID:???
init-connect='SET NAMES utf8'
0891NAME IS NULL2008/05/28(水) 15:09:44ID:OeWwUjG2
max_connection ってデフォルトで 100 だったのか・・・
確認せずにボロボロこぼしてしまった.
まぁローカルのサービスだったからよかったけど.
0892NAME IS NULL2008/05/28(水) 15:40:03ID:NgaxVuoB
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
DQN男の家族消えろ DQN男の親消えろ DQN男の友達消えろ DQN男の親戚消えろ
ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね苦しんで死ね
死ぬとき このレスの事思い出してから地獄いけよ
ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
08938892008/05/28(水) 17:31:34ID:xeQEQXZc
>>890
どこの部分に書き込めばいいんですか?
0894NAME IS NULL2008/05/28(水) 18:18:08ID:???
[mysqld] で
0895NAME IS NULL2008/05/28(水) 18:48:13ID:???
>>892
落ち着けw
0896NAME IS NULL2008/05/28(水) 19:38:46ID:???
MySQLでPHPのアプリ作ったら、アプリのソース公開しなきゃいけないっていうのは本当ですか?
GPL汚染とはいえ、SQL叩いただけでというのは意味が分からないんですが・・
0897NAME IS NULL2008/05/28(水) 20:05:24ID:???
レプリケーションについて、MySQLのマニュアルに、
「MySQL 4.0.2 はレプリケーション目的には適しません」
とありますがこれは何故なんでしょうか?
現在4.027を使っています。
0898NAME IS NULL2008/05/28(水) 20:15:15ID:???
主キーを追加するのに
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

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

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

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

>>904
ですねー
一万円で買ったパソコンならこのスピードでも大満足ですwww
0909NAME IS NULL2008/05/29(木) 12:28:55ID:???
>>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されてる。
0910名無しさん@Vim%Chalice2008/05/29(木) 17:01:38ID:VDNC7sY4
mysql workbenchについて質問です。
このソフトってmysql以外のRDBMSに接続することって可能でしょうか?
可能な場合、その種類について教えてください。
リバース、フォワードエンジニアリングができればよいと考えています。

よろしくお願いします。
0911NAME IS NULL2008/05/30(金) 01:21:05ID:???
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/
0912NAME IS NULL2008/05/30(金) 03:26:51ID:???
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;
0913NAME IS NULL2008/05/30(金) 06:49:37ID:???
>タグが複数ある場合、存在しない場合などの際
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;
0914NAME IS NULL2008/05/30(金) 13:16:38ID:???
>>897
4.0.2はわからんが、
数年前の4.0.xx(忘れた)のころはレプリケーションにバグがあって
マスターとスレーブの内容が一致しないなんてことが起こった。
その後なおったはずだけど…
0915NAME IS NULL2008/05/30(金) 13:29:24ID:eZR1pwPY
>>914
そんなので何のために使えるんだろうか・・・
参照系の不完全な負荷分散専用?
09169652008/05/30(金) 16:36:34ID:???
>>913さん
ありがとうございます!
結合はそれでいけました。

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

どうにかパスワードをリセットする方法はないでしょうか?
0920NAME IS NULL2008/05/30(金) 22:49:27ID:???
コマンドプロンプトから直接mysqlを叩く
09219192008/05/31(土) 03:43:29ID:P9Fe+Y8M
てか、よく考えたらものすごい環境依存っぽいのでxamppのBBSで聞いてきます。
解決しましたらこちらに報告に来ます。
お騒がせしました。
0922NAME IS NULL2008/05/31(土) 10:54:59ID:w17RNyoM
mysqlで
絶対に打ち込んではいけないコマンドを
私に伝授してください!!!!!!
0923NAME IS NULL2008/05/31(土) 11:52:21ID:???
DROP TABLE tbl
0924NAME IS NULL2008/05/31(土) 11:54:53ID:???
select
0925NAME IS NULL2008/05/31(土) 11:55:21ID:???
>>922
drop database mysql
0926NAME IS NULL2008/05/31(土) 12:01:48ID:???
exit
0927NAME IS NULL2008/05/31(土) 12:57:23ID:w17RNyoM
>>925
こら〜!
とんでもないことなってもうたやないかい!
0928NAME IS NULL2008/05/31(土) 13:13:36ID:yOEBInyW
しかし管理用のデータベースまで普通に見えるのはどうかとも思う。
ファイルシステムでもおなじか
0929NAME IS NULL2008/05/31(土) 13:18:08ID:???
そうか?
包み隠さないことはいいことだ。
0930NAME IS NULL2008/05/31(土) 13:31:42ID:???
>>928
まったくだ。 grant なんとか on *.* が mysql.* まで含んでしまうのは、まずいと思う。
まあ *.* するのがまずいんだろうけど。
0931NAME IS NULL2008/05/31(土) 13:36:25ID:???
>>928
いい加減さもウリの1つです。
0932NAME IS NULL2008/06/01(日) 17:46:19ID:???
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 |
0933NAME IS NULL2008/06/01(日) 20:57:44ID:???
自己解決
0934NAME IS NULL2008/06/01(日) 21:26:07ID:???
解決案も書かないと。
0935NAME IS NULL2008/06/01(日) 23:39:26ID:???
ブラウザを立ち上げて
2chを開いて「自己解決しました」
と書き込む
0936NAME IS NULL2008/06/02(月) 16:59:47ID:???
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 |
0937NAME IS NULL2008/06/02(月) 17:12:43ID:???
自分だけで解決したのに、なんで役立たずの君たちに教えてあげなくちゃならんのだ
0938NAME IS NULL2008/06/02(月) 17:38:59ID:???
>>937
面白い発想だ
0939NAME IS NULL2008/06/02(月) 18:02:25ID:???
思い切って質問させていただいたのですが間違いのようでした。
失礼いたしました。
0940NAME IS NULL2008/06/02(月) 18:35:28ID:???
>>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 のような予約語はテーブル名にしない方がいいような気がする。
0941NAME IS NULL2008/06/02(月) 18:57:44ID:???
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

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

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
0943NAME IS NULL2008/06/02(月) 19:52:21ID:???
恥ずかしながら再度確認しに来てしまいましたが、
レスをいただいており、大変感謝いたします。

>>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 |

しかしながら、大変勉強になるレスをいただきまして
ありがとうございました。
0944NAME IS NULL2008/06/03(火) 20:53:33ID:9lp1uw3k
mysqlマスターでさえ
打つのをしり込みする
コマンドを
もしあれば
伝授してください!
0945NAME IS NULL2008/06/03(火) 21:28:22ID:???
>>944
マスターじゃないけど rm -rf でディレクトリを削除するのはやっぱり
不安だよ。何回も確認する。
0946NAME IS NULL2008/06/04(水) 11:22:18ID:???
 質問させていただきます。
最近、パーティショニングを使い始めました。
やりたいことはPARTITION BY KEY()を使用したパーティショニングをし、
分割したデータやインデックスをdisk分散させるということなのですが、
これを実現させるには個々のパーティションに対し、DATA DIRECTORYと
INDEX DIRECTORYを地道に指定していくしかないのでしょうか?
0947NAME IS NULL2008/06/04(水) 16:53:49ID: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回で実行する
方法はありますでしょうか?
0948NAME IS NULL2008/06/04(水) 17:20:59ID:???
UPDATE test SET
 name=IF(id=1,'aaa),
   IF(id=2,'bbb',
    IF(id=3,'ccc', 'xxx')
   )
 )
WHERE id in (1,2,3)
0949NAME IS NULL2008/06/04(水) 17:44:01ID:???
それで速くなるの?
0950NAME IS NULL2008/06/04(水) 17:46:30ID:???
試せばわかるんじゃね?
0951NAME IS NULL2008/06/04(水) 19:41:26ID:???
ぐぁぁああぁ…replace into って、delete → insert だから、
autoincrement のフィールドの値が変わるじゃねぇか…。
0952NAME IS NULL2008/06/04(水) 23:33:29ID:R8ngxTCT
mysqlで誰にも知られていない
秘密のコマンドがあると聞いた
そのコマンドとは?
0953NAME IS NULL2008/06/04(水) 23:46:50ID:???
とりあえずマニュアル読めば誰にも知られていないわけではないけれど
>>952が知らないコマンドは出てくるんじゃないの?
0954NAME IS NULL2008/06/05(木) 01:51:04ID:???
>>952
またかよ…。 だからSELECTだっつってんだろが
0955NAME IS NULL2008/06/05(木) 11:41:51ID:???
秘密のコマンドはあります。
でも誰も知らないから誰も答えられません。
0956NAME IS NULL2008/06/05(木) 16:34:39ID:539Qwkef
WebARENA SuitePRO V1を使っていて
mysql-3.23.58-16.FC3.1から
アップデートしたいのですが、
どうすればよいのでしょうか?
0957NAME IS NULL2008/06/05(木) 18:55:13ID:???
素直にV2 に移行する。
0958NAME IS NULL2008/06/05(木) 20:17:33ID:539Qwkef
>>957
やはりそれが一番簡単ですかね。
ドメインとメールアカウントが
けっこうあるので移転がめんどうだ・・・
0959NAME IS NULL2008/06/07(土) 02:13:41ID:YKItF8pv
ここで質問してもいいのかな?
もし、スレ違いだったら誘導してくれると嬉しいです。

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

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

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

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

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

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

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

業界や会社の物事を、いかにコンピューター上で実現するか。
0964NAME IS NULL2008/06/07(土) 10:50:32ID:???
>>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に関してチューニングや入門書はいくらでも見つけられるのですが、
こういう事例に関しての設計例は、一切見つけられなくて困っています。

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

の意味が分からん。

単純に、これじゃだめなの?
基本情報に「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'));
09669642008/06/07(土) 11:14:09ID:???
・サイズ情報テーブル 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の商品情報と他のサイズの情報を取り出したいのです。

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

>>965だと、barのLに関するdress, info情報は返ってきますが、
同時に(同時じゃなくてもいいですが)、barのLLとXLのdress情報も欲しいのです。
0968NAME IS NULL2008/06/07(土) 11:30:15ID:???
サブクエリ 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);
0969NAME IS NULL2008/06/07(土) 11:31:40ID:FRaL8y0I
winmysqladminnとやらは
5.0や6.0のバージョンではないの?
コマンドからしかできないのですかね?
0970NAME IS NULL2008/06/07(土) 11:56:22ID:???
>>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回クエリを投げないといけなくなり、
どうにか上手にまとめられればと思います。
09719642008/06/07(土) 12:03:39ID:???
すいません。>>970は私です。

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

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

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

宜しくお願いします。
0981NAME IS NULL2008/06/10(火) 08:33:45ID:???
>>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位で推移してるし)

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

> mysql
と
> mysqladmin

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

>>994
あまりリナックスはさわったことないので挑戦してみます!
0996NAME IS NULL2008/06/11(水) 14:38:12ID:???
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
レス数が950を超えています。1000を超えると書き込みができなくなります。