MySQL 総合 Part13
..
295:NAME IS NULL
08/03/12 21:28:16 /qYtQmQP
where句にIFをつかい
where IF(a is null,b=1,c=1)
みたいな感じにしてるんですけど、これを入れ子にするにはどうすればよいのでしょうか?
where IF(a is null,IF(b is null,〜,〜),c=1)
イメージはみたいな感じです。
MYSQL4.1.20
296:NAME IS NULL
08/03/13 00:36:27
>>295
ん?それでええやん
297:NAME IS NULL
08/03/13 02:18:21
MySQLであるレコードのサイズを求める場合って、手計算しかないでしょうか?
あるレコードのサイズをMySQLの関数とかで求める方法ってありますでしょうか?
298:NAME IS NULL
08/03/13 09:30:48 7ofIu9vE
>>296
あぁ〜。
エラーをキチンと読んでませんでした。
どうもありがとう。
299:NAME IS NULL
08/03/13 11:06:32
>>297
本当は何がしたいの?
その手の質問の時に本当にやりたいことは「レコードのサイズを求める」じゃない事が多いんだけど。
300:NAME IS NULL
08/03/13 14:59:48 oJPAtZrA
HPHとの組み合わせですが、
ブラウザ側に
okuri.html
<A/ href="tt.php?a=777">777を送信</A>
サーバーサイドに
tt.php
<?php
print $_get["a"]."を受信";
?>
とファイルを置いても実行すると
を受信
としか表示されません。スーパーグローバル変数の綴り間違いとかじゃないと思ったんですがわかりません。お助けください。
301:NAME IS NULL
08/03/13 15:00:33
↑PHPの間違いです汗
302:NAME IS NULL
08/03/13 15:11:13
ありそうで、今まで誰もしたことのない間違い。
間違えるなら「はみちつ」くらい面白いことやって。
303:NAME IS NULL
08/03/13 15:23:45
>>301
可愛いから許す
304:NAME IS NULL
08/03/13 15:56:45
>>300
webprog池。
といいつつ、 _GET って大文字じゃないといかんのじゃないかと。
305:NAME IS NULL
08/03/13 16:25:21
>>304
解決した。サンクス
306:NAME IS NULL
08/03/14 16:54:43 3GRgoYZ0
質問です。mysql5.0.22
select
a_date,
b_date
from
a,b
aとbとのdateを足して、日付はユニークで
一つにまとめて欲しいのですが、、
どうすれば?
307:NAME IS NULL
08/03/14 16:59:44
意味わからん
a, b はテーブル?
欲しい値は?ユニークとは?
好きな物は最初に食べるタイプ?
308:NAME IS NULL
08/03/14 17:04:51
select distinctrow
a_date + b_date as hoge
from
a,b
309:NAME IS NULL
08/03/14 17:24:30
>>308
306の要求通り合計してあげるなんて親切ですね。
310:NAME IS NULL
08/03/14 17:37:09 3GRgoYZ0
>>308
早速の回答ありがとうございます。
ただ、結果が
hoge
4006
4007
4008
みたいに、日付でないなぞの数字になってしまうのですが・・
どうしてでしょう?
311:NAME IS NULL
08/03/14 19:25:13
>>310
そもそも日付と日付を加算する、という意味が分からない。
日付と日数なら分かるけど。
312:NAME IS NULL
08/03/14 19:55:29
2008/2/29 - 2007/2/28
=2008÷2÷29 - 2007÷2÷28
=34 - 35
= -1
答え -1
~~~~~~~~~
313:NAME IS NULL
08/03/14 20:25:25
日付を足すwww 結果4016年とか?大変ですねwww
314:NAME IS NULL
08/03/15 01:30:43 HlMwlm98
>>311>>312>>313
ごめんなさい。
1日プラス(足す)って表現は、一般常識で考えると
2008/01/01+2008/01/02で4016年02月03日
と確かになります。
表現がちょっと難しかったかもしれません。
ごめんなさい。
頭の悪い人に、聞いて一応問題は解決しました。
315:NAME IS NULL
08/03/15 17:58:02
何故頭の良い人に聞かぬ
316:NAME IS NULL
08/03/15 19:32:24
URLリンク(gugurekasu.com)
317:NAME IS NULL
08/03/15 21:54:30 KoOOhNjo
PHPファイルにアクセスしたら、mysqldumpで
バックアップが取れるようにしたいと思っています。
mysqldump -u root -p パスワード hogehoge < test.sql
(hogehogeはテーブル名)
とすればいいのでしょうか?
318:NAME IS NULL
08/03/15 22:21:31
mysql -u root -p パスワード hogehoge < test.sql
319:NAME IS NULL
08/03/16 13:02:48 x85Y71fw
MySQL 5.0.32を使っているのですが、
Tomcat5.5からJNDIを使ってMySQLに接続しようとすると、
Access denied for user 'user'@'localhost' (using password: YES)
というエラーが出てしまいます。
mysql -uuser -p testdb
として、JNDIの設定と同じパスワードを入れると入れます。
320:290
08/03/17 10:33:56
すんませんした。無事直りました。
ウイルスソフトとファイアーフォールが悪さしてたみたいで、
それを切ってインストールしなおしたらうまくいきました。
>293
おそらくその通りだと思います。
コマンドプロンプトでもうまく作動しなかったので。
上記インストールしなおしたらうまくいきました。
初歩的なところでつまずいてお手数をおかけしました。
これから色々勉強しときます。
うまくいきました。
321:NAME IS NULL
08/03/17 12:39:13 CtPRxUzO
MySQL5を使っています。
AテーブルとBテーブルがあり、それを一緒にしてSELECTしたいのですが
こういった結合はできないのでしょうか?
Aテーブル
id | hoge | aaa | bbb | ccc
Bテーブル
id | hoge | ddd | eee | fff
SELECT `id`,`hoge` FROM Aテーブル;
SELECT `id`,`hoge` FROM Bテーブル;
この2つのSQLを1つにまとめて、AとB両方から id と hoge カラムデータを
持ってきたい。
322:NAME IS NULL
08/03/17 12:53:16
UNION
323:321
08/03/17 13:58:39
>>322
ありがとです。
SELECT `id`,`hoge` FROM Aテーブル
UNION ALL
SELECT `id`,`hoge` FROM Bテーブル;
でできました!
324:NAME IS NULL
08/03/17 20:54:44 I74vD0d5
質問させて下さい。
MySQL5.0.45を使用しております。
正確には、5.0.45-Debian_1ubuntu3.1です。
今回windowsからLinuxに変えてみようと思い色々設定しています。
メモリの挙動についてお伺いしたいのですが、key_buffer=256Mとしているのにtopコマンド確認上では130M程しか使用しておりません。
このほかにも色々メモリを多めに設定しているのですが依然変わらずです。
全体メモリは512MBでスワップは発生していません。
windows(MySQL5)の時は設定したメモリ分だけ予め確保するような挙動でした。
Linuxでは使用限界値として設定され、必要に応じてその範囲まで徐々に使用されていくと言うようなものなのでしょうか?
まだまだ勉強不足で申し訳ありませんが、アドバイス頂ければ幸いです。
325:NAME IS NULL
08/03/18 00:20:32 saWXbSut
今ふと思ったんだけど、複数のSQLをUNIONで一回で実行するのと、
ストアドプロシジャ使うのとどちらが早いんだろ?
326:NAME IS NULL
08/03/18 02:14:37
MySQLのバージョンとConnectorのバージョンって連動しているのでしょうか?
MySQL5.0とConnector/Jの5.1の組み合わせだとSELECTのASで別名とか使えないんですね…
Connector/Jを5.0にすると問題ないのですが、そういうものなのでしょうか。
327:NAME IS NULL
08/03/18 07:43:16
UNIONだとソートが発生するからストアドのほうが早い
UNION ALLだとSQL内で完結するから、
ストアドとSQLのコンテキストスイッチが無い分UNION ALLの方が早い
・・・と思う
328:NAME IS NULL
08/03/18 11:09:13
まずはベンチマークだな。
329:NAME IS NULL
08/03/18 16:38:17
ORDER BYで2つ以上のパラメータからソートすることはできるんでしょうか?
ORDER BY hoge_id DESC, hoge_id2 DESC
hoge_idで降下順でソートして同じ値のものはhoge_id2の降下順になるようにしたいです
330:NAME IS NULL
08/03/18 17:01:41
MySQL Query Browser 1.1.17 を win XP で使っています。
画面上のテキストエリア(?) に SQL を書いて、 Ctrl + Enter を押せば SQL が実行されますが、
CSE や OsqlEdit みたいに、テキストエリア内に複数 SQL を書いて、
「マウスで選択して、選択した文字列を SQL として実行」
はできないのでしょうか?
Ctrl + Enter を押すと、テキストエリア内の文字列をすべて実行しているように見受けられます。
なので、複数 SQL を書いて、実行したい SQL の行頭に # をつけたり消したりすることで切り替えています。
これができたら CSE や OsqlEdit みたいで使い勝手がいいんだけどなぁ・・・
331:NAME IS NULL
08/03/19 01:00:35
WindowsでMySQL 4.0.26から5.0.51aに変更してみたところ
ハンドル数が常時4600程度だったのがMySQLサービス起動直後でも39000程度もあり
少し使っていると42000とか増えていく
65000とかハンドルを消費するとWindows自体が不安定になったことがあるけど大丈夫なのか?
332:NAME IS NULL
08/03/19 01:48:10
Vistaは起動直後で10万越えてるよ
333:NAME IS NULL
08/03/19 02:13:44
MySQLってオラクルみたいに、GUIで操作できる画面ってないでしょうか?
334:NAME IS NULL
08/03/19 02:13:53
うう
335:NAME IS NULL
08/03/19 02:54:14
>>333
何この馬鹿
336:NAME IS NULL
08/03/19 13:17:56 FDALPhtb
windows 2003 serverにmysql4.1を入れているのですが
データベースにアクセスするソフトが2つあって
どちらか片方だけなら普通にアクセスできるのですが
2つとも立ち上げると後から立ち上げたソフトの方がデータベースのオープンに失敗してしまいます。
(mysqlが入っているOSがXPの場合は問題なく2つのソフトでDBアクセスできます)
OSの違いによって何かmysql側で設定が必要なのでしょうか?
337:NAME IS NULL
08/03/19 13:43:23
ORDER BYで2つ以上のパラメータからソートすることはできるんでしょうか?
ORDER BY hoge_id DESC, hoge_id2 DESC
hoge_idで降下順でソートして同じ値のものはhoge_id2の降下順になるようにしたいです
338:NAME IS NULL
08/03/19 15:14:53
まるちすんな
339:NAME IS NULL
08/03/19 15:19:57
>>333
オレはコンソール派だけど、MySQL Query Browser とか SQLyog とか。
340:NAME IS NULL
08/03/19 15:30:08
>>337
できる
341:NAME IS NULL
08/03/19 15:30:46
>>336
エラーは?
342:NAME IS NULL
08/03/19 15:33:31 FDALPhtb
>>341
データベースのオープンエラーとしか・・・
343:337
08/03/19 16:39:34
>>340さん
どんな書き方になるでしょうか?
ヒントでいいのでお願いしますm(_ _ )m
344:NAME IS NULL
08/03/19 17:35:08
>>337
自分で答え書いてるじゃん。
ORDER BY hoge_id DESC, hoge_id2 DESC で正解じゃね?
345:NAME IS NULL
08/03/19 17:36:34
>>342
まさかと思うが、max_connections=1 だったりとか。
346:NAME IS NULL
08/03/19 18:00:48 FDALPhtb
>>345
すみませんそれはどこでみることができますか><
347:324
08/03/19 18:00:52
どなたか>>324
に答えて頂けないでしょうか。
あれからググったりして調べているのですが一向に解決策が見つかりません・・・
348:346
08/03/19 19:39:16
コンソールとかで、show variables like "max_connections";
349:NAME IS NULL
08/03/19 19:42:27
↑の 名前 は間違い 346 じゃないぞ
>>347
show variables like "key_buffer_size";
は設定通り?
350:NAME IS NULL
08/03/19 19:54:31
MySQL 5.0.51aだとMySQLの再起動だけなら問題ないけど
Windowsを再起動するとInnoDBが壊れてるといってMySQLが起動できなくなるなぁ
かといってinnodb_force_recovery=4で起動してcheck tableしても
InnoDBのあるNTFSのディスク自体をchkdskしても全く問題ないので
InnoDB自体が壊れているわけではないようだ
MySQL 5.0.45以前だと全く問題ないんだが・・・
まぁいいか
スキップしよう
351:NAME IS NULL
08/03/19 20:33:46 FDALPhtb
>>348
ありがとうございます。
ところでそれと同様の設定はMySQL Administratorにもありますか?
352:NAME IS NULL
08/03/19 21:10:33
>>351
ある
353:324
08/03/20 02:31:15
>>349
レス有り難う御座います。
key_buffer_size 2147483648 ということで設定通り2Gになっています。
ubuntu7.1 serverを使っているのですが一つのアプリに使えるメモリ上限みたいなのがあるのかな・・・、my.cnfの設定はこうしていますがおかしな所ありますでしょうか?
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
default-character-set = ujis
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
default-character-set = ujis
character-set-server = ujis
collation-server = ujis_japanese_ci
init_connect = "SET NAMES ujis"
skip-character-set-client-handshake
skip-external-locking
skip-name-resolve
#bind-address = 127.0.0.1
key_buffer = 2G
max_allowed_packet = 16M
thread_stack = 1M
thread_cache_size = 1024
#max_connections = 100
table_cache = 1024
#thread_concurrency = 10
sort_buffer_size = 32M
myisam_sort_buffer_size = 32M
wait_timeout = 10
tmp_table_size = 512M
join_buffer_size = 524288
record_buffer = 16M
query_cache_limit = 16M
query_cache_size = 256M
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
skip-bdb
skip-innodb
max_connections=500
max_connect_errors = 102400
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
default-character-set=ujis
[isamchk]
key_buffer = 16M
!includedir /etc/mysql/conf.d/
354:NAME IS NULL
08/03/20 04:01:00
質問です。
仕事でオラクルを使っているのですが、MySQLも勉強してみたいとおもい、
いろいろ調べております。
やはり、MySQLはオラクルと比べて信頼性が低いということなのですが、
こういうシステムには使ってはいけないとかありますでしょうか?
355:NAME IS NULL
08/03/20 08:18:15
「MySQLはオラクルと比べて信頼性が低い」と考えている人間が携わるシステム。
356:NAME IS NULL
08/03/20 09:22:09
「オラクルはとMySQL比べて信頼性が高い」と考えている人間が携わるシステム。
357:NAME IS NULL
08/03/20 12:05:12 OG+4q6QH
UPDATEするテーブルを複数指定できるのでしょうか?
UPDATE member,item SET member.name='aaa',item.date='2008-03-200'
WHERE member.id='1'
みたいなSQLを書いているのですが、実行されません。
358:NAME IS NULL
08/03/20 12:29:18
>>357
それはMySQLでは出来ない。あきらめよう。
359:NAME IS NULL
08/03/20 14:00:42
>>353
OSのarchはi386?
i386だと、ユーザー空間のメモリは2Gが上限で、MySQLマニュアルのどっかにあったと思うけど、
key_buffer_size以外に、各種クライアントが使用する変数郡をすべて足し合わせた合計が
2Gを越えないように設定しないといけないハズ。
i386でも、PAE-kernel使うとか、自前でコンパイルオプションやスイッチ変更したら2G以上使えるらしいけど、
そこらへんは詳しくない。
つうか、そもそも物理メモリ512Mしかないのに、設定で2Gのメモリを使うようにしてるところが
大問題なんじゃないのかね??
(それが、>>324の現象と関係あるかどうかは知らんが・・)
360:324
08/03/20 14:22:51
>>359
すみません、ここ数日色々試してとっかえひっかえしていたため、情報がごっちゃになってしまいまました。
>>324 の時はメモリ512Mだったのですが違うマシンでメモリ4Gにして試してみたのが>>353です。
OSはubuntu7.1 server、x86、32bit版です。
OS上では4Gを認識しております。
あれから512M、1G、2G、4Gを各上限とする設定を試してみたのですが全て同じメモリ使用量となってしまいます。
LinuxのMySQLも通常は起動時にkey_buffer_sizeで指定したメモリ分だけドカンと使用されるのでしょうか?
361:359
08/03/20 15:13:57
>>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
08/03/20 16:21:56
>>324
>>359
key_buffer_size=2Gでも、起動直後には確保されない。
もしくはmallocで確保はしているが、未使用なのでLinux kernelが実メモリをまだ割り当てていないのかもしれない。
使っているうちにインデックスがメモリに載るようになる。
その辺、最初からのせたかったらサイボウズラボの奥一穂さんの記事が参考になるかな。
URLリンク(labs.cybozu.co.jp)
MySQL のウォームアップ (InnoDB編)
これはInnoDB用だが、インデックスのところはMyISAMでも使えるんじゃないだろうか。
363:NAME IS NULL
08/03/20 16:23:13
>>357
無理。トランザクションでやるしかない。
364:NAME IS NULL
08/03/20 16:25:39
>>359
> i386だと、ユーザー空間のメモリは2Gが上限で、MySQLマニュアルのどっかにあったと思うけど、
> key_buffer_size以外に、各種クライアントが使用する変数郡をすべて足し合わせた合計が
> 2Gを越えないように設定しないといけないハズ。
Linux kernel 2.6なら、3GBまでいける。
ちなみにPAE使っても、プロセス単体は3GBまでしか無理だと思われる。
365:324
08/03/20 16:53:48
>>361
>>362
>>364
みなさんレス本当に有り難う御座います。
頂いた情報を元にもう少し調べてみます。
因みに以前の環境はwindowsXP SP2 でMySQLは5.0.45-community-nt
搭載メモリは2Gでkey_buffeは1G、その他諸々設定で
起動時には1.6G程コミットチャージされていました。
366:357
08/03/20 17:09:49
>>358,363
そうですか・・・。マニュアルには出来そうな感じしたのですが、
ちょっと違うみたいですね。。処理を分けて対処します。
367:NAME IS NULL
08/03/20 19:31:17
>>366
機能は有るんだから構文が間違ってるんだろ?
URLリンク(dev.mysql.com)
そのままSQLを分離して上手く動く事は確認済み?
'2008-03-200'←こんなのを見ると大丈夫か?と思うわけだが。
368:NAME IS NULL
08/03/21 05:57:31 vtga5C69
レンタルサーバでMySQLを使ってるけど
なんだか新しいバージョンでは、デフォルトでUTC-8を使うようになってるらしく
DBをEUCで作成して、そこからcgiでアクセスする際に
予め、コネクションが完了した直後に
まず 'SET NAMES ujis' みたいなクエリーを発行しないと、文字化けしてしまう…
phpMyAdminからなんか設定して回避は出来ない よね…(ローカルのだったらMySQLの設定ファイル変更で回避出来るみたいだけど)
369:NAME IS NULL
08/03/21 05:59:47
×UTC-8
○UTF-8
あぁ…
370:NAME IS NULL
08/03/21 06:23:41
URLリンク(wordpress.rauru-block.org)
URLリンク(puchiko.lowtech.ne.jp)
URLリンク(puchiko.lowtech.ne.jp)
URLリンク(puchiko.lowtech.ne.jp)
371:NAME IS NULL
08/03/21 08:14:44 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
08/03/21 08:16:13
あ、PHP5+Mysql5
サーバはAnhttpdでOSはWinVistaでそ。
環境はこれと言って問題ない筈なんだけど
373:363
08/03/21 08:45:25
>>367
複数テーブルのUPDATE出来るのか...。嘘教えてすまん >>357
374:NAME IS NULL
08/03/21 09:15:49
>>371
設定がヘボいと、ネットワーク越しにアクセスできても
ローカルでアクセスできないということはよくある。
375:NAME IS NULL
08/03/21 09:39:11
>>374
設定kwsk
これは「アクセスできない」って事で良いんだろうか。間違いなくmysqlは起動してるんだ。
376:NAME IS NULL
08/03/21 10:03:06 Qg2uDul9
>>352
どこの画面でやるのでしょうか?
377:NAME IS NULL
08/03/21 11:52:08
>>376
って、少しは努力しろよw
378:NAME IS NULL
08/03/21 12:12:04
>>377
知らないならレスしないで下さい。ウザイです。
379:NAME IS NULL
08/03/21 15:01:06
>>378
MySQL Administrator にあるだろ馬鹿
380:NAME IS NULL
08/03/21 15:08:12
>>379
知らないならレスしないで下さい。ウザイです。
381:NAME IS NULL
08/03/21 15:08:44
>>379
全く努力しない聞くだけチャンはほっとけ。
382:NAME IS NULL
08/03/21 15:17:42
>>381
知らないならレスしないで下さい。ウザイです。
383:NAME IS NULL
08/03/21 15:33:05
>>371
コンソールから
mysqladmin -u root -p xxx
でアクセスできるか?
384:NAME IS NULL
08/03/21 15:34:14
もとい。こっち。
mysql -u root -p xxx
385:NAME IS NULL
08/03/21 15:41:50 pV5z+1bm
MySQL Command Line Clientで良いんだよね?
メッセージとか出ないなww少し拍子抜けwww
386:NAME IS NULL
08/03/21 15:44:44
あ、ごめん間違い。
ちゃんとEnter Passwordになるね。
387:NAME IS NULL
08/03/21 15:46:39
って思ってたらなんぞこれー
パスワード入力したら
ERROR 1049 (42000): Unknown database 'ぱすわーど'
C:\Program Files\MySQL\MySQL Server 5.0>
あひー
388:NAME IS NULL
08/03/21 15:52:38
スマン、寝不足のせいかボケてんのか俺?
「xxx」はデータベース名だよね?
一応>>371の[analysis]にしたらちゃんと返って来たわ(Welcom to th MySQL monitor)
389:NAME IS NULL
08/03/21 16:58:03
>>388
起動はしてるんだな。じゃ、ポート番号が合ってないんじゃね?
390:NAME IS NULL
08/03/21 17:06:03
ここで質問していいのかわからないのですが、初心者用のスレがみつからなかったので、書き込ませていただきます。
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:文字化けらった
08/03/21 17:22:46 ZUe7Mqjc
申し訳ありませんが教えてください。
MS ACCESS (文字コードはおそらくSJIS)で作成したデータを、
mysql(文字コードはUTF8)のDBに移行するには、
どのようにすればよろしいでしょうか。
また、移行後、mysqlのDBのデータを
文字コードUTF8で、挿入、更新、削除を行いたいのですが、
どのようにすればよろしいでしょうか。
392:NAME IS NULL
08/03/21 17:26:47
>>390
データディレクトリのパーミッションとか色々ファクタがあるが、
エラーログファイル見た?
/usr/local/mysql/data に、xxxx.err とかで記録されているはず。
393:NAME IS NULL
08/03/21 17:29:47
>>391
CSVにして LOAD DATA INFILE
UTF-8でDBやテーブル作って文字コード合わせて queryしる。
394:NAME IS NULL
08/03/21 17:32:13 ZUe7Mqjc
>>393
ありがとうございます。
便利ツールなどはご存知ありませんでしょうか。
395:NAME IS NULL
08/03/21 17:39:18
>>394
URLリンク(www.google.co.jp)
396:390
08/03/21 20:08:44
>>392 ありがとうございます。
dateはアクセス不可だったのでパーミッションをかえて開いたところ、
たしかに[pc名].local.errというファイルがありました。
しかし、これをどうやって開ければいいかがわからず。。
とりあえずmiで開いてみたら、なにも書かれていませんでした。
他のアプリケータなどで開くのでしょうか。
ものすごく初歩的な質問で申し訳ありませんが
よろしくお願いいたします。
397:NAME IS NULL
08/03/21 20:24:25
>>396
datadir 内の全てのファイルは、mysqlが読み書き出来るようになってないとだめなんだが、
違ってるんならパーミッションを全部変えてみ。(通常 mysqlユーザ)
398:NAME IS NULL
08/03/21 23:54:49
>>396
> 他のアプリケータなどで開くのでしょうか。
Wikipedia項目リンク
399:NAME IS NULL
08/03/22 01:42:27
>>389
そのPHPにポート指定する所無いなぁ…
ポート番号がセッティングウィザードのデフォルトのままだし…
400:390
08/03/22 09:11:45
>>398 アプリケーションですね。すみません。
>>397
ありがとうございます。
もともとは「オーナー:mysql」になっていました。
それだとfinderから開けなかったので、自分のユーザー名に変えてmiで開こうとしてみたら、
空だったのです。。
401:NAME IS NULL
08/03/23 12:16:20 +Imhz/jV
指定したデータベースだけcharsetを変える方法があれば教えてください
デフォルトのcharsetがutf-8なのですが、互換性の問題からeucjpで格納したいです
テーブルのコレーションをujis_japanese_ciに変えたのですが、
コレーションを変えてもデータ格納形式自体は変わってないみたいです
402:NAME IS NULL
08/03/23 14:06:44
\ │ /
/ ̄\
─( ゚ ∀ ゚ )─
\_/
/ │ \
○○○ ○○○
○,,・ω・○ ○・ω・,,○
○○○ ○○○ o
o〜(,_uuノ とuu_,)ノ
FREE TIBET
403:NAME IS NULL
08/03/23 22:28:01
>>402
NO TIBET!
FREE CHINA!!
404:NAME IS NULL
08/03/23 23:30:16
>>401
一旦 utf8 で作ったテーブルの charset を eucjpms に変えても、カラムの charset は utf8 のまま。
手っ取り早いのはテーブルを作り直すこと。
もしかしたら、
alter table xxx convert to charset eucjpms;
でも出きるかもしれないけど、やったことないからわからん。
405:NAME IS NULL
08/03/24 10:54:10
>>400
データベースの初期化からやり直したらどう?
mysql_install_db --user=mysql
406:NAME IS NULL
08/03/24 17:10:55
mysqlhotcopy でデータベースコピーしたあと
mysqldの再起動以外でデータベース読み込ませる方法ないでしょうか。
常時起動させているものなので極力再起動は避けたいです。
407:NAME IS NULL
08/03/24 18:30:46
>>406
やったことは無いけど、mysqladmin refresh でどう?
408:NAME IS NULL
08/03/24 20:08:29
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
08/03/24 20:10:30
SQL文も晒してね
410:NAME IS NULL
08/03/24 21:41:31
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
08/03/24 21:53:10
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
08/03/24 22:32:30
ありがとうございます。
413:NAME IS NULL
08/03/25 00:35:21 VYc3xvqf
ファイルをキャッシュするのにmysqlを使おうと思います
ファイルパスをキーにしてインデックスを張ることになるかと思いますが
そうなると255文字程度の長さは必要になります
そんな長いインデックスは実用的なのでしょうか?
414:NAME IS NULL
08/03/25 09:00:49
そんなときは、数値でID付けてそのIDを結合したものにインデックス張るといいよ。
415:390
08/03/25 10:29:09
>>405
ありがとうございます。
「MySQL入門以前」という本を見ながらやっているのですが、
「データベースの初期化」というのは書いておらず、まだ一度もやっていません。
もうすこしよく勉強して、はじめからやり直してみようと思います。
ありがとうございました。
416:NAME IS NULL
08/03/25 11:52:42
ファイルパスからmd5とかでhash値出せばそれなりに実用になる
417:NAME IS NULL
08/03/25 12:17:57 rCxdFsPn
ファイルパスにmd5使うって超いいじゃん
バッティングすることなんて天文学的確率だろ
キャッシュ用途としては充分じゃね?
418:NAME IS NULL
08/03/25 16:02:40
Winnyがそうだから
419:NAME IS NULL
08/03/25 17:11:37
レコードの電話番号フィールドに「012-3456-7890」のような文字列が入ってるとして、
「01234567890」でもselect文で検索できるような方法はありますか?
concatのようなselect文中に挿入してレコードの文字列を置き換え(削除)つつ検索できたら
とても幸せなのですが、何かありますでしょうか?
420:NAME IS NULL
08/03/25 17:50:42
>>419
お幸せに・・
select * from hoge where REPLACE(tel,"-", "")="01234567890"
421:NAME IS NULL
08/03/25 17:51:36
>>419
フィールドが半角のみ確実なら正規表現 REGEXP 使えるよ
422:419
08/03/25 20:55:10
__________
||
|| ⊂⊃
|| ∧ ∧ >>420さん >>421さん
|| ( ⌒ ヽ ありがとう、幸せになれると思います
∧||∧ ∪ ノ
( ⌒ ヽ 彡 V
∪ ノ フワーリ
∪∪
423:NAME IS NULL
08/03/25 23:29:33 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
08/03/26 12:35:25
質問です。
データベース名にアンダーバーを入れるとなぜかたまにエラーになります。
たとえば「user_address」と言うデータベースを作るとなぜかエラーになる。
前後を区切りたいときは普通アンダーバーで区切ると思っていたのですがたまにエラーになるのでやめます。
普通はどの文字で区切るのかわかりません。
というかアンダーバー以外で区切る方法他にいい案ありますか?
425:423
08/03/26 13:42:35
>>423 自己解決しますた。
URLリンク(dev.mysql.com)
ストアド ファンクションまたはトリガ内では、その関数やトリガを実行したステートメントが
( 読み取り、または書込みに ) すでに使用しているテーブルを改変することはできない。
うぎゃー! 役に立たねージャン!
別テーブルに意図する操作内容を逃がして、定時トリガとかで反映させるくらいしか
アイディアが浮かばない。
どうしたらいいか、引き続きアイディア募集中!
426:NAME IS NULL
08/03/26 15:22:47
>>424
なんでエラーなるの?エラーの内容は?
427:424
08/03/26 15:36:15
>>426
エラーというかデータベースが作れなかった。
何度やっても作れなかったがアンダーバー外したら作れた。
428:NAME IS NULL
08/03/26 16:39:55
>>427
それは、mysqlというよりかはOSのファイルシステムの問題じゃね。
429:424
08/03/26 19:32:52
>>428
まあそういうことになります。
どこで聞くべきかわからなかったので
とりあえずmysqlでエラーがでたのでここで聞いてみました。
失礼しました。
430:NAME IS NULL
08/03/26 20:55:26
質問です。
CREATE TABLE でPARTITION(TABLESPACEとか)を指定しなかったら
テーブルデータはどこに格納されるのでしょうか?
431:NAME IS NULL
08/03/26 22:21:19 edZp6jWv
SELECT * FROM sales WHERE SUM(price)<'10000' GROUP BY sales_id
としたのですが、SQLが間違っているとエラーになります。
WHEREで検索する時、合計値を検索できないのでしょうか?
MySQLは4.1.20を使っています。
432:NAME IS NULL
08/03/26 23:01:48
>>431
having
433:NAME IS NULL
08/03/27 11:11:21
>>425
別テーブルに書き込んで、SELECTするときにJOINするとかどうよ?
434:NAME IS NULL
08/03/27 13:02:47
>>430
ん?何が知りたい?データディレクトリ?
435:NAME IS NULL
08/03/27 13:22:21 haXSw+o7
insertのときに、たとえ1文字であってもひらがなや漢字等を使うと
Data too long for column と出てしまうのはなぜですか?
436:q
08/03/27 13:56:58
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
08/03/27 14:09:24 4i6HCVKz
>>436
URLリンク(codezine.jp)
とか
URLリンク(codezine.jp)
とかかな。
438:q
08/03/27 14:53:09
>437さん
ありがとうございます!
上のものでやりたいことは完璧にできました
439:NAME IS NULL
08/03/27 15:14:54
>>435
テーブルの定義見せて。
440:NAME IS NULL
08/03/27 15:36:58 haXSw+o7
create table railroads(
railroad varchar(20)
);
441:NAME IS NULL
08/03/27 17:22:48
>>440
入力した文字コードとテーブルの文字コードが合っていないに一票
442:NAME IS NULL
08/03/27 18:48:04
>>434
データベースのデータがOS上のどこに
保管されているのか知りたいです。
例えば、Oracleの場合、tablespaceの
容量を超えてデータを入れようとすると
エラーになります。(自動拡張OFFで)
その場合は、tablespaceに対して
物理的なデータファイルを追加して
領域拡張してやるのですが、
MySQLの場合は、あちこち調べても
その部分の説明がほとんどされて
おらず、不思議に思っています。
DISKの領域がゆるす限りいくらでもデータを登録できるのか?
そうだとしてもDISK上のどのパーティション(Windowsなら
どのドライブ)に存在するのか知っていないと最大のデータ
格納量も予測できず、不安ではないかと思うのですが。
443:NAME IS NULL
08/03/27 19:11:34
>>442
どこに置かれるかはここに書いてるよ。
URLリンク(dev.mysql.com)
「データベース」って書かれてるとこね。
んで、実際のファイルは使っているストレージエンジンによります。
URLリンク(dev.mysql.com)
普通はMyISAMかInnoDBなので、該当の部分を読んでください。
444:NAME IS NULL
08/03/27 19:13:09
>>442
つ URLリンク(dev.mysql.com)
ここらへんをよく読もう。
各table typeによって格納される場所は異なる。
445:NAME IS NULL
08/03/27 19:14:00
かぶった・・・orz
446:NAME IS NULL
08/03/27 19:47:28
>>442
っていうか、show variables like 'datadir';
447:NAME IS NULL
08/03/27 21:07:09
下記のようなSQLを書いた場合、
何故か id が 0 のものが抽出されてしまいます。
なぜでしょうか?
また、回避法はありますでしょうか?
※検索に利用する為、0と検索された場合はidが0のものが抽出されるようにしたいので
AND id <> 0
は使わないでやりたいです。
SELECT * FROM users WHERE id = 'うんこ'
448:442
08/03/27 21:16:49
ありがとうございます。
ある意味オラクルよりややこしいですね。
449:NAME IS NULL
08/03/27 21:33:34
>>447
usersのCREATE TABLEみせて
450:NAME IS NULL
08/03/27 23:15:04
>>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
08/03/27 23:40:57
数値と文字列比べちゃダメでしょ。
452:NAME IS NULL
08/03/27 23:45:22
とりあえず、
SELECT cast('hoge' as signed);
を実行してみればいいと思うよ。
453:NAME IS NULL
08/03/27 23:51:10
その場をしのぎたいだけなら、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
08/03/28 10:38:32
>>451
数値に対して文字列で比較しても、そもそも型自体が異なるので絶対合致しないもの、と思っておりました。
しかし何故か0のものが抽出されてしまった為、疑問に思いました。
>>452
実行してみました。0が返ってきました。
要するに、数値型のカラムに対して文字列で比較しようとすると、
mysql内部で自動的に cast('hoge' as signed) のような形に変換され、
その結果返ってきた0で抽出条件を掛けてしまう、という事でしょうか?
>>453
ありがとうございます。
期待した通りの結果が返ってきました。
>indexとidがあるのがそもそもおかしい
こちら当方も感じました(他の方が作ったものの修正をしています)。
あと、CREATE TABLE で主キーに UNSIGNED を付ける辺り、なるほどと思いました。
大変勉強になりました、ありがとうございます。
455:NAME IS NULL
08/03/28 12:57:05
MySQLのコマンドラインツール(mysql.exe)のログを取る方法はありませんか?
一度に大量のSQLスクリプトを実行するとログが流れてしまって、
エラーが出ていても気づかないということがあるんです。
456:NAME IS NULL
08/03/28 13:01:59
リダイレクトしてファイルに落とせば?
457:NAME IS NULL
08/03/28 13:07:56
>要するに、数値型のカラムに対して文字列で比較しようとすると、
>mysql内部で自動的に cast('hoge' as signed) のような形に変換され、
>その結果返ってきた0で抽出条件を掛けてしまう、という事でしょうか?
型が違うと、いちど失敗してから変換が発生するから、
明示的に変換するのに比べてオーバーヘッドが発生することだけ頭の片隅にでも置いておけば、
その理解で大体OK
458:NAME IS NULL
08/03/28 13:52:28
>>456
mysql -u username -p database < hoge.sql 1>>log.txt 2>>err.txt
でいけました!ありがとうございました。
459:NAME IS NULL
08/03/28 14:14:57
URLリンク(www.mysql.gr.jp)
あなたが使用している PHP, MySQL のライブラリ(libmysql.dll, libmysqlclient)
の標準キャラクターセットは何かご存じですか?
とありますが、標準キャラクターセットを調べる方法はあるのでしょうか?
460:NAME IS NULL
08/03/28 15:19:09
正規表現の置き換えはできますでしょうか?
イメージとしては以下のような感じです。
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
08/03/28 15:40:00
正規表現使いたいときも確かにあるが、
その例の場合単に第一正規化されてないだけじゃ?
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
08/03/28 15:56:00
>>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
08/03/28 16:01:21
意図が伝わらなかったかな。
要は、テーブル定義(というか設計)見直せば?ってこと。
正規表現を使わなくても、テーブルさえちゃんとしてれば
461で示したSQLで実現できるよね?
もし変更が不可能だとしても、
idから部分文字列を切り出すとかすれば十分実現可能。
464:NAME IS NULL
08/03/28 16:04:00
どうしても正規表現が使いたいなら、
URLリンク(dev.mysql.com)
ここを参考にすればいい。
でも、正規表現はそこそこ重い処理だから、
RDBMSでは極力使わないほうがいい。
465:NAME IS NULL
08/03/28 17:53:51
>>459
PHPでmysqldに接続して(mysqld側の起動オプションで、charset絡みを何も指定せずに)
show variables like '%char%' ;
で、clientとconnectのところ。
466:NAME IS NULL
08/03/28 20:02:50 t4tLBd+a
>>455
tee
467:NAME IS NULL
08/03/28 22:31:08
>>466
tee log.txt でコンソールに表示されるログがすべて記録されるんですね。ありがとうございます。
468:NAME IS NULL
08/03/29 00:05:43
% mysql hogehoge | tee log.txt
469:NAME IS NULL
08/03/29 12:17:05
% mysql hogehoge | tee -a log.txt
470:NAME IS NULL
08/03/29 23:35:55 3fgyplCn
為になるHP
URLリンク(u.aniota.info)
471:NAME IS NULL
08/03/31 05:40:50 0Cxuk5my
同一テーブルをサブクエリでselectしてdelete出来ないので
テンポラリテーブルを使おうと思いますが、
テンポラリテーブルを削除する前に
何らかの形で操作側のプロセスが死んだ場合、
テンポラリテーブルだらけになるんじゃないかと思うのですが、
そのあたりはどうなってるのでしょうか?
472:NAME IS NULL
08/03/31 11:24:38
>>471
接続が終了するとDROPされるから問題ないんじゃね?
URLリンク(dev.mysql.com)
473:NAME IS NULL
08/03/31 22:16:20 cXmxkjaY
RHEL 5 + MySQL5.0.26で構築してます。
disk容量の監視をしているのですが、
たまに / の下が圧迫されているようです。
どうやら
/tmpの下にキャッシュファイル?をMySQLが作っているようなのですが
どのタイミングでどのようなファイルを吐いているのかわかりません。
Order by などではテンポラリファイルをつくるようですが
前回 Diskが圧迫されたときには、Order byではなく
600万件ほどのテーブルから、uniqueデータのdeleteを繰り返していました。(対象は100万件程)
/tmpの下ってMySQLは何を吐きますか?
delete,updateをするときでも吐きますか?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5392日前に更新/244 KB
担当:undef