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


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

MySQL 総合 Part13



1 名前:NAME IS NULL mailto:sage [2008/01/30(水) 03:49:10 ID:???]
快速 RDBMS、MySQL の総合スレです。
前スレ[MySQL 総合 Part12] pc11.2ch.net/test/read.cgi/db/1190512649/
[関連スレと過去ログ]
find.2ch.net/index.php?STR=MySQL
makimo.to/cgi-bin/search/search.cgi?D=db&q=MySQL&sf=0&link2ch=on

[MySQL Developer Zone] dev.mysql.com/
[MySQL 日本語リファレンスマニュアル] dev.mysql.com/doc/mysql/ja/
[MySQL Internals Manual] dev.mysql.com/doc/internals/en/

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

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

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

  | .| /./  /      |   | _,,,,||,,,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.|

357 名前:NAME IS NULL [2008/03/20(木) 12:05:12 ID:OG+4q6QH]
UPDATEするテーブルを複数指定できるのでしょうか?

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

みたいなSQLを書いているのですが、実行されません。

358 名前:NAME IS NULL mailto:sage [2008/03/20(木) 12:29:18 ID:???]
>>357
それはMySQLでは出来ない。あきらめよう。

359 名前:NAME IS NULL mailto:sage [2008/03/20(木) 14:00:42 ID:???]
>>353
OSのarchはi386?
i386だと、ユーザー空間のメモリは2Gが上限で、MySQLマニュアルのどっかにあったと思うけど、
key_buffer_size以外に、各種クライアントが使用する変数郡をすべて足し合わせた合計が
2Gを越えないように設定しないといけないハズ。

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

つうか、そもそも物理メモリ512Mしかないのに、設定で2Gのメモリを使うようにしてるところが
大問題なんじゃないのかね??
(それが、>>324の現象と関係あるかどうかは知らんが・・)

360 名前:324 mailto:sage [2008/03/20(木) 14:22:51 ID:???]
>>359
すみません、ここ数日色々試してとっかえひっかえしていたため、情報がごっちゃになってしまいまました。
>>324 の時はメモリ512Mだったのですが違うマシンでメモリ4Gにして試してみたのが>>353です。

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

LinuxのMySQLも通常は起動時にkey_buffer_sizeで指定したメモリ分だけドカンと使用されるのでしょうか?

361 名前:359 mailto:sage [2008/03/20(木) 15:13:57 ID:???]
>>360
ウチの環境でやってみら、起動直後には確保されてない。
create tableしたり、create indexしたり、select 〜〜 とかやってると、徐々に増えていくようだ。

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

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

Linuxはtop及びfree、Winはタスクマネージャの「プロセス」->「メモリ使用量」の項目で。

362 名前:NAME IS NULL mailto:sage [2008/03/20(木) 16:21:56 ID:???]
>>324
>>359
key_buffer_size=2Gでも、起動直後には確保されない。
もしくはmallocで確保はしているが、未使用なのでLinux kernelが実メモリをまだ割り当てていないのかもしれない。
使っているうちにインデックスがメモリに載るようになる。
その辺、最初からのせたかったらサイボウズラボの奥一穂さんの記事が参考になるかな。
labs.cybozu.co.jp/blog/kazuho/archives/2007/10/innodb_warmup.php
MySQL のウォームアップ (InnoDB編)
これはInnoDB用だが、インデックスのところはMyISAMでも使えるんじゃないだろうか。

363 名前:NAME IS NULL mailto:sage [2008/03/20(木) 16:23:13 ID:???]
>>357
無理。トランザクションでやるしかない。

364 名前:NAME IS NULL mailto:sage [2008/03/20(木) 16:25:39 ID:???]
>>359
> i386だと、ユーザー空間のメモリは2Gが上限で、MySQLマニュアルのどっかにあったと思うけど、
> key_buffer_size以外に、各種クライアントが使用する変数郡をすべて足し合わせた合計が
> 2Gを越えないように設定しないといけないハズ。

Linux kernel 2.6なら、3GBまでいける。
ちなみにPAE使っても、プロセス単体は3GBまでしか無理だと思われる。

365 名前:324 mailto:sage [2008/03/20(木) 16:53:48 ID:???]
>>361
>>362
>>364
みなさんレス本当に有り難う御座います。
頂いた情報を元にもう少し調べてみます。
因みに以前の環境はwindowsXP SP2 でMySQLは5.0.45-community-nt
搭載メモリは2Gでkey_buffeは1G、その他諸々設定で
起動時には1.6G程コミットチャージされていました。



366 名前:357 mailto:sage [2008/03/20(木) 17:09:49 ID:???]
>>358,363

そうですか・・・。マニュアルには出来そうな感じしたのですが、
ちょっと違うみたいですね。。処理を分けて対処します。

367 名前:NAME IS NULL mailto:sage [2008/03/20(木) 19:31:17 ID:???]
>>366
機能は有るんだから構文が間違ってるんだろ?
dev.mysql.com/doc/refman/4.1/ja/update.html
そのままSQLを分離して上手く動く事は確認済み?
'2008-03-200'←こんなのを見ると大丈夫か?と思うわけだが。

368 名前:NAME IS NULL [2008/03/21(金) 05:57:31 ID:vtga5C69]
レンタルサーバでMySQLを使ってるけど
なんだか新しいバージョンでは、デフォルトでUTC-8を使うようになってるらしく
DBをEUCで作成して、そこからcgiでアクセスする際に
予め、コネクションが完了した直後に
まず 'SET NAMES ujis' みたいなクエリーを発行しないと、文字化けしてしまう…
phpMyAdminからなんか設定して回避は出来ない よね…(ローカルのだったらMySQLの設定ファイル変更で回避出来るみたいだけど)

369 名前:NAME IS NULL mailto:sage [2008/03/21(金) 05:59:47 ID:???]
×UTC-8
○UTF-8

あぁ…

370 名前:NAME IS NULL mailto:sage [2008/03/21(金) 06:23:41 ID:???]
wordpress.rauru-block.org/?s=mysql+init-connect&search=Search&list=content
puchiko.lowtech.ne.jp/?itemid=314&catid=27
puchiko.lowtech.ne.jp/?itemid=332&catid=26
puchiko.lowtech.ne.jp/?itemid=349&catid=27

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


【エラー内容】

Error Message: DB Error: connect failed

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

ユーザ名やパスワードも合ってるしデータベースも作成済み、phpもちゃんと設定したし。誰か原因分かる人居ない?

372 名前:NAME IS NULL mailto:sage [2008/03/21(金) 08:16:13 ID:???]
あ、PHP5+Mysql5
サーバはAnhttpdでOSはWinVistaでそ。
環境はこれと言って問題ない筈なんだけど


373 名前:363 mailto:sage [2008/03/21(金) 08:45:25 ID:???]
>>367
複数テーブルのUPDATE出来るのか...。嘘教えてすまん >>357

374 名前:NAME IS NULL mailto:sage [2008/03/21(金) 09:15:49 ID:???]
>>371
設定がヘボいと、ネットワーク越しにアクセスできても
ローカルでアクセスできないということはよくある。

375 名前:NAME IS NULL mailto:sage [2008/03/21(金) 09:39:11 ID:???]
>>374
設定kwsk
これは「アクセスできない」って事で良いんだろうか。間違いなくmysqlは起動してるんだ。



376 名前:NAME IS NULL [2008/03/21(金) 10:03:06 ID:Qg2uDul9]
>>352
どこの画面でやるのでしょうか?

377 名前:NAME IS NULL mailto:sage [2008/03/21(金) 11:52:08 ID:???]
>>376
って、少しは努力しろよw

378 名前:NAME IS NULL mailto:sage [2008/03/21(金) 12:12:04 ID:???]
>>377
知らないならレスしないで下さい。ウザイです。

379 名前:NAME IS NULL mailto:sage [2008/03/21(金) 15:01:06 ID:???]
>>378
MySQL Administrator にあるだろ馬鹿

380 名前:NAME IS NULL mailto:sage [2008/03/21(金) 15:08:12 ID:???]
>>379
知らないならレスしないで下さい。ウザイです。

381 名前:NAME IS NULL mailto:sage [2008/03/21(金) 15:08:44 ID:???]
>>379
全く努力しない聞くだけチャンはほっとけ。

382 名前:NAME IS NULL mailto:sage [2008/03/21(金) 15:17:42 ID:???]
>>381
知らないならレスしないで下さい。ウザイです。

383 名前:NAME IS NULL mailto:sage [2008/03/21(金) 15:33:05 ID:???]
>>371
コンソールから
mysqladmin -u root -p xxx
でアクセスできるか?

384 名前:NAME IS NULL mailto:sage [2008/03/21(金) 15:34:14 ID:???]
もとい。こっち。
mysql -u root -p xxx


385 名前:NAME IS NULL [2008/03/21(金) 15:41:50 ID:pV5z+1bm]
MySQL Command Line Clientで良いんだよね?
メッセージとか出ないなww少し拍子抜けwww



386 名前:NAME IS NULL mailto:sage [2008/03/21(金) 15:44:44 ID:???]
あ、ごめん間違い。

ちゃんとEnter Passwordになるね。

387 名前:NAME IS NULL mailto:sage [2008/03/21(金) 15:46:39 ID:???]
って思ってたらなんぞこれー
パスワード入力したら

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

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

あひー

388 名前:NAME IS NULL mailto:sage [2008/03/21(金) 15:52:38 ID:???]
スマン、寝不足のせいかボケてんのか俺?

「xxx」はデータベース名だよね?
一応>>371の[analysis]にしたらちゃんと返って来たわ(Welcom to th MySQL monitor)

389 名前:NAME IS NULL mailto:sage [2008/03/21(金) 16:58:03 ID:???]
>>388
起動はしてるんだな。じゃ、ポート番号が合ってないんじゃね?

390 名前:NAME IS NULL mailto:sage [2008/03/21(金) 17:06:03 ID:???]
ここで質問していいのかわからないのですが、初心者用のスレがみつからなかったので、書き込ませていただきます。

MySQLが起動できないようです。
 MySQL 4.0.20
 Mac 10.3
ターミナルで
 sudo ./bin/mysqld_safe
としても、
Starting mysqld daemon with databases from /usr/local/mysql/data
mysql ended
とでて先へ進めません。
どうしたらよいか、どなたかよろしくお願いいたします。

391 名前:文字化けらった [2008/03/21(金) 17:22:46 ID:ZUe7Mqjc]
申し訳ありませんが教えてください。

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



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



393 名前:NAME IS NULL mailto:sage [2008/03/21(金) 17:29:47 ID:???]
>>391
CSVにして LOAD DATA INFILE
UTF-8でDBやテーブル作って文字コード合わせて queryしる。

394 名前:NAME IS NULL [2008/03/21(金) 17:32:13 ID:ZUe7Mqjc]
>>393
ありがとうございます。
便利ツールなどはご存知ありませんでしょうか。


395 名前:NAME IS NULL mailto:sage [2008/03/21(金) 17:39:18 ID:???]
>>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=



396 名前:390 mailto:sage [2008/03/21(金) 20:08:44 ID:???]
>>392 ありがとうございます。
dateはアクセス不可だったのでパーミッションをかえて開いたところ、
たしかに[pc名].local.errというファイルがありました。
しかし、これをどうやって開ければいいかがわからず。。
とりあえずmiで開いてみたら、なにも書かれていませんでした。
他のアプリケータなどで開くのでしょうか。
ものすごく初歩的な質問で申し訳ありませんが
よろしくお願いいたします。

397 名前:NAME IS NULL mailto:sage [2008/03/21(金) 20:24:25 ID:???]
>>396
datadir 内の全てのファイルは、mysqlが読み書き出来るようになってないとだめなんだが、
違ってるんならパーミッションを全部変えてみ。(通常 mysqlユーザ)

398 名前:NAME IS NULL mailto:sage [2008/03/21(金) 23:54:49 ID:???]
>>396
> 他のアプリケータなどで開くのでしょうか。

ttp://ja.wikipedia.org/wiki/%E3%82%BF%E3%83%B3%E3%83%9D%E3%83%B3#.E5.BD.A2.E7.8A.B6

399 名前:NAME IS NULL mailto:sage [2008/03/22(土) 01:42:27 ID:???]
>>389
そのPHPにポート指定する所無いなぁ…
ポート番号がセッティングウィザードのデフォルトのままだし…

400 名前:390 mailto:sage [2008/03/22(土) 09:11:45 ID:???]
>>398 アプリケーションですね。すみません。
>>397
ありがとうございます。
もともとは「オーナー:mysql」になっていました。
それだとfinderから開けなかったので、自分のユーザー名に変えてmiで開こうとしてみたら、
空だったのです。。

401 名前:NAME IS NULL [2008/03/23(日) 12:16:20 ID:+Imhz/jV]
指定したデータベースだけcharsetを変える方法があれば教えてください
デフォルトのcharsetがutf-8なのですが、互換性の問題からeucjpで格納したいです
テーブルのコレーションをujis_japanese_ciに変えたのですが、
コレーションを変えてもデータ格納形式自体は変わってないみたいです

402 名前:NAME IS NULL mailto:sage [2008/03/23(日) 14:06:44 ID:???]
      \ │ /
       / ̄\
     ─( ゚ ∀ ゚ )─
       \_/
      / │ \
    ○○○   ○○○
   ○,,・ω・○  ○・ω・,,○
    ○○○   ○○○ o
 o〜(,_uuノ    とuu_,)ノ

     FREE TIBET

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



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

もしかしたら、
alter table xxx convert to charset eucjpms;
でも出きるかもしれないけど、やったことないからわからん。

405 名前:NAME IS NULL mailto:sage [2008/03/24(月) 10:54:10 ID:???]
>>400
データベースの初期化からやり直したらどう?
mysql_install_db --user=mysql




406 名前:NAME IS NULL mailto:sage [2008/03/24(月) 17:10:55 ID:???]
mysqlhotcopy でデータベースコピーしたあと
mysqldの再起動以外でデータベース読み込ませる方法ないでしょうか。
常時起動させているものなので極力再起動は避けたいです。

407 名前:NAME IS NULL mailto:sage [2008/03/24(月) 18:30:46 ID:???]
>>406
やったことは無いけど、mysqladmin refresh でどう?

408 名前:NAME IS NULL mailto:age [2008/03/24(月) 20:08:29 ID:???]
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'group
varchar(40),

こんなエラーメッセージが出ましたが、どういうことですか?

409 名前:NAME IS NULL mailto:sage [2008/03/24(月) 20:10:30 ID:???]
SQL文も晒してね

410 名前:NAME IS NULL mailto:age [2008/03/24(月) 21:41:31 ID:???]
reate table entry(
mail varchar(15),
domain varchar(15),
is_a_group bool,
name varchar(20),
group varchar(40),
post varchar(20),
prefecture varchar(8),
station varchar(20),
adress varchar(40),
tel1 int(4),
tel2 int(4),
tel3 int(4),
birthday date,
industry varchar(40),
type varchar(40),
job varchar(20),
user varchar(20),
agree bool
);


411 名前:NAME IS NULL mailto:sage [2008/03/24(月) 21:53:10 ID:???]
reate table entry(
'mail' varchar(15),
'domain' varchar(15),
'is_a_group' bool,
'name' varchar(20),
'group' varchar(40),
'post' varchar(20),
'prefecture' varchar(8),
'station' varchar(20),
'adress' varchar(40),
'tel1' int(4),
'tel2' int(4),
'tel3' int(4),
'birthday' date,
'industry' varchar(40),
'type' varchar(40),
'job' varchar(20),
'user' varchar(20),
'agree' bool
);

412 名前:NAME IS NULL mailto:sage [2008/03/24(月) 22:32:30 ID:???]
ありがとうございます。


413 名前:NAME IS NULL [2008/03/25(火) 00:35:21 ID:VYc3xvqf]
ファイルをキャッシュするのにmysqlを使おうと思います
ファイルパスをキーにしてインデックスを張ることになるかと思いますが
そうなると255文字程度の長さは必要になります
そんな長いインデックスは実用的なのでしょうか?

414 名前:NAME IS NULL mailto:sage [2008/03/25(火) 09:00:49 ID:???]
そんなときは、数値でID付けてそのIDを結合したものにインデックス張るといいよ。

415 名前:390 mailto:sage [2008/03/25(火) 10:29:09 ID:???]
>>405
ありがとうございます。
「MySQL入門以前」という本を見ながらやっているのですが、
「データベースの初期化」というのは書いておらず、まだ一度もやっていません。
もうすこしよく勉強して、はじめからやり直してみようと思います。
ありがとうございました。



416 名前:NAME IS NULL mailto:sage [2008/03/25(火) 11:52:42 ID:???]
ファイルパスからmd5とかでhash値出せばそれなりに実用になる

417 名前:NAME IS NULL [2008/03/25(火) 12:17:57 ID:rCxdFsPn]
ファイルパスにmd5使うって超いいじゃん
バッティングすることなんて天文学的確率だろ
キャッシュ用途としては充分じゃね?

418 名前:NAME IS NULL mailto:sage [2008/03/25(火) 16:02:40 ID:???]
Winnyがそうだから

419 名前:NAME IS NULL mailto:sage [2008/03/25(火) 17:11:37 ID:???]
レコードの電話番号フィールドに「012-3456-7890」のような文字列が入ってるとして、
「01234567890」でもselect文で検索できるような方法はありますか?

concatのようなselect文中に挿入してレコードの文字列を置き換え(削除)つつ検索できたら
とても幸せなのですが、何かありますでしょうか?

420 名前:NAME IS NULL mailto:sage [2008/03/25(火) 17:50:42 ID:???]
>>419
お幸せに・・
select * from hoge where REPLACE(tel,"-", "")="01234567890"


421 名前:NAME IS NULL mailto:sage [2008/03/25(火) 17:51:36 ID:???]
>>419
フィールドが半角のみ確実なら正規表現 REGEXP 使えるよ

422 名前:419 mailto:sage [2008/03/25(火) 20:55:10 ID:???]
__________
   ||
   ||     ⊂⊃
   ||    ∧ ∧  >>420さん >>421さん
   ||    (  ⌒ ヽ ありがとう、幸せになれると思います
 ∧||∧   ∪  ノ
(  ⌒ ヽ 彡  V
 ∪  ノ  フワーリ
  ∪∪

423 名前:NAME IS NULL [2008/03/25(火) 23:29:33 ID:fL5GORe0]
質問で申し訳ないのですが、こんなトリガを書きました。

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

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

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

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

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

基本的に、トリガというのは呼び出し元がいじっているテーブルそのものはいじれないのが
仕様なのでしょうか?
よろしかったらご意見お聞かせください。

424 名前:NAME IS NULL mailto:sage [2008/03/26(水) 12:35:25 ID:???]
質問です。
データベース名にアンダーバーを入れるとなぜかたまにエラーになります。
たとえば「user_address」と言うデータベースを作るとなぜかエラーになる。
前後を区切りたいときは普通アンダーバーで区切ると思っていたのですがたまにエラーになるのでやめます。
普通はどの文字で区切るのかわかりません。
というかアンダーバー以外で区切る方法他にいい案ありますか?


425 名前:423 mailto:sage [2008/03/26(水) 13:42:35 ID:???]
>>423 自己解決しますた。
dev.mysql.com/doc/refman/5.1/ja/routine-restrictions.html

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

うぎゃー! 役に立たねージャン!
別テーブルに意図する操作内容を逃がして、定時トリガとかで反映させるくらいしか
アイディアが浮かばない。
どうしたらいいか、引き続きアイディア募集中!



426 名前:NAME IS NULL mailto:sage [2008/03/26(水) 15:22:47 ID:???]
>>424
なんでエラーなるの?エラーの内容は?

427 名前:424 mailto:sage [2008/03/26(水) 15:36:15 ID:???]
>>426
エラーというかデータベースが作れなかった。
何度やっても作れなかったがアンダーバー外したら作れた。

428 名前:NAME IS NULL mailto:sage [2008/03/26(水) 16:39:55 ID:???]
>>427
それは、mysqlというよりかはOSのファイルシステムの問題じゃね。

429 名前:424 mailto:sage [2008/03/26(水) 19:32:52 ID:???]
>>428
まあそういうことになります。
どこで聞くべきかわからなかったので
とりあえずmysqlでエラーがでたのでここで聞いてみました。
失礼しました。

430 名前:NAME IS NULL mailto:sage [2008/03/26(水) 20:55:26 ID:???]
質問です。
CREATE TABLE でPARTITION(TABLESPACEとか)を指定しなかったら
テーブルデータはどこに格納されるのでしょうか?


431 名前:NAME IS NULL [2008/03/26(水) 22:21:19 ID:edZp6jWv]
SELECT * FROM sales WHERE SUM(price)<'10000' GROUP BY sales_id

としたのですが、SQLが間違っているとエラーになります。
WHEREで検索する時、合計値を検索できないのでしょうか?
MySQLは4.1.20を使っています。

432 名前:NAME IS NULL mailto:sage [2008/03/26(水) 23:01:48 ID:???]
>>431
having

433 名前:NAME IS NULL mailto:sage [2008/03/27(木) 11:11:21 ID:???]
>>425
別テーブルに書き込んで、SELECTするときにJOINするとかどうよ?

434 名前:NAME IS NULL mailto:sage [2008/03/27(木) 13:02:47 ID:???]
>>430
ん?何が知りたい?データディレクトリ?

435 名前:NAME IS NULL [2008/03/27(木) 13:22:21 ID:haXSw+o7]
insertのときに、たとえ1文字であってもひらがなや漢字等を使うと

Data too long for column と出てしまうのはなぜですか?



436 名前: mailto:sage [2008/03/27(木) 13:56:58 ID:???]
seqtable
---------------------------
id   seq   notes
a    1    ほげ1
a    2    ほげ2
a    3    ほげ3
b    1    ふが1
b    2    ふが2
b    3    ふが3
....
b   100    ふが100
---------------------------
IDごとにseqが振られているテーブルなんですが、
delete table seqtable WHERE id='b' and (seq=77||seq=97);
したあとに
ID:bの連番の欠番を低い順から抜き出すことはできますでしょうか?
(欠番がない場合は最大値+1を返してくれるようにしたいです。)
最大値は以下で取れるので
SELECT (MAX(seq)+1) As max FROM seqtable WHERE id='b';
>ID:bの連番の欠番を低い順
をお願いします。

437 名前:NAME IS NULL [2008/03/27(木) 14:09:24 ID:4i6HCVKz]
>>436
codezine.jp/a/article/aid/1420.aspx?p=2
とか
codezine.jp/a/article/aid/1076.aspx
とかかな。

438 名前: mailto:sage [2008/03/27(木) 14:53:09 ID:???]
>437さん
ありがとうございます!
上のものでやりたいことは完璧にできました

439 名前:NAME IS NULL mailto:sage [2008/03/27(木) 15:14:54 ID:???]
>>435
テーブルの定義見せて。

440 名前:NAME IS NULL [2008/03/27(木) 15:36:58 ID:haXSw+o7]
create table railroads(
railroad varchar(20)
);

441 名前:NAME IS NULL mailto:sage [2008/03/27(木) 17:22:48 ID:???]
>>440
入力した文字コードとテーブルの文字コードが合っていないに一票

442 名前:NAME IS NULL mailto:sage [2008/03/27(木) 18:48:04 ID:???]
>>434
データベースのデータがOS上のどこに
保管されているのか知りたいです。

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

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



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

 んで、実際のファイルは使っているストレージエンジンによります。
ttp://dev.mysql.com/doc/refman/5.1/ja/storage-engines.html
 普通はMyISAMかInnoDBなので、該当の部分を読んでください。


444 名前:NAME IS NULL mailto:sage [2008/03/27(木) 19:13:09 ID:???]
>>442
つ dev.mysql.com/doc/refman/5.1/ja/storage-engines.html
ここらへんをよく読もう。

各table typeによって格納される場所は異なる。

445 名前:NAME IS NULL mailto:sage [2008/03/27(木) 19:14:00 ID:???]
かぶった・・・orz



446 名前:NAME IS NULL mailto:sage [2008/03/27(木) 19:47:28 ID:???]
>>442
っていうか、show variables like 'datadir';


447 名前:NAME IS NULL mailto:sage [2008/03/27(木) 21:07:09 ID:???]
下記のようなSQLを書いた場合、
何故か id が 0 のものが抽出されてしまいます。
なぜでしょうか?
また、回避法はありますでしょうか?
※検索に利用する為、0と検索された場合はidが0のものが抽出されるようにしたいので
AND id <> 0
は使わないでやりたいです。

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



448 名前:442 mailto:sage [2008/03/27(木) 21:16:49 ID:???]
ありがとうございます。
ある意味オラクルよりややこしいですね。


449 名前:NAME IS NULL mailto:sage [2008/03/27(木) 21:33:34 ID:???]
>>447
usersのCREATE TABLEみせて

450 名前:NAME IS NULL mailto:sage [2008/03/27(木) 23:15:04 ID:???]
>>449
こちらになります。

create table users (
index int(11) not null auto_increment,
id int(11) default '0' not null ,
pw varchar(40) not null ,
PRIMARY KEY (index)
);

451 名前:NAME IS NULL mailto:sage [2008/03/27(木) 23:40:57 ID:???]
数値と文字列比べちゃダメでしょ。

452 名前:NAME IS NULL mailto:sage [2008/03/27(木) 23:45:22 ID:???]
とりあえず、
SELECT cast('hoge' as signed);
を実行してみればいいと思うよ。

453 名前:NAME IS NULL mailto:sage [2008/03/27(木) 23:51:10 ID:???]
その場をしのぎたいだけなら、idを文字列にキャストして比較すればいいよ。

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

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

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

CREATE TABLE Users (
id int(11) UNSIGNED NOT NULL AUTO_INCREMENT
, user_name char(11) NOT NULL DEFAULT '0'
, pw varchar(40) NOT NULL
, PRIMARY KEY (id)
);

454 名前:NAME IS NULL mailto:sage [2008/03/28(金) 10:38:32 ID:???]
>>451
数値に対して文字列で比較しても、そもそも型自体が異なるので絶対合致しないもの、と思っておりました。
しかし何故か0のものが抽出されてしまった為、疑問に思いました。

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

>>453
ありがとうございます。
期待した通りの結果が返ってきました。
>indexとidがあるのがそもそもおかしい
こちら当方も感じました(他の方が作ったものの修正をしています)。
あと、CREATE TABLE で主キーに UNSIGNED を付ける辺り、なるほどと思いました。
大変勉強になりました、ありがとうございます。

455 名前:NAME IS NULL mailto:sage [2008/03/28(金) 12:57:05 ID:???]
MySQLのコマンドラインツール(mysql.exe)のログを取る方法はありませんか?
一度に大量のSQLスクリプトを実行するとログが流れてしまって、
エラーが出ていても気づかないということがあるんです。



456 名前:NAME IS NULL mailto:sage [2008/03/28(金) 13:01:59 ID:???]
リダイレクトしてファイルに落とせば?

457 名前:NAME IS NULL mailto:sage [2008/03/28(金) 13:07:56 ID:???]
>要するに、数値型のカラムに対して文字列で比較しようとすると、
>mysql内部で自動的に cast('hoge' as signed) のような形に変換され、
>その結果返ってきた0で抽出条件を掛けてしまう、という事でしょうか?

型が違うと、いちど失敗してから変換が発生するから、
明示的に変換するのに比べてオーバーヘッドが発生することだけ頭の片隅にでも置いておけば、
その理解で大体OK

458 名前:NAME IS NULL mailto:sage [2008/03/28(金) 13:52:28 ID:???]
>>456
mysql -u username -p database < hoge.sql 1>>log.txt 2>>err.txt
でいけました!ありがとうございました。

459 名前:NAME IS NULL mailto:age [2008/03/28(金) 14:14:57 ID:???]
www.mysql.gr.jp/frame/modules/bwiki/?FAQ
あなたが使用している PHP, MySQL のライブラリ(libmysql.dll, libmysqlclient)
の標準キャラクターセットは何かご存じですか?

とありますが、標準キャラクターセットを調べる方法はあるのでしょうか?

460 名前:NAME IS NULL mailto:sage [2008/03/28(金) 15:19:09 ID:???]
正規表現の置き換えはできますでしょうか?
イメージとしては以下のような感じです。

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

よろしくお願いします。

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

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

みたいな。

462 名前:NAME IS NULL mailto:sage [2008/03/28(金) 15:56:00 ID:???]
>>461さん
レスありがとうございます。

hoge.nameにはA1A3...見たいな感じでA([0-9]+)に複数マッチする可能性があります。(1つもマッチしない場合もあります)
それらすべてを(SELECT rep FROM rep_table WHERE id=$1)の形でとりたいのです。
現状ではプログラム側で、マッチした場合、そのつどSELECTで取得しています。
preg_replace_callback('/A([0-9]+)/','_preg_rep',$query);
function _preg_rep($matches) {
$sql =
"SELECT rep FROM rep_table WHERE id='$matches[1]'";
..
}
わかりづらい質問ですみませんがよろしくお願いします。


463 名前:NAME IS NULL mailto:sage [2008/03/28(金) 16:01:21 ID:???]
意図が伝わらなかったかな。
要は、テーブル定義(というか設計)見直せば?ってこと。
正規表現を使わなくても、テーブルさえちゃんとしてれば
461で示したSQLで実現できるよね?

もし変更が不可能だとしても、
idから部分文字列を切り出すとかすれば十分実現可能。

464 名前:NAME IS NULL mailto:sage [2008/03/28(金) 16:04:00 ID:???]
どうしても正規表現が使いたいなら、
dev.mysql.com/doc/refman/5.1/ja/regexp.html
ここを参考にすればいい。
でも、正規表現はそこそこ重い処理だから、
RDBMSでは極力使わないほうがいい。

465 名前:NAME IS NULL mailto:sage [2008/03/28(金) 17:53:51 ID:???]
>>459
PHPでmysqldに接続して(mysqld側の起動オプションで、charset絡みを何も指定せずに)
show variables like '%char%' ;

で、clientとconnectのところ。



466 名前:NAME IS NULL [2008/03/28(金) 20:02:50 ID:t4tLBd+a]
>>455
tee

467 名前:NAME IS NULL mailto:sage [2008/03/28(金) 22:31:08 ID:???]
>>466
tee log.txt でコンソールに表示されるログがすべて記録されるんですね。ありがとうございます。

468 名前:NAME IS NULL mailto:sage [2008/03/29(土) 00:05:43 ID:???]
% mysql hogehoge | tee log.txt

469 名前:NAME IS NULL mailto:sage [2008/03/29(土) 12:17:05 ID:???]
% mysql hogehoge | tee -a log.txt

470 名前:NAME IS NULL [2008/03/29(土) 23:35:55 ID:3fgyplCn]
為になるHP
u.aniota.info/?fayuwz

471 名前:NAME IS NULL [2008/03/31(月) 05:40:50 ID:0Cxuk5my]
同一テーブルをサブクエリでselectしてdelete出来ないので
テンポラリテーブルを使おうと思いますが、
テンポラリテーブルを削除する前に
何らかの形で操作側のプロセスが死んだ場合、
テンポラリテーブルだらけになるんじゃないかと思うのですが、
そのあたりはどうなってるのでしょうか?

472 名前:NAME IS NULL mailto:sage [2008/03/31(月) 11:24:38 ID:???]
>>471
 接続が終了するとDROPされるから問題ないんじゃね?
ttp://dev.mysql.com/doc/refman/5.1/ja/create-table.html


473 名前:NAME IS NULL [2008/03/31(月) 22:16:20 ID:cXmxkjaY]
RHEL 5 + MySQL5.0.26で構築してます。

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

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

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

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



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

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

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


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

 旧環境:1
 新環境:0E0

 となります。
 新環境でも 1 となるようにしたいのですが、
 何がマズいのでしょうか?


475 名前:NAME IS NULL mailto:sage [2008/04/01(火) 10:38:18 ID:???]
>>473
show variables like 'tmpdir';
デフォルトは確か /tmp
作られるのは最適化されていないクエリを発行した場合



476 名前:NAME IS NULL mailto:sage [2008/04/01(火) 10:40:09 ID:???]
>>475
mysqlというよりかは、DBIの問題じゃね?

477 名前:NAME IS NULL mailto:sage [2008/04/01(火) 10:40:47 ID:???]
↑ おっと、>>474 へのレスだ

478 名前:NAME IS NULL mailto:sage [2008/04/01(火) 11:16:33 ID:???]
>>474
DBD::mysqlのバージョンが違うからたぶんそれだな。
バージョン合わせるわけにはいかんの?


479 名前:NAME IS NULL [2008/04/01(火) 16:05:23 ID:cwXA9zGK]
大変低レベルの質問で恐縮です。

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

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

※こちらが相応しくなければ該当スレお教えください

480 名前:NAME IS NULL mailto:sage [2008/04/01(火) 16:12:32 ID:???]
perl/php などのスクリプトに接続IDとパスを書いて
そのmysql、この場合はlocalhostみたいだから鯖にphp置いてそこから
接続にいく感じ
ftpはそういうスクリプトを上げるときにつかうけど
mysqlにつかうときはバックアップを取るときくらいか

481 名前:使ってるのはPython-SQLObject mailto:sage [2008/04/01(火) 19:10:39 ID:???]
ここでいいのかよくわかりませんが、疑問・質問等のスレッドがなかったのでここに書きます。使っているのはMySQLなのでここに書きますがデーターベース全般についてです。

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

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


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

のようにデーターベースでは分けるでしょうか?
Pythonのようなオブジェクト指向言語で組み立てれば「駅」オブジェクトは「住所」インスタンスを持つことになると思うので、このようなテーブル構造を思いついたのですが「駅」には固有の「住所」しか当てはまらないので別テーブルにする利点が無い。
「住所」なんてテーブルだと「家」というテーブルを作ったときにこのテーブルからも「住所」を参照することになって「住所」テーブルには「駅」「家」二つのテーブルの住所が記録されることになって美しくない。このような場合どのようにするのがベストでしょうか?
乱文・長文で失礼いたしました、気に触ったらスルーしてください。

482 名前:NAME IS NULL mailto:sage [2008/04/01(火) 19:48:45 ID:???]
とりあえず、リレーショナル理論とか正規化について勉強すれば?
RDBMSとかSQLは、オブジェクト指向だとか、
手続き型だとかとは全然違うことがわかると思う。

483 名前:NAME IS NULL mailto:sage [2008/04/01(火) 20:36:08 ID:???]
>482
ここまでオブジェクト指向とにていると、どうしてもそれで考えてしまいますorz
おっしゃるとおり、やはりデーターベースの考え方をしっかり学んだほうがいいようですねorz
ttp://www.oreilly.co.jp/books/database/
のものを読んでみようと思います。ありがとうございました。



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

で、100〜1000の間を抽出出来ますが、
「100〜1000以外」というNOTにしたい場合、どうすればいいのでしょうか?


485 名前:NAME IS NULL mailto:sage [2008/04/01(火) 22:21:36 ID:???]
そこでなぜ引用符をつける。



486 名前:474 [2008/04/01(火) 22:27:15 ID:GR+VJpfB]
> 478

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

実は新環境と同じ環境ってのが別にあって、
そいつは自分では触れない環境なのですが
そこではちゃんと動いてるらしく、
バージョンは変えたくないらしいのです。。

487 名前:NAME IS NULL mailto:sage [2008/04/01(火) 22:30:35 ID:???]
SELECT hoge FROM Nanika WHERE test BETWEEN 100 AND 1000;

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

・・・ごめんなさい。

SELECT hoge FROM Nanika WHERE test < 100 OR test > 1000;

488 名前:484 mailto:sage [2008/04/01(火) 22:47:34 ID:???]
すみません、単純に
test NOT BETWEEN '100' AND '1000'

で、目的の結果を得ることが出来ました。お騒がせしました。


489 名前:NAME IS NULL mailto:sage [2008/04/02(水) 11:15:13 ID:???]
>>486
ChangeLogのこれかな。

2003-06-22 Rudy Lippan <rlippan@remotelinux.com> (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.

490 名前:NAME IS NULL mailto:sage [2008/04/03(木) 16:45:12 ID:???]
mysqlをインストールして適当にデータを入れてみたのですが、このデータをhtml上に呼び出すのってどうすればいいのでしょうか?

491 名前:NAME IS NULL mailto:sage [2008/04/03(木) 16:47:14 ID:???]
これまた大味な

492 名前:490 mailto:sage [2008/04/03(木) 16:54:27 ID:???]
SQLでselectしてデータを取り出すというのは分かるのですが、それをどうやったらページ上に表示できるのかなぁと
javascriptみたいにhtml上に直接かけるわけでもないですし

493 名前:NAME IS NULL mailto:sage [2008/04/03(木) 17:03:12 ID:???]
PHP、CGI、JSP、ASP、ASP.NET
さぁ、好きなのをお選び。

494 名前:NAME IS NULL mailto:sage [2008/04/03(木) 17:07:39 ID:???]
>>493
MySQLからSQLでデータを取り出し、それからさらにPHPなどでHTMLに渡すという事でしょうか?
めんどくさいですね・・・

495 名前:490 mailto:sage [2008/04/03(木) 17:13:13 ID:???]
phpを使う場合はphpの中にSQLを書く事ができるんですね



496 名前:NAME IS NULL mailto:sage [2008/04/03(木) 17:14:52 ID:???]
他でも一緒だよ
とりあえず、これ以上はスレ違い、というより板違いな気が

497 名前:NAME IS NULL mailto:sage [2008/04/03(木) 17:32:17 ID:???]
それが面倒だと思うなら、Flashから直接SQLサーバと通信してください。
サーバ系は一切必要なくなりますよ。

asql.mooska.pl/

498 名前:NAME IS NULL mailto:sage [2008/04/03(木) 23:08:13 ID:???]
SQLでデータベースからデータをselectした後、そこからさらにデータを絞り込む事はできますか?
具体的に言いますと、抜き出したデータの5行目〜10行目だけを選択するという感じなのですが、可能でしょうか?

499 名前:NAME IS NULL mailto:sage [2008/04/03(木) 23:20:23 ID:???]
可能です

500 名前:NAME IS NULL mailto:sage [2008/04/03(木) 23:38:14 ID:???]
>>499
それってSQLだけで可能ですか?

501 名前:NAME IS NULL mailto:sage [2008/04/04(金) 02:01:41 ID:???]
WebProgの質問スレにいた、車のデータベースの人?

502 名前:NAME IS NULL mailto:sage [2008/04/04(金) 05:27:22 ID:???]
>>500
可能です

503 名前:NAME IS NULL mailto:sage [2008/04/04(金) 05:44:09 ID:???]
>>502
マジで?

504 名前:NAME IS NULL mailto:sage [2008/04/04(金) 06:26:05 ID:???]
マジで

505 名前:NAME IS NULL mailto:sage [2008/04/04(金) 09:53:27 ID:???]
ストアドプロシージャ



506 名前:NAME IS NULL mailto:sage [2008/04/04(金) 10:25:42 ID:???]
ストアドプロシージャはSQLじゃないだろ。
というか、なんで5〜10行目が必要なんだ?
それは何かがおかしい気がする。

507 名前:NAME IS NULL mailto:sage [2008/04/04(金) 11:55:27 ID:???]
>>502
ありがとうございます

>>501
えっと・・・何のことでしょうか?

508 名前:NAME IS NULL mailto:sage [2008/04/04(金) 12:57:49 ID:???]
>>498
limit

509 名前:NAME IS NULL mailto:sage [2008/04/04(金) 13:42:21 ID:???]
uniqueキーを削除したいのですがテーブル定義時に
UNIQUE KEY(`hoge_id`,`sequence`)
としてしまいました。
この場合どうやって削除すればいいのでしょうか?

510 名前:NAME IS NULL mailto:sage [2008/04/04(金) 14:27:21 ID:???]
>>509
drop index

511 名前:NAME IS NULL mailto:sage [2008/04/04(金) 19:34:13 ID:???]
>>493
PHPだってCGIだろ
知ったか乙

512 名前:NAME IS NULL mailto:sage [2008/04/04(金) 20:13:39 ID:???]
PHPとCGIは区別するべき
知ったかぶりはどっちだか

513 名前:NAME IS NULL mailto:sage [2008/04/04(金) 21:04:28 ID:???]
PHPはSSIだな

514 名前:486 [2008/04/05(土) 10:35:42 ID:C1KIQxkZ]
> 489

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

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

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




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

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

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

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

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

色々調べてみたのですが私には検討がつかず困っています。
お力添え頂けないでしょうか。
宜しくお願い致します。



516 名前:515 mailto:sage [2008/04/05(土) 16:03:48 ID:???]
すみません、php.iniをmemory_limit = 512Mとすることで解決できました。
自己レスですが失礼致します。

517 名前:NAME IS NULL [2008/04/06(日) 07:05:21 ID:UtTMq1DC]
教えて頂けますでしょうか。
MySQLのSQL文チューニングに関してもっと知りたいのですが
EXPLAINの見方や、primary、index、unique、複合index等に詳しいサイト、もしくはオススメの本などありますでしょうか?
やっと時間ができたので調べたいなと思っています。

518 名前:NAME IS NULL mailto:sage [2008/04/06(日) 09:57:59 ID:???]
教えてください
MySQL始めようと思っています
とりあえず趣味程度で勉強も兼ねて
フォームとかレポートとかを作るのに必要なものは何ですか?
お勧めは何ですか?
当方はAccessしか使ったことなく、そういった知識がありません。

519 名前:NAME IS NULL mailto:sage [2008/04/06(日) 12:00:06 ID:???]
>518
フォームもレポートもSQLに関係ない気がするんだけど
それは僕が初心者だからなのでしょうか?

とりあえず使用目的と環境とフロントエンド次第じゃねーの?

520 名前:NAME IS NULL mailto:sage [2008/04/06(日) 12:03:00 ID:???]
関係あるかどうかも解らないアフォウです
MySQLのデータをフォームで入出力更新したり、レポートで集計してプリントしたりするためには
何を用意すれば良いですか?

521 名前:NAME IS NULL mailto:sage [2008/04/06(日) 12:51:24 ID:???]
フォームを作ったり、データを集計して出力するプログラム。

522 名前:NAME IS NULL mailto:sage [2008/04/06(日) 14:34:18 ID:???]
お勧めは何ですか?

523 名前:NAME IS NULL mailto:sage [2008/04/06(日) 14:39:38 ID:???]
用途と環境と貴方の知識による。

524 名前:NAME IS NULL mailto:sage [2008/04/06(日) 15:36:28 ID:???]
フロントエンドって何ですか?
用途:個人事業で使うデータを扱いたいんだけど、1万件前後、あと簡単な計処理と、3人いる愛人とのプレイデータ管理もしたいです
環境:年々、温暖化が進行してる気がします
知識:Accessを使いこなせる程度と英検1級

525 名前:NAME IS NULL mailto:sage [2008/04/06(日) 19:14:05 ID:???]
以前から終わってる ってことだよ



526 名前:NAME IS NULL mailto:sage [2008/04/06(日) 20:14:26 ID:???]
インデックスにはユニークID、PRIMARY KEY、インデックスなどがありますが、これって全部同じものですか?

527 名前:524 mailto:sage [2008/04/06(日) 21:25:16 ID:???]
教えてください<m(__)m>

528 名前:NAME IS NULL mailto:sage [2008/04/07(月) 01:40:05 ID:???]
>>526
ちがうよ

529 名前:NAME IS NULL mailto:sage [2008/04/07(月) 07:22:36 ID:???]
>527
質問者本人以外に答える必要はないと思うんだ

530 名前:NAME IS NULL mailto:sage [2008/04/07(月) 15:35:41 ID:???]
>>528
どのように違うのでしょうか?

531 名前:NAME IS NULL mailto:sage [2008/04/07(月) 15:40:35 ID:???]
>>530
用途も意味も何もかも全部ちがうよ

532 名前:NAME IS NULL mailto:sage [2008/04/08(火) 00:15:31 ID:???]
人生の選択も含めて全部ちがう

533 名前:NAME IS NULL [2008/04/09(水) 11:06:13 ID:rr+k5v3w]
MySQLのストアドプロシージャで質問です。

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

call sp ( 123, 445);
でも
call sp (123);
でも動作する。
445が指定されていれば内部で取得できる。
ということがしたいです。

534 名前:NAME IS NULL mailto:sage [2008/04/09(水) 14:19:54 ID:???]
>>517
www.oreilly.co.jp/books/4873112095/

535 名前:NAME IS NULL mailto:sage [2008/04/09(水) 19:26:18 ID:???]
>>533
なんでそんなことしたいん?
NULLでも渡しておけば?




536 名前:NAME IS NULL [2008/04/10(木) 00:35:24 ID:9S23/fv1]
MySQL5.1でlock tablesに関する質問なのですが、
lock tables
単一テーブルに対するsql文
unlock tables
とすると、TOPコマンドでのロードアベレージが2前後から一気に30前後になってしました。
ただ、サイトの表示自体は早くなっている感があります。
この場合、ディスクが足を引っ張っているのかデッドロックになっているのか
そもそもロードアベレージは下がると期待していたのですがとまどっています。
同様事例の参考資料が見つからず途方に暮れております。
宜しければアドバイスお願いできないでしょうか。お願いします。

537 名前:NAME IS NULL mailto:sage [2008/04/10(木) 09:50:41 ID:???]
すみません、質問させてください。
MySQL5.0を使用しているマシンで、ほぼ毎日午前3時前後に下記のようなエラーログが出力されます。
特に午前3時と指定して実行している処理はないと思うのですが、
下記はどのような場合に出力されるエラーなのでしょうか?

080407 3:15:28 InnoDB: ERROR: the age of the last checkpoint is 188694697,
InnoDB: which exceeds the log group capacity 156653568.
InnoDB: If you are using big BLOB or TEXT rows, you must set the
InnoDB: combined size of log files at least 10 times bigger than the
InnoDB: largest such row.
080408 3:11:29 InnoDB: ERROR: the age of the last checkpoint is 156654082,
InnoDB: which exceeds the log group capacity 156653568.
InnoDB: If you are using big BLOB or TEXT rows, you must set the
InnoDB: combined size of log files at least 10 times bigger than the
InnoDB: largest such row.

538 名前:533 [2008/04/10(木) 11:21:47 ID:zXvXwiNf]
>535
デバッグフラグを立てたいのさ。
通常は使用しないから引数を意識させたくない。

539 名前:NAME IS NULL mailto:sage [2008/04/10(木) 13:30:20 ID:???]
hoge_tbl
--------------------
id   time
1   21:00
1   22:00
1   21:00
1   23:00
1   12:00
1   21:00
1   21:00
...
--------------------
こんなログを保存しているテーブルがあるとして
時間ごとのアクセス数を取得したいのですがどのような書き方があるでしょうか?

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

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

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

一応、自分で書いたSQL文でもできましたがidが複数あり処理に時間がかかりすぎるため熟練者さまのご意見を聞ければと思います。
長文になりましてすみませんがよろしくお願いいたします。

540 名前:NAME IS NULL mailto:sage [2008/04/10(木) 14:20:32 ID:???]
>>539
SELECT DATE_FORMAT(time,'%H') as TH
FROM hoge_tbl a
WHERE id=1
GROUP BY TH
ORDER BY TH

これでtimeにインデックスがあっても多分効くはずです。
(DATE_FORMAT()書式は未検証)

541 名前:540 mailto:sage [2008/04/10(木) 14:22:01 ID:???]
誤> SELECT DATE_FORMAT(time,'%H') as TH
修正> SELECT DATE_FORMAT(time,'%H') as TH, COUNT(*)

542 名前:NAME IS NULL mailto:sage [2008/04/10(木) 14:46:03 ID:???]
>>540
ありがとうございます!
こちらの環境で試してみたところ3倍以上の高速化を実現できました!

本当にありがとうございます!

543 名前:NAME IS NULL [2008/04/10(木) 15:12:05 ID:9ckzVTRD]
mysqlで別のdbを、mysqladmin -u root -p hogeしたあとに、

select * from users limit 1;

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

となったのですが、復旧するにはどのようにすればよいでしょう。
よろしくお願いいたします。

544 名前:NAME IS NULL mailto:sage [2008/04/10(木) 15:24:24 ID:???]
MySQLにかぎったことではないのですが、
列や制約を追加したり消したりするALTERについてなんですが、
これって一昔前はありませんでした?
40代の元技術者の方に話を聞いたところ、
テーブルの設計は後から変更できないので慎重にやらないといけない。
というようなことを聞いたんですが。

545 名前:NAME IS NULL mailto:sage [2008/04/10(木) 15:57:09 ID:???]
>>544
設計の規約の上での話じゃないの?
機能的には可能でも、「できるんだからしちゃっておk」ってスタンスで居ると
後々収集が付かなくなるという



546 名前:NAME IS NULL mailto:sage [2008/04/10(木) 16:48:02 ID:???]
こんなことってできますか?

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

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

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

こんな形で取り出したいです。
連結させる順序は指定できなくてもいいです。

547 名前:544 mailto:sage [2008/04/10(木) 16:54:48 ID:???]
>>545
そういうことでしたか。言葉の意味を取り違えていたようですね。
レスどうもありがとうございます。

548 名前:NAME IS NULL mailto:sage [2008/04/10(木) 21:44:38 ID:???]
目的:バックアップスケジュールを設定したい
OS:XP SP2
MySQL 5.0
password storage methodをObscuredにした
Write Log File for Scheduled Backupsにチェックを入れた

Administrator1.2.12のバックアップで、
schedule this backup projectをチェックするとAttentionが出てしまいます。
オプションのconnectionsを設定すればいいと思うのですが、
その設定を教えてください。

549 名前:NAME IS NULL mailto:sage [2008/04/10(木) 22:28:58 ID:???]
>>546
select sum(power),group_concat(message separator '') from hoge

550 名前:NAME IS NULL [2008/04/11(金) 00:00:40 ID:13YgqV5Q]
バイナリログってバックアップ対象ですか?
巨大だから外したいんですが・・

551 名前:NAME IS NULL mailto:sage [2008/04/11(金) 11:23:51 ID:???]
>>550
っていうか不要なBINログは定期的に消す。オレのメモを嫁。
◆mysql masterのレプリケーション バイナリログの削除方法
・スレーブ側で現在参照中のバイナリログを参照する
show slave status;
・マスタ側でそのファイル名を指定してその番号以前のファイルを削除する
※指定したファイルは残るらしい
show master logs;
purge master logs to 'xxx-bin.nnn';


552 名前:NAME IS NULL mailto:sage [2008/04/11(金) 15:30:05 ID:???]
ありがとうございました
レプリケーションしてないのですが、何となくバイナリログ取ってました
レプリケーションしない場合はとる必要ないですよね

553 名前:NAME IS NULL mailto:sage [2008/04/11(金) 16:13:58 ID:???]
カラムの型をBIGINT unsigned にしたのですが、最大値が2147483647までしか入りません。
create show tableでもBIGINT unsigned に変わっていることは確認できました。
何が原因なのでしょうか?

554 名前:NAME IS NULL mailto:sage [2008/04/11(金) 16:50:22 ID:???]
MyISAMしか使っていないはずなのに、
datadirの中にibdata1があります。
なんですこれは?

555 名前:NAME IS NULL mailto:sage [2008/04/12(土) 02:06:27 ID:???]
>>551
--expire_logs_days も良いかも。



556 名前:NAME IS NULL mailto:sage [2008/04/12(土) 03:14:08 ID:???]
質問させて下さい。
クエリを分割するにはどうのようにすれば良いでしょうか?
MySQL5.0.45でinnodbを使用しているのですが、サブクエリーを使うような長くて少し複雑なクエリを発行しています。
EXPLAINで確認したところ、上手くindexを使ってくれません。
1クエリー1テーブル1インデックスの制約にひっかかってしまいます。

myisamならロックテーブルをかけて
ttp://d.hatena.ne.jp/kenji-u/20071102/p1
のようにすれば一つの処理として完結させられると思うのですが
innodbでのやり方がわかりません。
色々調べてみたのですがそのような記述を見つけることができませんでした。
アドバイス頂けないでしょうか。
宜しくお願い致します。

557 名前:NAME IS NULL [2008/04/12(土) 08:06:58 ID:+PKJZE04]
質問です
MyQSL Query Browser 1.2.12
を使おうと思ってるんですが
接続時にエラーが出ます
Could not connr\ect totha specified instance
MySQL Error Number 2003
Cant connect to MySQL server on localhost [10061]

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

誰か対処法をお願いします


558 名前:554 mailto:sage [2008/04/12(土) 08:48:12 ID:???]
削除しても起動時に作成されます
アイドリング的に、前もって作成されるみたいですね

559 名前:NAME IS NULL mailto:sage [2008/04/12(土) 12:35:30 ID:???]
>>557

そのまんまだよ。

(1)ネットワークを確認
(2)MySQLサーバの起動確認

560 名前:NAME IS NULL [2008/04/12(土) 16:06:33 ID:k8Kacv++]
すみません、質問させてください
delete文がうまくいったかどうか、確認する方法ないですか?
select の場合、$rs = select文実行 などとして$rsの中身を見て
確認してるんですが、deleteの場合はどうしたらいいんでしょう?
どなたかアドバイスお願いします

561 名前:NAME IS NULL [2008/04/12(土) 20:19:02 ID:AD6GVloA]
phpMyAdmin

562 名前:NAME IS NULL mailto:sage [2008/04/12(土) 21:19:46 ID:???]
>>560
プログラミング言語は何?

563 名前:NAME IS NULL [2008/04/12(土) 23:17:39 ID:IYNGfhn4]
myisamchkのテストをしたいのですが
うまく壊れたファイルがありません
インデックスを壊すにはどうしたらいいですか?

564 名前:NAME IS NULL [2008/04/13(日) 00:33:22 ID:4TX2K7e+]
稼働中のdb引っ張ってきたらうまいこと壊れてましたが
テーブルのメンテナンスってどうしてます?
チェック→引っかかったら、修復前のファイルを保存
→修復→修復できたら修復前のファイルを削除・
修復できなかったら管理者にメール
こんな感じですか?

565 名前:560 [2008/04/13(日) 03:31:23 ID:t+wHgJcY]
>>562
ごめんなさい 書き忘れてました
php5で作っています



566 名前:NAME IS NULL mailto:sage [2008/04/13(日) 08:42:41 ID:???]
>>565
普通に mysql_query() の戻り値を調べるのじゃダメなの?

567 名前:NAME IS NULL mailto:sage [2008/04/13(日) 15:27:41 ID:???]
サーバを ./configure --prefix=/usr/local/mysql --with-charset=ujis --with-extra-charsets=all で
make

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

MySQL の文字セット: UTF-8 Unicode (utf8) ←どこに依存ですか?

568 名前:NAME IS NULL [2008/04/13(日) 23:00:38 ID:i44zPYKS]
dev.mysql.com/doc/refman/4.1/ja/backup.html
ここを見るとバックアップ前にFLUSH TABLESをしろと書いていますが
/etc/init.d/mysql stop
でサーバを止めた時は、
自動的にFLUSH TABLESも行われていると考えていいのでしょうか?

569 名前:NAME IS NULL mailto:sage [2008/04/14(月) 02:22:05 ID:???]
>>568
考えていい。

570 名前:NAME IS NULL mailto:sage [2008/04/14(月) 03:52:51 ID:???]
>>1に紹介されているサイトをささっと見てきたんだけど
実際の画面とか見たかったんだけどどこにあるのかわかんなかった
初心者でも直感的に使えそうなの?
マウス操作でドロップしてデータを入力していくとか
違った文字数の入力も可能なのかな?
1行の構成が日本語で約100文字と約300文字の2種類あり
この2種類で1ページとして2万ページくらい自動入力したい
初心者なんですが直感だけでいけますか?

571 名前:NAME IS NULL mailto:sage [2008/04/14(月) 18:56:36 ID:???]
下記の様なテーブルがあったとします。
(即席で作ったリストなので細かい事は気にしないで下さいませ)

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

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

1 friend
2 family
3 friend

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

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

どのようなSQLを書けばこのように抽出されますでしょうか?
どうかご教授の程宜しくお願い致します。

572 名前:NAME IS NULL mailto:sage [2008/04/14(月) 19:03:28 ID:???]
>>571
distinct

573 名前:NAME IS NULL mailto:sage [2008/04/14(月) 19:09:39 ID:???]
DISTINCTも同じ重複削除の為、真ん中のと同じ結果になってしまいます

574 名前:NAME IS NULL mailto:sage [2008/04/14(月) 19:18:02 ID:???]
重複してないじゃん。真ん中の結果になるわけなし。 なるならSQLの誤り。

575 名前:NAME IS NULL mailto:sage [2008/04/14(月) 19:32:40 ID:???]
SELECT DISTINCT(no) FROM hoge
というSQLではない?



576 名前:NAME IS NULL mailto:sage [2008/04/14(月) 19:58:06 ID:???]
select distinct no,type from hoge

577 名前:NAME IS NULL mailto:sage [2008/04/14(月) 20:12:08 ID:???]
うわ、こんな書き方できたなんて。。。
SELECT DISTINCT(no), DISTINCT(type) FROM hoge
とかやって、エラー出るからDISTINCTって一つしか指定できないもんだと思ってた。
ありがとうございます!

578 名前:NAME IS NULL mailto:sage [2008/04/14(月) 21:42:25 ID:???]
>DISTINCTも同じ重複削除の為
ってあたり危ないな。
GROUP BYは重複削除のためにあると思ってないか?

579 名前:NAME IS NULL mailto:sage [2008/04/14(月) 22:06:24 ID:???]
GROUP BYは集計ですよね、まとめた後にCOUNTとかSUMとか。
でも、DISTINCTもそういう計算が無いバージョンのGROUP BYと思ってた。

580 名前:NAME IS NULL mailto:sage [2008/04/15(火) 01:12:39 ID:???]
>>577
つうかdistinctで括弧使う変な書き方初めてみたわ

581 名前:NAME IS NULL mailto:sage [2008/04/15(火) 08:42:18 ID:???]
>>577
その書き方俺も初めて見た
関数じゃないのに勘違いしてないか?

582 名前:NAME IS NULL mailto:sage [2008/04/15(火) 12:38:16 ID:???]
下のようなテーブルがあったとして
IDごとにアクセス端末がいくつあるか(今日の)カウントした値をとりたいのですがどんな方法がいいでしょうか?

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

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

こんな感じでとっているのですが1つのIDに12秒くらいかかります。

583 名前:NAME IS NULL mailto:sage [2008/04/15(火) 12:56:16 ID:???]
select id,ua,count(*) from table_log where time="2008-04-07" group by id,ua order by id,ua;

584 名前:NAME IS NULL [2008/04/15(火) 17:28:33 ID:WrDaLq3k]
mysqldumpでリモート接続先のdumpを取得しています。
今回、新たにstored procedureを導入しました。
dumpデータにプロシージャも含めるめ、-Rをつけて実行しましたが
リモート接続ではプロシージャのdumpがとられていません。

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

ちなみに現在は、
SELECT,
LOCK TABLES,
EXECUTE,
CREATE ROUTINE,
ALTER ROUTINE ON
を与えています。


585 名前:NAME IS NULL mailto:sage [2008/04/16(水) 01:34:54 ID:???]
カラムの型をBIGINT unsigned にしたのですが、最大値が2147483647までしか入りません。
create show tableでもBIGINT unsigned に変わっていることは確認できました。
何が原因なのでしょうか?



586 名前:NAME IS NULL mailto:sage [2008/04/16(水) 10:56:03 ID:???]
>>585
クライアントは何使ってるの? それがintにしか対応してないって可能性はない?

587 名前:584 mailto:sage [2008/04/16(水) 11:47:23 ID:???]
どうやら権限の問題ではなく、定義者の問題のよう。
SPを作成したユーザ=definerがdumpできるようです。
なのでリモート接続するユーザを明示的にdefinerしてやれば
dumpできました。
ただ、SPを実行する際にdefinerの権限で動作する(sudo definerみたいなもん?)
ようなのでSP内でtemporaryテーブルや、insert, deleteを行っていたら
その権限がリモート接続するユーザに対して必要になる。
dumpだけの最小限の権限を考えていたのでちょっと困った。

588 名前:584 mailto:sage [2008/04/16(水) 12:09:44 ID:???]
もっと調べてみると
SQL SECURYTY でdefiner, invokerが指定で着るみたい。
つまり、定義者はリモート接続するユーザで
セキュリティ的には実行者とすることで
解決できそうな予感。

589 名前:NAME IS NULL [2008/04/16(水) 14:02:02 ID:Li0u4etG]
質問なのですが、MySQL5のレプリケーション、マスタ-スレーブ構成時における
マスタ-スレーブ間のデータの同期間隔はどれくらいなのでしょうか?
調べていく内に仕組み等はわかるようになったのですが、同期間隔に関して詳しく書いている資料を発見できませんでした。
スレーブ側はクエリーログを受け取って順次実行していくので、同期間隔はハード性能に依存するところが大きいのでしょうか?
この変の挙動についてお詳しい方がおられましたら是非教えて頂けませんでしょうか。

590 名前:NAME IS NULL [2008/04/16(水) 19:33:33 ID:QEaTF0YF]
データベースで
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| kokyaku |
| mysql |
+--------------------+
3 rows in set (0.00 sec)

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

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

これってなに?

591 名前:NAME IS NULL mailto:sage [2008/04/16(水) 20:25:14 ID:???]
>>590
電話番号カラムの記述をよく見てみ

592 名前:NAME IS NULL mailto:sage [2008/04/16(水) 20:28:36 ID:???]
>>589
気にしたことないけど、ネットワーク速度よりかはスレーブ側の更新クエリの
速度に引っ張られるんじゃないかな。

593 名前:NAME IS NULL mailto:sage [2008/04/16(水) 20:34:04 ID:???]
>>589
何を使ってるかしらぬが、処理側の変数がオーバーフローしてるんじゃね?

594 名前:NAME IS NULL mailto:sage [2008/04/16(水) 20:35:15 ID:???]
↑ 585 へのレスだった。

595 名前:NAME IS NULL mailto:sage [2008/04/16(水) 21:31:19 ID:???]
ttp://mirror.provenscaling.com/mysql/enterprise/source/5.0/

READMEにデュアルライセンスって書いてあるのですが
購入しないとインストールできない仕組みになっているのですか?



596 名前:NAME IS NULL mailto:sage [2008/04/16(水) 22:54:41 ID:???]
すいません、意味が分からないので質問変えます

公式では5.0.51aまでしかDLできないので、URLにある5.0.58が非常に気になります。
インストールして使用することに問題はないのでしょうか?

597 名前:NAME IS NULL mailto:sage [2008/04/17(木) 00:05:56 ID:???]
>>596
>>595のリンク先はEnterpriseで有償
Community Serverは無償

598 名前:NAME IS NULL mailto:sage [2008/04/17(木) 03:47:31 ID:???]
MySQL Conference & Expo 2008からカキコ

599 名前:590です。 [2008/04/17(木) 08:37:37 ID:xQuLnTlv]
insert into address (id,name,zip,city,addr,tel,date) values (1,'山田花子','100-0000','東京都千代田区',' 千代田1-1-1','012-345-6789',now())
;
これでいくかな?


600 名前:NAME IS NULL [2008/04/17(木) 08:44:00 ID:k/clcQ5/]
MySQL5.0+php5でシステムを組んでいるのですが、
Out of memory (Needed xxxxxx bytes)
のエラーが頻繁に出て対処に困っています。

メモリーは2GBで、アクセス数は1時間で4000PV位です。
メモリーはサーバーの仕様でこれ以上増やせないのですが、
my.cfのどこかの設定値を変更して対応することは可能でしょうか?
宜しくお願いします。

601 名前:NAME IS NULL mailto:sage [2008/04/17(木) 09:41:28 ID:???]
>>600
エラーを吐いてるのは mysqld?クライアント側?

602 名前:NAME IS NULL mailto:sage [2008/04/17(木) 09:52:46 ID:???]
>>600
多分php.iniのココ。
memory_limit = **M

603 名前:NAME IS NULL [2008/04/17(木) 09:54:21 ID:k/clcQ5/]
>>601
phpから、DBにコネクションを確立した後、SQL文を実行した際に発生しています。
ちなみに、このエラーの発生頻度は約30回/日です。PVは6万PV/日、実行SQL数80万SQL/日です。

宜しくお願いします。

604 名前:Zeno ◆5nZQbNmQPs [2008/04/17(木) 16:22:49 ID:dYEsVLTe]

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

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



605 名前:NAME IS NULL mailto:sage [2008/04/17(木) 16:49:44 ID:???]
>>603
大量のクエリ結果を配列にぶち込んでるからじゃね?



606 名前:NAME IS NULL [2008/04/17(木) 19:02:36 ID:wr9HmqHR]
初心者です。
しょうもない質問ですが、みんな結合テーブルを使ったselectとかバキバキ
利用してるんでしょうか?
www.techscore.com/tech/sql/06_02.html を見て今勉強してます
これは、結果的にどういうメリットがあるんでしょう?
複数回クエリする必要がなくなる→負荷とエラーの発生率が下がる ということですか?


607 名前:NAME IS NULL mailto:sage [2008/04/17(木) 19:54:13 ID:???]
example.jp からのみ許可するMysqlユーザを作成して
example.jp からアクセスしてみたら、

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

ってエラーが出た。
example.com ってどこから読んでるの?
OSはLinuxって
hostname しても example.jp ってちゃんと表示されるんだけど。
逆引きしてもちゃんとexample.jp になるし。
どなたかヘルプミー

608 名前:NAME IS NULL mailto:sage [2008/04/17(木) 20:07:21 ID:???]
> example.jp からのみ許可するMysqlユーザを作成して

ここの作業間違ったんだろうが。


609 名前:NAME IS NULL mailto:sage [2008/04/17(木) 20:07:45 ID:???]
>>606
正規化を勉強しなさい。

610 名前:NAME IS NULL mailto:sage [2008/04/17(木) 20:10:22 ID:???]
>>608
グローバルIPに対し接続を許可するつもりかい?

611 名前:NAME IS NULL mailto:sage [2008/04/17(木) 20:40:54 ID:???]
>>607

そのうちわかるよw

localhostとかいろいろトライ。

612 名前:NAME IS NULL mailto:sage [2008/04/17(木) 21:04:35 ID:???]
>>604
Mickosがはっきり否定してるぞ
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).

613 名前:606 [2008/04/17(木) 21:36:42 ID:wr9HmqHR]
>>609
ありがとうございます。
正規化は勉強しているつもりなんですが、気になったので上記の質問をさせてもらいました。
引き続いての質問で恐縮ですが、

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

とあるとき、受注表テーブルまたは商品表テーブルのどちらかがカラの時は
何も結果が返ってこないと考えていいのでしょうか?
かりに商品表テーブルがカラの時、「受注表.納品日」だけでも
戻ってくるということはないと考えていいのかな、と。
ためしに似たようなものを実行して試したんですが、何も戻ってきませんでした
自分のテストミスなのか・それでOKなのかわからないので教えてください すみません

614 名前:606 [2008/04/17(木) 21:43:59 ID:wr9HmqHR]
すみません >>613
>ためしに似たようなものを実行して試したんですが、何も戻ってきませんでした
という部分ですが、
WHERE 受注表.納品日 = '20010401'
AND 受注表.商品コード = 商品表.商品コード ;
はもちろんのこと、二行目を削除して
WHERE 受注表.納品日 = '20010401';
だけでやっても何も戻ってきませんでした
こういうものなんでしょうか?

615 名前:NAME IS NULL mailto:sage [2008/04/17(木) 23:40:59 ID:???]
GPLなのにclosedに出来るの?



616 名前:NAME IS NULL mailto:sage [2008/04/18(金) 03:12:10 ID:???]
MySQL、新機能追加は有償版の「MySQL Enterprise」だけを対象に
www.technobahn.com/news/2008/200804172000.html

Linuxを代表するオープンソースベースのリレーショナルデータベース管理システムのMySQL
が近くソースコードの公開を停止する方向で準備を進めていることが16日、米カリフォル
ニア州サンタクララで開催中のMySQLコンファレンスの席上で明らかとなった。


617 名前:NAME IS NULL [2008/04/18(金) 06:10:56 ID:KIEogQYQ]
MySQLオワタ

618 名前:NAME IS NULL mailto:sage [2008/04/18(金) 06:49:14 ID:???]
Sunノバビッチ!

619 名前:NAME IS NULL mailto:sage [2008/04/18(金) 11:28:11 ID:???]
すみません、ご教授いただきたいのですが、

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

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

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

宜しくお願い致します。

もう1台別のサーバを用意して、そっちでUTF-8のMySQLを用意した方が無難ですかね・・・

620 名前:NAME IS NULL mailto:sage [2008/04/18(金) 12:30:23 ID:???]
>>619
変えられる

621 名前:NAME IS NULL mailto:sage [2008/04/18(金) 12:33:57 ID:???]
>>614
受注表.納品日 = '20010401' にマッチするデータあるの?
リレーションの前に1テーブルで自在にクエリできるようになれば。

622 名前:619 mailto:sage [2008/04/18(金) 12:45:41 ID:???]
>>620
ありがとうございます。

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

宜しくお願い致します。

623 名前:NAME IS NULL mailto:sage [2008/04/18(金) 13:08:05 ID:???]
>>622
データベースは
create database hoge character set 'utf8';
テーブルは
create table hoge (.. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;


624 名前:619 mailto:sage [2008/04/18(金) 13:48:35 ID:???]
>>623
ありがとうございます。

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

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

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

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

宜しくお願い致します。

625 名前:NAME IS NULL mailto:sage [2008/04/18(金) 14:31:30 ID:???]
>>624
うちは5.0だけど、
create database hoge ; で、データベース作成時には何も指定無しで、
create table hage (....) Engine=MyISAM CHARSER=utf8 ; で出来ないか?
(うちはそれで、Serverデフォルトutf8、特定のテーブルのみcp932で動いてるよ。)



626 名前:614 mailto:sage [2008/04/18(金) 16:21:37 ID:???]
>>621
ありがとうございます
>受注表.納品日 = '20010401' にマッチするデータあるの?
あります。
あるなら、まともにクエリ成功してるはず と考えて良いのでしょうか?
僕の操作ミスかな?

627 名前:NAME IS NULL mailto:sage [2008/04/18(金) 18:20:04 ID:???]
すいません、カラム名を変更したいのですがどなたかご教示いただけないでしょうか。

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

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

ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
と、エラーが出ます。構文が間違ってると言われているようなのですが、
マニュアルサイトでは
mysql> ALTER TABLE テーブル名 CHANGE 古いカラム名 新しいカラム名;
と記載されておりどこが間違っているのかわかりません。
お願いします。

628 名前:NAME IS NULL mailto:sage [2008/04/18(金) 18:52:52 ID:???]
すいません、末尾にデータ型を付け足したら変更できました。

629 名前:NAME IS NULL mailto:sage [2008/04/18(金) 21:38:16 ID:???]
質問させて下さい。
Ubuntu7.1 serverとMySQL5.0.45を使っています。
データのインポートが異常に遅いのです。
以前まではx86版Ubuntuを使っていましたが、64bit版に変えました。
以前と設定もハードウェア構成もは全く同じなのです。
前もってphpmyadminを使ってエクスポートでとっておいたgzip圧縮のSQL文によるバックアップを
現環境のMySQLにインポートしているのですが、インポート実行時間が以前の50倍くらい遅くなっています。
時間をかければインポートできますが、大きめのデータだと何日まてばよいかわからない状況です。

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

もし宜しければお力添え頂けないでしょうか。
宜しくお願い致します。

630 名前:NAME IS NULL [2008/04/18(金) 22:06:28 ID:qYojHQc3]
今月〜来月の間(1ヶ月間)と言うのを出したいと思っています。

PHPを使って今月と来月をdate関数で出して、範囲検索で抽出できると思いますが、
それをSQLだけでする方法ってありませんでしょうか?

631 名前:NAME IS NULL mailto:sage [2008/04/18(金) 22:14:43 ID:???]
>>630
今月〜来月の間の「何を」出したいんだ?

質問をする前に人に分かる日本語を書くよう心がけてよ

632 名前:NAME IS NULL mailto:sage [2008/04/18(金) 22:21:54 ID:???]
せめて表の構造くらい語ってくれよ…

633 名前:630 [2008/04/18(金) 22:32:10 ID:qYojHQc3]
>>631
申し訳ないです。。
登録されているdateにたいして、
「今月」〜「来月」という値を抽出したいと思っています。

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

みたいなSQLでその期間内のデータを抽出できると思いますが、
「2008-04-01」「2008-04-30」という範囲の値を、SQLで出せないかと思っています。

634 名前:NAME IS NULL mailto:sage [2008/04/18(金) 23:03:17 ID:???]
>>633

それで伝わると思ってるのか。

635 名前:NAME IS NULL mailto:sage [2008/04/18(金) 23:55:05 ID:???]
>>633
ヒント
DAYOFMONTH(), CURDATE(), ADDDATE()

そういう質問・説明の仕方を仕事でやると怒られないかい?
前提を省いた説明というのは基本的にはしてはいけないよ。




636 名前:NAME IS NULL mailto:sage [2008/04/19(土) 12:10:52 ID:???]
>>616
ガセネタ紹介乙

637 名前:NAME IS NULL mailto:sage [2008/04/19(土) 14:26:10 ID:???]
>>630の情報だけで答えられない奴は仕事には向いてない。
実務になったらこんな聞き方するクライアントばっかりだぞ?

638 名前:NAME IS NULL mailto:sage [2008/04/19(土) 14:31:55 ID:???]
お客さんが説明下手なのは、そりゃしょうがない。

639 名前:NAME IS NULL mailto:sage [2008/04/19(土) 14:34:50 ID:???]
>>637
じゃあ今日は特別に 君に答える権を授けよう

640 名前:NAME IS NULL mailto:sage [2008/04/19(土) 14:53:56 ID:???]
>>637
金払えよ

641 名前:NAME IS NULL mailto:sage [2008/04/20(日) 22:18:25 ID:???]
FreeBSD で
MySQL5.051a を使用しています。
WordPressの初期設定をしているのですが、
以下の部分で止まってしまっております。

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


どなたか助言をいただけませんでしょうか?
宜しくお願い致します

642 名前:NAME IS NULL mailto:sage [2008/04/20(日) 22:29:02 ID:???]
>641
rootのpasswordをきちんと設定してますか?


643 名前:641 mailto:sage [2008/04/20(日) 22:50:37 ID:???]
>>642
回答ありがとうございます。
rootのパスワードの設定は以下で問題ないですよね?
(エラーが出てしまっております)
%mysqladmin -u root password xxxxxxx
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)



644 名前:NAME IS NULL mailto:sage [2008/04/20(日) 22:56:13 ID:???]
www.ksknet.net/mysql/mysql_1.html

このあたりを参考にするとか、ググってみるとか。
MySQLのrootパスワードは結構面倒でした(汗)


645 名前:641 mailto:sage [2008/04/21(月) 10:25:56 ID:???]
>>644
すんません。
パスワード設定したのを忘れてましたorz



646 名前:NAME IS NULL mailto:sage [2008/04/21(月) 18:24:30 ID:???]
>>624
今更だけど、utf8のサポートはMysql 4.1以降。
だから、4.0でエラーが出るのは仕方ないと思う。

647 名前:NAME IS NULL mailto:sage [2008/04/23(水) 19:06:36 ID:???]
質問です。バージョンはMySQL 3.23。

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

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


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

このようにやって期待通りに動いているようには見えるのですが……。


648 名前:619 mailto:sage [2008/04/23(水) 19:27:01 ID:???]
>>646
ありがとうございます。

文字コードのサポートとは・・・まったくノーチェックだった

649 名前:NAME IS NULL mailto:sage [2008/04/23(水) 22:22:01 ID:???]
>>647
素直にdatetime型にする

650 名前:NAME IS NULL mailto:sage [2008/04/23(水) 22:33:33 ID:???]
>>647
この先色々なバグに悩まされるのが目に見える設計ですね

651 名前:NAME IS NULL mailto:sage [2008/04/23(水) 23:13:59 ID:???]
テーブル設計したの俺じゃねーもんっ!

652 名前:NAME IS NULL mailto:sage [2008/04/24(木) 00:32:04 ID:???]
も、萌え

653 名前:NAME IS NULL mailto:sage [2008/04/24(木) 09:31:08 ID:???]
>>647
>>649に1票。Datetimeにしたほうが何かと便利じゃね?

654 名前:NAME IS NULL mailto:sage [2008/04/24(木) 11:00:03 ID:???]
他で散々使われてるテーブルだからなあ……現状ちゃんと動いてるものを弄りたくないw

655 名前:NAME IS NULL [2008/04/24(木) 14:49:32 ID:6a37T5mr]
質問です
ヤフーでもAmazonでも、大きなポータルみたいなサイトを見ると、トップページに
沢山メニューやカテゴリがあります
(新着、トピック、ニュース、メール受信数、広告などなど)
これは、各領域ごとにSQLの読み込みしてるってことかなと思いますが、一ページに
どの程度リクエスト仕掛けていいんでしょう?
全部をまとめて1リクエストで済ませてるわけじゃないですよね?
そんなにいっぱい一気に読み込んで大丈夫なの?って気になりますが、、
こういうのはメモリとかCPU性能に依存するものなんですか?

変な質問ですみません 
今のところ、1ページ1処理はうまく出来てるんですが、負荷を
沢山かけるものは心配です
参考になるサイトや書籍などあればそれも教えてください お願いします



656 名前:NAME IS NULL mailto:sage [2008/04/24(木) 14:55:16 ID:???]
それがノウハウというやつでして

657 名前:NAME IS NULL [2008/04/24(木) 15:17:51 ID:ZBZQUXh5]
質問させて下さい。
table1
---------------------------
no   cat   name
1    1    わかめ
2    3    だいこん
3    2    にんじん
4    2    にく
5    3    こめ
6    4    かいわれ
....
100   100   にがうり
---------------------------

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

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

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

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

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

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

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

658 名前:NAME IS NULL mailto:sage [2008/04/24(木) 15:34:13 ID:???]
SELECT T1.no, T21cat, T2.name FROM
(SELECT max(no) AS no, cat FROM table1 GROUP BY cat) T1
INNER JOIN table1 T2 ON T1.no = T2.no AND T1.cat = T2.cat;

とか?
試してないけど。

659 名前:655 [2008/04/24(木) 15:43:59 ID:6a37T5mr]
ノウハウってことは社外秘みたいな?
ごくごく基礎的な考え方について、まとめてる本なんて知りませんか?
すみません、気になるんです。。

660 名前:NAME IS NULL mailto:sage [2008/04/24(木) 15:50:26 ID:???]
ああいうでかいポータルは1アクセス毎に動的にSQLを発行しているのではなく、
静的HTMLを一度作る時だけSQLを発行しているから無問題。

SQLの結果をキャッシュしておきたければmemcacheを使え。

661 名前:657 mailto:sage [2008/04/24(木) 16:00:29 ID:???]
>>658
レス有り難う御座います。
うおっ結構複雑になってしまいますね・・・
今から提示して頂いたクエリを一つ一つかみ砕いて勉強してみます。

>>655
660さんもおっしゃっているような感じのことがメインですが
WEB+DB PRESS Vol.42にニコニコ動画の技術記事があります。
そこにDBとWEBアプリケーションサーバの大規模運用における勘所みたいなことが結構書かれていて
私は勉強になりました。
お力になれれば幸いです。

662 名前:NAME IS NULL mailto:sage [2008/04/24(木) 16:29:19 ID:???]
分かってると思うけど、T21catはT1.catのtypoね。
試してみたらうまくいったけど、あんまりいい方法ではないよ。
あくまで、答がちゃんと出るレベル。

663 名前:658 mailto:sage [2008/04/24(木) 17:37:55 ID:???]
SELECT no, cat, name FROM table1 T1
WHERE NOT EXISTS(
SELECT * FROM table1 T2 WHERE T1.cat = T2.cat AND T1.no < T2.no
);

とかでもOK

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

本だったらSQLの簡単なものから読んだらいいんじゃないかな。
MySQLに限らず、RDBMS共通で勉強するといいかも。

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

どうもありがとうございました



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

この場合、どういうSQL(関数)で代替するのでしょうか?

667 名前:NAME IS NULL [2008/04/25(金) 22:22:40 ID:c14dphK1]
>>666
泥臭いやり方だが、temporary tableかな
またはアプリケーション側で処理するとか

668 名前:NAME IS NULL mailto:sage [2008/04/25(金) 23:01:57 ID:???]
JOIN

669 名前:666 [2008/04/25(金) 23:09:52 ID:mG3NM/VW]
>>667
すみません、、ちょっとやり方が見えないのですが、、
例えば以下のようなSQLの場合、どうなるのでしょうか?

SELECT * FROM hoge INNER JOIN(
SELECT hoge_id FROM test
) AS test ON hoge.hoge_id=test.hoge_id

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

サブセレしなくても普通にこれでいんじゃないの。
それとも例題のために削ってるから?

671 名前:666 mailto:sage [2008/04/25(金) 23:20:34 ID:???]
>>670
例題の為に削っているからです。。
実際、副問い合わせが必要な時は、そこでCOUNTしたり
WHEREで抽出した値を出したいから、という理由が多いです。

672 名前:NAME IS NULL [2008/04/27(日) 13:21:26 ID:Tqt++e11]
すごい初歩の質問なんだけど、
select * from web where name ='2chan' and category = '2chan' and type = '2chan'
って漢字で、全部2chan(同一単語)で検索したいんだけど、
where以降を縮める方法ってないですか?
PHPのifみたいにフィールド名括弧で括って()='2chan'でもだめだし・・・。
初歩すぎるのか探してもなかなか見つからない。

673 名前:NAME IS NULL mailto:sage [2008/04/27(日) 16:05:58 ID:???]
むり

674 名前:NAME IS NULL [2008/04/27(日) 16:24:11 ID:Tqt++e11]
>>673
簡潔な回答ありがとうございます。

675 名前:NAME IS NULL mailto:sage [2008/04/28(月) 00:32:12 ID:???]
'2chan' IN (name, category, type)



676 名前:NAME IS NULL mailto:sage [2008/04/28(月) 03:35:46 ID:???]
TEXTカラムから
文字数1000文字区切り、最後の改行
でデータを取り出したいのですが可能でしょうか?

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

以下のようにやっては見たのですがどうもすっきりしません。
よろしくお願いします。
SELECT
 CONCAT(SUBSTRING(TEXT,1,1000),SUBSTRING_INDEX(SUBSTRING(TEXT,1000,1000),"
",1)) AS TEXT
FROM hoge;

677 名前:NAME IS NULL mailto:sage [2008/04/28(月) 09:10:45 ID:???]
>>675
INはORだろ

678 名前:NAME IS NULL mailto:sage [2008/04/28(月) 10:01:14 ID:???]
>>676
1000文字取り出した後はプログラム側で処理してはいかがでしょう?

679 名前:NAME IS NULL mailto:sage [2008/04/28(月) 12:53:41 ID:???]
>>671
だったら、そういうクエリを示さないと、解決にならない。

680 名前:NAME IS NULL mailto:sage [2008/04/29(火) 16:57:15 ID:???]
Windows にインストールしようとしてバイナリを探して
このページを見たところ
dev.mysql.com/downloads/mysql/5.0.html

ここだと 5.0.51b しかないようです。
b は beta の略ですよね?
beta 無しの一つ前のバージョンはどこでダウンロードできるのでしょうか?

681 名前:NAME IS NULL mailto:sage [2008/04/29(火) 17:23:46 ID:???]
>>680
それはベータじゃない。リリース版。

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

bkbitsのほうにも、Enterpriseには5.0.60きてるけど、
Communityには5.0.51aまでしか記載がない。

682 名前:NAME IS NULL mailto:sage [2008/04/29(火) 17:35:14 ID:???]
無償版の「MySQL Community Server」の提供は今後も継続されるが、
無償版と有償版の開発は完全に切り離されることとなり、
無償版と有償版の2つのMySQLはまったく別々の進化を遂げることとなる見通しだ。

683 名前:680 mailto:sage [2008/04/29(火) 18:00:49 ID:???]
>>681
レスありがとうございます。
dev.mysql.com/doc/refman/5.1/ja/choosing-version.html
ここのバージョンの命名規則に b の意味するところが書いてないようなのですが

51 -> 51a -> 51b は
51 -> 52 にするほどでもない細かい修正だと理解して良いのでしょうか?

684 名前:NAME IS NULL mailto:sage [2008/04/29(火) 19:57:40 ID:???]
>>683
その通りです。

個人的にはbetaを意識させるbをバージョンに含むのには反対ですけどね。

685 名前:680 mailto:sage [2008/04/29(火) 20:17:13 ID:???]
>>684
なるほど、ありがとうございました。



686 名前:NAME IS NULL [2008/04/29(火) 22:52:30 ID:9aVChAdo]
MySQL5.1のインストールで
Server Instance Configuration WizardのApply security settingで
エラーがでて完了しません
mysql.serversテーブルがないようなメッセージが出ています
ポートは開放しているはずですが、複数端末で同じようなエラーが出てしまいます
いろいろ調べたのですが、対処法がわかりません。
環境はwindowsXP SP2です

687 名前:NAME IS NULL [2008/04/29(火) 22:56:35 ID:vsezzVYU]
mysqlのソースコードの解説したサイトとか書籍とか
オススメありませんか?

ググっても出てこないのでお願いします

688 名前:NAME IS NULL mailto:sage [2008/04/30(水) 00:50:20 ID:???]
>>687
俺は読んでないけど…

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

つーか、サイトや書籍を当たるよりもいきなりガシガシ
ソースコード読んだ方が速いんじゃないか

689 名前:NAME IS NULL mailto:sage [2008/04/30(水) 01:04:19 ID:???]
Linuxもいつかは誰かの所有物になるのかな

690 名前:NAME IS NULL mailto:sage [2008/04/30(水) 01:37:43 ID:???]
そんときは、別のオープンソースOSがLinuxの代わりになってるよ。


691 名前:NAME IS NULL mailto:sage [2008/04/30(水) 01:41:19 ID:???]
Linux は正式にリーナスの物だけど誰も困ってない
そういう事

692 名前:NAME IS NULL mailto:sage [2008/04/30(水) 01:46:55 ID:???]
>>688
ありがとうございます

なんと身近な本に普通に載ってたんですね…

693 名前:NAME IS NULL [2008/04/30(水) 16:53:35 ID:3+aSlCcR]
selectする情報の中にorder byで並び替えた際の順番を入れたいのですが
どう書けば可能でしょうか?

694 名前:NAME IS NULL mailto:sage [2008/04/30(水) 17:03:55 ID:???]
order byは最後に実行されるから、select句でその情報を取得するのは無理。

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

とでもすればいいんじゃないかな?

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

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

MySQLでの確認はしてませんので、方言が混ざってそうだったら翻訳しといてください



696 名前:NAME IS NULL [2008/04/30(水) 23:16:14 ID:6t3erPxs]
ExcelとMySQLに関する質問です。

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

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

よろしくお願い致します。


697 名前:NAME IS NULL mailto:sage [2008/04/30(水) 23:38:08 ID:???]
列がちゃんと決まってるなら行番号あたりをキーにしたテーブル作って
COPY句でも作って突っ込めばいけるんじゃない?

698 名前:NAME IS NULL mailto:sage [2008/04/30(水) 23:49:06 ID:???]
CSVで保存すれば、取り込める。
正規化せずに取り込むと後でものすごく後悔しそうないがする。


699 名前:NAME IS NULL [2008/05/01(木) 01:12:40 ID:V4TVtf8T]
$sql = "select ホゲ from ホゲホゲ where ホゲホゲホゲ like '%$word%';";
$result = $db->query($sql);
if (DB::isError( $result )) {
die($result->getMessage());
}
while($row = $result->fetchRow()){
echo $row[0]; // 返却データをループ
}


という感じのプログラムを、テーブル名のみを変更して13行並べているのですが、最後の4つあたりが「DB Error: no such field」というエラーが出て正常に処理されません。
エラーが出ている箇所を上のほうに持ってくると解決するのですが、するとまた下の4つが・・・という感じです。
これって何が原因なのでしょうか?

700 名前:NAME IS NULL mailto:sage [2008/05/01(木) 10:54:47 ID:???]
>>699
PHPのモジュールの問題じゃね?

701 名前:NAME IS NULL mailto:sage [2008/05/01(木) 13:42:14 ID:???]
>>699
$db にfinishっぽい関数あったら、ループ後に呼んでみるとか

702 名前:NAME IS NULL [2008/05/01(木) 13:59:30 ID:/NYPxvw/]
SQLのみを使って
mysqlの変数に
クエリの結果を代入する方法があれば教えてください

703 名前:NAME IS NULL mailto:sage [2008/05/01(木) 21:04:05 ID:???]
質問です。

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

上記組み合わせで、このサーバをDB専用サーバーとして稼動させた
場合、mysqlのチューニングによってはCPUが最大で50%(1cpu)まで
しか使えない可能性ってありますでしょうか?

704 名前:NAME IS NULL mailto:sage [2008/05/01(木) 22:57:20 ID:???]
きれーにするーされたな

705 名前:NAME IS NULL mailto:sage [2008/05/01(木) 23:13:07 ID:???]
>>702
mysqlの変数って何?
ストアドファンクションを作ってるのかな。

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

>>704
何がしたいのか分かりません。



706 名前:NAME IS NULL mailto:sage [2008/05/02(金) 11:35:50 ID:???]
>>702
select @name:=name from hoge;
select @name;

707 名前:696 [2008/05/02(金) 19:34:28 ID:gVoO+8Lg]
>>697
>>698
どうもありがとうございます。
参考になりました。


708 名前:NAME IS NULL mailto:sage [2008/05/02(金) 22:12:33 ID:???]
MySQLの無料版ってなくなっちゃうんですか?

709 名前:NAME IS NULL mailto:sage [2008/05/02(金) 22:14:32 ID:???]
無くならないよ

710 名前:NAME IS NULL [2008/05/03(土) 03:45:01 ID:UXm9qTN+]
質問します カラムの値がNULLのものを削除したくて以下を実行しましたが
うまくいきません
delete from schedule where `evId` =''
delete from schedule where `evId` =NULL
両方ともだめです 何が原因として考えられるでしょう?
誰かご意見お願いします

711 名前:NAME IS NULL mailto:sage [2008/05/03(土) 04:10:50 ID:???]
evId IS NULL

712 名前:NAME IS NULL mailto:sage [2008/05/05(月) 05:16:45 ID:???]
データベースのフィールドの順番を変えるにはどんな命令を使うんでしょうか。
例えば

A B C D

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

A C B D

にしたいんですが。

713 名前:NAME IS NULL mailto:sage [2008/05/05(月) 06:08:56 ID:???]
変える必要なんてあるの?

714 名前:NAME IS NULL mailto:sage [2008/05/05(月) 06:15:56 ID:???]
データファイル読み込むとき、フィールドの順番とデータの順番が逆になってたんで。

データのほうをいじってもいいんだけど、一応データベースの方も変えられるなら知っておこうと。

715 名前:NAME IS NULL mailto:sage [2008/05/05(月) 11:01:12 ID:???]
まあ、速度的な面とかなら。




716 名前:NAME IS NULL mailto:sage [2008/05/05(月) 12:41:16 ID:???]
DROP → CREATE

717 名前:NAME IS NULL mailto:sage [2008/05/05(月) 18:14:35 ID:???]
>>712
alter table TBL modify B int after C
とか?


718 名前:NAME IS NULL [2008/05/05(月) 21:18:24 ID:umNt+46L]
今までパスワードを暗号化せずにそのまま保存していたのですが、
次回の更新ではmd5で暗号化したパスワードを保存し、
その値でログイン出来るようにしたいと思います。

現状のパスワードをmd5化して更新する方法ってありませんでしょうか?
MySQLは4.1.22を使っています。

719 名前:NAME IS NULL mailto:sage [2008/05/06(火) 01:21:23 ID:???]
>>718
update tbl set col=md5(col)


720 名前:NAME IS NULL mailto:sage [2008/05/06(火) 03:26:20 ID:???]
>>1
ちわちわ

721 名前:NAME IS NULL mailto:sage [2008/05/06(火) 14:56:41 ID:???]
巣に帰れ。

722 名前:NAME IS NULL mailto:sage [2008/05/06(火) 19:58:26 ID:???]
ホスティング会社が3.23→5.0にうpグレードしやがった。
運用していたDBがオワタw

723 名前:NAME IS NULL mailto:sage [2008/05/06(火) 20:05:41 ID:???]
>>722
アナウンス無しで?

724 名前:NAME IS NULL mailto:sage [2008/05/06(火) 20:09:24 ID:???]
>>723
アナウンス無しで。
設定はしたから新規のデータは入るようになったけど、
古いデータが破壊されちゃった。

外国の安い会社だから、まぁ自己責任orz

725 名前:NAME IS NULL mailto:sage [2008/05/06(火) 20:29:06 ID:???]
データ破壊てw
泣くわそんなん



726 名前:NAME IS NULL mailto:sage [2008/05/06(火) 20:30:12 ID:???]
泣き虫は嫌いだ、じっちゃんも言ってた

727 名前:NAME IS NULL mailto:sage [2008/05/07(水) 00:22:52 ID:???]
>>719
遅レスですけど上手くできました。ありがとうございました。

728 名前:NAME IS NULL mailto:sage [2008/05/07(水) 13:33:51 ID:???]
参考サイトをみながらMySQLを勉強している者です。

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

テーブルが作成できないというエラーのようですが、原因がさっぱりわかりません。
テーブル名をT10Prefectureに変えると作成できるのですが…
どなたかこのエラーの原因をお知りでしたら、ぜひお教え願えないでしょうか?

729 名前:NAME IS NULL mailto:sage [2008/05/07(水) 14:28:12 ID:???]
普通はリダイレクト使ってやるような作業だよね
どっかで打ち間違えたんじゃないの?

730 名前:NAME IS NULL mailto:sage [2008/05/07(水) 15:20:47 ID:???]
文字を打ち間違えた場合だと、T01prefectureをT10prefectureに変えても通らないはずだと思うのです。

ググっていくつかのサイトを見てみましたが、以前同じ名前のテーブルを作成した事があるのが悪い…のかな?
同じエラーで悩んでいるらしき人のBlogなどは見つかるのですが、何がどう問題なのか理解が及ばない。

731 名前:NAME IS NULL mailto:sage [2008/05/07(水) 16:37:15 ID:???]
>>730
既にその名前のテーブルが存在するなら作れないですよ。

732 名前:NAME IS NULL mailto:sage [2008/05/07(水) 18:27:43 ID:???]
DROP TABLE T01Prefecture;

733 名前:NAME IS NULL mailto:sage [2008/05/07(水) 22:32:39 ID:???]
バックアップファイル内に予めテーブルを削除する文も入っているんです。
後出しでホントすみません。
ttp://mysqlweb.net/category/4037459-1.html
のリンクにある040backup.zipというファイルなのです。

前のステップでsampledb040を使った練習があったけど、やはりこれのデータが変な風に残っているのでしょうか?


734 名前:NAME IS NULL mailto:sage [2008/05/07(水) 23:16:52 ID:???]
リダイレクトでファイル直接流してみなよ

735 名前:728 mailto:sage [2008/05/08(木) 14:39:58 ID:???]
ご、ごめん。
最初は参考サイトにあるとおりリダイレクト(でいいのかな? Mysql -u ユーザー(root) -p データベース名 <"パス")とやってたのです。
それでテーブルを作成できませんというエラーがでるので1行づつ手打ちしてみたのです。

後出しばかりでホントごめん。
人に相談するには早すぎました。まともな説明ができるようになるまでは独学でがんばります…



736 名前:NAME IS NULL mailto:sage [2008/05/08(木) 21:38:34 ID:???]
>>735
drop したあと、ほんとにdropできてるか確認してみるとか?

テーブルの作成権限がないだけかもしれないけどMySQLのその辺は
詳しくないので、もしそうなら他の人にお任せします。

737 名前:NAME IS NULL mailto:sage [2008/05/09(金) 13:39:41 ID:???]
MySQLのトリガーって他のテーブルに対して処理できないって本当ですか?

738 名前:NAME IS NULL mailto:sage [2008/05/10(土) 11:00:09 ID:???]
>>737
うそです

739 名前:728 mailto:sage [2008/05/10(土) 12:14:55 ID:???]
MySQLのdataフォルダ内にあるsampledb040フォルダを削除し、データベースを作詞するところからやり直したらテーブルが作成できました。
お騒がせしてすみませんでした。

こんな解決方法で良いのかな…?

740 名前:NAME IS NULL mailto:sage [2008/05/10(土) 20:35:52 ID:???]
LOAD DATA LOCAL INFILEを使うときの、ローカルPC側のファイルパスの指定の仕方って、

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

これ以外に指定方法ってあるんでしょうか。
どちらでやっても、not found (Errcode: 2) になってしまいます><

741 名前:NAME IS NULL mailto:sage [2008/05/10(土) 21:25:53 ID:???]
hogeディレクトリーにhoge.txtが本当に存在してるかい?

742 名前:NAME IS NULL mailto:sage [2008/05/10(土) 21:26:01 ID:???]
>>740
\の場合は\\と書かないとダメな気がする

743 名前:740 mailto:sage [2008/05/10(土) 21:42:07 ID:???]
>>741
存在してます。

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

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

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

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

いろいろ調べてるのですが、解決策が見つからなくて。

744 名前:740 [2008/05/10(土) 23:10:59 ID:/V9T+N7z]
解決しました。
結局、not foundになった理由はわからないんですが、
phpMyAdminの「インポート」からLOADできました。
数時間前まで「インポート」画面には、
「インポートするファイルの形式」は"SQL"しか指定できなかったのですが、
不思議なことに、先ほどみたら"CSV"が指定できるようになっていて、
そこから入力ファイルを指定してLOADできるようになりました。

745 名前:NAME IS NULL [2008/05/10(土) 23:32:01 ID:ZRD2El4R]
extの中に、
php_mysql.dll
php_mysqli.dll
コピーしましたが、phpinfo()でMYSQL動きません。
プロンプトからは動きます。
extennsion_dir=c://php/etc
extension=php_mysql.dll
extension=php_mysqli.dll
しました。

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

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


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






746 名前:NAME IS NULL [2008/05/10(土) 23:46:05 ID:ZRD2El4R]
/etc
じゃなくて/ext
の間違いです。

747 名前:NAME IS NULL mailto:sage [2008/05/10(土) 23:49:19 ID:???]
>>745
copy C:\php\libmysql.dll C:\windows\system32

748 名前:NAME IS NULL [2008/05/11(日) 01:49:34 ID:I11LIJS2]
system32の中に

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

php5ts.dll
php5apache2.dll
をコピーしてもだめでした。

749 名前:NAME IS NULL [2008/05/11(日) 03:10:53 ID:ymTwAShD]
Windowsを使わなければ良い

750 名前:NAME IS NULL [2008/05/11(日) 17:12:51 ID:Lz+kCEMO]
Debian上でMySQL5.0を使用しています。

DBに対して発行された全てのSQLをログ出力したいのですが、
MySQLでそういった処理は可能でしょうか?

751 名前:NAME IS NULL mailto:sage [2008/05/11(日) 18:22:01 ID:???]
log = /var/log/・・・

752 名前:NAME IS NULL mailto:sage [2008/05/12(月) 01:10:50 ID:???]
innodbのデータファイルをテーブルごとに作成する方法ってありますか?

753 名前:NAME IS NULL mailto:sage [2008/05/12(月) 01:26:19 ID:???]
innodb_file_per_table

754 名前:NAME IS NULL mailto:sage [2008/05/12(月) 16:10:28 ID:???]
>>743
>>646にも書いたけど、4.0系はutfサポートしてません。4.1以降です。


755 名前:NAME IS NULL [2008/05/12(月) 20:15:57 ID:8xhRTUUy]
質問させて下さい。
table1
---------------------------
name
ねこ
いぬ
うさぎ
かめ
....
ぞう
---------------------------

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

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

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

ドキュメントを見ていると、 `name` IN ( 'ねこ', 'パンダ' )
として何かすればできそうかなとも思ったのですが上手くかけません。
どうか宜しくお願いします。



756 名前:NAME IS NULL mailto:sage [2008/05/12(月) 20:34:25 ID:???]
>>755
つまり条件で使用されなかった名前を得たいわけですよね。
通常だと、`name` IN ( 'ねこ', 'パンダ' ) でヒット分を出して
アプリ側で消し込むのが通常かと。

757 名前:NAME IS NULL mailto:sage [2008/05/12(月) 21:43:28 ID:???]
>>765
レス有り難う御座います。
う〜んやっぱりどちらにしてもアプリ側の処理に頼るしかないのかな。
もう少し自分で粘ってみます。

758 名前:NAME IS NULL mailto:sage [2008/05/12(月) 22:12:00 ID:???]
NOT EXISTSを使ってできそうな予感

759 名前:NAME IS NULL mailto:sage [2008/05/12(月) 22:21:02 ID:???]
ごめん、やっぱり純粋なSQLじゃ無理だわ
検索条件を表示するようなクエリが記述できないからね


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

・・・不可能

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

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

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

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

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

同じ書籍で同じようなエラーを対処された方はいらっしゃいませんでしょうか。
どうかご教示ください。

761 名前:NAME IS NULL mailto:sage [2008/05/12(月) 22:38:21 ID:???]
oshiete1.goo.ne.jp/qa803697.html

762 名前:NAME IS NULL mailto:sage [2008/05/12(月) 22:39:45 ID:???]
d.hatena.ne.jp/yzn/20060922

763 名前:NAME IS NULL mailto:sage [2008/05/13(火) 00:16:15 ID:???]
>>761-762
そちらのページを拝見して、サービスの削除・サービスの再インストールを
行いましたが駄目でした。MySQLのアンインストールからやり直してみようと思います。


764 名前:NAME IS NULL [2008/05/13(火) 15:44:20 ID:NUBRvh8U]
PHP上からMySQLでinsertすると、Duplicate entry '〜' for key 2

PHP MyAdmin やプロンプト上からinsert行うと、普通にinsertできるのでしょうか?

765 名前:NAME IS NULL mailto:sage [2008/05/13(火) 15:47:34 ID:???]
キーが同じならどこからでも無理だろ



766 名前:NAME IS NULL mailto:sage [2008/05/13(火) 18:50:11 ID:???]
+-----+-------+
| key | title | que1|
|   1 | test  | test |
|   7 | test  | test |
+-----+-------+-
というテーブルがあり、titleからkeyを取り出したいのですが、
select que1 from question where title ='test';ではqueは取り出せるのに
select key from question where title ='test';では構文エラーになります。
主キーは取り出せないんでしょうか?

767 名前:NAME IS NULL mailto:sage [2008/05/13(火) 18:52:43 ID:???]
keyは予約語だからでは? `key` とかしてみる。

768 名前:NAME IS NULL mailto:sage [2008/05/13(火) 18:54:18 ID:???]
ありがとうございます!
無事取り出せました。

769 名前:NAME IS NULL [2008/05/13(火) 21:39:29 ID:NUBRvh8U]
キーはインクリメントされるので、
異なってるはずなんですが。

770 名前:NAME IS NULL [2008/05/13(火) 21:40:40 ID:NUBRvh8U]
`key`は基本だとおも。

771 名前:NAME IS NULL [2008/05/13(火) 22:04:51 ID:NUBRvh8U]
質問日本語になってなかったので、再度質問します。
日本語できなきゃ、SQLできませんね。えへ!

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

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

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





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

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

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

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

773 名前:訂正 [2008/05/13(火) 23:31:32 ID:NUBRvh8U]
カタガナとひらがな で重複すしてました。


774 名前:NAME IS NULL mailto:sage [2008/05/14(水) 03:58:48 ID:???]

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

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


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

▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円

775 名前:NAME IS NULL mailto:sage [2008/05/15(木) 05:20:29 ID:???]
dev.mysql.com/doc/refman/5.1/ja/mysql-insert-id.html
「マルチ列INSERTステートメントの場合」とか書いてあるけど、
このページ内ほとんど
×列
○行
じゃないかな。



776 名前:NAME IS NULL [2008/05/15(木) 08:30:54 ID:/PcvCBei]
MYSQLとPHPがどうマニュアルどおりやっても、
phpinfoでMYSQLが認識されない。dllに応じてapacheの対応バージョンが異なるらしいんだけど、
本当ですか?

777 名前:NAME IS NULL mailto:sage [2008/05/15(木) 09:58:14 ID:???]
ビルドからやってんの?

778 名前:NAME IS NULL mailto:sage [2008/05/15(木) 13:04:45 ID:???]
mysql5.0.27を使っているんですが、型の制約として、 num = num - 5 とかやっても
0未満にはならないようにとか、そういった制約ってありますか?
入れるときにチェックしないとだめでしょうか?


779 名前:NAME IS NULL [2008/05/16(金) 16:40:06 ID:V7rySszX]
質問です
文字コードがutf8のデータベースから、eucのデータベースへ中身を
移動させるのって難しいですか?もちろんMysqlです
管理ツールはphpMyadminを使おうと思ってるんですが、、
蓄積されている情報をEUCに書き換えるような作業が必要になるんでしょうか?
カンタンな手順や専用のツールなんてあるんでしょうか?
どなたか教えてください よろしくお願いします

780 名前:NAME IS NULL mailto:sage [2008/05/16(金) 17:59:07 ID:???]
Alter Table

781 名前:NAME IS NULL mailto:sage [2008/05/17(土) 09:05:01 ID:???]
>>779
insert into euctable select * from utf8table;


782 名前:NAME IS NULL [2008/05/17(土) 19:33:10 ID:dhQBeSfs]
GPLの意味がいまいち分かりません。。。


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

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

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



783 名前:NAME IS NULL mailto:sage [2008/05/17(土) 19:36:46 ID:???]
>>782
バレてはいけない

784 名前:NAME IS NULL mailto:sage [2008/05/17(土) 20:31:20 ID:???]
BINARY型ってどういうときに使うんですか?

785 名前:NAME IS NULL mailto:sage [2008/05/17(土) 21:19:27 ID:???]
>>784
バイナリーファイル、たとえばdocやxlsの先頭100KBを表に入れたいとき。



786 名前:NAME IS NULL mailto:sage [2008/05/17(土) 21:23:16 ID:???]
>>784
Winny のハッシュ管理

787 名前:NAME IS NULL [2008/05/17(土) 22:00:06 ID:Zz9EtgnE]
データを大量に作りたい場合の作成ツールとか
ありませんでしょうか?

788 名前:NAME IS NULL mailto:sage [2008/05/17(土) 22:20:18 ID:???]
なんでもいいならランダム関数でも使えば?

789 名前:NAME IS NULL [2008/05/17(土) 22:23:10 ID:Zz9EtgnE]
できればおすすめのツールがあればということなんですが。。。
ランダム関数?
勉強不足で。。。
調べてみます。

790 名前:NAME IS NULL mailto:sage [2008/05/17(土) 22:35:01 ID:???]
CSVファイルからのINSERTなら何かツールがあるでしょ。
何でもいいからデータを大量に入れたいならランダムを生成する適当な関数作っちゃえばいい。

791 名前:NAME IS NULL mailto:sage [2008/05/17(土) 22:37:54 ID:???]
つーかこんなんで悩んでる人がMySQLを何に使うんだ。

792 名前:NAME IS NULL mailto:sage [2008/05/17(土) 22:41:57 ID:???]
初学者は常にいます。

793 名前:NAME IS NULL [2008/05/17(土) 22:59:08 ID:dhQBeSfs]
mediawikiを自宅のPCで使ってみようと思ったら、
MySQLも必要だと言われたのさ。

データベースなんて職場のアクセスをいじったぐらいだ。。。。

794 名前:NAME IS NULL mailto:sage [2008/05/17(土) 23:02:21 ID:???]
アクセスはRDBMSではないからな〜

795 名前:779 [2008/05/17(土) 23:13:43 ID:4inawo49]
>>780-781
ありがとうございます
>>780
ALTER TABLE というのは具体的にどうしたらいいんでしょう?

>>781
insertでデータを移動させるということでしょうか?
データベース自体の動いているサーバーが違うんですが、
その場合はどうしたらいいんでしょうか?



796 名前:NAME IS NULL [2008/05/18(日) 00:12:40 ID:6bXnmuPh]
MySQLver5.0.45の公式バイナリをLinuxにインストールしたあと
初めてのログインで
mysql -u root
を実行したら「root@localhostに権限がありません」的なエラーがでました。
1番始めはrootにパスは設定されてないですよね???

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



797 名前:NAME IS NULL mailto:sage [2008/05/18(日) 00:21:56 ID:???]
>>795
>ALTER TABLE
SQL関連のマニュアルか、リファレンスを読んで下さい。

798 名前:NAME IS NULL mailto:sage [2008/05/18(日) 00:38:19 ID:???]
>>795
Alter table tbl convert to charset 
でもこれは、そのテーブル自体の格納されているデータを変換するもの。
二台別々のDBが動いてんなら、一旦もとのtblからデータを全部dumpして、
それを新しい方のtblに放り込んでやればいいんでない。
(この時に特に変換作業は不要。詳しくはmanual参照。でも多分わかってないとハマりそう)

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

>>786
ハッシュ自体を管理するんなら、バイナリな必要ないんじゃない?
ハッシュを生成するためのもとのデータを入れるなら、binaryじゃなきゃいかんけども・・。

799 名前:779 [2008/05/18(日) 08:06:53 ID:JfDPw4vM]
>>797
どうもです ありがとうございました
>>798
詳しい説明ありがとうございました
データ移行の本読むべきですね 基本でした ありがとうございました

800 名前:NAME IS NULL [2008/05/18(日) 10:46:41 ID:6+oG6BiD]
query browserって
データのインポートは出来ないんでしょうか?
csvファイルを取り込みたいのですが、
どのような方法がベターでしょうか?

801 名前:796 mailto:sage [2008/05/18(日) 11:08:49 ID:???]
mysql_install_dbが権限テーブル作成に失敗していました。
(データベース「MySQL」のusr.MYDファイルを開いてみたら空だった)

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


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

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

>>797-798
ありがとうございました。助かりました。

802 名前:NAME IS NULL mailto:sage [2008/05/19(月) 00:30:52 ID:???]
long_query_timeについて質問です。

現在DBI経由で、perlなどからSQL実行していますが
この時 long_query_timeに引っかかったクエリーは
エラーなり、補足捕捉情報かなにかを返すのでしょうか?
またこの時、viewは正しく返ってこない、と考えて良いのでしょうか?
MySQLバージョンは、4.0/4.1/5.0になります。

803 名前:NAME IS NULL [2008/05/19(月) 11:48:56 ID:cfRUIA6l]
MySQL を CentOS 5.1 で使っています。
一般クエリログを出すようにしているのですが、
このログファイルのローテートは MySQL 自身が
やってくれるのでしょうか?

それとも logrotate を設定しなければならないのでしょうか?

804 名前:NAME IS NULL mailto:sage [2008/05/19(月) 14:48:36 ID:???]
質問です。
MySQLのソースインストールのconfigureで「--with-readline」オプションがありますが、
この設定はmy.cnf上で後から変更可能でしょうか?

805 名前:NAME IS NULL mailto:sage [2008/05/20(火) 07:40:10 ID:???]
>>782
GPLと相容れないプログラムとリンクできない



806 名前:NAME IS NULL [2008/05/20(火) 11:56:52 ID:FPNVgIjN]
phpMyBackupPro ってソケット経由では使えないのでしょうか?

807 名前:NAME IS NULL mailto:sage [2008/05/20(火) 21:51:22 ID:???]
HEAPテーブルについて、マニュアルには「クライアント間で共有できる」
とありますが、接続毎に隔離されたHEAPテーブルは作れないでしょうか?
バージョン4.1です。

808 名前:NAME IS NULL [2008/05/20(火) 22:29:57 ID:GGh+9Iru]
PHPでの例ですが

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

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

と言うのをやろうとしたのですが、$resがtrueになります。
もしかして、UPDATEって、登録値が無い場合でもtrueになるのでしょうか?
バージョンは4.1.22を使っています。

809 名前:NAME IS NULL [2008/05/20(火) 23:46:08 ID:GuaauZDQ]
質問です、
mysqldumpでダンプを取りたいのですが、
mysqldump -u root test > dump.sql と打つと
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near 'mysqldump -u root test > dump.sql' at line 1> dump.sql;
となります。
サイトをさんこうにしてやっていますが
うまくいきません。どこが原因でしょうか?
教えて下さいませ。


810 名前:NAME IS NULL mailto:sage [2008/05/21(水) 00:06:16 ID:???]
>>807
接続が切れたときに消えてなくなってもいいのであれば、temporary テーブル。

811 名前:NAME IS NULL mailto:sage [2008/05/21(水) 00:07:10 ID:???]
>>809
それ、mysql> プロンプトからやってないか?

812 名前:NAME IS NULL mailto:sage [2008/05/21(水) 00:08:42 ID:???]
>>808
falseはSQLの実行エラーの場合です。
updateがあったかは、たしか 影響を受けた行数を取得する
関数があったと思うので実行後にそれを使ってください。

813 名前:NAME IS NULL [2008/05/21(水) 00:33:26 ID:O5tzPctu]
>>811
コマンドプロンプトからやってますが何か?

814 名前:NAME IS NULL mailto:sage [2008/05/21(水) 00:53:14 ID:???]
MYSQLを導入したんだけどPHPから接続できないですけどどうしてでしょうか?
MYSQLの設定を済ませて
PHP5のphp.iniの設定では
絵xtension=php_mysql.dllのところを;はずしました。
MySQLの動作もちゃんとしてます。
ですが、
<?php
phpinfo()
?>
上で確認したところMySQLの表示してないです。
mySQLのインストールはこちらのURLを参考にしました。
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/

815 名前:814 mailto:sage [2008/05/21(水) 02:02:33 ID:???]
自己解決しました。



816 名前:807 mailto:sage [2008/05/21(水) 02:50:01 ID:???]
>>810
早速有難う御座います。 temporary テーブルでやってみようと思います。

817 名前:NAME IS NULL mailto:sage [2008/05/21(水) 02:54:27 ID:???]
MySQL 5.0.51a Linux版です。
全テーブルに更新時刻と挿入時刻カラムをつけ、
beforeトリガーでこれらを更新しようと考えていますが、
オーバーヘッドはどんなものでしょうか?
用途は中小規模のグループウェアみたいなものです。
もしオーバーヘッドが大きいならtimestampで更新時刻だけ
記録することも考えるのですが、挿入時刻もあった方がいいようなのです。

MySQLで設計するのは初めてで感覚がわからないので、
なんとなくで結構ですので助言をお願いします。

818 名前:NAME IS NULL [2008/05/21(水) 13:12:17 ID:2ndXeLqA]
>>813
何お前
ずいぶんと偉そうだな

819 名前:NAME IS NULL mailto:sage [2008/05/21(水) 15:25:29 ID:???]
>>813
理解できるようになってから出直せ

820 名前:>>813 [2008/05/21(水) 22:05:35 ID:hrtOIMUi]
出来ましたが何か?

821 名前:NAME IS NULL [2008/05/21(水) 23:17:40 ID:wc8hj2Sl]
mysql 4.1.20 CentOS4.1で質問です。
mysql>select * from XXX; を実行し、結果が多い場合、最初の方の結果がスクロールし、コンソールから消えてしまいます。
ls | moreのような感じで、1画面ずつ見たい場合はどうすればよいでしょうか?
やり方がわからないので、bashから 
user$echo "select * from XXX;" | mysql testDB > result.txt のような感じでテキストファイルに落としています。

よろしくお願いいたします。


822 名前:NAME IS NULL mailto:sage [2008/05/22(木) 00:05:25 ID:???]
>>821
limit

823 名前:NAME IS NULL mailto:sage [2008/05/22(木) 00:18:02 ID:???]
>>821
mysql> pager less


824 名前:NAME IS NULL [2008/05/22(木) 00:18:18 ID:P5ig6HYl]
質問させて下さい。
MySQL5.1を使用しています。

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

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

純粋なクエリ等の問題ではないのかもしれませんが、いくら考えても良い方法がみつからずほとほと困ってしまいました。
どうかお力添え頂けないでしょうか?宜しくお願い致します。

825 名前:NAME IS NULL mailto:sage [2008/05/22(木) 00:37:04 ID:???]
cidrとip表記をごっちゃにしている時点でどうかと思うが、
phpがトリガならmod_geoipでも使ったらどうか?



826 名前:821 mailto:sage [2008/05/22(木) 01:08:34 ID:???]
>>822 >>823 解決しました。ありがとうございます!!

827 名前:824 mailto:sage [2008/05/22(木) 01:09:18 ID:???]
>>825
レス有り難う御座います。
早速調べてみます。

828 名前:NAME IS NULL mailto:sage [2008/05/22(木) 01:18:09 ID:???]
>>824
MySQLのみでうちがやるなら、IPはINET_ATON()で整数保管。
マスクは別フィールドに保管。
比較の際は、IPの整数をマスクサイズでビット演算して比較。

現状のテーブルのままやるのなら、文字列だからMySQLの
正規表現関数を使うのが速度的にも妥当では。

829 名前:NAME IS NULL mailto:sage [2008/05/22(木) 02:19:27 ID:???]
みんな文字化け回避するためにカラムごとに文字コード設定してるの?

830 名前:NAME IS NULL mailto:sage [2008/05/22(木) 08:19:01 ID:???]

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/
www.fx-gp.com/about/

▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円

831 名前:NAME IS NULL mailto:sage [2008/05/22(木) 12:15:32 ID:???]
>>824 >>828

PHP側でIPのチェックしたいならPrarのNet_IPv4
pear.php.net/manual/ja/package.networking.net-ipv4.php


832 名前:NAME IS NULL mailto:sage [2008/05/22(木) 12:26:36 ID:???]
PrarじゃなくてPearでした。

833 名前:NAME IS NULL mailto:sage [2008/05/22(木) 19:08:36 ID:???]
varchar (n)の使用バイト数はn+1とのことですが、それなら
本来は100文字までのデータしか入力しないカラムでも
varchar(255)とtinytextの限界で作成しておいて、
アプリ側の入力チェックで100文字制限をするという方針はありでしょうか?

制限を100文字以上に拡張したくなったとき、アプリ側のチェックだけ直して
テーブルは変更する必要がなくていいのではないかと思うのですが。

834 名前:NAME IS NULL mailto:sage [2008/05/22(木) 21:54:45 ID:???]
>>833の便乗質問ですが各データ型で使用するバイト長ってどこでわかりますか?


835 名前:NAME IS NULL mailto:sage [2008/05/23(金) 01:26:43 ID:???]
>>834
dev.mysql.com/doc/refman/5.1/ja/storage-requirements.html

>>833
別に自分のしたいようにすればいいんでね?(自分にとって、管理しやすいほう、扱いやすいほうで)
ただ、fixed formatでテーブル作成してるんなら、discには実際使ってない部分の領域も書き込まれるけどね。



836 名前:834 mailto:same [2008/05/23(金) 01:41:31 ID:???]
>>835
ありがとうございます!助かりました


837 名前:NAME IS NULL [2008/05/23(金) 21:38:08 ID:Dt8inalF]
SQL文だけで、半角カナを全角カナにする方法(関数)って、ありますでしょうか?

838 名前:NAME IS NULL mailto:sage [2008/05/24(土) 02:02:00 ID:???]
搭載物理メモリ48Gのサーバーで、大きな単一テーブル(80G程度)を上手く扱う方法って無いですか?
(そのテーブル対して、更新&参照&集計が頻繁に発生すします。)

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

開発当初はoracle案件で、ありきたりのチューニングだけで、問題なく動作していたのですが、
クライアントの方針変更で、急にMySQLで開発することになり、非常に難儀しています。
(ちなみに案件規模は、楽天クラスの商品在庫管理です。)


839 名前:NAME IS NULL [2008/05/24(土) 02:15:08 ID:/LSToqrf]
その規模になると、MySQLでは、どうやっても無理。パフォーマンスや安定性の面でもお薦めしない。
クラに泣き付いてでも、オラクルに戻してもらえ。


840 名前:NAME IS NULL mailto:sage [2008/05/24(土) 02:20:15 ID:???]
単一tblって時点で何だかな〜…
大規模すぎてMySQLの範疇じゃないだろ

841 名前:NAME IS NULL mailto:sage [2008/05/24(土) 02:36:57 ID:???]
>>839-840
ありがとうございます。でも、それは無理っぽいです。

クライアントのライバル会社が全社的にOpenOfficeを採用したとかで、新聞に載ったらしく、
クライアントの経営トップがそれに対抗して、バックエンドにオープンソース採用の方針を
打ち出したいらしく、私が土下座するくらいでは受け入れられそうにも無いです。

842 名前:NAME IS NULL [2008/05/24(土) 02:49:35 ID:/LSToqrf]
かなり痛いトップだな。
コッド博士クラスの優秀なDB開発者を雇ってMySQLを改造してもらえ。


843 名前:NAME IS NULL [2008/05/24(土) 03:34:26 ID:VAruVHOx]
バカ相手してても身体壊すだけだから辞めちゃえw

844 名前:NAME IS NULL mailto:sage [2008/05/24(土) 03:39:53 ID:???]
>>841
土下座て。
やるだけの事はやってちゃんと検証データとボトルネック、仕組み的に無理ですって事を踏まえた上で
それでもなんとかしろと言うならやりますが、紆余曲折、最悪こういう想定事態になりますが
よろしいですか?ってクライアントと折衝する人に言ってもらえばどうでしょうか。
自分の仕事は最低限筋の通った理屈を報告して折衝担当者に理解してもらうこと。
もちろん前向きにね。
自分の仕事を理解し、精一杯やるだけやってしっかりとこなした上で無理難題言う上司や客に必要以上の負担を強いられる道理はないでしょ?
ただその事を丁寧にビジネス用語で当たり障り無く表現して相手に理解、納得してもらうよう「伝える」努力は必要ですけど。

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

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

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

ソフト面に続く

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

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

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

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

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

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

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

・専門のコンサル
=> 実現までの早さと質が必要ならMySQLに習熟してる会社にコンサル依頼するのが一番早いような気が・・・
KLABさんにでも頼んでみたら?とふと思いました。
私も規模が大きくなるに連れて運用に悩まされ、夢の中のトイレで自分のションベンの放物線を眺めている時でさえMySQLの事を
考えていた時期が三ヶ月ほどありました。
データもいっぱい壊しました。いっぱい怒られました。あぁ思い出したらトイレに行きたくなってきたのでこれくらいで。



846 名前:NAME IS NULL mailto:sage [2008/05/24(土) 04:38:50 ID:???]
追記:あっSUNが買収してオープンソースでなくなるんじゃなかったっけ?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<244KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef