MySQL 総合 Part12
レス数が1000を超えています。これ以上書き込みはできません。
0001だよもん!!!
2007/09/23(日) 10:57:29ID:RN+MewUh前スレ[MySQL 総合 Part11] http://pc11.2ch.net/test/read.cgi/db/1178154390/
[関連スレと過去ログ]
http://find.2ch.net/index.php?STR=MySQL
http://makimo.to/cgi-bin/search/search.cgi?D=db&q=MySQL&sf=0&link2ch=on
[MySQL Developer Zone] http://dev.mysql.com/
[MySQL 日本語リファレンスマニュアル] http://dev.mysql.com/doc/mysql/ja/
[MySQL Internals Manual] http://dev.mysql.com/doc/internals/en/
[MyNA] http://www.mysql.gr.jp/
[MLja] http://lists.mysql.com/mysql-ja
ここで質問をする前に、MyNAでのFAQを最初に確認しましょう。
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ
MyNAでの「心得の条」
http://www.mysql.gr.jp/frame/modules/bwiki/index.php?%BB%A8%B3%D8%2F%BF%B4%C6%C0
・関連ツール及びユーティリティ
・関連書籍
>>2
0002NAME IS NULL
2007/09/23(日) 10:58:56ID:???[phpMyAdmin] http://www.phpmyadmin.net/
[phpMyBackupPro] http://www.phpmybackuppro.net/
[MySQLCC] http://www.mysql.com/products/mysqlcc/
[MySQL-Front] http://www.mysqlfront.de/
[mytop] http://jeremy.zawodny.com/mysql/mytop/
[Common SQL Environment] http://www.hi-ho.ne.jp/tsumiki/cse_1.html
MySQL ABでの各種GUIツールはMySQL GUI Toolsとして統合されています
(WorkbenchはGUI Toolsから独立しました。)
http://dev.mysql.com/downloads/gui-tools/5.0.html
・MySQL Administrator
・MySQL Query Browser
・MySQL Migration Toolkit
http://dev.mysql.com/downloads/gui-tools/5.0.html#Workbench
・MySQL Workbench
【関連書籍】
[MySQL Books]
http://dev.mysql.com/books/
http://www.amazon.co.jp/exec/obidos/search-handle-url/ix=books-jp&fqp=keywords%01MySQL
http://www.amazon.co.jp/exec/obidos/search-handle-url/ix=books-us&fqp=keywords%01MySQL
2ch風偉人伝 AA はこちら
http://www.aadayo.com/aa/02_13.html
0003NAME IS NULL
2007/09/24(月) 21:17:06ID:pceZ+XvF以下のように書いてみましたができませんでした。
UPDATE hoge SET title='HOGE1' WHERE seq=1, hoge SET title='hoge2' WHERE seq=2;
0004NAME IS NULL
2007/09/24(月) 22:06:40ID:???update test1
set col2 = (select test2.col2 from test2 where test1.col1 = test2.col1)
where col1 in (select col1 from test2);
普通はこんなことしないと思うけど…
0005NAME IS NULL
2007/09/25(火) 03:54:31ID:QTKb0E3Vレスありがとうございます。
普通は一回一回UPDATEするということでしょうか?
連続で4回ほどUPDATEすることが確実なのでINSERTのように連続でINSERTすることで負荷を軽減したいと思ったのですが・・・
0006NAME IS NULL
2007/09/25(火) 04:34:44ID:???って流れだから、もし1つのSQLで複数まとめて書く文法があったとしても
内部動作的はこれを1回ずつ繰り返すしかない。
だから効率的にはならないんだよ。
INSERTは表の末尾に一度に書き込めばいいから効率的にできるけどね。
というわけでUPDATE4回投げましょう。
同じUPDATE文でパラメータが違うだけなら
PreparedStatement(JDBCの場合)をつかってSQLの解析コストを減らしましょう。
あとは、4回というのが確定ならそのための専用のストアドプロシージャを
書けばクライアント⇔サーバ間の通信量とかは減らせるね。
(ストアドの中では結局UPDATEを4回やるわけだけど)
0007NAME IS NULL
2007/09/25(火) 13:13:39ID:I2co02Wi以下のような場合でselect時にsortすると
---------------
insert into test(str) values('5'),('a'),('ア'),('イ'),('あ'),('い');
MySQLでは あ->い->ア->イ->5->a
Excelでは 5->a->ア->あ->イ->い
---------------
になります。MySQLでExcelのようなsort方法は可能でしょうか?
0008NAME IS NULL
2007/09/26(水) 00:29:32ID:???0009NAME IS NULL
2007/09/26(水) 08:02:13ID:???0010NAME IS NULL
2007/09/28(金) 04:44:53ID:e5bj6BJY0011NAME IS NULL
2007/09/30(日) 22:18:21ID:kM0xx8Koちなみに表の名前はcountriesで
表をだすときは SELECT * FROM COUNTRIES: です教えてください
0012NAME IS NULL
2007/10/01(月) 01:08:52ID:k3mU4g8h以下のようなテーブルがあります。(他の情報は省略してます。)
tableAにidを4つまで登録することができます。1つのみ登録することもあります。
tableBにidの名称を持っています。
tableA
| id1 | id2 | id3 | id4 |
+-----+-----+-----+-----+
| 001 | 002 | 003 | 005 |
| 002 | | | |
tableB
| id | id_name |
+-----+---------+
| 001 | name1 |
| 002 | name2 |
| 003 | name3 |
| 004 | name4 |
| 005 | name5 |
| 006 | name6 |
この時、↓のような結果を求めるsqlを教えてください。
| id1 | id_name1 | id2 | id_name2 | id3 | id_name3 | id4 | id_name4 |
+-----+----------+-----+----------+-----+----------+-----+----------+
| 001 | name1 | 002 | name2 | 003 | name3 | 005 | name5 |
| 002 | name2 | | | | | | |
よろしくお願いします。
0013NAME IS NULL
2007/10/01(月) 01:37:19ID:???A.id1, B1.id_name,
A.id2, B2.id_name,
A.id3, B3.id_name,
A.id4, B4.id_name
from
tableA A,
tableB B1,
tableB B2,
tableB B3,
tableB B4
where
A.id1 = B1.id
and A.id2 = B2.id
and A.id3 = B3.id
and A.id4 = B4.id
;
わりとFAQ?
0014NAME IS NULL
2007/10/01(月) 07:09:32ID:???0015NAME IS NULL
2007/10/01(月) 09:30:42ID:???おばあちゃんが言っていた
なんでも正規化すればいいわけじゃない ってな
0016NAME IS NULL
2007/10/01(月) 10:48:20ID:???0017NAME IS NULL
2007/10/01(月) 20:14:38ID:???0018NAME IS NULL
2007/10/01(月) 21:59:42ID:???裏2chじゃないの?
0019NAME IS NULL
2007/10/03(水) 14:50:47ID:L9QuLInZ2500に近い順
var
1945
4278
5362
4896
3542
1457
1234
↓
var
1945
1457
3542
1234
4278
4896
5362
0020NAME IS NULL
2007/10/03(水) 16:09:54ID:???鮫島に関する投稿は消されるんだよ素人
0021NAME IS NULL
2007/10/03(水) 19:06:01ID:???0022NAME IS NULL
2007/10/03(水) 19:28:21ID:???http://dev.mysql.com/doc/refman/4.1/ja/date-and-time-functions.html を見たのですが、比較部分をどうすれば良いのかが分かりません。
SELECT COUNT(*) FROM `res_t` WHERE dateTime_c >= SUBTIME(NOW(), '00:03:00');
みたいに書いたら一応エラーにはならないのですが、正しく比較できているか (日時が数値変換されて変に比較されていないか) が不安でしょうがありません。
上のSQL文で正しいかどうか、間違っていればどこを修正すれば良いのかを、ご教示お願いします。
0023NAME IS NULL
2007/10/04(木) 17:32:35ID:Iv269TDK会員管理システムで、ログイン後ユーザ情報編集画面に移るようにしたいんですが、
ログイン用のIDとPassは名前や電話番号などのユーザ情報テーブルの
中に入れてもいいんでしょうか?
それとも、ログイン確認用の専用のテーブルを持たせるべきでしょうか
みなさんはどのようにしていますか?
また、各情報の編集のために複数の編集ページを行き来するたびに、
セッションでID/Passを随時確認した方がいいんでしょうか?
だいたいこんな感じでやっているというのを教えてください。 よろしくお願いします
--------------
webプログラム板で質問したんですが、板違いといわれてこちらで再質問させてもらいました
0024NAME IS NULL
2007/10/04(木) 21:22:46ID:???0025NAME IS NULL
2007/10/04(木) 23:53:10ID:???MySQLなんて大げさなやつじゃなくて
PHPのAPIのSQLite使ったセッション管理使えばいいんじゃね?
PHPスレかSQLiteスレに行くといいと思うよ。
0026NAME IS NULL
2007/10/04(木) 23:58:36ID:???PHPスレでDBの作りの質問をし、MySQLスレでWEBセッション管理の質問
も追加してくれば、どちらでも違和感感じる罠。
PHPとMySQL固有の話じゃ無いんだから、もっと一般的な話題のスレで
聞くべき。
で、要求されるセキュリティのレベルが分からない以上、お好きなように
としか言いようが無い。
0027NAME IS NULL
2007/10/05(金) 00:00:10ID:???一度や二度のアタックであきらめるような恋なら最初からするな。
0028NAME IS NULL
2007/10/05(金) 00:04:46ID:???0029NAME IS NULL
2007/10/05(金) 00:39:42ID:???あ、ねぇきいてきいていますっごいいっぱいうんこでてるよ
すっごいいっぱい
うんこが
でてるんだよ
俺の体内しか知らなかったうんこたちが
噴流となって体外へと
このタイムスタンプが俺とうんこたちとの生きた証、メモリー
トイレからカキコ
0030NAME IS NULL
2007/10/05(金) 11:27:29ID:+u0dyj/FMySQL5.0
LIKE演算において[0-9]や[A-C]などの構文ってサポートされていないのでしょうか?
自分で調べたらAccessではできるみたいなのですが・・・。
できないのであれば、同じことを実現する方法ってありますか?
具体的には・・・
<<data>>
CF47
AD27
EZ12
から先頭のアルファベットがA-C、二番目のアルファベットがC-Gを
SELECTしたいのですが、俺がアホなのか何回やっても構文エラーが
帰ってきます・・・。
0031NAME IS NULL
2007/10/05(金) 11:35:42ID:???like 'BC%' or ...
like 'CC%' or ...
003230
2007/10/05(金) 11:43:36ID:+u0dyj/Fありがとうございます。
まじっすか!?
力技しかないのか〜。
0033NAME IS NULL
2007/10/05(金) 13:35:11ID:???and substr(data, 2, 1) between 'C' and 'G'
003430
2007/10/05(金) 14:10:13ID:+u0dyj/Fありがとうございました。
0035NAME IS NULL
2007/10/05(金) 21:27:23ID:ywDCVcNs正規表現使えよ・・・
0036NAME IS NULL
2007/10/05(金) 22:41:19ID:???RLIKE でおk
0037NAME IS NULL
2007/10/06(土) 05:59:29ID:???0038NAME IS NULL
2007/10/06(土) 09:02:35ID:ALRD9ApNどのようにしたら良いでしょうか?
003938
2007/10/06(土) 09:04:18ID:???0040NAME IS NULL
2007/10/06(土) 11:57:40ID:???004138
2007/10/06(土) 12:06:44ID:???ありがとうございます。
ですが、それだとcolumnがNULLのものは、纏める纏めない関係無しに
全て表示されなくなってしまうのですが。。
0042NAME IS NULL
2007/10/06(土) 12:11:34ID:???一回目取った分と二回目に取った分の差分を埋めることってできませんかね?
0043NAME IS NULL
2007/10/06(土) 12:14:04ID:???select ... from ... where column is not null group by column
union all
select ... from ... where column is null;
0045NAME IS NULL
2007/10/06(土) 15:30:16ID:???ごめんよ 自分でどうにかしてみるよ
0046NAME IS NULL
2007/10/06(土) 15:37:05ID:???NULLはまとめない⇒NULLにダミー値を差し込む
という方針で
select col2, col3 from test;
+------+------+
| col2 | col3 |
+------+------+
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
| 2 | 2 |
| NULL | 1 |
| NULL | 2 |
+------+------+
select max(col2) into @r from test;
select case
when col2 is null then @r := @r + 1
else col2
end dummy1,
count(*)
from test
group by dummy1
;
+--------+----------+
| dummy1 | count(*) |
+--------+----------+
| 1 | 2 |
| 2 | 2 |
| 4 | 1 |
| 6 | 1 |
+--------+----------+
@rが2ずつ増えるのが謎…
0047NAME IS NULL
2007/10/06(土) 20:23:41ID:???3から始まらないのも謎...
0048NAME IS NULL
2007/10/07(日) 09:03:47ID:QwQK+licA,Bの項目が重複しているレコードを全て取得したいのですが、どのようなSQLを発行すれば宜しいでしょうか?
A,B,C
"男","東京","新宿"
"男","東京","池袋"
"男","東京","渋谷"
"女","神奈川","横浜"
"女","東京","新宿"
↓↓↓↓↓↓↓↓↓↓↓↓(■"男","東京"が重複しているレコードを取得したいです)
"男","東京","新宿"
"男","東京","池袋"
"男","東京","渋谷"
A項目B項目とも内容が不定なので、WHERE文が作れなくて挫折してしましました。
宜しくお願いします。
0049NAME IS NULL
2007/10/07(日) 09:12:10ID:???の中でも @r := @r + 1 が評価されてしまっている
select max(col2) into @r from test;
set @s := 0;
select case
when col2 is null then @r := @r + 1
else col2
end dummy1,
@s := @s + 1,
count(*)
from test
group by dummy1
;
0050NAME IS NULL
2007/10/07(日) 09:24:17ID:???SELECT a, b, c FROM test WHERE a In (SELECT a FROM test GROUP BY a, b HAVING Count(*) > 1) ORDER BY a, b;
0051NAME IS NULL
2007/10/07(日) 13:33:39ID:???ありがとうございました。
出来ました!!
色々四苦八苦していたので助かりました。
0052NAME IS NULL
2007/10/07(日) 15:00:28ID:???本の通りしたつもりなんですが、どういう問題なのでしょう?
mysql> create table 'saloon_kihon'(
-> 'sId' int(10) NOT NULL auto_increment,
-> 'loginId' varchar(32)
-> );
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 ''salo
on_kihon'(
'sId' int(10) NOT NULL auto_increment,
'loginId' varchar(32)
)' at line 1
0053NAME IS NULL
2007/10/07(日) 15:10:48ID:???single quoteではなくてback slashだろw
0054NAME IS NULL
2007/10/07(日) 15:19:31ID:???本当にすみません どこの部分でしょう?
ドシロウトなので、自分なりに慎重にやってるつもりなんですが、、
もう少し詳しくお願いします。
0055NAME IS NULL
2007/10/07(日) 15:53:06ID:???0056NAME IS NULL
2007/10/07(日) 15:57:59ID:???/var/run/mysqld/mysqld-bin.000001
/var/run/mysqld/mysqld-bin.000002
…以降,1GB超えると次の番号へ
というバイナリが異常なペースで肥大化しているんだが、このファイルは何?
ログだとは思うんだけど、サイズ指定とか場所変更する方法はないかな
/varのパーティションサイズがさしてでかくないから困ってる
/etc/mysql/my.cnfにそれらしき設定項目も無い
だれかヘルプ
0057NAME IS NULL
2007/10/07(日) 16:13:07ID:???0058NAME IS NULL
2007/10/07(日) 16:27:57ID:???確かにあった、これだったのか。
log-bin
とだけしかなかったら何かわからずスルーしていたんだけど、
log-bin=/hoge/log
とかすれば場所変更できるみたいだね!
�dクス
0059NAME IS NULL
2007/10/07(日) 17:34:27ID:???back quote な。
0060NAME IS NULL
2007/10/07(日) 17:35:32ID:???0061NAME IS NULL
2007/10/07(日) 17:41:42ID:???ありがとう。
あとは有効期限(expire_logs_days じゃ無理かな?)を指定できればいいんだけど、
検索すべきキーワードもわかったから、あとはなんとか自分で調べるよ。
0062NAME IS NULL
2007/10/07(日) 21:56:39ID:???「yama,kawa,tani」のデータに対して、
yama か kawa か tani であれば一致するようにしたい場合、
WHERE hoge REGEXP (yama|kawa|tani)
でいけるかと思いますが、
他にもっとスマートな関数や演算子とかないでしょうか。
説明へたくそでスマソ。伝わるかな(汗
0063NAME IS NULL
2007/10/07(日) 23:41:29ID:???これ?
0064NAME IS NULL
2007/10/08(月) 12:11:37ID:???mysql> select count(*) from hogehoge;
+----------+
| count(*) |
+----------+
| 999999 |
+----------+
のように - や | や + で整形して表示されますが、これらを自由に設定するには
どうしたらいいですか? ORACLE でいう SET COLSEP=hemohemo という感じです。
0065NAME IS NULL
2007/10/08(月) 12:22:48ID:???できない
0067NAME IS NULL
2007/10/08(月) 13:47:43ID:???mysqldを起動するだけで激しいI/Oが発生する
止めれば発生しない
ディスク使用量に変化は無く、ただCPU3〜4%を食いながらメモリ量が上下しているだけ
8時間たった今もかわらずHDDが絶えずカリカリ
mysqldは何してるの?
006867
2007/10/08(月) 16:43:34ID:???そもそもプログラムミスでコミットの粒度が大きすぎたのが原因かも。
直してもなるようだったら、また質問させてもらうよ
0069NAME IS NULL
2007/10/08(月) 18:18:51ID:???ためて、あとから非同期にテーブルに差し込む。
この処理のことをInsert BufferをMergeするって言う。
だからトランザクションをいっぱい流すと、
その後mysqld再起動してなんも触ってないのにカリカリいうことはある。
show engine innodb statusでINSERT BUFFER AND ADAPTIVE HASH INDEX
のセクションを眺めてなんだか忙しそうなら当たり。
innodb_fast_shutdown = 0にするとmysqldは停止時にInsert Buffer Mergeを
完了させる。でもマニュアルには「これらの操作には数分間、または極端な
場合には数時間かかる事があります。」と書いてある。
0070NAME IS NULL
2007/10/08(月) 19:19:13ID:???どのような権限を与えればいいのでしょうか?
0071NAME IS NULL
2007/10/09(火) 00:26:59ID:???ありがとうございました
フィールド名って「'」でくくらなくてもOKなんですね
なんで自分の本はくくってるんだろう、、 ともかくありがとう
0072NAME IS NULL
2007/10/09(火) 01:26:00ID:???いやフィールド名で使うのは「'」ではなく「`」。
0073NAME IS NULL
2007/10/09(火) 06:24:57ID:???おお、出来ました
というか、パソコン買って8年目にして初めて「`」の存在に気づきましたw
ありがとうございました!
0074NAME IS NULL
2007/10/09(火) 09:09:42ID:???その中からある範囲の数字を含むレコードが
存在するかしないかだけを調べるにはどうすればよいですか
0075NAME IS NULL
2007/10/09(火) 09:19:05ID:???簡単にサンプルを示してくれ
0076NAME IS NULL
2007/10/09(火) 09:19:10ID:NjjCqEdh0077NAME IS NULL
2007/10/09(火) 17:35:33ID:/I5hC7wb検索するときに、全てを結合させて検索していますが、
結合させずにひとつのテーブルに全てのデータを格納しているときと、
処理速度は変わらないのでしょうか?
ためしてみようと思ったのですが、1.5GBほどのデータ量のため、とても時間がかかってしまいます。
0078NAME IS NULL
2007/10/09(火) 18:12:16ID:???全てを結合ってどういうこと?
0079NAME IS NULL
2007/10/09(火) 18:22:46ID:???つまりSEXってこと。
0080NAME IS NULL
2007/10/09(火) 19:47:45ID:v9b6pzkg0081NAME IS NULL
2007/10/09(火) 20:05:59ID:???0083NAME IS NULL
2007/10/09(火) 21:56:09ID:???RANGE か BETWEEN てなかったっけ?
0084NAME IS NULL
2007/10/10(水) 00:47:20ID:???`username` char(30) NOT NULL default '',
`userpasswd` char(20) NOT NULL default '',
);
INSERT INTO `users` (`username`, `userpasswd`) VALUES
('wildcard', '%');
上記のようなテーブル・データを作成して
下記のようにSELECTしてみましたが、username wildcard は
セレクトされませんでした。
どこがだめでしょうか?
SELECT *
FROM `users`
WHERE `userpasswd` = 'abc';
0085NAME IS NULL
2007/10/10(水) 02:45:47ID:???SELECT field
FROM `table`
WHERE 'keyword' REGEXP field;
で一応うまく検索かけれるんだけど、これって正式にサポートされてるんでしょうか?
また、
WHERE 'keyword' REGEXP ^field$;
みたいに記述したい場合はどうすればいいんでしょうか。
ちなみにこれでは文法エラーがでます。
0086NAME IS NULL
2007/10/10(水) 03:27:08ID:???そりゃ username = 'wildcard' のレコードの userpasswd カラムの値は
'abc' じゃないからだろ
0087NAME IS NULL
2007/10/10(水) 08:40:52ID:???1番目 REGEXPの演算子の問題だから、フィールド値を左右どっちに使っても問題ない。
2番目 WHERE 'keyword' REGEXP CONCAT("^",field,"$") でいけるかな。
1 にしても 2 にしても遅そうだけど。
0088NAME IS NULL
2007/10/10(水) 12:10:03ID:???丸々そのまま別のところで使用したい場合、
どうすればいいのかな?
容量は3GB近くなんだが・・・
0089NAME IS NULL
2007/10/10(水) 13:28:55ID:???0090NAME IS NULL
2007/10/10(水) 13:35:08ID:???鯖にもよるんですね
さくらのプロ借りてますが、/db/ってとこに入れればいいのかな・・・?
009184
2007/10/10(水) 13:36:35ID:???フィールド値って存在しないんでしょうか?
%にすれば何でもヒットしてくれるかな、というあふぉな考えをしてました。
009284
2007/10/10(水) 13:39:47ID:???mysqlデータベースのuserテーブルって、Hostフィールドが%で機能してますよね。
あれは、MySQLのユーザ処理部分がそういう風に作られてるだけで
一般的な使用方法は無理なのでしょうか。
0094NAME IS NULL
2007/10/10(水) 13:41:37ID:???インポートかな・・・?
流石に3GBもあるのを一度にインポートするのは大変な気も・・・
たとえ分割してても
0095NAME IS NULL
2007/10/10(水) 13:58:24ID:???存在しない 意味がないから
>>92
このカラムを読み込んだプログラムが
% の場合は任意のホストとして扱う、という処理なんだろう きっと、、、
0096NAME IS NULL
2007/10/10(水) 15:04:23ID:???また、サポートなどで聞くことはできませんか?
Linux(など)の場合、サービスディレクトリはサーバーの設計を行った人にしかわからない
かと思います。
また、DBが共有サービスであれば、DBを止めることもできないかと思われます。
サーバーへログイン可能であれば、
http://www.nilab.info/zurazure2/000659.html
こういったものを参考にできませんでしょうか?
0097NAME IS NULL
2007/10/10(水) 15:16:04ID:???確かにそういう特殊な値はほしいときがあるね
0098NAME IS NULL
2007/10/10(水) 15:43:32ID:???SELECT * FROM `users` WHERE 'abc' like `userpasswd`;
で絞り込んだ後、フロントエンドで処理するんじゃだめ?
0099NAME IS NULL
2007/10/10(水) 15:44:38ID:g44V9bOqもしくは素直にNULLを入れといて
SELECT * FROM `users` WHERE `userpasswd` = 'abc' or `userpasswd` is null;
する方が素直かな。
0100NAME IS NULL
2007/10/10(水) 16:39:07ID:???>>90
show variables like "datadir";
でDBのデータディレクトリを特定
FLUSH TABLES WITH READ LOCK;
でDBのカキコ禁止
データディレクトリを丸ごと tar zcvf
終わったらカキコ許可
UNLOCK TABLES;
でsftpとか lftp で tarしたDBファイルを引越し先にput
後はわかるだろう。
0101NAME IS NULL
2007/10/10(水) 19:47:56ID:???質問させてください。
今サーバで動いているMySQLはrpmでいれた5.0.22なのですが、コンパイルオプションとして
dont_use_default_fieldsを指定した動作になっているようです。開発環境のWindows版とで
insert時の挙動が異なり、大変不便な思いをしています。
これを解決するにはソースからコンパイルするほかないんでしょうか?
なお現在手に入る最新のrpmは以前のstandardではなくcommunity版となっており、
コンフリクトのためインストールできませんでした。
0102NAME IS NULL
2007/10/10(水) 21:25:21ID:???0103NAME IS NULL
2007/10/10(水) 21:44:38ID:???http://web.arena.ne.jp/suitepro/support/manual/webserver/apache.html
0104NAME IS NULL
2007/10/10(水) 21:45:24ID:???こっちだった
http://web.arena.ne.jp/suite2/
0105NAME IS NULL
2007/10/10(水) 21:51:45ID:???0106NAME IS NULL
2007/10/10(水) 22:05:08ID:???で出てくる送信バイト数Bytes_sentの値が、32bit(4GB)で桁あふれして
ゼロに戻っちゃうんですが、仕様ですか?
いまどき、4Gとかで桁あふれされても困るんですが。
何回桁あふれたかperlスクリプトか何かでチェックしてバイト数だすのとか面倒くさす
どうにかなりません?
0107NAME IS NULL
2007/10/10(水) 22:15:27ID:???いまどき32bit環境かよ!
0108NAME IS NULL
2007/10/10(水) 22:15:57ID:???0109NAME IS NULL
2007/10/10(水) 22:36:50ID:???ttp://bugs.mysql.com/bug.php?id=28149
5.0.44 及び 5.1.20-beta で修正した、とのこと
0110NAME IS NULL
2007/10/10(水) 23:07:16ID:???と思ったら
The Bytes_received and Bytes_sent status variables could hold only
32-bit values (not 64-bit values) on some platforms.
some platformsっすか・・・
0111NAME IS NULL
2007/10/11(木) 00:46:49ID:+sOrpx9+「あ_い___うえ____お」→「あ_い_うえ_お」
こんな感じで。
一回、スペースで切り分けて、スペースを除去してからスペースを一つつけてつなぎ合わせるしかないのかな???
0112NAME IS NULL
2007/10/11(木) 00:58:35ID:???1個→1個
2個→2個
3個→2個
4個→3個→2個
5個→4個→3個→2個
となって、必ずスペース1個か2個になる。
スペース3個がなくなったら、スペース2個を1個に置換すればおk
0113NAME IS NULL
2007/10/11(木) 01:10:57ID:dt5N6A3Iやっぱりデータベース内では限界なのかなあ???
0114NAME IS NULL
2007/10/11(木) 01:15:34ID:???0115NAME IS NULL
2007/10/11(木) 01:47:43ID:D7bY0G8T年とか、年月とか、年月日で集計したいのですが
like 'year-month%'で検索するとインデックスが使用されません
インデックスが使われるようにするにはどうすればいいですか?
0116むこうの246
2007/10/11(木) 04:08:30ID:???http://pc11.2ch.net/test/read.cgi/db/1081818145/246-247
ちなみに今日は、本家から5.0.45.tar.gzとってきて、同様にmake(prefixのみ別dirで./configure)してみたんですが、
やっぱりmake testで一発目(alias)からFailedでて先に進めません。
昨日と同じく、testとばしてmake installして起動させてみると一応ちゃんと動いている模様。
./mysql-test/mysql-test-runはやっぱり通らないけど、./sql-bench/run-all-testだと(5.0.48、5.0.45とも)止まらずに最後まで行きます。
出力見た限りではどこかでエラーとかにはなってないと思う(前にWin版でsql-benchした時、エラーの時それらしい出力があった)
もともとrpmで入った/etc/my.cnfをrenameしたり、/usr/local/mysql仕様に書き換えたりしたけどtest通らず。
distri達はrpm作った時にどうやってtest通したんだ?
(specのなかにmake testがあるってことは、ちゃんと通ったはずなんですが・・)
0117NAME IS NULL
2007/10/11(木) 10:55:56ID:???範囲指定する。
0118NAME IS NULL
2007/10/11(木) 11:53:28ID:???1個→1個
2個→1個
3個→2個→1個
4個→3個→2個→1個
5個→4個→3個→2個→1個
0119むこうの246
2007/10/12(金) 04:33:11ID:???0120NAME IS NULL
2007/10/12(金) 07:15:11ID:???0121NAME IS NULL
2007/10/13(土) 15:35:09ID:???マルチバイトで正規表現ってちゃんと使えるようになったの?
まだ鬼車パッチ当てなきゃだめ?
0122NAME IS NULL
2007/10/14(日) 00:44:56ID:???0123NAME IS NULL
2007/10/16(火) 17:22:51ID:19Z+CTul検索用語「手伝う」
「おなかが減りました」
「手が痛いです」
「今日、母親の手伝いをしました」
「仕事を手伝う」
とあると、一番「手伝う」に近いものから出したいのです。
上記の場合だと
「仕事を手伝う」
「今日、母親の手伝いをしました」
「手が痛いです」
「おなかが減りました」
このように出したいのですが、そういった検索方法はありますでしょうか?
0124NAME IS NULL
2007/10/16(火) 21:41:18ID:???0125NAME IS NULL
2007/10/16(火) 21:44:19ID:???0126NAME IS NULL
2007/10/16(火) 23:35:24ID:wl91U+ML0127NAME IS NULL
2007/10/16(火) 23:41:50ID:JuRjnLqb0128NAME IS NULL
2007/10/17(水) 01:17:33ID:hXE7fedj「手伝」「伝う」でマッチするのはそれより低いスコア、
「手」「伝」「う」でマッチするのはもっと低いスコアとして
さらに出現頻度で合計して総合スコアをだせばいいのでは
どれくらいのスコアにすればいいのかは統計をとって最適値を求めればいいのでは
0129NAME IS NULL
2007/10/17(水) 01:21:04ID:???0130NAME IS NULL
2007/10/17(水) 03:11:56ID:???ないので自分で作ってください
0131NAME IS NULL
2007/10/17(水) 16:27:20ID:???[構成A]
CPU:Core2Duo
メモリ:8GB
HDD:SATA
台数:4台
で行くのが良いのかそれとも
[構成B]
CPU:Core2Quad
メモリ:8GB
HDD:SAS 15000回転
台数:2台
で行くのが良いのかどちらでしょう。
読み込み中心ならメモリでキャッシュ処理できるから
構成Aのほうが圧倒的に優位な気はしますが。
参考コメントきぼんぬ
0132NAME IS NULL
2007/10/17(水) 17:35:21ID:???ディスクにアクセスしないのでCPU性能が出るから。
データの総容量が8GB以上ならB。
ディスクが速いから。
構成書き間違ってない?
0133NAME IS NULL
2007/10/17(水) 17:46:22ID:???相当単純なことしかさせない場合は別として、Bの方が安全かなあ?
0134NAME IS NULL
2007/10/17(水) 18:49:45ID:???料金部分のテーブル構成に非常に悩んでます。
どこか参考になるところないでしょうか。
ここの決定でほぼ決まるような気がします。
0135NAME IS NULL
2007/10/17(水) 19:03:22ID:???恐らくデータ型を悩んでいるんだと思いますが、
DECIMAL型で作成すれば、あとは特に問題は生じないと思います。
理由はお分かりだと思いますが、まるめ誤差を防ぐためです。
0136132
2007/10/17(水) 19:36:19ID:???台数ってHDDの数じゃなくてサーバの台数?
勘違いしてた。前言撤回。
Aでレプリケーション組むのがいいと思う。
更新用が1台、参照用が3台。
MySQLは2コア→4コアの性能向上があまり良くないから。
ストレージエンジンはMyISAMかInnoDBで。
MySQL Clusterは忘れていいよ。あれは特定用途向けの単機能製品。
エンジンの機能実装がしょぼいのでちょっと凝ったSQL投げると性能劣化する。
0137133
2007/10/17(水) 20:41:11ID:???すまんが俺は131じゃないんだ。
参照のみっていっても、必ずしもレプリケーションで対応できるわけでもないんじゃないかなっていう意味で>>133を捕らえて欲しい。
0138NAME IS NULL
2007/10/18(木) 18:12:39ID:k4W9Nk/e皆さんならどんな風に実装しますか?
僕が考えたものだと汎用性が皆無です。。。
■案1
CREATE TABLE t_bookmark (
seq INT,
name VARCHAR(128),
tag1 VARCHAR(32),
tag2 VARCHAR(32),
tag3 VARCHAR(32)
…
■案2
CREATE TABLE t_bookmark (
seq INT,
name VARCHAR(128),
…
CREATE TABLE t_bookmark_tagging (
bookmark_seq INT, -- t_bookmark.seq
tag VARCHAR(32)
…
案1だと3つまでと最大数が決まっているが管理が簡単
案2だと汎用性は1以上だが膨大なデータ量になるかも
できればタグ同士をフォルダーのように関連付けたりもしたいのですが皆さんならどんなテーブルにしますか?
0139NAME IS NULL
2007/10/18(木) 18:15:31ID:???0140NAME IS NULL
2007/10/18(木) 20:24:54ID:???t_bookmark_taggingテーブルのtagをタグテーブルのプライマリキーに置き換える。
0141NAME IS NULL
2007/10/18(木) 23:11:15ID:???って具体的にどういうことがしたいん?
0142NAME IS NULL
2007/10/19(金) 03:37:41ID:H+ebEc3Aありがとうございます!
汎用性高そうですね
勉強になります!
>>141
簡単にいうとgoogleみたいなことです
0143NAME IS NULL
2007/10/19(金) 10:45:44ID:???「googleみたいなこと」って全然意味が分からないのですが。
全文検索?
0144NAME IS NULL
2007/10/19(金) 12:11:34ID:???0145NAME IS NULL
2007/10/19(金) 12:47:16ID:???0146NAME IS NULL
2007/10/19(金) 13:08:52ID:vJ6ps9vKキーワード「サル」の類義語として「ゴリラ」、「チンパンジー」などを階層的に保持したいのです。
サルで検索したらゴリラにカテゴライズされるものも表示したいのです。
自分なりに考えてみたのですが、ムズかしい!
0147NAME IS NULL
2007/10/19(金) 13:46:45ID:???0148NAME IS NULL
2007/10/19(金) 14:21:48ID:???そういうのは >>140 のタグテーブルにツリー構造を作るのがよかんべ。
ただ、ちゃんと考えないとパフォーマンス悪くなりそうだけど。
0149NAME IS NULL
2007/10/19(金) 18:07:04ID:???まずしっかり正規化してみる。おのずと答えが出るものだ。
0150NAME IS NULL
2007/10/19(金) 18:09:44ID:???というか質問しておいて言葉足りな杉。
0151NAME IS NULL
2007/10/19(金) 18:16:44ID:???そういうことか。てっきりYouTubeのタグみたいなのかと思ったぜ。
0152NAME IS NULL
2007/10/19(金) 18:32:36ID:a+9wl6Y6文字コードはUTF-8です。
「和風居酒屋」という文字列に対し、LIKE '%居酒屋%'でヒットしません。
LIKE '%酒屋%' または LIKE '%屋%' などではヒットします。
LIKE '%居%' ではヒットしません。
「居酒屋」に対しては、
LIKE '%居酒屋%' でも LIKE '%居%' でもヒットします。
「和風 居酒屋」と、半角スペースを空けてみても
LIKE '%居酒屋%' でも LIKE '%居%' でもヒットします。
「風居」で何か特殊なことでも起きているのでしょうか?
0153NAME IS NULL
2007/10/19(金) 18:43:18ID:a+9wl6Y6型はTEXTです。
0154NAME IS NULL
2007/10/19(金) 18:53:40ID:???0155NAME IS NULL
2007/10/19(金) 18:54:39ID:a+9wl6Y6いえ、今回初めてやりました。
検索できなくなりました。 →検索できません。
に訂正します、すみません。
0156NAME IS NULL
2007/10/19(金) 19:06:45ID:a+9wl6Y6で文字コードをチェックしたところ、「ujis」になっていました。
手順的にこんな感じです。
SET NAMES utf8
SELECT * FROM tbl WHERE keyword LIKE '%居%'
「居」の文字コードはUTF-8です。
0157NAME IS NULL
2007/10/19(金) 20:34:35ID:???0158NAME IS NULL
2007/10/19(金) 21:14:17ID:fKi8KFKEID変わります。
「風居」に関してヒットしました。
0159NAME IS NULL
2007/10/19(金) 21:41:14ID:???バージョンは?
0160NAME IS NULL
2007/10/19(金) 21:46:53ID:fKi8KFKEさくらレンタルサーバーの4.0.2xです。
0161NAME IS NULL
2007/10/19(金) 22:57:15ID:???現在、彼女募集中です。
0162NAME IS NULL
2007/10/19(金) 23:16:15ID:???彼女の仕様は?
レンタルでもいいの?
0163NAME IS NULL
2007/10/19(金) 23:20:42ID:???INSERTどころかSELECTも無理だよ。
0164NAME IS NULL
2007/10/19(金) 23:38:11ID:???できれば居酒屋で働いてる様な娘がいいです
0165NAME IS NULL
2007/10/19(金) 23:38:33ID:fKi8KFKE今日好きな子に彼氏ができたとこだ
だからその辺りは突っ込まないでくれ・・・
0166NAME IS NULL
2007/10/19(金) 23:43:57ID:fKi8KFKE3人いるみたいだから俺も参加していい?
何か参加資格とかあるのかな?
0167NAME IS NULL
2007/10/19(金) 23:45:46ID:fKi8KFKE0168NAME IS NULL
2007/10/19(金) 23:55:10ID:???彼女ができないんだよ
0169NAME IS NULL
2007/10/19(金) 23:55:54ID:fKi8KFKE元カノなんだけどね・・・
ずるずる引きずってるのよ・・・
だからこんなレベルなんだ・・・
0170NAME IS NULL
2007/10/19(金) 23:58:03ID:???新しいテーブルを create しろよ
0171NAME IS NULL
2007/10/20(土) 00:01:32ID:fUFTSHBK心のパーミッションエラーだって・・・
0172NAME IS NULL
2007/10/20(土) 03:13:49ID:???0173NAME IS NULL
2007/10/20(土) 04:55:33ID:???0174NAME IS NULL
2007/10/20(土) 05:13:56ID:2AwTGoKZログインページであるIDでログイン後、そのIDの列にセッションIDを登録したいと考えています。
テーブルにはIDがすでに登録されていてSessionidにはNULLが入っている状態です。
教授宜しくお願い致します。
0175NAME IS NULL
2007/10/20(土) 06:15:04ID:???0176NAME IS NULL
2007/10/20(土) 06:27:02ID:???0177NAME IS NULL
2007/10/20(土) 06:57:25ID:???0179NAME IS NULL
2007/10/20(土) 09:07:33ID:???これか。
9.5. Unicode のサポート
MySQL バージョン 4.1 以降、Unicode データを保存するために次の新しいキャラクタセットが用意されています: ucs2 (UCS-2 Unicode キャラクタセット)および utf8 (Unicode キャラクタセットの UTF-8 エンコード)。
0180NAME IS NULL
2007/10/20(土) 09:44:58ID:mSjzHsRr今、テーブル作ってるんですが、フィールドの数が90個くらいになりそうです。
これは異常でしょうか。初心者なので、判断に迷っています。
0181NAME IS NULL
2007/10/20(土) 10:31:40ID:???どんなテーブルかわからんと判断も出来ん。
それと、こちらで聞いた方がいいでしょう。
頼むから正規化しろよ 第二正規形
http://pc11.2ch.net/test/read.cgi/db/1116097001/
0182NAME IS NULL
2007/10/20(土) 10:33:50ID:???設計間違ってるで九分九厘間違いないです。
(それ判断できない人が、ガチで90必要な大規模案件やってるわけないのでね)
0183NAME IS NULL
2007/10/20(土) 12:23:24ID:???正規化やってその数なら問題ない
1000のカラム抱えたテーブル扱ってるけど普通に動くし
0184NAME IS NULL
2007/10/20(土) 13:00:19ID:???テーブルは、ライブの情報を扱うものです。なので、
開催日、開始時間、料金、イベント情報etcの基本情報と
出演者名、出演者のURL、演奏楽器 の出演者情報etcの2種類に分かれます
出演者はイベントごとに1〜10人に分かれて不安定なので正規化・分離するなら
この部分かなぁと思うんですが、、
この程度なら同じテーブルに入れてもいいのかなぁという気もして、判断しかねてます
0185NAME IS NULL
2007/10/20(土) 16:43:44ID:???time_stというところにtimestampが入っていまして
select time_st from member where memname='test';と実行すると
time-st
2007-10-20 16:10:30
と取得できるのですがこれを20071020161030と繋げて取得するにはどのようにすればよいでしょうか?
0186NAME IS NULL
2007/10/20(土) 16:49:54ID:???http://dev.mysql.com/doc/refman/4.1/ja/date-and-time-functions.html
0187NAME IS NULL
2007/10/20(土) 17:35:14ID:???ありがとうございました。無事できました〜。
0188NAME IS NULL
2007/10/21(日) 00:34:22ID:VLr/CFtZcharにしようかintにしようか迷ってます。
通常は、このような削除フラグのようなものは何の型にするのが普通でしょうか?
0189NAME IS NULL
2007/10/21(日) 00:48:34ID:???http://dev.mysql.com/doc/refman/5.1/ja/numeric-type-overview.html
0190NAME IS NULL
2007/10/21(日) 15:15:54ID:???0191NAME IS NULL
2007/10/21(日) 18:34:46ID:???desc テーブル名でテーブルの構成情報が見られますけど、これをテキスト情報に落とすことって
出来ませんかね?
0192NAME IS NULL
2007/10/21(日) 19:21:55ID:???0193NAME IS NULL
2007/10/21(日) 19:30:39ID:???で出来るんじゃないの
でもmysqldump使うのが一般的だと思う
0194NAME IS NULL
2007/10/21(日) 19:38:07ID:???Mysqldumpは書いた後、思いつきました(^^;。
0195NAME IS NULL
2007/10/21(日) 22:06:09ID:ORdmYlqR検索等実行時の戻り値に所要時間がありますが、
この値をPerlスクリプトから取得したいです。
でもMySQLのどの値にアクセスしていいのかわからず・・・
よかったらおしえてくださいm(_ _)m
0197NAME IS NULL
2007/10/22(月) 00:17:58ID:???処理時間を計っているのはmysqldでもlibmysqlclientでもなく
mysqlコマンド本体。
だからPerlスクリプトから処理時間を知りたければ
Time::HiResあたりを使って自分で計るのがいいと思う。
use DBI;
use Time::HiRes;
$user = 'xxxx';
$pass = 'xxxx';
$db = DBI->connect('DBI:mysql:xxxx:xxxx', $user, $pass);
$sth = $db->prepare("select c1 from t1");
$t = Time::HiRes::time;
$sth->execute;
for ($i = 0; $i < $sth->rows; $i++) {
@r = $sth->fetchrow_array;
print "$r[0]\n";
}
$t = Time::HiRes::time - $t;
printf "%.4f sec\n", $t;
$sth->finish;
$db->disconnect;
0198NAME IS NULL
2007/10/22(月) 16:12:58ID:???マスターのDBに対して、スレーブは、すべて既存のDBが消去されて、
マスターのDBが複製されるのでしょうか?
マスターのDBが、スレーブに追加されるような形で複製されて欲しいのですが・・・。
0199NAME IS NULL
2007/10/22(月) 17:58:08ID:???マスタにないDB・テーブルがスレーブにあるのは大丈夫。
ただしスレーブにSQLを流す時点で不整合があるとそこでレプリケーションが停止する。
0200195
2007/10/22(月) 21:00:30ID:???ありがとうございます。mysql.ccはまだ読めていないのですが
Time::HiResで計測することができました。
サンプルコードまでいただきたすかりました!
0201198
2007/10/22(月) 23:00:11ID:???ありがとうございます。
現在レプリケーションの設定ですが、いろいろつまずいています。
MyISAMの小さなデータベースで練習をしているのですが、
この場合も「バイナリログ」を使った更新になるのでしょうか?
MyISAM用の単純な方式(クエリのテキスト文をスレーブに投げる等)なものがあるのでしょうか?
あと、レプリケーションのタイミングは、
update、delete等、データベースが変わる瞬間にレプリケーションをするのでしょうか?
タイマーのようなもので、一定間隔で変わるのでしょうか?
0202NAME IS NULL
2007/10/23(火) 00:16:34ID:???>MyISAM用の単純な方式(クエリのテキスト文をスレーブに投げる等)なものがあるのでしょうか?
No
>update、delete等、データベースが変わる瞬間にレプリケーションをするのでしょうか?
YES
トランザクション開始とcomittもレプリケーションされる。
バイナリログを見ればわかる。
自分で実験されたし。
0203NAME IS NULL
2007/10/23(火) 09:37:12ID:jG23x/MR元データが1万件ぐらいあるとき、left joinだと処理が遅くなり、
right joinだと遅さを感じませんでした。
0204NAME IS NULL
2007/10/23(火) 10:50:38ID:???indexはどーなってるん?
0205NAME IS NULL
2007/10/23(火) 10:55:03ID:???index含め同じ条件で結合しての結果でしょうか?
0207NAME IS NULL
2007/10/24(水) 10:58:41ID:???0208NAME IS NULL
2007/10/25(木) 09:29:08ID:???入力時に全部統一させる、清音化した列を新たに設ける、その都度関数を用いて変換比較する
結構悩ましい問題だと思うのですが・・・
0209NAME IS NULL
2007/10/25(木) 10:32:04ID:???入力されたデータの中の
半角カタカナは勝手に全角カタカナに変換
全角英数字は勝手に半角英数字に変換
するプログラムを経由してから
SQL薄幸してます
0210NAME IS NULL
2007/10/25(木) 11:16:38ID:???0211NAME IS NULL
2007/10/25(木) 18:56:56ID:/t1iB/b6コマンドラインの mysql コマンドで SQL をたたくとき、
set autocommit=0;
を毎回実行すれば Auto Commit はオフにできますが、毎回打つのが面倒です。
my.cnf に書いたりできないのでしょうか?
0212NAME IS NULL
2007/10/25(木) 19:23:28ID:???0213NAME IS NULL
2007/10/25(木) 19:46:11ID:???/etc/my.conf の [mysqld] のブロックに
init-connect='SET AUTOCOMMIT=0'
を追加しました。
grant 文でスーパーユーザじゃないユーザをつくって mysql コマンドで接続したところ、
Auto Commit が 0 になっていました。
でもこれだとスーパーユーザが接続した場合は、Auto Commit = 1 のままですが、
これはしょうがないのでしょうか?
0214NAME IS NULL
2007/10/25(木) 23:32:34ID:???0215NAME IS NULL
2007/10/26(金) 00:05:42ID:???以下のようなtable Aがあったとします。
----------------------------------
id | data
----------------------------------
1 | aaa
2 | bbb
3 | ccc
この状態で、データをinsertする場合、
以下のようにidのmax値を取得して、
select max(id) from A;
max値に+1をして、insertという流れになるとします。
複数のプログラムがこのテーブルにデータをinsertする可能性がある場合、
テーブル毎ロックする必要があるでしょうか?
#auto incrementはコーディング規約で使わない方針となっています(T_T
0216NAME IS NULL
2007/10/26(金) 00:42:50ID:???0217NAME IS NULL
2007/10/26(金) 00:50:40ID:???id の値がユニークであればいいなら
create table A ( id integer auto_increment primary key, data char(3));
とでもして
insert into A (data) values ('aaa');
と id を指定せずに挿入するのはどうか
0218NAME IS NULL
2007/10/26(金) 01:03:37ID:???auto_incrementにしてあるテーブルがあるのですが、
コレ他のサーバーに移行するとauto_incrementの値はどこからスタートするのでしょうか?
auto_incrementの列に欠番があるので、1,3,4,5,7...のようになっています。
別のサーバーに移行したときに、auto_incrementがある列の最大値+1から自動的にカウントしてくれると助かるのですが。
0219NAME IS NULL
2007/10/26(金) 01:05:55ID:???0220211
2007/10/26(金) 14:37:10ID:???>>213 では、サーバ側の設定ですが、どちらかというとクライアント側で、
oracle の sqlplus の login.sql みたいに、毎回起動時に set autocommit=0 とかできないかなと思っていたのですが、
そういう方法はないということであきらめます。
(あとは、毎回起動時に良く使うコマンドを、source コマンドで実行するぐらいか)
0221NAME IS NULL
2007/10/26(金) 19:38:34ID:???過去にそのテーブルが経験した最大値プラス1から始まる。
値は以下のコマンドで確認できる。
show table status like "hogeTable"
0222NAME IS NULL
2007/10/27(土) 14:57:36ID:g8S8hRuKというか、これってwin環境ですか使えないんですよね?
Linux環境で同じようなこと出来るソフトってないんでしょうか?
0223NAME IS NULL
2007/10/27(土) 15:34:28ID:???0224NAME IS NULL
2007/10/27(土) 16:36:17ID:???ありがとう
0225NAME IS NULL
2007/10/27(土) 17:14:47ID:???Windows版にくっついてるGUIのやつかなあ?
>>223と想像してるものとはちがうのかもしらん。
どっちにしても大していいツールでもないので、ほかのを使うか自分でSQLを打つかすることになるだろう。
0226NAME IS NULL
2007/10/27(土) 19:36:17ID:???WindowsXP SP2 にてMySQL 5.0.43をメモリ2G搭載して使っています。
1:my.cnf の設定を変更し再起動をかけたのですが一部設定通りに反映されていない部分がある。
2:設定値についての疑問
1については 下記以下一部抜粋 のように設定してあります。
skip-locking
key_buffer=1024M
table_cache=1024
max_allowed_packet=4M
sort_buffer_size=2M
read_buffer_size=4M
SHOW VARIABLES; を打つと、table_cache 763 と表示され、設定した1024ではありません。
また、SET GLOBAL table_cache=数値; を実行するときちんと設定値になります。
設定ファイル通り読み込ませたいのです。
2については設定値の〜Mや〜Kはわかるのですが、単位のついていないもの、例えばtable_cache等はバイトと考えればよいのでしょうか?
だとすればグローバルキャッシュなのにもかかわらずあまりに使用メモリ量が少ないんじゃないかと思っています。
最後に、現在メモリを多く使用するよう設定してMySQLの挙動テストをしているのですが、どれだけメモリを大きく設定しても
key_buffer以外の設定だとメモリ利用料が5Mもあがりません。
SHOW VARIABLES;では殆どの値がきちんと設定値になっていますが、本当にメモリを使用しているのか少々不安です。
また、設定値自体の項目についてはいろいろなサイトで見かけますが、設定についてもう一歩踏み込んだ、
挙動を想像・把握できるような解説がなされているサイト等はありませんでしょうか?
MySQLドキュメント当を見ながらやってきたのですが行き詰ってしまいました。
よろしくお願いします。
0227NAME IS NULL
2007/10/27(土) 20:09:59ID:???table_cache=700
と書くとどうなる?
OSレベルの制限値を見てmysqldが勝手に値を絞っているのかもしれない。
2.
table_cacheはハンドラというテーブルを管理する内部構造の「数」を示す。
サーバへの同時接続数が100あって、それらが平均的に
テーブル3つにアクセスするSQLを実行するなら、table_cacheは300以上にする。
sort_buffer、read_bufferは
それが必要となるようなSQLを実行しないと確保されない。
> 設定についてもう一歩踏み込んだ、
> 挙動を想像・把握できるような解説がなされているサイト
英語を苦にしないならこのへん。
http://forge.mysql.com/wiki/MySQL_Internals
書籍ならこのへん。バージョン3.xや4.xの本を買わないように注意!
・現場で使える MySQL
・MySQL 辞典
残念ながら、最終的にはソース嫁としか言えない。
0228226
2007/10/27(土) 20:57:38ID:???レス有難うございます。
table_cache=700 => 起動 => 設定値700
table_cache=512 => 起動 => 設定値512
table_cache=1024 => 起動 => 設定値763
という結果になりました。
おっしゃるとおりなのかもしれません。Linuxを覚えたほうがいいのかもですね・・・
その他の解説についても大変勉強になります。有難うございます。
少々英語アレルギーですが goo辞書に頼ってがんばって見ます!
本も明日早速見てきます。
0229NAME IS NULL
2007/10/28(日) 14:09:32ID:???ひらがなとカタカナを吸収してもらえるので重宝している反面、
一方のみの結果だけでじゅうぶん、ということも多いです。
例えば人名で「アリス」と入力したとき、「〜ありすぎて」までヒットしてしまうから・・
これをSQL文など外部から制御する方法はあるでしょうか?
MySQLは4.1です。
0230NAME IS NULL
2007/10/28(日) 16:43:09ID:???id = PK
name = UNIQUE
というカラムのある果物テーブルがあるとして
REPLACE INTO 果物 SET name = りんご
を一回やると
id 1 name りんご
というレコードができるのですが、
REPLACE INTO 果物 SET name = りんご
もう一度やると
id 2 name りんご
とういうレコードができます。
これを、
id 1 name りんご
にするにはどうしたらいいですか?
0231NAME IS NULL
2007/10/28(日) 16:50:37ID:???UNIQUE インデックスまたは PRIMARY KEY に関して新しいレコードと同じ値が
テーブル内の以前のレコードに含まれていると、以前のレコードが削除されてから
新しいレコードが挿入されます。
0232NAME IS NULL
2007/10/28(日) 23:44:39ID:???0233NAME IS NULL
2007/10/29(月) 03:36:28ID:???テーブルにPK1、PK2、PK3という3つのPKと4つ目のフィールドFLD4があり、
PK1、PK3、FLD4の3つで構成されたインデックスIDX1があります。
select
PK1, Max(FLD4)
From hoge
Where PK3='hogehoge'
Group By PK1
というSQLをexplainで調査すると
Using where; Using index; Using temporary; Using filesort
が現れます。
このテーブルには2000万件のレコードがあるのですが、
Using temporary; Using filesortが現れるのはレコード数のせいでしょうか?
0234NAME IS NULL
2007/10/29(月) 15:14:34ID:???PK3 と PK1 で複合インデックス作ってみたら。
0235NAME IS NULL
2007/10/29(月) 15:16:08ID:???分かち書きした検索用カラムを作って likeすれば。
または、セナれば。
0236>>215
2007/10/30(火) 02:21:14ID:???0237NAME IS NULL
2007/10/30(火) 07:52:01ID:sLI+LWeo数字を入れる箇所をintやfloatなどのデータ型にしているのですが、
これだとデフォルト値が必ず0になります。
0にしたくないのですが、数字用のデータ型を使っている場合は
仕方ないのでしょうか?varcharなどの文字用にするべきでしょうか?
0238NAME IS NULL
2007/10/30(火) 08:00:56ID:???mysql> create table test (c1 int primary key, c2 int);
Query OK, 0 rows affected (0.04 sec)
mysql> insert into test(c1) values (1);
Query OK, 1 row affected (0.01 sec)
mysql> select * from test;
+----+------+
| c1 | c2 |
+----+------+
| 1 | NULL |
+----+------+
1 row in set (0.00 sec)
0239NAME IS NULL
2007/10/30(火) 09:31:17ID:???本当ですね・・・。
いつもphpMyAdminで作成していたので、出来ないと思ってました。
アドバイスありがとうございました。
0240237
2007/10/30(火) 09:45:19ID:???phpMyAdminはPHPなわけですが、その他のPHPのプログラムでも
mysql> insert into test(c1,c2) values (1,'');
では駄目なんですね。空であっても''があると、
そのフィールドには0が入ってしまうみたいです。
0241NAME IS NULL
2007/10/30(火) 09:59:21ID:???0242NAME IS NULL
2007/10/30(火) 18:56:41ID:Pyowqw9lhttp://academy6.2ch.net/test/read.cgi/gengo/1193737465/
0243229
2007/10/30(火) 20:08:04ID:???遅レスすみません。
分かち書きは考えてみたのですが、そうすると複合語にマッチしづらくなりませんか?
ユーザー入力も同じ仕組みで分かち書きすればいいのかもしれないんですが
文書中、わりと崩した日本語も多いことから難しそうです。
Sennaや標準のFULLTEXTは使える環境になくて・・・
SET文などでスイッチできそうな気もするんですがどうも情報見つかりません。
0244NAME IS NULL
2007/10/30(火) 22:18:54ID:???切り替えはCOLLATEで可能なんだけど、あなたの望むようなモノが用意されてるかは調べてません。
まあこのへんを読んでちょ。
http://dev.mysql.com/doc/refman/5.1/ja/charset-mysql.html
http://dev.mysql.com/doc/refman/5.1/ja/charset-collate.html
0245NAME IS NULL
2007/10/31(水) 11:02:22ID:???フルテキストは分かち書きして保存する。
入力文字ももちろん分かち書きする。
で、入力文字を分かち書きした区切り分クエリする。
そのとき前後の区切りも検索の対象にするのがポイント。
だけど決してパフォーマンスは出ないのでデータ数によっては注意しる。
0246NAME IS NULL
2007/10/31(水) 11:44:58ID:???245 だけれども、質問をよく読むと テーブルの Collation を utf8_general_ci にすれば良いだけの話か。
utf8_unicode_ci になってない?
0247229
2007/10/31(水) 13:15:29ID:???ありがとうございます。
テーブルのcollationはutf8_unicode_ciにしています。
COLLATEはまったく知らなかったので、昨夜>>245を見て確認してみました。
テーブル作成時にutf8_unicode_ciを指定したことをあまり意識していなくて
>>229に書かなかったのがよくなかったですm(_ _)m
utf8_unicode_ciのテーブルに対するSELECT文にCOLLATEを入れることで、
ひらがな、カタカナが分けて検索されるのを確認できました。
SELECT * FROM table_name
WHERE column_name COLLATE utf8_general_ci
LIKE '%foo%' ORDER BY ・・・(続く)
検索フォームでオプションとして切り替えたりすれば便利だなと
喜んでいたんですが、その後の挙動がちょっとおかしいみたいで・・・
次の検索でCOLLATE〜を指定しない検索をした場合でも
utf8_unicode_ciの検索に戻らないみたいだったんです。
テーブルのステータスを確認しても、ちゃんとutf8_unicode_ciなんですが・・
多分、上記の挙動はなにか別の理由というか勘違いっぽい気もしてるので
今夜さらに確認してからお返事をと思っていたんですが
>>246でちょうど指摘をいただいたので取り急ぎ書き込みました。
たいへん参考になりますm(_ _)m
0248229
2007/10/31(水) 20:55:14ID:???>>247のSQL文で問題なくスイッチできました。
動作がうまくいかなかった部分については、やはり別の理由からで
検索を試した何パターンかの自作スクリプトのうちのひとつに原因があったものでした。
そのときは突っ込まずにすぐ寝てしまったので・・すみません。
いただいた回答、たいへん参考になりました。ありがとうございましたm(_ _)m
0249NAME IS NULL
2007/11/01(木) 00:20:39ID:???あるテーブルにn件のデータがあるとして、
limit 3,n
のようなことをしたいのですが、どのようにすればよろしいでしょうか?
limitでなくても構わないのですが、、よろしくお願い致します。
0250NAME IS NULL
2007/11/01(木) 01:40:04ID:???先頭3行を読み飛ばして続くn行を表示って意味かな。
だとしたら正しくはlimit n,3(LIMIT n OFFSET 3)で
3行とばして最後までだとlimit -1,3かと。
0252NAME IS NULL
2007/11/01(木) 02:12:23ID:???mysqlのlimitって-1指定できないんじゃないかな?
postegar sqlだと、limit all offset 3
とか指定できると思ったけど。。
0253250
2007/11/01(木) 04:45:12ID:???limit 3,nが正しくて、-1指定もエラーになってしまった。
手元のマニュアル確認したらやはり-1指定と書かれているんだが
バージョンの違いかな。
allもだめでした。ううーん申し訳ない。
0254NAME IS NULL
2007/11/01(木) 16:48:38ID:???ここでは「とにかくでかい数を入れろ」って書いてあるけど。
http://dev.mysql.com/doc/refman/5.1/ja/select.html
0255>>252
2007/11/02(金) 01:43:53ID:???リアルで笑ったw
MySQLはこういうところが、おもちゃなんだよなぁ。。。
0256NAME IS NULL
2007/11/02(金) 04:03:21ID:???でかけりゃいいというもんじゃない
0257NAME IS NULL
2007/11/02(金) 09:44:50ID:???定義しとけば笑われずに済んだのにな
0258NAME IS NULL
2007/11/02(金) 12:23:32ID:???制限されているので、
このパラメータの値を入れるのが
お作法としてはいいと思う。
ちなみにデフォルト値は2^64
0259NAME IS NULL
2007/11/02(金) 19:09:19ID:???my.cnfのsocketを変えても認識されないです。。。
0260NAME IS NULL
2007/11/02(金) 19:39:30ID:???違うmy.cnf使えば?
0261NAME IS NULL
2007/11/03(土) 01:12:05ID:IOTlj/gOアクセスログのようなものを作る際にdatetime型のカラムと、日毎に
group化するためのdate型のカラムを用意しようかと思いました。
しかしマニュアルを見るに、ver4.1以上の場合はdatetime型のカラムに対して
date関数を使用すると日付部分のみを取り出せ、高速でgroup化もできるとのこと。
インデックスを張ったdate型カラムに対しての検索と、date関数を通した
datetime型に対する検索は等速なのでしょうか?それとも後者が早いのでしょうか?
そのあたりの仕様が記述されているページを教えて頂けると勉強になります。
よろしくお願いします。
0262NAME IS NULL
2007/11/03(土) 05:46:47ID:???最近の若いのは実験もせずに、すぐに答えを求めようとするんだよなぁ。
ゆとり教育のせいかもしれんで、国の責任もあるんやろな。
自分が直面している課題について、どのような実験をすれば答えを導き出せるのか
計画を立てて結果を資料にまとめる。ってことをしないと社会でいらない子になるよ?
>>261は少なくとも実験してから、ココにくるべし。
0263NAME IS NULL
2007/11/03(土) 06:13:01ID:???「ものづくり大学」ってのはよさそうだけど、「ゆとり大学」ってあったら
なんかヤバそうだもんなぁw
0264NAME IS NULL
2007/11/03(土) 06:26:04ID:???ソケットとポート番号かえればいけると思うよ。
0265>>264
2007/11/03(土) 06:28:28ID:???mysqlデーモンその1:ソケットは、/tmp/mysql1.sock ポート番号は3306
mysqlデーモンその2:ソケットは、/tmp/mysql.sock ポート番号は3307
おかわり?
0266>>265
2007/11/03(土) 06:30:26ID:???×おかわり?
◯おわかり?
0267>>265
2007/11/03(土) 06:32:12ID:???デーモンその2のソケットは、mysql2.sockの間違い。
なんか、もう限界みたいなので寝るw
これもゆとり教育のせい。国が悪い。
0268NAME IS NULL
2007/11/03(土) 08:39:36ID:???0269NAME IS NULL
2007/11/03(土) 17:57:22ID:???UNIXドメインソケットの指定とポートの指定は別物だよ
そもそもUDSにポート番号なんてないだろ
だからこの場合、my.cnfを複数用意してクライアント側で
おっとこんな時間に来客のようだ・・・
0270NAME IS NULL
2007/11/03(土) 20:33:48ID:???これって、私のプログラムが悪いのでしょうか。
xreaの管理者に連絡しても対応してもらえないので、
私が悪いのかと思っているのですが、対処法がわかりません。
宜しくお願いします。
mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]:
Can't connect to local MySQL server through socket '/tmp/mysql.sock'
0271NAME IS NULL
2007/11/03(土) 22:02:33ID:???ユーザ名に@localつけてもだめか?
0273NAME IS NULL
2007/11/03(土) 23:09:19ID:???mysqlデーモン立ち上がってないだけじゃね?
0274NAME IS NULL
2007/11/04(日) 01:09:36ID:AhMqLM4vLEFT JOINの対応ってバージョン4.1から・・・?
4.0.27では使えなかったり?
0275NAME IS NULL
2007/11/04(日) 06:32:23ID:???他と勘違いしてない?
0276NAME IS NULL
2007/11/04(日) 08:07:06ID:AhMqLM4v0277NAME IS NULL
2007/11/04(日) 08:21:47ID:???に匹敵する不便さだぞ。 ありえない。
0278NAME IS NULL
2007/11/04(日) 08:29:01ID:???0279NAME IS NULL
2007/11/04(日) 14:01:34ID:frlhQ05Ohttp://sports11.2ch.net/test/read.cgi/parksports/1193830877/l50
0280NAME IS NULL
2007/11/04(日) 17:46:24ID:???「fruits」フィールドに
「りんご,バナナ,キュウリ」
みたいな複数の値を持ったレコードを入れてます。
fruitsフィールドを「りんご」や「バナナ」というキーワードで
SELECTした場合、そのレコードがヒットするように
したいのですが、
この場合、fruitsフィールドの型ってvarcharでいいんでしょうか?
enumとかでいけるかと思ってたんですが、
実際にちょっと調べてみたら、
enumとかsetは複数の値のいずれかに限定するものであって、
複数の値を格納する型ではないですよね?
また上記をスマートに実現できる構文などがあったら教えてくださいませ、
汚くなっても良いならREGEXPとか使えばできるのは想像がつきますが。
0281NAME IS NULL
2007/11/04(日) 18:56:52ID:???where fruits like '%バナナ%'
or
select * from テーブル名
where fruits like '%りんご%'
か
select * from テーブル名
where fruits in ('%バナナ%','%りんご%')
でどうだろうか?
おれ、msde使ってるんで、MYSQLのワイルドカード知らんので % じゃなくて *
かも知れないです
違ってたらごめんなさい。
0282NAME IS NULL
2007/11/04(日) 18:58:13ID:???0283NAME IS NULL
2007/11/04(日) 19:13:08ID:Vy5gGImBかねやんMysqlAdminなどとくらべて使い勝手はどうでしょう?
また、phpMyadminを利用されている方、利用上の注意点などはどんなことがありますか?
phpMyadminってのは商用利用にも安心なツールなんでしょうか?
色んな意見を聞きたいです、よろしくお願いします
0284NAME IS NULL
2007/11/04(日) 19:45:45ID:???値の個数が固定なら、それぞれの値の有り無しをビットで表すとか
値1 = 0x1000
値2 = 0x0100
値3 = 0x0010
値4 = 0x0001
0285NAME IS NULL
2007/11/04(日) 21:42:34ID:???enumは複数の値のうちの1個だけど、setは複数の値のうちの複数個
0286NAME IS NULL
2007/11/04(日) 22:12:37ID:???setの仕組みは>>284と同じだったかと。
0287NAME IS NULL
2007/11/05(月) 02:41:12ID:???指定したやつ全部が含まれてれば良しとするようなものってありませんか?
0288NAME IS NULL
2007/11/05(月) 03:44:45ID:???0289NAME IS NULL
2007/11/05(月) 04:05:16ID:???数値に限れば、そんな条件あり得ない
0290NAME IS NULL
2007/11/05(月) 11:09:19ID:???>>286 か、テーブル分離する。
0291NAME IS NULL
2007/11/05(月) 12:11:38ID:HiIC9Mcf自動インクリメントする ID の初期値を10000にして、以降は
10001,10002,1003… としたいんですがどうしたらいいでしょう
よろしくお願いします
0292NAME IS NULL
2007/11/05(月) 15:03:01ID:???0293NAME IS NULL
2007/11/05(月) 16:08:41ID:???http://dev.mysql.com/doc/refman/5.1/ja/alter-table.html
ALTER TABLE `table_name` auto_increment=10001
0294NAME IS NULL
2007/11/05(月) 19:21:15ID:???0295NAME IS NULL
2007/11/05(月) 19:39:58ID:???http://dev.mysql.com/doc/
0296NAME IS NULL
2007/11/06(火) 01:45:32ID:1jsfWYs7clone_tableってのが検索したら出てきたんですが、例文が見つからないです
そもそも違うんでしょうか?
0297NAME IS NULL
2007/11/06(火) 01:47:27ID:???ダウンプしてテキストエディタで編集して流し込む
0298NAME IS NULL
2007/11/06(火) 02:08:43ID:???insert into 複製TBL select * from 元TBL;
とか
0299NAME IS NULL
2007/11/06(火) 02:16:01ID:???それは、データの複製だろうが。市ね!
0300NAME IS NULL
2007/11/06(火) 02:23:00ID:???0301NAME IS NULL
2007/11/06(火) 02:34:28ID:1jsfWYs7>>297-298
どうもありがとう
かなりややこしいみたいですね、そんなことないのかな
どうしたもんか、、もう少し調べてみます
0302NAME IS NULL
2007/11/06(火) 02:57:24ID:???つかどういうタイプの複製?
ガシガシ更新されるテーブルのリアルタイムの複製・・・レプリケーション
あるホストの現時点のテーブルを別のホストに複製・・・ダンプ&インポート
などなど
0303301
2007/11/06(火) 03:10:44ID:1jsfWYs7ありがとうございます。ガシガシ更新されるタイプではないと思います。
フォームの記入確認のための仮登録のためのテーブルがほしくて、
本登録用のテーブルを複製したいと考えてます。テーブルも今はカラです。
それだけ考えたらデータないんだから手作業で作ればいいって話なんですが、
いずれバックアップの知識も必要と思ったので聞きました。
テーブル単位で複製とDB丸ごと複製の違いすらよくわかってないんで、
いろいろ聞きたいなと。。
>ガシガシ更新されるテーブルのリアルタイムの複製・・・レプリケーション
>あるホストの現時点のテーブルを別のホストに複製・・・ダンプ&インポート
どっちも大切そうですね
使い分けも含めて、どこかわかりやすく解説してるサイトないでしょうか
レプリケーションて聞いたのも初めてですが…
0304NAME IS NULL
2007/11/06(火) 12:01:12ID:???とりあえずこのへんかな
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060122/227654/?ST=oss
0305NAME IS NULL
2007/11/06(火) 12:44:20ID:???ま、とりあえずググレ。または自分のレベルにあった本を嫁。
0307NAME IS NULL
2007/11/08(木) 10:17:12ID:???例えば、aaa-aaa と aaa-bbb と aaa-ccc のDBを操作出来るようにするにはどうやったらいいのでしょう?
grant all on aaa%.* to ユーザー名@localhost identified by 'パスワード';
で作るとエラーが出て作れません。
%がワイルドカードですよね?
0308NAME IS NULL
2007/11/08(木) 11:12:54ID:???0309NAME IS NULL
2007/11/08(木) 12:41:46ID:???あ!
もしかして「``」が必要なんでしょうか?
自分は「''」でやっていたので駄目だったのかな。
0310NAME IS NULL
2007/11/08(木) 14:44:06ID:???ありがとうございました!
0311NAME IS NULL
2007/11/09(金) 12:04:19ID:VVwJql6u日付と、果物名と、金額の以下のようなtableですが、
---------------------------------
create table test(
date date,
item varchar(255),
money int
) charset=utf8;
insert into test(date,item,money) values('2007-01-01', '林檎', 100);
insert into test(date,item,money) values('2007-01-02', '林檎', 99);
insert into test(date,item,money) values('2007-01-01', '蜜柑', 100);
insert into test(date,item,money) values('2007-01-02', '蜜柑', 99);
---------------------------------
一番最新の日付の価格を果物ごとに知りたい場合のselectはどのようにしたら良いのでしょうか?
単純に group by item とすると 1/1 の金額が出てしまうので、order by で並び替えた後に group by できるといいのですがやはり構文エラーとなります。
どのような select文 だとできるのでしょうか?
一応、単純に考えると以下のような形は思い浮かびますがこれが最良なのでしょうか。
SELECT * FROM (SELECT date, item, money FROM test ORDER BY date desc) a GROUP BY a.item;
0312NAME IS NULL
2007/11/09(金) 12:30:33ID:???0313312
2007/11/09(金) 12:57:47ID:???select test.date,test.item,test.money from test, (select max(date) as date,item from test group by item) a
where test.date = a.date and test.item = a.item;
0314NAME IS NULL
2007/11/09(金) 13:10:55ID:???方法などを解説しているサイトなんかがあったら教えてください。
バージョンは4.1xと5.0xを入れたいです。よろしくお願いします。
0315NAME IS NULL
2007/11/09(金) 14:56:53ID:VVwJql6u有難う御座います。参考になります。
0316314
2007/11/09(金) 15:01:42ID:???お騒がせしました。
0317NAME IS NULL
2007/11/09(金) 18:34:27ID:???前に4.0使ったときは98向けの管理ソフトも同梱してたはずなんだけど・・・
0318NAME IS NULL
2007/11/09(金) 19:01:08ID:???0319NAME IS NULL
2007/11/09(金) 19:27:30ID:???0320NAME IS NULL
2007/11/09(金) 19:38:28ID:???XOOPS入れようとしただけで何故こんなに苦労を・・
0321NAME IS NULL
2007/11/11(日) 00:11:18ID:???うまく動かないサブクリエがあってはまった。
死ねよ
0322NAME IS NULL
2007/11/11(日) 00:56:00ID:???そんなうちの仕事場は3.2。
0323NAME IS NULL
2007/11/11(日) 02:05:07ID:???だから4.0しか使えない・・
0324NAME IS NULL
2007/11/11(日) 04:51:39ID:???0325NAME IS NULL
2007/11/11(日) 05:57:52ID:???PC98とかじゃない限りLinuxでも入れたほうが幸せになれそうだ
そういえば漏れのクリエ埃まみれだぜ
0326NAME IS NULL
2007/11/11(日) 11:43:48ID:???0327NAME IS NULL
2007/11/11(日) 13:02:30ID:???0328NAME IS NULL
2007/11/11(日) 13:19:07ID:???3.23 ならともかく、3.2 はないだろ。
0329322
2007/11/11(日) 13:32:52ID:???あ、3.23だ。誤字すまん
0330NAME IS NULL
2007/11/11(日) 16:09:05ID:???table_cacheはデスクリプタ数の制限で頭打ちになるようでテーブルをスキャンすると
まったくヒットしなくなります。アドバイスよろしくお願いします。
0331NAME IS NULL
2007/11/11(日) 19:13:40ID:???OS XPPro
MySQL 4.1.20
かねやんMySQLAdmin 1.43
サーバのキャラクタセット ->
クライアントのキャラクタセット -> sjis
となっていて日本語が正しく表示できないんですけど、
対処方法とか判る方おられませんか?
0332NAME IS NULL
2007/11/11(日) 20:15:57ID:8MXImYtaサーバのキャラクターセットがsjisではないから
0333kbtUzOSLgCqw
2007/11/12(月) 01:52:15ID:???0334NAME IS NULL
2007/11/12(月) 16:24:23ID:???それ以前のバージョンは本当に糞だな
0335NAME IS NULL
2007/11/13(火) 00:07:16ID:???どうしたらいいんですか?
create table nametable (
namae varchar(30),
tourokubi date
);
上記のようにして作ったテーブルにデータを入れるとき、
insert nametable values("yamada", ?);
?の部分をどうしたらいいのかわかりません。
ためしに2000-10-10を入れたらエラーになり、20-10-10を入れたら
0000-00-00が登録されました。 アドバイスどなたかお願いします。
マニュアルも読んだんですが良くわかりませんでした。
0336NAME IS NULL
2007/11/13(火) 00:08:22ID:3kQWoYfz0337NAME IS NULL
2007/11/13(火) 02:04:05ID:???insert into nametable values ('suzuki','2001-11-11');
insert into nametable values ('satou', '2002-12-12');
select * from nametable;
+--------+------------+
| namae | tourokubi |
+--------+------------+
| yamada | 2000-10-10 |
| suzuki | 2001-11-11 |
| satou | 2002-12-12 |
+--------+------------+
3 rows in set (0.00 sec)
問題ナス
0338LdbDyhTGoUYCcmEFi
2007/11/13(火) 02:45:46ID:???0339NAME IS NULL
2007/11/13(火) 04:36:27ID:???ありがとう '2002-12-12'というふうに、クオーテーションでくくってませんでした
解決しました
0340ImjZRDaHx
2007/11/14(水) 03:33:12ID:???0341NAME IS NULL
2007/11/14(水) 10:14:45ID:fJXBbwnJそろそろ5も枯れてきているのでしょうか?
0342NAME IS NULL
2007/11/14(水) 11:28:10ID:???5.0はかなり前から十分に枯れてるというか、
古いバージョンを使う理由は基本的にはないよ。
0343NAME IS NULL
2007/11/15(木) 02:06:02ID:XFrdNKefDELETE FROM t1 INNER JOIN t2 ON t1.id=t2.id WHERE t1.id='test'
として、t1とt2を結合し、同じidのtestを削除しようとしたのですが、削除出来ません。
リファレンスを見ると、JOINは使えるとのことなので上記のようにしていますが、
どこがおかしいのでしょうか?ご指摘・アドバイスいただければと思います。
0344NAME IS NULL
2007/11/15(木) 03:27:54ID:???ありがとうございました
4.1文字化け問題の記憶があって
何か新しいものへの抵抗があるんですよね…
0345NAME IS NULL
2007/11/15(木) 04:19:43ID:???誤り
mysql> delete from t1 inner join t2 on t1.c1=2 where t1.c2=t2.c2;
ERROR 1064 (42000): You have an error in your SQL syntax; …
正解
mysql> delete t1, t2 from t1 inner join t2 on t1.c1=2 where t1.c2=t2.c2;
Query OK, 2 rows affected (0.00 sec)
変な構文
0346NAME IS NULL
2007/11/15(木) 04:21:30ID:???mysql> delete t1, t2 from t1 inner join t2 on t1.c2=t2.c2 where t1.c2=2;
Query OK, 2 rows affected (0.00 sec)
0347NAME IS NULL
2007/11/15(木) 06:41:58ID:???それは老化だよ
0348NAME IS NULL
2007/11/15(木) 11:10:51ID:???文字化けはMySQLが枯れてるかどうかの問題じゃない、ってのは分かってる?
単に3.xの時と同じ運用だと問題が起こっていた(ノウハウが溜まっていなかった)、という話。
ノウハウについてはかなり前から充分溜まってる。
ちなみに4.1を使う理由は全くないので、4.1を検討するくらいなら5.0以降を使うべき。
未だに4.0以前の知識しかない人を見かけるけど、なぜなんでしょ。
MyNAのFAQにもずいぶん前からいろいろあるのに……。啓蒙不足?
それとも書籍が腐ってるせいかねぇ。PHPと一緒なやつとかは相変わらず酷いんでしょうか。
0349NAME IS NULL
2007/11/15(木) 12:01:08ID:???ありがとうございます!出来ました。
deleteの後ろに削除するテーブルを指定するんですね。
0350NAME IS NULL
2007/11/15(木) 23:05:26ID:???4.1初期のバグやら仕様ミスを知らない?
落ち着いたのは4.1.12以降だろ。
あれを経験していれば、安易に版数変えたく無いわな。
0351NAME IS NULL
2007/11/16(金) 00:35:13ID:???あれを経験しているからこそさっさとかえるべきだろ?
0352NAME IS NULL
2007/11/16(金) 00:59:28ID:???まあ判っているとは思えないな。w
0353NAME IS NULL
2007/11/16(金) 01:17:37ID:???ほぼMonthlyでupdateされてる5.0系列の方がいいと思うよ。
5.0はEnterpriseでサブスクリプション契約になったから
それだけ品質には気を使うようになってる。
B.1.1. Changes in MySQL 4.1.24 (Not yet released)
B.1.2. Changes in MySQL 4.1.23 (12 June 2007)
C.1.1. Release Notes for MySQL Enterprise 5.0.52 [MRU] (Not yet released)
C.1.2. Release Notes for MySQL Enterprise 5.0.50 [MRU] (19 Oct 2007)
C.1.3. Release Notes for MySQL Enterprise 5.0.48 [MRU] (27 August 2007)
C.1.4. Release Notes for MySQL Enterprise 5.0.46 [MRU] (13 July 2007)
C.1.6. Release Notes for MySQL Enterprise 5.0.44 [MRU] (21 June 2007)
C.1.7. Release Notes for MySQL Enterprise 5.0.42 [MRU] (23 May 2007)
C.1.8. Release Notes for MySQL Enterprise 5.0.40 [MRU] (17 April 2007)
C.1.9. Release Notes for MySQL Enterprise 5.0.38 [MRU] (20 March 2007)
C.1.11. Release Notes for MySQL Enterprise 5.0.36 [MRU] (20 February 2007)
C.1.12. Release Notes for MySQL Enterprise 5.0.34 [MRU] (17 January 2007)
0354NAME IS NULL
2007/11/16(金) 11:07:42ID:???いや知ってるが文字コード云々言ってる連中の大半は3.xあたりの知識のままで
運用しようとしてるだけでしょ。
(つか当時のことを知っていれば「いまどのバージョンが安定してる?」なんて聞き方はしない)
まあエンコディング周りは鬼門だからなぁ。
サロゲートペア対応してないのが問題っていうならその通りだし、
将来対応したときに問題が起こりうるってのはそうだと思うけど。
0355NAME IS NULL
2007/11/16(金) 13:24:09ID:???裏返せばそれだけ安定していないって事だけどなw
0356NAME IS NULL
2007/11/16(金) 18:43:14ID:???その通り安定してないんだけど、それは4.1もいっしょだよ。
新機能でない限りほどんどのバグが4.1、5.0、5.1で共通。
5.0 Enterpriseならバグ報告すれば翌月直るけど、5.0 Community、
4.1は同じバグが長期間放置される。だから5.0 Enterpriseオススメ。
MySQL ABはEnterpriseのパッケージを契約顧客にしか配ってないけど、
結局GPLなんでミラーされてしまっている。
http://mirror.provenscaling.com/mysql/
0357NAME IS NULL
2007/11/16(金) 22:46:25ID:???自分は昔から4.0.26だけど。
0358NAME IS NULL
2007/11/16(金) 23:41:28ID:???場合によっては5.1でもいいんじゃね?
0359NAME IS NULL
2007/11/17(土) 08:48:17ID:XVlaU+5cテーブルの指定やカラム数、並びともに間違ってないのでどこがおかしいのかわかりません
誰かご意見ください お願いします
$sql = "insert into testtable values(
0,
$_SESSION['loginId'],
$_SESSION['loginPass'],
1,
$_SESSION['staffName'],
$_SESSION['sType'],
$_SESSION['name1'],
$_SESSION['name2']
);
0360359
2007/11/17(土) 09:02:46ID:XVlaU+5c); となってますが、)"; の書き間違いです またDBへの接続はうまくいっています
また、 $sql = "insert into testtable (id,loginId) values(0,"abc"); というSQL文は
ちゃんと動作しました
0361NAME IS NULL
2007/11/17(土) 09:12:36ID:???各値がクォーテーションで囲まれていないからでは?
0362NAME IS NULL
2007/11/17(土) 09:36:55ID:???0363NAME IS NULL
2007/11/17(土) 12:24:46ID:???varchar に対して length(), char_length() を行うとして、
length()の場合は、文字列と一緒に格納されいているバイト数を返すだけだから高速
char_length()の場合は、マルチバイトを考慮して文字数を数えるので低速
という認識なのですがあっていますかね?
0364NAME IS NULL
2007/11/17(土) 15:25:14ID:???多分あってるけど実測した結果を見たことは無いな。
適当に数十万レコードくらいでっちあげて試験してみたら?
レポート楽しみに待ってます。
0365NAME IS NULL
2007/11/17(土) 15:46:36ID:???$sql = "insert into testtable values(
0,
{$_SESSION['loginId']},
{$_SESSION['loginPass']},
1,
{$_SESSION['staffName']},
{$_SESSION['sType']},
{$_SESSION['name1']},
{$_SESSION['name2']}
);
つか、MySQLじゃなくてPHPの文法エラーな
0366PFPfSPoWxWorN
2007/11/17(土) 22:29:08ID:???0368NAME IS NULL
2007/11/18(日) 10:21:12ID:???今年いっぱい?
0369NAME IS NULL
2007/11/18(日) 22:51:32ID:???巨大なデータファイルを扱うなら5.1はかなりいいぞ。
はやくfalconでないかな。
0370BvCrZSkVPu
2007/11/19(月) 12:36:49ID:???0371NAME IS NULL
2007/11/19(月) 14:14:57ID:pgXAP1I1あるカラムをdeleteしたらそこの番号が空白になりますよね?
一覧表示したときにIDも表示してると歯抜けになって格好悪いのですが、
IDを詰めることはできませんか?
それとも気にするべきではありませんか?
0372NAME IS NULL
2007/11/19(月) 14:29:05ID:???ID詰めるのはちまちまupdateすりゃできるけど
他のテーブルの外部キーになっていればそれも無理
0373NAME IS NULL
2007/11/19(月) 14:36:15ID:???番号表示を気にしたいなら別のカラムでも作れ。
0374NAME IS NULL
2007/11/19(月) 21:46:59ID:tlX6K+Wh速度的な影響って出ますか?
某所で「何度も実行するべきではない」っと聞いたので
気になっているのですが、調べる術がありません。。
0375NAME IS NULL
2007/11/19(月) 22:24:19ID:???それにクエリの内容によって影響も変わる。
例えばprimary keyによるSELECTを大量に発行してもたいしたことないし、
1回のクエリで途方もない時間がかかる可能性もあるし。
更新系のクエリかどうかによっても違うし。
つかやってみれば分かるでしょ。
0376374
2007/11/20(火) 00:59:42ID:???ありがとうございます。とりあえずWHEREによるSELECTをしました。
元データ1万件に対してWHEREで対象となるキーを抽出してSELECT。
これをPHPを使い、50回・100回と繰り返し処理をさせました。
ローカル環境でやりましたが、特に体感速度は変わりません。
これ以上の条件でやった場合はどうなるかわかりませんが、
サーバダウンするほどでもないので、気にすること無いですね。
0377NAME IS NULL
2007/11/20(火) 10:50:13ID:???0378NAME IS NULL
2007/11/20(火) 12:32:08ID:???20個ぐらい多重かけないと。
0379NAME IS NULL
2007/11/20(火) 15:27:11ID:???query cacheとか buffer sizeとかは気にすべきなの?
0380NAME IS NULL
2007/11/20(火) 18:21:33ID:???MyISAMからのInnoDBへはダメとは書いていましたが、
変換しなくても、mysqlダンプしてから、
InnoDBをMyISAMにして、リストアすればいいのでしょうか?
この場合、InnoDBで使っていたゴミはどこかに残っているのでしょうか?
0381NAME IS NULL
2007/11/20(火) 19:11:50ID:???ところでゴミって例えばどんな?
0382NAME IS NULL
2007/11/20(火) 19:39:01ID:???じゃだめなの?
0383NAME IS NULL
2007/11/20(火) 19:53:50ID:???じゃだめなのかね?
0384380
2007/11/20(火) 20:24:55ID:???テーブルのengineとdefault charsetを目的の値にしてから、
インポートしました。by phpmyadmin
ゴミというのは、
/var/lib/mysqlにある、
ib_logfile0
ib_logfile1
ibdata
です、これはInnoDBを使ってなければ不要なのでしょうか?
alterコマンドというのがあるんですね、
勉強になります、ありがとうございました。
0385rPCNKKOGk
2007/11/20(火) 21:32:04ID:???0386UwuAdnimP
2007/11/20(火) 21:37:13ID:???0387ETKZBETklTBU
2007/11/20(火) 21:37:51ID:???0388QbZbkpjqiWEcVPyQSP
2007/11/20(火) 21:55:09ID:???0389gAbBDHtiBWXT
2007/11/20(火) 21:56:20ID:???0390NAME IS NULL
2007/11/20(火) 23:00:07ID:???例えば
uriageテーブルが
uriageYMD date,
ordernum int(4),
mise int(3),
kyaku int(5),
shouhinID int(5),
kingaku int(8)
kokyakuテーブルが
mise int(3),
kyaku int(5),
kyakumei varchar(20),
kakari int(4)
salseテーブルが
mise int(3),
kakari int(4),
kakarimei varchar(20)
とあって、
uriageテーブルからmise,kyaku,uriageYMD,
kokyakuテーブルから kyakuに一致するkyakumei,kakari
を持ってくるまでは出来たのですが、それにsalseテーブル
からkokyakuテーブルのkakariに一致するkakarimeiを
持ってくるにはどうすれば良いんでしょうか?
0391NAME IS NULL
2007/11/20(火) 23:52:43ID:???1. ordernum(英語)とmise(ローマ字)が混じってる
2. kokyakuテーブルのPRIMARY KEY(と思われるもの)がkyaku。普通はkokyaku側はid、uriage側はkokyaku_id。
3. salseじゃなくてsales
ってのが。
ダメSIの臭いがプンプンするぜ。
SELECT u.mise, u.kyaku, u.uriageYMD, k.kyakumei, k.kakari, s.kakarimei FROM uriage u INNER JOIN kokyaku k ON k.kyaku = u.kyaku INNER JOIN salse s ON k.kakari = s.kakari;
0392NAME IS NULL
2007/11/21(水) 00:03:54ID:???sirimasen
0393NAME IS NULL
2007/11/21(水) 00:04:51ID:???何はともあれ、m(__)m です。 w
0395NAME IS NULL
2007/11/21(水) 02:05:40ID:H0U/ijnhLEFT JOINで結合しているのですが、物凄く重いです。
ローカル環境で動作確認していますが、PCがダウンします。
やはり、件数が多いからサーバダウンするのでしょうか?
それとも、MySQLのチューニングが上手く行ってないのでしょうか?
インデックスの調節やEXPLAINをして確認しましたが、
Using filesortとUsing temporary が常に出ます。
サーバはWindowsXPでMySQL4.0.20で確認しています。
0396NAME IS NULL
2007/11/21(水) 04:29:23ID:???日本語が化けたり化けなかったりします
0397NAME IS NULL
2007/11/21(水) 04:32:44ID:88wrK5LA>MySQL4.0.20
捨てろ
0398NAME IS NULL
2007/11/21(水) 09:16:19ID:???インデックスの付け方が悪い。show create tableさらせ。
あと397の言うとおり、4.0.20は捨てろ。
0399NAME IS NULL
2007/11/21(水) 10:23:16ID:???☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
【 あなたのタイピングどのくらい!? 】 2007/11/21 配信
制限時間内に表示される画像内の、数字やアルファベットを次々とタイプ入力していく。
あなたのタイプ成功率が刻々と表示されていく。また、その時々のランキングにも表示さ
れていく。都道府県別のランキングもあれば、それぞれ友達と好きなチームを作り競い
合うチーム別ランキングもあって楽しめれる!
また、タイプが成功したものはそのまま、「 国別対抗オンラインクリックゲーム 」の日本
チームのクリック数に貢献される。数々の激戦を戦い抜いてきた日本チームも、現在は
強敵ハンガリーチームに続いて第2位となっている。タイプの練習がそのまま日本チー
ムの優勝に貢献するかも!?あなたもぜひやってみては?
参加するには各種のツールを使う方法もあるが、まずはアクセスするだけでサイトから
簡単にできる「 小町 」をお試しください。なれてきたら各種ツールを試すのも楽しい。
タイプ入力サイトその1「 小町 」
http://f106.dyndns.org/komachi/cgi/acsupporter/supporter.cgi?m=ff
「 国別対抗オンラインクリックゲーム 」については、日本チームのオフィシャルサイトで。
http://clickjapan.jp/
※上記サイトはすべて「 国別対抗オンラインクリックゲーム 」日本チームの有志の
方達の運営で、すべて無料です。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
0400NAME IS NULL
2007/11/21(水) 11:36:47ID:???0401NAME IS NULL
2007/11/21(水) 11:39:25ID:???で、そのEnterpriseなVersionの正式にライセンス契約してない貧乏泥棒ユーザーが、
本家にBugReport送るのってありですか?
0402395
2007/11/21(水) 12:05:39ID:???テーブル構成は住所録+沿線情報になりまして、
aテーブルには基本情報(user_id、pref、address)
bテーブルには会員の駅情報(user_id、ensen_id、station_id)
cテーブルには参照する駅情報(ensen、ensen_id、station、station_id)
こういう構成です。()内はフィールド名です。各1万件あります。
SELECT * FROM a LEFT JOIN b ON a.user_id=b.user_id
LEFT JOIN c ON b.station_id=c.station_id
みたいなSQLで結合しているのですが、これが非常に重いです。
インデックスは各idごとに付けています。
MySQLのバージョンは会社では4.0.20なので、合わせています。
だからすぐに捨てることは出来ないので、それが問題です。
0403NAME IS NULL
2007/11/21(水) 12:40:35ID:???explainした?
0404NAME IS NULL
2007/11/21(水) 12:45:10ID:???0405NAME IS NULL
2007/11/21(水) 13:17:45ID:???そのSQLとexplainの結果をそのまま貼り付けよー
結合しているせいじゃない気がするよ
0406NAME IS NULL
2007/11/21(水) 15:49:36ID:88wrK5LA(b LEFT JOIN c ON b.station_id=c.station_id)
ON a.user_id=b.user_id
0407NAME IS NULL
2007/11/21(水) 16:01:19ID:???したいこと -->
'hoge'と言う、root権限から、grant と mysqlデータベースについてのアクセス権のみ省いたUserを作成したい。
ちなみに、この’hoge’は、LAN内からののみアクセス可能とする(192.168.0.%)
やったこと -->
rootでloginして、
grant all on *.* to 'hoge'@'192.168.0.%' identifed by '******';
とやって、こんなUserができた。
select * from mysql.user where user = 'hoge'
Host: 192.168.0.%
User: hoge
Password: ******
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
0408つづき
2007/11/21(水) 16:01:51ID:???show databases; や select * from mysql.user; するとmysqlデータベースの中身が参照できる(あたりまえ。)
ここまではいいとして、ここから、再度rootでloginしなおして、
revoke all on mysql.* from 'hoge'@'192.168.0.%';
とやってみたら、こんなError
ERROR 1141 (42000): There is no such grant defined for user 'hoge' on host '192.168.0.%'
そりゃあhogeにはgrant option与えてないけど、なんで? Revokeの使い方間違ってる?
そこで、
Insert into mysql.db Values('192.168.0.%','mysql','hoge','N','N'・・・'N');
でmysql.dbテーブルに直接インサートしてみた。
select * from mysql.db where user = 'hoge':
Host: 192.168.0.%
Db: mysql
User: hoge
Select_priv: N
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Execute_priv: N
となったので、flush privileges をかけて、rootはlogout。再びhogeでログイン。
そこで、show databases や show tables from mysql をしたら、中が読めてしまう。
MySQL Serverを再起動掛けて見てもやっぱり同じ。
(これでmysql.*が読めないようにすることが目的)
これってやっぱり、最初のgrantの時に、一つ一つDbを明示して権限を与えないとダメですか。
出来れば、既存の権限から、特定のDbだけ除外したい。
実のことを言うと、BackUp用に、他のマシンから各Db、Tableの内容をdumpしたいんだけど、
例えば本番マシン内で、新たにDbが作成されたりした時に、いちいちlocalコンソールからloginして、
増えたDbの分だけgrantしたり、消去されたDbについてRevorkeしたりすんのが煩雑なのと、
DBをフルダンプした時に、mysqlデータベース内の権限テーブルまで吐いてしまうのを回避したい。
0409NAME IS NULL
2007/11/21(水) 16:36:37ID:???バグだって切り分けができてるなら
http://bugs.mysql.com/ へのレポートしてOK。
Enterpriseのソースはbitkeeperにも置いてあるから、
別に入手元は問われないよ。
対応はベストエフォートだけど、これはしょうがない。
契約顧客は専用のサポートサイトがあって、
そちらにレポートするときちんと担当者がアサインされて
障害の切り分けから直すところまでつきあってくれる。
0410NAME IS NULL
2007/11/21(水) 16:52:40ID:???なげーよ。
0411409
2007/11/21(水) 16:52:48ID:???http://mysql.bkbits.net/
ちなみに、しつこくバグレポートしてると、
そのうちMySQL Quality Contributorとして認定してくれます。
MySQL Quality Contributorになると
MySQL Enterpriseのライセンスがタダでもらえます。
0412NAME IS NULL
2007/11/21(水) 17:10:19ID:???0413NAME IS NULL
2007/11/21(水) 17:18:33ID:???grant usage on mysql.* to 'hoge'@'192.168.0.%' identifed by '******';
grant all on *.* to 'hoge'@'192.168.0.%';
0414NAME IS NULL
2007/11/21(水) 17:28:41ID:???データベース権限、テーブル権限、およびカラム権限はすぐに反映されますが、
ユーザレベルの権限はユーザが次回接続したときに有効となります。
GRANT または REVOKE によって行われた権限テーブルへの変更については、サーバは即座に認識します。
INSERT、UPDATE などを使って手動で権限テーブルを変更した場合、
FLUSH PRIVILEGES ステートメントまたは mysqladmin flush-privileges を実行して
サーバに権限テーブルを再読み込みさせる必要があります。
See 項4.4.3. 「権限の変更はいつ反映されるか」。
0415NAME IS NULL
2007/11/21(水) 18:00:46ID:???権限テーブルについて自分の理解してるところを書くよ。間違ってたらごめん
> grant all on *.* to 'hoge'@'192.168.0.%' identifed by '******';
ここで設定した権限(グローバルレベルの権限)は mysql.user に記述される。
ここまではいいとして、
> revoke all on mysql.* from 'hoge'@'192.168.0.%';
ここでは設定していないデータベースレベルの権限( mysql.db に記述される)を剥奪しようとしている。
だから
> ERROR 1141 (42000): There is no such grant defined for user 'hoge' ...
となる。これは grant all on *.* した時点で mysql.db を覗いてみればわかる。
肝心なのは MySQL が各ユーザの権限を算出するにあたって
mysql.user, mysql.db などの記述を短絡的にチェックしているということ。
もし mysql.user をチェックして、そのユーザの権限に関する記述があれば( Y なら)
mysql.db 以降はチェックされない。
> これってやっぱり、最初のgrantの時に、一つ一つDbを明示して権限を与えないとダメですか。
そうするのがいいと思うけど、mysql.db を直接いじって flush すればいけると思う。
その辺は詳しい人のレスを待ったほうがいいかと。
0416NAME IS NULL
2007/11/21(水) 18:01:30ID:???0417407,408
2007/11/21(水) 19:46:21ID:???>>414
上にも書いてあると思うけど、flush privilegesは何回もしてる。
mysqldの再起動もやった。
>>412,415
Revorkの使い方間違ってるのは理解した。
(ってか今までは、ほとんど delete from mysql.user where user='***' で一旦削除してから、あらたにgrantしてた。)
>>413
上の行のクエリで、mysql.userの*_privが全部'N'のhogeができあがった。
でも、そこから下の行のクエリを書けたら、*_privが全部(grant_priv以外)’Y’になった。
で、flush privileges(念のため)を掛けてから、hogeで再ログインして、
show databases と show tables from mysql でやっぱりmysql.の中身が読めてしまう。
ちなみに、この時(上の行の前、後、下の行の後のいつでも)
select * from mysql.db where user='hoge'; で Enpty set が返ってくる(つまりHitなし)
select * from mysql.db where db='mysql'でも Enpty set。
ちなみに、grant all on my_db1.* to 'piyo'@'192.168.%' identifed by '******'; で作ったUserでloginして
show databases; したら、ちゃんと infomation_schemaとmy_db1しか表示されないし、
show tables from mysql; だと、Access denied for user 'piyo'.... となる(期待した動作)
select * from mysql.db where user='piyo' で、db権限テーブルには’piyo’がちゃんと登録されてる。
う〜ん、デフォルトが’Y’で指定したのみ’N’ってのは、できないのかなあ〜。
0418395
2007/11/21(水) 20:09:50ID:???とりあえず、EXPLAINは以下の通りです。
長いですけど、絶えずUsing index; Using temporary; Using filesortが出ます。
Array ( [0] => a [table] => a [1] => index [type] => index [2] => [possible_keys] => [3] => PRIMARY [key] => PRIMARY
[4] => 4 [key_len] => 4 [5] => [ref] => [6] => 20292 [rows] => 20292
[7] => Using index; Using temporary; Using filesort [Extra] => Using index; Using temporary; Using filesort )
Array ( [0] => b [table] => b [1] => ALL [type] => ALL [2] => user_id [possible_keys] => user_id
[3] => [key] => [4] => [key_len] => [5] => [ref] => [6] => 4 [rows] => 4 [7] => [Extra] => )
Array ( [0] => c [table] => c [1] => ref [type] => ref [2] => station_id [possible_keys] => station_id
[3] => station_id [key] => station_id [4] => 4 [key_len] => 4 [5] => b.station_id [ref] => b.station_id
[6] => 1 [rows] => 1 [7] => [Extra] => )
0419NAME IS NULL
2007/11/21(水) 20:35:32ID:???一般的にこれってやっぱ無駄というか、パフォーマンスに影響するのかな。
簡単なテストでは大差なかった。
テーブルの型やドライバとかに影響しそうだけど、10個中9個取るときも必要な
カラムを羅列すべきだと思う?
0420NAME IS NULL
2007/11/21(水) 20:43:16ID:???SELECT * ⇒ インデックスとテーブルにアクセスする
SELECT [必要な列のみ] ⇒ インデックスのみアクセスする
となるので性能にずいぶん影響が出るよ。
あとは通信量が違う
0421NAME IS NULL
2007/11/21(水) 21:52:53ID:???羅列するべき。 メリットなんてSQLで手抜ける ってぐらいじゃない。
デバッグ時は * で開発進める場合もあるけど、必ず仕上げ段階で
カラムを絞りますよ。
0423NAME IS NULL
2007/11/21(水) 23:12:08ID:???これは何かの嫌がらせか……
人間が読める形にしてよ。
0424NAME IS NULL
2007/11/21(水) 23:54:00ID:???from hoge as hoge1 left join hoge as hoge2 on hoge2.fuga = hoge1.fuga
みたいなことってよくする?
0425NAME IS NULL
2007/11/22(木) 00:44:25ID:???fuga列同士の比較だから、片方だけnullってケースにならない
0426407,408
2007/11/22(木) 04:21:02ID:???色々なヒントをありがとう。
たぶんできた。
grant usage on *.* to 'hoge'@'192,168.0.%' identified by '******';
これで、mysql.userに*_privが全NのUserができる。この時点で、まだmysql.dbにはなにも追加されてない。
Insert into mysql.db (`Host`,`Db`,`User`) Values('192.168.0.%','mysql','hoge');
これで、mysql.dbにUser:hoge,db:mysql,*_priv:Nのレコードが追加される。
Insert into mysql.db Values('192.168.0.%','mysql','hoge','Y','Y','Y'・・・'Y');
これで、mysql.dbにUser:hoge,db:%,*_priv:Yのレコードが追加される。(つまりUser:hogeのレコードが二件存在する)
すかさず、flush privilegesで権限テーブルをflushして、hogeで再ログインすると・・・、
ついに期待通りの動作確認!!。
show databases;でmysql以外のDbが一覧で返ってきて、show tables from mysqlだと、Access denied。
とにかくhogeからはmysql Dbが完全に遮断できた。
この時に、別のターミナルからログインして、新しくDbやTableを作成しても、すかさずhoge側から参照可能。
Manualの4章あたりを何度も読み返して、なんとなくだけど接続、参照時の権限のイメージみたいなが見えてきた。
>>415さんの言ってるように、最初の接続時にmysql.userテーブルを読んで、そこでアクセス権があれば
それをセットする(グローバル設定)。なければそれぞれのDb権限を読みに行って、Dbごと(あるいはTable、columnsごとに)
権限を制御している模様。
で、Db名を明示してgrantしたUserのmysql.userを覗いてみると、なんと全てのprivが’N’になってんで、もしやと思ってやってみた。
実は今までこれ知らなかった。
ManualにはUser名にはワイルドカード使えないとは書いていたけど、その他については特に記述なし。
で、ここの少し上の方のレスで、Db名には’%’が使えそうだと思って、放り込んでみたら、できた。
ワイルドカードより、完全一致のほうが強いようだ。
(バージョンや環境によって変わるかも?でも他のやりかたがあるんだったら教えて。自分にはこれ以上思いあたらん)
ちなみに、grant all on *.* to・・・ だと、mysql.userの中身を全てYに変えてしまう。
grant all on `%.*` だとsyntax error。
grant all on `%`.`*` だと Query Ok にはなるけれど、mysql.dbにはなにも追加されない。(mysql.userも変更なし)
結局 Insert into ・・・・で、たくさん’Y’を打ち込まないといけない。(これがVersionによって数が異なる)
期待通りに動作したもの
確認済み・・・4.0.26-Win32、4.0.27-Win32、5.0.37-Win32、5.0.45-Win32、5.0.45(Cent4)、5.0.50(Cent4)
これから確認・・・5.0.50-Win32、5.0.22-rpm(Cent5)、5.0.27-rpm(FC6)
4.1系、5.1系は持ってないから知らない。(これだけやってどれも期待通りに行ったから、多分大丈夫だとは思うけど・・)
とりあえず寝よう。
0427NAME IS NULL
2007/11/22(木) 05:37:50ID:???0428NAME IS NULL
2007/11/22(木) 07:33:12ID:v2xY2XgxInsert into mysql.db (`Host`,`Db`,`User`) Values('192.168.0.%','mysql','hoge');
Insert into mysql.db Values('192.168.0.%','mysql','hoge','Y','Y','Y'・・・'Y');
3行目まちがってないか
0429NAME IS NULL
2007/11/22(木) 08:14:04ID:???おつ。ただ自分も>>428が気になった。
Host, Db, User はたしかプライマリキーだったと思うので。
できれば「期待通りの動作」をしたバージョンでの
show grants for ... と desc mysql.db を見せてくれるとうれしい。
0430NAME IS NULL
2007/11/22(木) 08:28:58ID:v2xY2XgxInsert into mysql.db (`Host`,`Db`,`User`) Values('192.168.0.%','mysql','hoge');
Insert into mysql.db Values('192.168.0.%','%','hoge','Y','Y','Y'・・・'Y');
の書き間違いだろうとは思ってるんだけど
一応聞いてみたんだ
0431NAME IS NULL
2007/11/22(木) 10:40:57ID:UyA449rO検索した本文からより単語が多い順にORDER BYで並べ替えすることってできますか?
『今日hogehogeしました。』
『hogehoge テスト』
『今日はテストがありました。』
『今日はhogehogeのテストをしました。
を
『今日はhogehogeのテストをしました。
『hogehoge テスト』
『今日hogehogeしました。』
『今日はテストがありました。』
のように、単語がたくさん当てはまる順に並べたいです。
0432407,408
2007/11/22(木) 11:34:02ID:???>>428,429,430
!!!。おっしゃるとおり、三行目は
Insert into mysql.db Values('192.168.%','%','hoge','Y','Y','Y',・・・'Y'); のまちがいでした。
>>426のクエリなら、せっかく’N’にした`mysql`での権限を、’Y’にしてしまう。
で、show grants for 'hoge'@'192.168.0.%;'の結果
GRANT USAGE ON *.* TO 'hoge'@'192.168.0.%' IDENTIFIED BY PASSWORD '******'
GRANT ALL PRIVILEGES ON `%`.* TO 'hoge'@'192.168.0.%'
desc mysql.db; (多分ズレまくりだけどかにんして・・・)
Field | Type | Null | Key | Default | Extra
----------------------+---------------+------+-----+---------+------
Host | char(60) | NO | PRI | |
Db | char(64) | NO | PRI | |
User | char(16) | NO | PRI | |
Select_priv | enum('N','Y') | NO | | N |
Insert_priv | enum('N','Y') | NO | | N |
Update_priv | enum('N','Y') | NO | | N |
Delete_priv | enum('N','Y') | NO | | N |
Create_priv | enum('N','Y') | NO | | N |
Drop_priv | enum('N','Y') | NO | | N |
Grant_priv | enum('N','Y') | NO | | N |
References_priv | enum('N','Y') | NO | | N |
Index_priv | enum('N','Y') | NO | | N |
Alter_priv | enum('N','Y') | NO | | N |
Create_tmp_table_priv | enum('N','Y') | NO | | N |
Lock_tables_priv | enum('N','Y') | NO | | N |
Create_view_priv | enum('N','Y') | NO | | N |
Show_view_priv | enum('N','Y') | NO | | N |
Create_routine_priv | enum('N','Y') | NO | | N |
Alter_routine_priv | enum('N','Y') | NO | | N |
Execute_priv | enum('N','Y') | NO | | N |
Version 5.0.50-Win32 今試したけど、このVerも期待通りに動いた。
*_privの数が、4.0系で12個、5.0系で17個。多分4.1系、5.1系だとまた違うハズ・・。
0433NAME IS NULL
2007/11/22(木) 13:50:12ID:???『hogehoge テスト』
『hogehogeをhogehogeするテスト』
『hogehogeをhogehogeしたいんです』
『今日はテストがありました。』
『テストをhogehogeするテスト』
『今日はhogehogeのテストをしました。』
のときの出力結果は?
0434NAME IS NULL
2007/11/22(木) 13:51:29ID:UyA449rOその単語が多い順です
『hogehogeをhogehogeするテスト』
『テストをhogehogeするテスト』
『今日hogehogeしました。』
『hogehoge テスト』
『hogehogeをhogehogeしたいんです』
『今日はテストがありました。』
『今日はhogehogeのテストをしました。』
みたいな感じを希望します
0435NAME IS NULL
2007/11/22(木) 16:20:19ID:Npi9B+/0どこか間違っている書き方がありましたらご指摘ください。
$table = "mytable";
$sql = "update `{$table}` "
. "set (`text1`, `text2`, `text3`) "
. "values "
. "(md5('{$d['pass'}'), '{$d['id']}', '{$d['name']}') "
. "where id = 10;";
0436NAME IS NULL
2007/11/22(木) 16:27:04ID:???0437NAME IS NULL
2007/11/22(木) 16:29:47ID:???じゃないの?
0438NAME IS NULL
2007/11/22(木) 16:36:26ID:???updeteではvaluesは使えないみたいですね、残念な思いです。
0439NAME IS NULL
2007/11/22(木) 17:19:37ID:???できない。
0440NAME IS NULL
2007/11/22(木) 17:44:11ID:???0441NAME IS NULL
2007/11/22(木) 18:11:40ID:???0442NAME IS NULL
2007/11/22(木) 18:37:22ID:???0443HXsVtIoZaClODEWe
2007/11/22(木) 19:36:13ID:???0444aZxcBftlZ
2007/11/22(木) 22:51:19ID:???0445NAME IS NULL
2007/11/22(木) 23:00:35ID:???おとなしくSennaとか組み込むべき。
0446NAME IS NULL
2007/11/23(金) 00:59:01ID:OYGbXtrwnot nullを設定してないカラムに値を指定せずinsert文を書いたんですが、登録されません。
insert into table (namae1, namae2) values(1,); *namae2が問題のカラム
上のような形です。 values(1,1); などとしたら正常に動くんですが、
値をいれずに登録するにはどうしたらいいですか?
自分でも調べたんですがどうもわからないのでよろしくお願いします
0447NAME IS NULL
2007/11/23(金) 01:22:20ID:???0448NAME IS NULL
2007/11/23(金) 02:05:55ID:OYGbXtrwありがとうございます
やっぱりそういう風に値の入ってるものだけに絞ってインサートするしかないんでしょうか?
そうだとすると各パラメータの値の有無ごとに振り分けが必要になって面倒な気がしますが…
0449NAME IS NULL
2007/11/23(金) 03:15:05ID:???Insert into table (`namae1`) Valuse('1')
Insert into table (`namae3`,`namae256`) Valuse('konyaga','YamaDa!!')
これが>>446とどうちがうか理解できなければ、Manualを熟読しませう。
0451449
2007/11/23(金) 03:19:25ID:???0452NAME IS NULL
2007/11/23(金) 05:06:51ID:???0453NAME IS NULL
2007/11/23(金) 06:09:21ID:???許容すべきならプログラムなりSQLなりで工夫する
0454446
2007/11/23(金) 06:16:11ID:OYGbXtrw>>449-451 ありがとうございます しかし正直、混乱してきました
やはりカラム名-その値のセットで登録しなきゃいけないんでしょうか?
それだとフォームの必須項目以外の処理が面倒すぎるし、、 デフォルト値の
設定がおかしいのかなぁ どなたかお暇な方ご教授お願いします
0455NAME IS NULL
2007/11/23(金) 06:22:45ID:???0456NAME IS NULL
2007/11/23(金) 07:54:13ID:???でええやん
0457YNGTpqCnKBzITK
2007/11/23(金) 09:45:27ID:???0458NAME IS NULL
2007/11/23(金) 10:49:07ID:???その正解率を計算するのに一回のSQL文で書くことって可能でしょうか?
今は、where文で○のcountと全体のcountを取得するSQL文を2回発行して、
phpで、その○の数÷全体の数で正解率を算出しています。
1回で書く方法がございましたら、ご教授下さい。宜しくお願いします。
0459NAME IS NULL
2007/11/23(金) 11:08:26ID:???select a.maru / (a.maru + b.peke) from
(select count(*) as maru from table where result='○') a,
(select count(*) as peke from table where result='×') b;
でどうだ
0460459
2007/11/23(金) 11:13:11ID:???(select count(*) as maru from table where result='○') a,
(select count(*) as total from table) b;
の方がちょっと早いか
0461NAME IS NULL
2007/11/23(金) 11:23:52ID:???SQL文って入れ子に出来るんですね。
こんなやり方初めて知りました。
どうもありがとうございました。
0462tWZYSkVDUmb
2007/11/23(金) 12:14:48ID:???0463XaMsLqbHC
2007/11/23(金) 19:34:57ID:???http://jjajqy.cn/why-are-uranus-and-neptune-blue-htm.html Why are uranus and neptune blue htm
http://jjajqy.cn/blue-bay-getaway-hotel-cancun-mexico.html Blue bay getaway hotel cancun mexico
http://jjajqy.cn/black-street-hookers-78-dvd.html Black street hookers 78 dvd
<url>http://jjajqy.cn/blue-berry-lower-cholesterol-htm.html Blue berry lower cholesterol htm
0464NAME IS NULL
2007/11/23(金) 22:37:48ID:???0465NAME IS NULL
2007/11/23(金) 22:49:10ID:???エラーにはならないけど機能してないっぽい。5.1でも未対応。
0466NAME IS NULL
2007/11/23(金) 23:01:13ID:???即レス、thx。今日本屋で関連の本立ち読みしてアレ?って思ったんですよ。
0467NAME IS NULL
2007/11/24(土) 00:20:43ID:xMeIt7o3たとえば同じmyisamでも、
昔はコレーションとかなかったですが今はあります
その拡張部分はどこを変えることで行われているのでしょう?
MYI,MYDは同じで、frmの属性を増やしていくっていう感じでしょうか
0468sWpPMfcqKrPzYgVZfT
2007/11/24(土) 00:48:40ID:???http://ktmyve.cn/laser-vaginal-rejuvenation-new-york.html Laser vaginal rejuvenation new york
http://ktmyve.cn/fetish-restaurant-new-york.html Fetish restaurant new york
http://ktmyve.cn/pda-cube-x-serial-rubik-pocket-pc.html Pda cube x serial rubik pocket pc
http://ktmyve.cn/ear-piece-for-blackjack-pda.html Ear piece for blackjack pda
0469UzCslGBvNBcBTMCPB
2007/11/24(土) 04:00:29ID:???0470fFuIwXPUcQWmooCECS
2007/11/24(土) 09:31:45ID:???0471NAME IS NULL
2007/11/24(土) 10:00:31ID:???って出るsqlがあるんですが、この時実際の warning メッセージはどうすれば見れますか?
0472NAME IS NULL
2007/11/24(土) 10:33:37ID:???0473ubjKyDJBaYuzCG
2007/11/24(土) 13:28:33ID:???0474qzYNJWeoGVesRNdpqI
2007/11/24(土) 13:33:54ID:???0475ubAepUFBYytERgcXh
2007/11/24(土) 16:19:41ID:???0476IIoSSgMbNe
2007/11/24(土) 17:40:41ID:???0477RhgWRXNkjHdqHal
2007/11/25(日) 00:47:09ID:???0478NAME IS NULL
2007/11/25(日) 03:21:11ID:???0479NAME IS NULL
2007/11/25(日) 07:43:03ID:???0480NAME IS NULL
2007/11/25(日) 07:45:53ID:???>>479 俺が悪かった。もうやめてくれ。
0481472
2007/11/25(日) 07:56:53ID:???うわああああん
0482NAME IS NULL
2007/11/25(日) 11:58:35ID:???そんな感じだったはず。
0483NAME IS NULL
2007/11/25(日) 21:43:28ID:yRCAathjFoo or (Bar and Baz)
Foo、もしくは、BarとBazを含む文書、と考えています。
LIKE検索するとして、こうした優先順をSQL文で表現できるでしょうか?
自分のスキルでは思いつかないので、まずFooとBar and Bazをそれぞれ検索して
検索プログラム側で結果をorで絞り込む、ということでとりあえず書いてるんですが
これですと全体を2回以上検索することになるので・・・
入力例は、例えば「ビデオデッキ」と「ビデオ・デッキ」を両方ヒットさせたいようなときに
「DVDプレーヤー or (ビデオ and デッキ)」のように受け付けたいと思っています
0484NAME IS NULL
2007/11/25(日) 21:48:38ID:???どっかに穴が開いてるんだと思う
0485NAME IS NULL
2007/11/25(日) 22:20:32ID:???その条件式のまま、whereにlikeで書けばいいんでない?
0486NAME IS NULL
2007/11/26(月) 00:21:00ID:???ありがとうございます。
〜WHERE column_name LIKE '%DVDプレーヤー%' OR ('%ビデオ%' AND '%デッキ%') 〜
のように書いてみました。
不勉強なもので、このようなカッコを使った書き方ができるとは知りませんでした・・
尚、マニュアル参照してみますm(_ _)m
0487NAME IS NULL
2007/11/26(月) 00:35:34ID:???0488NAME IS NULL
2007/11/26(月) 01:22:20ID:???をNGワードにすればいいよ
0489NAME IS NULL
2007/11/26(月) 03:14:54ID:???これ?
http://dev.mysql.com/doc/refman/5.1/ja/bit-functions.html
0490NAME IS NULL
2007/11/26(月) 20:56:37ID:???0492NAME IS NULL
2007/11/26(月) 23:47:26ID:???0493NAME IS NULL
2007/11/27(火) 00:47:50ID:???「文字化け」っていう言葉は本来はbit落ちとかで使うものであって
エンコード間違いのときに使う言葉じゃないんだよね
0494NAME IS NULL
2007/11/27(火) 10:49:56ID:???0495NAME IS NULL
2007/11/27(火) 11:04:01ID:???MySQLをやめて、俺SQLを作ればいいのでは?
0496NAME IS NULL
2007/11/27(火) 15:45:19ID:HAXaaf9d以下のようなテーブルを作成し、レコードを登録しておいた場合に、
Where条件として、PRIMARY KEYの3フィールド(field3, field4, field6)をAND条件で指定した時、
SELECTは問題なく行えるのですが、
UPDATEとDELETEが、レコードが存在するにも関わらず、
「Rows matched: 0」と出てしまい、SQLの結果が反映されないのですが、原因とか分かりますでしょうか?
CREATE TABLE table1
( field1 date,
field2 varchar(3),
field3 varchar(11) NOT NULL,
field4 varchar(11) NOT NULL,
field5 bigint UNSIGNED,
field6 char(1) NOT NULL,
CONSTRAINT pk_table1 PRIMARY KEY (field3, field4, field6)) TYPE=InnoDB;
0497NAME IS NULL
2007/11/27(火) 16:42:30ID:???同じプロトコルで同じ内容をしゃべる/きくようにすれば医院じゃ内科医?
0498NAME IS NULL
2007/11/27(火) 16:45:13ID:???C++ <-> Python <-> MySQLdb <-> MySQL
こんな wrapper を書いてみたり
0499NAME IS NULL
2007/11/27(火) 16:52:17ID:???| Warning | 1287 |
'TYPE=storage_engine' is deprecated; use 'ENGINE=storage_engine' instead |
こんなん出たけど
0500NAME IS NULL
2007/11/27(火) 17:00:25ID:???+------------+------+-------------+-------------+----------------------+----+
| f1 | f2 | f3 | f4 | f5 | f6 |
+------------+------+-------------+-------------+----------------------+----+
| 2007-11-27 | 234 | 12345678901 | 01234567890 | 12345678901234567890 | a |
| 2007-11-27 | 234 | 12345678901 | 01234567890 | 12345678901234567890 | b |
| 2007-11-27 | 234 | 12345678901 | 01234567890 | 12345678901234567890 | c |
| 2007-11-27 | 234 | 12345678901 | 11234567890 | 12345678901234567890 | a |
| 2007-11-27 | 234 | 12345678901 | 21234567890 | 12345678901234567890 | a |
+------------+------+-------------+-------------+----------------------+----+
5 rows in set (0.00 sec)
mysql> update tb1 set f6 ='x' where f3 = '12345678901' and f4 = '01234567890' and f6 = 'a';
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> delete from tb1 where f3 = '12345678901' and f4 = '01234567890' and f6 = 'x';
Query OK, 1 row affected (0.05 sec)
0501483
2007/11/27(火) 18:59:37ID:???WHERE column_name LIKE '%DVDプレーヤー%' OR ('%ビデオ%' AND '%デッキ%')
のように式を書いて、エラーもなく動作したのですが、
その後、この記法についてマニュアルで見つけることができません・・・
ここにそれらしき記法を見つけたんですが(WHERE節の最適化の例のひとつとして)
ttp://dev.mysql.com/doc/refman/5.1/ja/where-optimizations.html
また、手探りで式を変えながら試してみると、
上記の例の場合も、エラーは出ないものの、最初のDVDプレーヤーしか対象になっていないようなんです。
該当のマニュアルページを教えていただけるとありがたいのですが・・
0502NAME IS NULL
2007/11/27(火) 19:50:41ID:???0503NAME IS NULL
2007/11/27(火) 19:51:55ID:???これはひどいw
WHERE column_name LIKE '%DVDプレーヤー%' OR ((column_name LIKE '%ビデオ%') AND (column_name LIKE '%デッキ%'))
0504NAME IS NULL
2007/11/27(火) 20:12:28ID:???ttp://dev.mysql.com/doc/refman/5.1/ja/string-comparison-functions.html
like は演算子にしか見えないけど、なんで関数になってるんだろ
0505NAME IS NULL
2007/11/27(火) 20:25:15ID:???mysql> desc table1;
+--------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| field1 | date | YES | | NULL | |
| field2 | varchar(3) | YES | | NULL | |
| field3 | varchar(11) | NO | PRI | | |
| field4 | varchar(11) | NO | PRI | | |
| field5 | bigint(20) unsigned | YES | | NULL | |
| field6 | char(1) | NO | PRI | | |
+--------+---------------------+------+-----+---------+-------+
6 rows in set (0.02 sec)
mysql> select * from table1 where field3 = '00000000002' and field4 = '0' and field6 = 'N';
+------------+--------+-------------+--------+--------+--------+
| field1 | field2 | field3 | field4 | field5 | field6 |
+------------+--------+-------------+--------+--------+--------+
| 2007-11-27 | aaa | 00000000002 | 0 | 100 | N |
+------------+--------+-------------+--------+--------+--------+
1 row in set (0.00 sec)
mysql> update table1 set field2 = 'bbb' where field3 = '00000000002' and field4 = '0' and field6 = 'N';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
mysql> delete from table1 where field3 = '00000000002' and field4 = '0' and field6 = 'N';
Query OK, 0 rows affected (0.00 sec)
0506483
2007/11/27(火) 20:48:24ID:???ありがとうございます。
並列のLIKE検索式に対してカッコを使用するのですね。あうっ・・
今度は結果も確認できました。
案内いただいたページも参考にさせていただきますm(_ _)m
0507NAME IS NULL
2007/11/27(火) 21:04:52ID:???libmysqlでも何でも使ってDBにアクセスする「サーバ」を作れ。
それに接続するクライアントとしてお前のプログラムを作ればいい。
ソケット越しの連携は何をどうやってもGPLとは関係が無いからな。
そのサーバは公開義務があるけど、別にただのラッパだから
公開しても痛くも痒くもないだろ
0508NAME IS NULL
2007/11/27(火) 23:17:31ID:???mysql> desc tb1;
+-------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| f1 | date | YES | | NULL | |
| f2 | varchar(3) | YES | | NULL | |
| f3 | varchar(11) | NO | PRI | | |
| f4 | varchar(11) | NO | PRI | | |
| f5 | bigint(20) unsigned | YES | | NULL | |
| f6 | char(1) | NO | PRI | | |
+-------+---------------------+------+-----+---------+-------+
6 rows in set (0.55 sec)
0509NAME IS NULL
2007/11/28(水) 08:55:01ID:???http://bugs.mysql.com/bug.php?id=28878
これっぽい。
0510NAME IS NULL
2007/11/28(水) 21:34:21ID:???複数のINSERT文を一つのマルチプルINSERT文に書き換える予定です。
ただ、SQL文が非常に長くなってしまいますが、
MYSQL5.0で、一つのSQL文の長さの制限ってどれ位でしょうか?
お願いします。
0511NAME IS NULL
2007/11/28(水) 22:33:22ID:fitDzhSE0512NAME IS NULL
2007/11/29(木) 00:06:24ID:???max_allowed_packetのデフォルトは1MB。
$ ls -l long.sql
-rw-rw-r-- 1 xxxxx xxxxx 16921095 11月 29 00:04 long.sql
$ head long.sql
insert into ltest values
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
(default), (default), (default), (default), (default), (default), (default),
$ mysql test < long.sql
ERROR 1153 (08S01) at line 1: Got a packet bigger than 'max_allowed_packet' bytes
0513NAME IS NULL
2007/11/29(木) 00:14:27ID:???$ ls -l long.sql
-rw-rw-r-- 1 taira taira 1048546 11月 29 00:12 long.sql
$ mysql test
Server version: 5.0.46-enterprise MySQL Enterprise Server (Commercial)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show variables like '%allow%';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)
mysql> source long.sql
Query OK, 95320 rows affected (1.53 sec)
Records: 95320 Duplicates: 0 Warnings: 0
大丈夫。
0514NAME IS NULL
2007/11/29(木) 13:13:13ID:???わざわざ、検証までして下さってお忙しい中、どうもありがとうございました。
max_allowed_packetの設定値だったんですね。ちなみに、私が使っているxreaでは8MBに設定されていました。
とても参考になりました。
どうもどうも、ありがとうございました。
0515NAME IS NULL
2007/11/29(木) 21:45:50ID:???3つのテーブルを結合しているのですが、USINGを使って書き換え方が分かりません、、
よろしくお願いいたします
0516NAME IS NULL
2007/11/29(木) 22:01:52ID:???何がしたいのかもう少しkwsk
0517515です
2007/11/29(木) 22:18:52ID:???テーブル2つ(t,a)だったら
SELECT * FROM t INNER JOIN a USING (aid)
のように書けたのですが、3つになったとき
SELECT * FROM t INNER JOIN a USING (aid) INNER JOIN b USING (bid)
はエラーになります
USING句を知ってシンプルに書けるなあと思い使ってみようと思いました
0518NAME IS NULL
2007/11/29(木) 22:23:14ID:???select t.* from t, a, b where t.aid=a.aid and a.aid=b.aid;
じゃダメなの?
0519NAME IS NULL
2007/11/30(金) 00:35:50ID:???mysql> desc t1;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| col1 | int(11) | YES | | NULL | |
| col2 | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> desc t2;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| col1 | int(11) | YES | | NULL | |
| col3 | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> desc t3;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| col1 | int(11) | YES | | NULL | |
| col2 | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> select t1.col1 from t1 inner join t2 using (col1) inner join t3 using (co
l2);
+------+
| col1 |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)
t2にcol2列が無い場合は、こんなかんじでちゃんと動く。
でもONで書くのが自然だと思うぞー
0520NAME IS NULL
2007/11/30(金) 04:06:08ID:???INSERT INTO `hoge_t` (`test_c`) VALUES (' ');
みたいなSQL文を実行した場合、
`test_c` に " " (半角スペース1つ) では無く、"" (文字列無し) が入ってしまいます。
これは何故でしょうか?
また、解決策はあるのでしょうか?
教えて下さい。
0521NAME IS NULL
2007/11/30(金) 11:34:40ID:???http://dev.mysql.com/doc/refman/5.1/ja/char.html
5.1でvarcharを使えばいいんじゃね?
あるいはtinytextでも使うとか。
0522NAME IS NULL
2007/11/30(金) 11:36:39ID:???WHERE FIELD IN ('a', 'b', 'c')
WHERE FIELD A OR FIELD B OR FIELD C
FIELDには、indexを貼っています。
0523NAME IS NULL
2007/11/30(金) 11:38:16ID:???ためしに、何回かクライアントで実行してみましたが、
実行するタイミングによって処理速度がちがって、
有意な差が見られないような気がしました。
0524NAME IS NULL
2007/11/30(金) 13:09:58ID:???こっちで試した限りは同じだった。
0525私のSQL
2007/12/01(土) 12:27:11ID:HP5Wtz1BMySQLでUpdateをしたときに思うように動作しないので質問させていただきます。
profileテーブルにsexという項目をvarchar(2)で定義しています。
UPDATE profile SET sex="きんさんぎんさん" where user_id = "00000002"
というSQLを流すと”きん”という結果がupdateされます。
通常こういった場合はエラーにならないのでしょうか。
なにか設定の問題なのでしょうか。
0526NAME IS NULL
2007/12/01(土) 23:04:56ID:???Query OK, 0 rows affected (0.06 sec)
mysql> insert into ctest values ('abc');
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> show warnings;
+---------+------+-----------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------+
| Warning | 1265 | Data truncated for column 'c1' at row 1 |
+---------+------+-----------------------------------------+
1 row in set (0.00 sec)
mysql> set @@sql_mode = 'strict_all_tables';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into ctest values ('def');
ERROR 1406 (22001): Data too long for column 'c1' at row 1
mysql> select * from ctest;
+------+
| c1 |
+------+
| ab |
+------+
1 row in set (0.00 sec)
mysql> update ctest set c1 = 'abc' where c1 = 'ab';
ERROR 1406 (22001): Data too long for column 'c1' at row 1
0527NAME IS NULL
2007/12/02(日) 11:16:23ID:???strictモードで使えば?
http://dev.mysql.com/doc/refman/5.1/ja/char.html
0528NAME IS NULL
2007/12/02(日) 12:29:29ID:???0529NAME IS NULL
2007/12/02(日) 15:48:26ID:???0530NAME IS NULL
2007/12/03(月) 23:59:40ID:PJiuXVStSELECT count(answer) AS cnt FROM faq WHERE answer LIKE '赤' GROUP BY answer
とした時、cntは1にしかなりません。
1つのカラムに複数の値が入っているから、集計出来ていないのだと思いますが
どういうSQLを書けばいいのでしょうか?
0531NAME IS NULL
2007/12/04(火) 00:55:32ID:???・LIKE '%赤%'
・GROUP BY を削除
0532NAME IS NULL
2007/12/04(火) 01:39:25ID:???%は抜けていました。すみません。
あと、GROUP BYはいらなかったんですね。
これを削除したら希望通り、件数が表示されました。
ありがとうございました。
0533NAME IS NULL
2007/12/04(火) 09:35:19ID:J4jZq34HInstall As Windows Servicd
Service Name:
Include Bin Directory in Windows PATH
3つのチェック項目が現れる部分で一番下の、
Include Bin Directory in Windows PATH
以外の2つの項目が選択できません。
その後のパスワード設定は画面すら飛ばされてしまいます。
OSはWindowsMEでの起動を試みています。
どなたかMEでも起動する方法を知りませんか?
何とかMEで起動させたいのですが。
0534NAME IS NULL
2007/12/04(火) 09:53:01ID:???http://dev.mysql.com/doc/refman/5.0/en/windows-installation.html
Windows 95/98/ME and versions of Windows
older than these are no longer supported.
Windows 95/98/MEおよびそれより古いバージョンの
Windowsはもうサポートされていません。
0535NAME IS NULL
2007/12/04(火) 11:43:29ID:???非NT系Windowsにはサービスって概念がないから
それ関係の項目が表示されないだけだと思う
インストール開始時のOSチェックで蹴られないなら動く可能性はある
インストール終了したら手動でMySQLを起動/終了する方法を試してみて
ttp://dev.mysql.com/doc/refman/5.0/en/windows-start-command-line.html
まあ本当に動かないかもしれないので動いたら儲けものぐらいで
0536NAME IS NULL
2007/12/04(火) 23:42:28ID:???0537533
2007/12/05(水) 02:46:04ID:???何かをするとか無理ですかね?
やっぱりパスワード設定出来ないと駄目なのかなぁ…
0538NAME IS NULL
2007/12/05(水) 06:59:54ID:???本当に強制終了?なんらかのプログラム(mysql.exeとか)を起動後
コマンドプロンプトが一瞬だけ表示されてすぐ消えるとかじゃなくて?
文面からしてコマンドライン自体よくわかってないように見えるけど
0539NAME IS NULL
2007/12/05(水) 07:11:16ID:???0540537
2007/12/05(水) 12:34:10ID:???それです。一瞬表示されて消えてしまいます。
お察しの通りSQLの勉強始めたばかりなのでよく分かってません…
>>539
4.1以前ならMEでも動くんですか?
それならそちらを探し出して使います。
0541NAME IS NULL
2007/12/05(水) 12:58:02ID:???http://dev.mysql.com/doc/refman/4.1/ja/win95-start.html
ここにある
http://dev.mysql.com/downloads/mysql/4.1.html
0543NAME IS NULL
2007/12/05(水) 20:10:40ID:???2台のネットワークにつながっていないパソコンにhddをつないで
mysqlを持ち運ぼうとおもっています
一つのデータベースを2種類のサーバをつかって共有するという感じです
実行は別々の時間です
windowsだけならば何でもできるけど macなんで良い方法ないですか?
0544NAME IS NULL
2007/12/06(木) 09:29:06ID:???DBをFATに作れば可能
0545NAME IS NULL
2007/12/08(土) 22:42:32ID:AP+yiBIl今、スケジューラみたいのものを作っていて、
month=12&day=9 のような形でサーバに送って、それぞれまともにmonthカラムとdayカラムに
突っ込んでいます。
これを、date型に成形して、mysqlの方でもその形で1カラムにまとめたとしたら、
運営上どのような利点があるんでしょうか? 厨質問かも知れないですが、回答お願いします
検索などの速度が向上するとかあるんでしょうか、、
0546NAME IS NULL
2007/12/08(土) 23:33:53ID:???月と日が別カラムだと、月をまたぐ計算が面倒
0547545
2007/12/09(日) 00:30:25ID:???日付型の特長について、調べてみます!
0548NAME IS NULL
2007/12/09(日) 18:05:35ID:???簡単に整理して表示するWebスクリプトはありますか?
phpMyAdminなどの管理用のユーティリティソフトは導入していますが、
・検索や優先順位付きのソートだけでよい
・ユーティリティだけにデザインが難しい
という問題があります。
スクリプトをいちから組むのはめんどくさくて…
0549NAME IS NULL
2007/12/09(日) 18:20:12ID:???0550NAME IS NULL
2007/12/09(日) 18:48:03ID:???了解です。スレ汚しすみませんでした。
0551NAME IS NULL
2007/12/11(火) 00:11:12ID:???0552NAME IS NULL
2007/12/11(火) 15:07:28ID:???片一方のテーブルのデータを削除すると "foreign key constraint fails"が出ます。
ondelete cascadeをせずに、片一方のテーブルのデータを削除する方法はありますでしょうか。
0553NAME IS NULL
2007/12/11(火) 19:00:59ID:???0554NAME IS NULL
2007/12/12(水) 00:13:05ID:???set foreign_key_checks=0;
おすすめはしない。
0555NAME IS NULL
2007/12/12(水) 02:17:14ID:???ショッピングカートのデータベースです。
user,shopcartというテーブルがあり、それぞれ
-user
userid int(11)
name varchar(64)
-shopcart
userid int(11)
goodsid int(11)
price int(11)
accounted int(1) #0:未清算,1:清算済み
となっています。(実際はもっと複雑で違った用途ですが…)
このとき、
未清算(accounted=0)で、価格が10,000円以上(price>10000)の商品が
買い物かごに入っているユーザの名前を検索するのは
どういったSQL文を書けばいいのでしょうか。
0556NAME IS NULL
2007/12/12(水) 02:36:02ID:???SELECT name from INNER JOIN shopcart ON user.userid = shopcart.userid WHERE shopcart.price>10000 & shopcart.accounted = 0
でいけたわ
必要なのは
「未清算(accounted=0)で、価格が10,000円以上(price>10000)の商品が
買い物かごに入っている」
かつ
「清算済み(accounted=1)で、価格が10,000円以上(price>10000)の商品が
買い物かごに入っている」
ユーザの名前を検索するSQL文でした
お騒がせしてます
0557NAME IS NULL
2007/12/12(水) 03:14:43ID:???まだおかしい
条件をよく見直すよろし
0558NAME IS NULL
2007/12/12(水) 03:31:25ID:???日本語で言うと
「未清算の商品と清算済みの商品がそれぞれ1点以上カートに入っているユーザの名前」となります
つまりまとめてみると
『shopcartに userid=x AND accounted=1 なレコードがあり、かつ
shopcartに userid=x AND accounted=0 なレコードがある』
という条件を満たすuserid=xに対応するnameを求める
ということです。
ん?おかしい?
GROUP BYでもいける気もする
0559NAME IS NULL
2007/12/12(水) 03:38:11ID:???select u.name from
(select distinct userid from shopcart where accounted=0 and price>=10000) a,
(select distinct userid from shopcart where accounted=1 and price>=10000) b,
user u
where a.userid=b.userid
and a.userid=u.userid;
0560NAME IS NULL
2007/12/12(水) 03:40:05ID:???みゃー
サブクエリ(?)でしたか
未知の領域ですががんばって勉強します
ありがとうございました
0561NAME IS NULL
2007/12/12(水) 04:00:45ID:???眠いのでネルス
0562NAME IS NULL
2007/12/12(水) 21:07:36ID:5IOTZHnSインストールの過程で要編集とあるconfig.inc.phpの項目が自分のpmaの
バージョンでは存在しません
自分のバージョンは2.11.3で、存在しない項目は以下のとおりです
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['PmaAbsoluteUri'] = '';
どうしたらいいでしょう?
http://www.shiftweb.net/material/phpmyadmin/phpmyadmin.html を参考に作業してます
ここで質問していいのか不安でしたがお尋ねしました お願いします
0563NAME IS NULL
2007/12/12(水) 21:41:40ID:???0564NAME IS NULL
2007/12/12(水) 23:08:20ID:???MySQLは5です。
0565NAME IS NULL
2007/12/12(水) 23:18:42ID:???そのページは phpMyAdmin 2.5.6 向けに書かれているみたいだから
書かれている通りに作業を進めていってもうまくいかないと思うよ。
(認証メソッドもクッキー認証のままだろうし)
面倒くさいかもしれないけど、設定ファイルに書かれている項目を
一つひとつ理解しながら進めるのがいいと思う。
あるいは最新版にも使えそうな別の解説ページを探すとか。
0566NAME IS NULL
2007/12/12(水) 23:45:56ID:???そうみたいですね
2.5.6を落として入れてみたんですが、それも上手くいきませんでした。
実は壊れたマシンの中じゃ動いてたんだけど、こういうのって
上手く動作したらすぐにそのバージョンや手順をメモっておくべきなんでしょうね
失敗したなぁ;; ありがとうございました
0567NAME IS NULL
2007/12/13(木) 01:16:04ID:???いつまでもダウンロードできるとは限らない
0568NAME IS NULL
2007/12/13(木) 10:31:56ID:???データアクセスが遅くなりました。
CPUを交換したら、Mysqlの再インストールが必要な場合があるんでしょうか?
0569NAME IS NULL
2007/12/13(木) 13:47:58ID:???おいおい、当たり前でしょ。システムの主要部分の構成を変えているのに、
そのままで運用する気かよ。
0570NAME IS NULL
2007/12/13(木) 15:39:20ID:???返答ありがとうございます。
やっぱりMysqlをインストールする時にそのマシンの
構成によって何かしらの変化があるって事なんですね?
再インストールすれば大丈夫でしょうか?
素人ですいません。。。
0571NAME IS NULL
2007/12/13(木) 15:42:27ID:???0572NAME IS NULL
2007/12/13(木) 18:03:30ID:???ttp://ossipedia.ipa.go.jp/capacity/EV0604170061/
0573NAME IS NULL
2007/12/13(木) 18:26:59ID:???CPUのコア数増やすと返って遅くなる場合があるよ
0574NAME IS NULL
2007/12/13(木) 19:57:33ID:???今度のFreeBSDはマルチコアに対して期待できるパフォーマンスを発揮するが、
LINUXだと、コアが増えるとパフォーマンスが落ちるみたいな話があるし。
0575NAME IS NULL
2007/12/13(木) 20:18:52ID:???Pythonのお勉強 Part22 [プログラム]
萌えろ!シエンナ・ギロリー [海外芸能人]
【フィギュア】禁断の小学生バニー!「涼宮ハルヒの憂鬱 キョンの妹 バニーVer.」発売 [萌えニュース+]
海外芸能人板が在日朝鮮人に支配されてる見た感想 [海外芸能人]
0576NAME IS NULL
2007/12/13(木) 20:51:13ID:???0577NAME IS NULL
2007/12/13(木) 21:29:08ID:???0578NAME IS NULL
2007/12/14(金) 12:32:18ID:???0579NAME IS NULL
2007/12/14(金) 20:27:54ID:3RR5o2qvSHOW TABLES FROM db_name;
となり、更にテーブル名が「dtb」から始まるものを同様に取得するには、
SHOW TABLES FROM db_name LIKE 'dtb%';
になると思いますが、
逆にテーブル名が「dtb」から始まるもの以外の一覧を取得するには
どのような SQL 表現となりますでしょうか?
間違っているとは分かっていながら、あえて書くと
SHOW TABLES FROM db_name NOT LIKE 'dtb%';
のような感じのことをしたいのです。
どなたかご教示ください。
0580NAME IS NULL
2007/12/14(金) 21:03:55ID:???バージョンは?
俺んとこ、5.0.45だけど、
show tables like 'k%';
で使ってるデータベースの中からkが先頭の奴の表示が出来たけど。
0581NAME IS NULL
2007/12/14(金) 21:29:17ID:???select TABLE_NAME
from information_schema.TABLES
where TABLE_SCHEMA = 'db_name'
and TABLE_NAME not like 'dtb%';
0582580
2007/12/14(金) 21:35:14ID:???0583NAME IS NULL
2007/12/14(金) 22:31:47ID:dYcjukjg米アマゾン Webデータベース「SimpleDB」を開発
http://namidame.2ch.net/test/read.cgi/news/1197638836/l50
0584NAME IS NULL
2007/12/14(金) 22:58:52ID:???はい。有料です。
2ちゃんねる使用料
■閲覧
1スレッド 25円
■書きこみ
1レス 10
スレ立て 500円(大人の時間、ニュース速報は1000円)
混雑時は立てる事が出来ない場合がありますが、その時は課金されません
■書きこみ放題
・プラチナプラン 4800円 閲覧無料 スレ立て200円、通常3スレ/月、実況5スレ/週の無料サービス
・ゴールドプラン 3500円 閲覧無料 スレ立て半額 HOT!
払わないと、大変なことになるかもしれませんね・・・( ̄ー ̄)ニヤリ
2ちゃんねるは有料だった
ソース
http://www.geocities.jp/guide_2ch/
0585579
2007/12/14(金) 23:20:12ID:???レスありがとうございます。
こちらの使っているものは MySQL 4.1.22-community-nt でした。
せっかく教えてもらえる機会をいただいたのに
バージョンを書くことをすっかり忘れてしまいました。
申し訳ありませんが、再度お知恵をお貸しください。
0586NAME IS NULL
2007/12/15(土) 00:26:49ID:???後から請求来るの知らねえの?
0587NAME IS NULL
2007/12/15(土) 05:46:55ID:o7//W6yx具体的には、
SELECT * FROM hoge WHERE hogege='日本語';
という文を書いても何も返ってきません。
SELECT * FROM hoge WHERE id='1';
でやると返ってきます。SET NAMESやSET CHARACTER SETなども試してみましたし、default-character-setもUTF8で統一したんですが、駄目みたいです。
何が原因かわかりますか?初心者質問で申し訳ありません。
0588NAME IS NULL
2007/12/15(土) 06:09:03ID:???コマンドプロンプトでsql文を投げてるなら、PHPのmysql_queryでも試してみ。
そのテーブル自体がutf8じゃなかったりすると、ALTER TABLEで文字コードを変換する必要がある。
未確認だけど、たぶんdefault-character-set統一後にTABLEを作成する必要があるかもです。
0589NAME IS NULL
2007/12/15(土) 06:13:47ID:???そういう押し付けがましいレスは止めろ。
5.0.45って書いているんだから、文字コードの問題じゃないだろ。
ラーメン屋の癖にイタリアン風の盛り付けをして、
フォークとスプーンで食べさせるのと一緒だろ。
分をわきまえろ。
0590NAME IS NULL
2007/12/15(土) 06:15:43ID:???0591NAME IS NULL
2007/12/15(土) 07:06:54ID:???↑
流行ってるんですか?
0592NAME IS NULL
2007/12/15(土) 07:09:30ID:???0593NAME IS NULL
2007/12/15(土) 08:22:12ID:???そういうイタリア風のレスは止めろ。
0594NAME IS NULL
2007/12/15(土) 08:44:51ID:???箸出されるのも困るよね
0595NAME IS NULL
2007/12/15(土) 08:50:23ID:???0596NAME IS NULL
2007/12/15(土) 10:24:38ID:o7//W6yxset charset utf8でも駄目でした。ちなみにPHPから投げてます(コマンドからは何故か日本語入力できないので)
一応idからとってきたときにはデータはutf8で表示されており、データベースもテーブルもutf8になっていました。
日本語の問題だと思うんですが、どこをいじれば良いかわからないです。
0597NAME IS NULL
2007/12/15(土) 10:41:02ID:vWyiU39cPHPのスクリプトはUTF-8で書かれてるの?
0598NAME IS NULL
2007/12/15(土) 12:54:40ID:???あと関係ありそうなシステム変数を手当たり次第ダンプすれば
解決の糸口になるかも。
show variables like 'character_set%';
show variables like 'collation%';
0599NAME IS NULL
2007/12/15(土) 13:36:45ID:???普通の金属のスプーンなら食べやすいけど。
PHP使ってる時点でスキル低いから無理でしょ。
SJIS使えるアクセスでも使ったら?
0600NAME IS NULL
2007/12/15(土) 13:38:17ID:???適材適所だと思うんだがなぁ
0601NAME IS NULL
2007/12/15(土) 13:50:21ID:???他のスレでもこういうの見かけたことあるよ
0602NAME IS NULL
2007/12/15(土) 14:04:37ID:???スキルの優劣はなんら関係ないと思うんだがね
プログラム言語なんてのは、目的を達成するための
単なる道具に過ぎないわけだし
0603NAME IS NULL
2007/12/15(土) 15:27:07ID:???0604596
2007/12/15(土) 17:42:01ID:o7//W6yxcharacter_set_client => sjis
character_set_connection => sjis
character_set_database=> utf8
character_set_filesystem => binary
caracter_set_results => sjis
character_set_server => utf8
character_set_system => utf8
collation_connection => sjis_japanese_ci
collation_database => utf8_general_ci
0605NAME IS NULL
2007/12/15(土) 18:44:10ID:???0606NAME IS NULL
2007/12/16(日) 02:08:05ID:ZkJ63S3/いきなり5系にしたいのですが、phpMyAdminなどで
データベースの内容をインポートするだけで、移行出来ますでしょうか?
もしくは、作成しているPHPが動かなくなる可能性はあるのでしょうか?
0607NAME IS NULL
2007/12/16(日) 02:21:15ID:???ORDER BY field ASC LIMIT 3 とすると
1行目
2行目
3行目
ORDER BY field DESC LIMIT 3 とすると
20行目
19行目
18行目
と表示されます。ですが、
18行目
19行目
20行目
と表示させる方法が分かりません。どうすればいいのでしょうか。
初歩的な質問で済みません。
0608NAME IS NULL
2007/12/16(日) 02:41:58ID:???0609NAME IS NULL
2007/12/16(日) 02:48:24ID:???0610NAME IS NULL
2007/12/16(日) 03:07:36ID:???無いよ。勝手な仕様を脳内で創出しないように。
こんど虚偽の投稿したら、偽証罪で通報するよ。
0611NAME IS NULL
2007/12/16(日) 07:59:38ID:???0612NAME IS NULL
2007/12/16(日) 13:35:23ID:???ありがとうございます。
状況によって行数が増える(わからない)場合はどうすれば良いですか?
0613NAME IS NULL
2007/12/16(日) 15:07:54ID:???1. DESCで取得して、逆順に表示する
2. 最初にOCUNT()する
0614NAME IS NULL
2007/12/16(日) 15:08:49ID:???0615NAME IS NULL
2007/12/16(日) 15:25:36ID:???MySQL側ではそのような機能はないんですね。
phpを利用しているので、1.で逆順に表示することにしました。
ありがとうございました。
0616NAME IS NULL
2007/12/16(日) 20:21:25ID:???さらに昇順にソートすれば?
試してないので出来ないかもしれんけど
0617NAME IS NULL
2007/12/16(日) 22:08:31ID:???SELECT * FROM (SELECT * FROM table ORDER BY field DESC LIMIT 3) ORDER BY field ASC
できそうですね。4.0なのでテストできないですが…
0618NAME IS NULL
2007/12/17(月) 01:20:54ID:+StW6xi3INSERT後にselect last_insert_id()を実行したいのですが1文で書ければと思っております・
0619NAME IS NULL
2007/12/17(月) 11:11:00ID:???0620NAME IS NULL
2007/12/17(月) 11:29:27ID:???insert into hage(hoge)values('hoge');
select last_insert_id();
}
hoge(); // ←一行
0621NAME IS NULL
2007/12/17(月) 14:53:32ID:???文字コードとかめんどくさ
0622NAME IS NULL
2007/12/17(月) 14:58:41ID:???0623NAME IS NULL
2007/12/17(月) 23:20:32ID:???field_aとfield_bとfield_cをキーにしたり、field_aとfield_cをキーにしてりして、
SELECTしたりUPDATEしたりするのですが、この場合、どういう風なINDEXをはるとよいでしょうか?
案1) field_a, field_b, field_cに対して一つのINDEX
案2) field_a, field_b, field_cと、field_a, field_cとの二つのINDEX
宜しくお願いします。
0624NAME IS NULL
2007/12/18(火) 00:14:48ID:???(A,C,B) の index を作って (A,C,B) と (A,C) の条件にする
のがマンドクサなら案2で
0625NAME IS NULL
2007/12/18(火) 01:00:09ID:???メールもRFC無視してUTF8で送ってしまえば良いのだよ。8ビット目落とされても文句は言えないが。
0626NAME IS NULL
2007/12/18(火) 10:53:26ID:???Content-Transfer-Encodingに8bitを指定してもダメなの?
ま、もうUTF8でいいと思うんだけど、携帯がなー
0627NAME IS NULL
2007/12/18(火) 16:53:45ID:???データグリッドで1レコード複数行表示が可能なおすすめのフリーソフトってありませんか?
0628NAME IS NULL
2007/12/19(水) 14:21:13ID:???create database後のstatus、ServerとDbの項目がlatin1のまま変わらない。
他のClientとConnの項目はsjisになってるんだけど、どうすればええのん?
0629NAME IS NULL
2007/12/19(水) 15:09:28ID:???これってどういう意味があるのでしょうか?
絶対値でも桁数、バイト数でも無いし・・・
0630NAME IS NULL
2007/12/19(水) 15:27:54ID:???0631NAME IS NULL
2007/12/20(木) 10:59:51ID:???zerofillした時に関係する気がするけど確認してない。
つかドキュメント読めよ。
0632NAME IS NULL
2007/12/20(木) 13:07:54ID:???リファレンスは読んだんですが「最大表示サイズ、最大は255」となっていて、
ためしにsmallint(3)で定義したカラムに、「1111」を入れることもできるし
selectで読むことができたので、じゃあ何の意味があるんだろう?・・・と。
zerofillを指定しない時は指定する意義は無いということでしょうか?
0633NAME IS NULL
2007/12/20(木) 16:52:11ID:???MySQL の文字セット: UTF-8 です
phpMyadminで以下のように実行すると
CREATE TABLE `test_3`.`test` (
`test_id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 255 ) NOT NULL ,
`name_kana` VARCHAR( 255 ) NOT NULL ,
INDEX ( `name` , `name_kana` )
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci
「 #1071 - Specified key was too long; max key length is 1000 bytes 」
というエラーが出て作成できません
ググってみると原因は何となく分かったのですが
以下のように書き直したところ、正常に実行できました
CREATE TABLE `test_3`.`test` (
`test_id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 255 ) NOT NULL ,
`name_kana` VARCHAR( 255 ) NOT NULL ,
INDEX `name` ( `name` ) ,
INDEX `name_kana` ( `name_kana` )
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci
命令文としては同じ内容だと思うのですが、
実行出来る、出来ないの違いはなんなのでしょうか?
0634NAME IS NULL
2007/12/20(木) 19:18:51ID:0XfdB7ZBWHERE m_mail LIKE '%@.ezweb.ne.jp%'
としたのですが、@が認識されないみたいです。
どうしたらいいのでしょうか?
0635NAME IS NULL
2007/12/20(木) 20:11:58ID:???上の例は name と name_kana の組み合わせのインデックスを作る
下の例は name, name_kana それぞれ単独のインデックスを作る
UTF-8 の char 系 index はフィールド長 * 3 だけ必要みたいで
>>634
@ の次の . が余分 とかいうオチじゃないよね?
最大 1000 バイトなので 333 文字以下にしないとエラーになる、、、みたい
データのほとんどが先頭 xxx/yyy 文字に収まるなら、INDEX(name(xxx),name_kana(yyyy))
とキーの長さを指定する手もある、、、みたい
0636NAME IS NULL
2007/12/20(木) 20:12:51ID:???>>633
上の例は name と name_kana の組み合わせのインデックスを作る
下の例は name, name_kana それぞれ単独のインデックスを作る
UTF-8 の char 系 index はフィールド長 * 3 だけ必要みたいで
最大 1000 バイトなので 333 文字以下にしないとエラーになる、、、みたい
データのほとんどが先頭 xxx/yyy 文字に収まるなら、INDEX(name(xxx),name_kana(yyyy))
とキーの長さを指定する手もある、、、みたい
>>634
@ の次の . が余分 とかいうオチじゃないよね?
0637NAME IS NULL
2007/12/20(木) 21:17:43ID:???0638NAME IS NULL
2007/12/20(木) 21:33:02ID:???INDEX と PRIMARY KEY の違いなら
PRIMARY KEY = UNIQUE + INDEX
0639NAME IS NULL
2007/12/20(木) 21:42:23ID:???where節があります、とかその程度の意味でいいの?
0640NAME IS NULL
2007/12/20(木) 21:47:33ID:???リファレンスのどこを読んだの?
ttp://dev.mysql.com/doc/refman/4.1/ja/numeric-types.html
ttp://dev.mysql.com/doc/refman/5.1/ja/numeric-types.html
に書いてあるので読みましょう。
0641NAME IS NULL
2007/12/21(金) 12:46:32ID:???mysqldumpで巨大なテーブルのdumpを取りたい場合どうすれば良いのでしょう?
0642NAME IS NULL
2007/12/21(金) 13:05:42ID:???その場合は、dumpじゃなくてjumpでやればいいよ。
0644633
2007/12/21(金) 13:57:00ID:/Pkbu7e1組み合わせのインデックスは知りませんでした
上と下は全然違う内容だったんですね
phpMyadminのCREATE TABLEでINDEXの指定の仕方が悪かったようです…
丁寧なお答え ありがとうございました
0645NAME IS NULL
2007/12/21(金) 14:54:57ID:???0646NAME IS NULL
2007/12/21(金) 22:22:34ID:???検索結果に見つかった順にシーケンス番号のようなものつけたいと思っています。
SELECT ・・・ FROM table ORDER BY ・・・
としたとき、結果セットとして、
data_no, (そのほかのカラム)
1,(そのほかのカラムの検索結果)
2,(そのほかのカラムの検索結果)
3,(そのほかのカラムの検索結果)
:
みたいな感じにdata_noの項目を追加したいと思っています。
どのようなSQL文で実現できるでしょうか?
0647646
2007/12/21(金) 22:29:04ID:NlVp5uky実際にしたいことは、
INSERT INTO other_table SELECT ・・・・
のような感じなので、表示側での対処はできません。
0648NAME IS NULL
2007/12/22(土) 03:02:11ID:7IWITQTeaテーブルに1000レコード有り、bテーブルに10万レコードあるとします。
これをINNER JOINで結合すると、
実質1000×100000=1億レコード
となるのでしょうか?上記のような結合をすると、インデックスを付けても
凄く重いので、実際は物凄いレコード数になっているのかな?と思ってます。
0649NAME IS NULL
2007/12/22(土) 03:56:11ID:???けど普通はリレーションがあるからそんなことにはならない。
たとえばaテーブルが注文テーブルで、bテーブルが注文明細テーブルなら、
bテーブル側の注文番号に正しくインデックスがついてれば
1000(注文件数)×100(注文1件あたりの明細件数)=100000レコード
になるだけ。
0650NAME IS NULL
2007/12/22(土) 10:44:04ID:???0651NAME IS NULL
2007/12/22(土) 10:47:42ID:???mysql://user:pass@localhost?my.cnf/test
みたいな
0652NAME IS NULL
2007/12/22(土) 11:07:47ID:???other_table 側の data_no を AUTO_INCREMENT にしておくとか
0653648
2007/12/22(土) 11:44:14ID:7IWITQTeそれでもやっぱり、1000×100で10万なんですね・・。
質問したのは、住所録を作成する時、郵便局が発行している
郵便番号・住所データと結合する場合を想定していました。
あれは全部で10万レコード以上あるし。
会員住所+住所データを結合すると、もしかして>>648みたいな
考え方になると。だから極端に重くなるのでは?っと。
0654NAME IS NULL
2007/12/22(土) 13:26:14ID:???なんか勘違いしてないか?
郵便番号と住所を結合するなら会員住所1に対して住所データ1だろ?
0655NAME IS NULL
2007/12/22(土) 13:28:43ID:???ぐぐればいくらでも答えは有るのに。
http://oshiete1.goo.ne.jp/qa746515.html
とか。
0656NAME IS NULL
2007/12/23(日) 03:12:42ID:OaV/mejRSELECT * FROM member_a INNER JOIN address USING(address_id)
UNION
SELECT * FROM member_b INNER JOIN address USING(address_id)
LIMIT 10
としています。INDEXもaddress_idに指定しています。
しかし、ローカルPC上で確認した時、表示に約10秒はかかります。
EXPLAINをしても特に問題ありません。
member_a,bにはそれぞれ1000レコードあり、addressには1万レコードあります。
0657NAME IS NULL
2007/12/23(日) 04:25:01ID:???addressテーブルはインデックスきいてるってことだから、
1万だろうが1000万だろうが速度差はそれほど出ないですよ。
SELECT * に時間かかってないかい? SELECTを整数の
1項目だけに絞ったら何秒になんの?
0658NAME IS NULL
2007/12/23(日) 04:35:04ID:???UNIONは暗黙的にソートするから
内部的にmember_a,bを全件取ってきてしまうな。
UNION ALLにするとどうなる?
UNIONが避けられないなら、my.cnfで
sort_buffer_sizeとtmp_table_sizeを増やしてみよう。
0659NAME IS NULL
2007/12/23(日) 08:02:28ID:???高スペクでも照合に時間かかるだろうなー。
0660NAME IS NULL
2007/12/23(日) 10:08:05ID:???社会保険庁は、NTT系が受注開発しているから、
Oracleに決まっているだろ
0661NAME IS NULL
2007/12/23(日) 11:04:16ID:???EXPAINの結果を張らないヤツの「問題ありません」は信用できないからなー
0662NAME IS NULL
2007/12/23(日) 11:35:28ID:???イマイチ理解できない部分があります。
MySQL文字化けで調べてみると、
文字コード変換が原因なので、この機能が働かない状態にする、
というのが解決方法として紹介されていますが、
文字コードが異なった場合の補正のための機能であって、
client側の文字コードがujis、
server側の文字コードがutf8の場合、
この自動変換をoffにしたら、
ujisのデータをutf8を入れるところに放り込むことになるわけですが
問題ないのでしょうか?
(client/serverの文字コードが一致しているんであれば、
そもそも自動変換自体働かないわけで、offにする必要性もでてきませんよね?)
自動変換をoffにするんだよ、というところには多くのサイトで
言及されているのですが、結局client、serverとの
文字コードの関係性が良く理解できません。
0663NAME IS NULL
2007/12/23(日) 11:40:02ID:???稼ぐなぁ
0664NAME IS NULL
2007/12/23(日) 11:52:30ID:???0665NAME IS NULL
2007/12/23(日) 12:24:22ID:5+xrhDuZMySQL+PHPでWebブラウザから画像データ(約9KB)をアップロードして
その画像データをMySQLにBLOB型で登録しようとしています。
アップロードデータは以下のように処理しています。
$img = file_get_contents($_FILES["img"]["tmp_name"]);
$img = addslashes($img);
↑$imgを登録したい。
しかしINSERT文で
You have an error in your SQL syntax;
となってしまいます。
また、疑問点として
1.BLOB型で上のような画像データを登録する際にSQL文のデータ部分は
シングルクォートで囲う必要があるのか?
2.addslashesは必要か?
※ネットで調べると1.2ともに付いていたり、付いてなかったりします。
環境:CentOS5.1
MySQL5.0.22(文字コードはSJIS)
以上よろしくお願いします。
0666656
2007/12/23(日) 13:20:41ID:???1項目だけに絞っても大して時間が変わりません。。
とりあえずUSING(address_id) の後ろに GROUP BY id
を付けたら、半分ぐらいの秒数にはなりました。
>>658
UNION ALLにすると、余計重たくなっているような気がします。
あと、sort_buffer_sizeは1Mでtmp_table_sizeは100Mにしています。
>>661
GROUP BY idをそれぞれのSELECTに付けたら
半分ぐらいの秒数になりましたが、
[Extra] => Using temporary; Using filesort が表示されるようになりました・・。
0667NAME IS NULL
2007/12/23(日) 16:36:22ID:???0668NAME IS NULL
2007/12/23(日) 16:46:30ID:???0669NAME IS NULL
2007/12/23(日) 16:49:51ID:wHJQxIfXMySQL 4.1.20 と PHP 4.3.9 がインストールされている共用レンタルサーバで、
文字コードが EUC で記述されている PHP を稼動させています。
この PHP で EUC のデータベースを作成し、そこに同じく EUC で日本語データを格納しているのですが、
このデータを mysqldump にてダンプする際に起きる文字化けに悩まされています。
現在の MySQL の文字コード設定は以下のようになっています。
character_set_client = utf8
character_set_connection = utf8
character_set_database = ujis
character_set_results = utf8
character_set_server = latin1
character_set_system = utf8
更に my.ini もしくは .my.cnf は使用できず、データベースも EUC から UTF8 などに
変更することができない状況下となっています。
この環境下で文字化けさせずに mysqldump でデータをダンプさせることは可能でしょうか?
ちなみに mysqldump に--default-character-set=(色々な文字セット名や binary など)、
--skip-set-charset などのオプションを付加してみましたが失敗に終わりました。
どなたかご教示ください。よろしくお願いします。
0670NAME IS NULL
2007/12/23(日) 17:06:11ID:???インデックスが効かなくなってしまうのでしょうか?
プログラマの能力に限界があるということですか?
0671NAME IS NULL
2007/12/23(日) 22:55:18ID:???Prepared Statement
0672669
2007/12/24(月) 01:46:27ID:???mysqldump に「--compatible=mysql40 --default-character-set=latin1」
オプションをつける事で解決できました。
10日以上悩んでググってやっと解決できました。
ちなみに >>579 の質問も私ですが、
PHP を使って同様の処理を行うことで回避しました。
0673667
2007/12/26(水) 00:02:45ID:???0674NAME IS NULL
2007/12/26(水) 02:07:10ID:kEQ0Ty0u071226 01:56:26 mysqld started
071226 1:56:26 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
071226 1:56:26 InnoDB: Starting log scan based on checkpoint at
InnoDB: log sequence number 0 36808.
InnoDB: Doing recovery: scanned up to log sequence number 0 43655
071226 1:56:26 InnoDB: Starting an apply batch of log records to the database.
..
InnoDB: Progress in percents: 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 7
5 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
InnoDB: Apply batch completed
071226 1:56:26 InnoDB: Started; log sequence number 0 43655
071226 1:56:26 [ERROR] Fatal error: Can't open and lock privilege tables: Table
'mysql.host' doesn't exist
071226 01:56:26 mysqld ended
なんかロックされてるなにかがあるみたいだけど回避する方法とかあるなら教えてくださいませ orz
0675NAME IS NULL
2007/12/26(水) 04:32:24ID:???これ読んでも分からん?
http://dev.mysql.com/doc/refman/5.1/ja/explain.html
>>670
効くと思うけど。
>>674
InnoDBは正常
| 071226 1:56:26 [ERROR] Fatal error: Can't open and lock privilege tables: Table
'mysql.host' doesn't exist
権限テーブルが無いって書いてある。
mysql_install_dbしてないんじゃない?
0676NAME IS NULL
2007/12/26(水) 09:30:54ID:???全文検索してもwhere usedは出てこないよ
using whereとは違うよね
0677NAME IS NULL
2007/12/26(水) 10:57:54ID:???ソースのsql/sql_select.ccを読んだが、
where usedは出てこない。
0678NAME IS NULL
2007/12/26(水) 11:41:58ID:???5.0より前はインデックスマージしないんじゃなかったっけ?
バージョンは?
0679NAME IS NULL
2007/12/26(水) 14:55:23ID:dqOx6InY0680NAME IS NULL
2007/12/26(水) 15:05:16ID:???Query OK, 0 rows affected (0.01 sec)
mysql> insert into dt values (null, now(), now());
Query OK, 1 row affected (0.00 sec)
mysql> select * from dt;
+------+------------+----------+
| dt | d | t |
+------+------------+----------+
| NULL | 2007-12-26 | 15:00:25 |
+------+------------+----------+
1 row in set (0.00 sec)
mysql> update dt set dt = d + interval t hour_second;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> select * from dt;
+---------------------+------------+----------+
| dt | d | t |
+---------------------+------------+----------+
| 2007-12-26 15:00:25 | 2007-12-26 | 15:00:25 |
+---------------------+------------+----------+
1 row in set (0.00 sec)
0681NAME IS NULL
2007/12/26(水) 15:08:53ID:???ありがとうございました!
0682NAME IS NULL
2007/12/26(水) 15:33:56ID:???1,2,3,4..........と続いているindexに2を追加すると、
1,2,2,3,4.........と3以下全て並べ替えになると理解しているのですが、
そのような仕組みになっているのでしょうか?
もし、そうだとすると100万件のデータが入っているtableで、
データを追加する際に、最悪100回の並べ替え(位置をずらす処理)が発生して大変なことになると思っています。
将来膨大なデータ件数になることが予想されるtableにindexをつけるかどうかで迷っているので、
アドバイスを頂けないでしょうか?
0683NAME IS NULL
2007/12/26(水) 17:10:55ID:???インデックスがそういう構造だと
検索にはあまり向かないだろう
単なるノベタンではなくて、挿入・削除が容易な
例えばツリー構造のようになっているのだろう
安心してインデックス張るよろし
つか張らないと遅いでしょ
0684NAME IS NULL
2007/12/26(水) 17:41:21ID:???そのレベルだとまずbtreeについて勉強しろ。
0685NAME IS NULL
2007/12/27(木) 04:10:23ID:v5TSL/Quありがとうございます。mysql_install_dbでOKでしたorz
0686NAME IS NULL
2007/12/27(木) 18:05:22ID:???以下のようにやってみたんですが、エラーになります。
mysqlimport -p --local hoge hoge.sql
*hogeがデータベース名です。
mysqlimport: Error: Table 'hoge.hoge' doesn't exist, when using table: hoge
0687NAME IS NULL
2007/12/27(木) 18:13:52ID:???SQLを流し込むツールではないぞ。
$ mysql hoge < hoge.sql
0688NAME IS NULL
2007/12/27(木) 18:26:21ID:???即レス、ありがとうございます!
本当に助かりました
ありがとうございます
0689NAME IS NULL
2007/12/27(木) 22:03:30ID:???稼働状態でデータのバックアップをとるときは、
マニュアルに載っている
mysqldump --all-databases
が一番早いのでしょうか?
もっと良いバックアップの方法があれば教えてください。
0690NAME IS NULL
2007/12/28(金) 00:16:46ID:???0691NAME IS NULL
2007/12/28(金) 00:52:11ID:???kwsk!
0692NAME IS NULL
2007/12/28(金) 01:53:48ID:???仕方ないからyahooで調べてみた
http://www.google.com/search?q=mysqldump+opt
ここのサイトに詳しく載ってたよ
サンプルもいくつかあった
0694NAME IS NULL
2007/12/29(土) 07:39:47ID:???mysqldumpを使うというのは最適解なのですね。
--opt試してみます。ありがとう。
0695NAME IS NULL
2007/12/29(土) 11:34:53ID:???LOCK TABLES⇒FLUSH TABLES⇒ストレージやLVMのスナップショット機能
だと思う。
0696NAME IS NULL
2007/12/29(土) 14:46:39ID:gk+6HmZsいちいちsql文の中に用意してinsertなりするしかないんでしょうか?
その他のカラムが更新されたときに、自動的に日付カラムが更新されるような
仕組みってないですか?
0697NAME IS NULL
2007/12/29(土) 15:42:00ID:???トリガを使用
http://dev.mysql.com/doc/refman/5.1/ja/triggers.html
0698NAME IS NULL
2007/12/29(土) 19:48:51ID:???あるいはtimestamp型を利用するとかかな。
0699NAME IS NULL
2007/12/30(日) 02:48:15ID:T2zYh9sTselect aaa.* from aaaINNER JOIN test_tb USING(aaa_id) GROUP BY aaa.aaa_id
aaaテーブルとtest_tbにはそれぞれ3万レコード入っているとします。
上段の方を実行すると、0.1秒ぐらいで表示されるのですが、
下段を実行すると、サーバがダウンするぐらい表示に時間がかかります。
どうしてGROUPを入れるとこれだけ実行時間に差が出るのでしょうか?
0700NAME IS NULL
2007/12/30(日) 05:18:06ID:???かなー
0701NAME IS NULL
2007/12/30(日) 09:06:39ID:???0702699
2007/12/30(日) 15:15:42ID:???重複した値があったのが原因のようです。
今まで勘違いしていたのですが、一意のデータが多いほど
結合時の読み込みも早いんですね。前は逆だと思ってました・・。
0703NAME IS NULL
2007/12/30(日) 15:27:52ID:???ありがとう 試してみます
0704NAME IS NULL
2007/12/31(月) 15:35:52ID:5qw/Iwgf0705NAME IS NULL
2008/01/04(金) 14:05:51ID:???alter table hogehoge change 〜 でカラムをリネームしようとすると
ERROR 1025 (HY000) Error on rename of '.\detabase\#sql-244_7' to
' .\database\hogehoge' (error: 150)
というエラーメッセージが出るんですけど、ひょっとしてプライマリキーに
なってたり外部制約に使われているカラムって名前の変更が出来ない?
0706NAME IS NULL
2008/01/04(金) 23:33:10ID:FJkIdSjB5.0.1?まではなんとか入れれたのだが・・・・
ちなみにMacOSX10.4使用
同じような症状の人いる?
0707NAME IS NULL
2008/01/05(土) 02:55:27ID:???監視ログにmysqlのエラーで
Too many connections
とメールが来ました。
mysqlが外部から待ちかまえるデーモン数を少し増やして様子をみたいのですが、
どこで調整できるのでしょうか?
0708707
2008/01/05(土) 03:02:23ID:???バージョン5.0です。
0709NAME IS NULL
2008/01/05(土) 03:08:18ID:???MySQL に接続しようとして Too many connections エラーが発生する場合は、すでに mysqld サーバに接続している max_connections クライアントが存在しています。
デフォルト(100)より多い接続を行う場合は、max_connections 変数の値を 100 より大きくして、mysqld を再起動する必要があります。
実際は、mysqld では(max_connections+1)クライアントの接続が許可されています。最後の接続は、SUPER 特権のあるユーザ用に予約されています。
一般ユーザにこの特権を与えないことによって(一般ユーザにこの特権は必要ありません)、
この特権のある管理者はログインして、SHOW PROCESSLIST を使用して問題を見つけることができます。
See 項4.6.8.6. 「SHOW PROCESSLIST」。
MySQL 接続の最大数は、スレッドライブラリが特定のプラットフォームでどの程度まで有用であるかに依存します。
Linux または Solaris では、使用している RAM のサイズと、クライアントが何を実行しているかによって、500 ? 1000 の同時接続をサポートできます。
0710707
2008/01/05(土) 03:29:23ID:???早速変更して様子をみたいと思います。
思ったより、スパムの接続数が多いみたいです。
0711NAME IS NULL
2008/01/05(土) 16:03:40ID:yZZDqu/Q1 - can't create/write to file 〜ってでてきてエクスポートできません
過去ログやMyNA、検索してでてきたやつやってみたけど駄目でした
ちなみに使ってるのはnavicat8です(オプション設定ファイルの場所わからない\(^o^)/
0712NAME IS NULL
2008/01/05(土) 16:57:52ID:5Gpulnqz以前、MySQLをインストールして、失敗し、やむなく消去して。
XAMPPをいれたんですけど。
MySQLにつなぐと。
access violation なんちゃら〜libmysql.dll〜なんちゃら
と、何回もエラーがでて、そのうち操作不能になります。
コマンドでsc delete MySQLとかやってみたり、
管理ツールとかもしてみたんですが、
なおりません。
ともだちに聞いたら、クリーンインストールしかないんじゃない
とのことなんですが。
ちょっと消しちゃまずいものもあったりするんで。
バックアップに不安感もあって、ふみきれません。
どうか、たすけてください。
あと、5日前くらいからはじめたばかりなので。
初心者すぎて、書いてることも、自分でもよくわかりきってないんで。
そのへん、ほんとうに、すみません。
0713NAME IS NULL
2008/01/05(土) 17:00:41ID:???0714NAME IS NULL
2008/01/05(土) 17:04:38ID:5Gpulnqzそうとうそういう衝動おさえてますww
0715NAME IS NULL
2008/01/05(土) 17:24:20ID:???お年玉で新しいPCを買え(w
0716NAME IS NULL
2008/01/05(土) 17:34:51ID:5Gpulnqzききたくなかったwwww
そのもっとも正論を、ききたくなかったww
0717NAME IS NULL
2008/01/05(土) 18:05:21ID:???XAMPPをまずアンインストールする
次に、スタートメニューから検索を選んで
ファイルとフォルダすべて を選び、libmysql.dllを探す
見つかったlibmysql.dllは全て不要なので 全部ごみ箱に入れる
そのあと、XAMPPをもう一度インストールする
これで多分直るので、ちゃんと動いたのを確認したら
Cドライブをフォーマットして窓からPCを投げ捨てろ
0718NAME IS NULL
2008/01/05(土) 20:42:54ID:Ible2iRH0719NAME IS NULL
2008/01/05(土) 21:35:56ID:???Explain analyzeと同じような結果を得ることはできないでしょうか?
phpでSelect文の実行速度をmysqlから得たいのですが、
その方法がわかりません。
0720NAME IS NULL
2008/01/06(日) 00:57:20ID:2gK1qWP1本当に感謝します。
今、ガチで地面に頭つけて土下座しました。
これは、完全に本当です。ありがとうございます。
そして>>718さん。
すかさずのジョーク、笑わせていただきました。
ありがとうございます。
0721NAME IS NULL
2008/01/06(日) 06:47:17ID:xNMZbDGr時間によっては検索・更新が遅くなります。
インデックスも貼っているのですが、
これから1000万件、2000万件と増えると限界もあるのではと思っています。
同じテーブルを複数作って運用することも考えているのですが、
どう思いますか、設計としては汚いとは思うのですが、
この方式であれば、これから増えていってもとりあえず心配はないと思っています。
ex) T_SAMPLE_1, T_SAMPL_2, T_SAMPL_3.... (同じ構造のテーブルを適宜増やすやり方です)
0722NAME IS NULL
2008/01/06(日) 10:46:00ID:???EXPLAINしてみた?
ちなみにインデックス張ってると更新は重くなるよ。
0723NAME IS NULL
2008/01/06(日) 13:42:15ID:???0724NAME IS NULL
2008/01/06(日) 14:12:34ID:Mrg050LOとして、IDが1か2か3のデータを出したいと思います。
上記のSQLなら3つのレコードがヒットします。
idを検索する数だけid=を付けるのは変だと思うのですが、
どういう書き方をしたらいいのでしょうか?
0725NAME IS NULL
2008/01/06(日) 14:46:54ID:???IN を使えばいいでしょ。
0726NAME IS NULL
2008/01/06(日) 17:57:57ID:???どうやったって複数の項目でソートせざるを得ないときはどうしますか?
単純な数値のキー二つなら足したりかけたりして一つのカラムに
まとめたりすることも出来ますが、日時と数字だったりすると
相当面倒くさいです。ソートだけに。
0727NAME IS NULL
2008/01/06(日) 18:09:16ID:???0728NAME IS NULL
2008/01/06(日) 18:12:17ID:???すみません。勉強不足でした。
INで出来ました。ありがとうございました。
0729NAME IS NULL
2008/01/06(日) 19:40:36ID:???百万件以上、数百万件くらいになると、どう正規化しても遅くなる。
あとメンテナンス性も落ちる。
後半に書いているように、データの水平パーティショニングが必要。
大規模なMySQL運用してるところならどこでもやってる。
(例: mixi、Yahoo! J、livedoor、live Journal)
0730NAME IS NULL
2008/01/06(日) 21:56:49ID:???参照主体ならレプリケーションでも十分対応できるんじゃね?
更新主体だとそうもいかんけど。
5.1使うとその辺楽できていいよね。
0731NAME IS NULL
2008/01/06(日) 22:23:46ID:???アドバイスどうもありがとうございました。
EXPLAINで最適化をしたのですが、どうしてもスピードが劣化してしまします。
このペースで1000万件良くと大変なことになりそうなので、策を考えていました。
>>729さんに教えて頂いたパーティション初耳だったのですが、マニュアルを見たらすごく便利ですね。
私は同じテーブルを複製してPGで参照テーブルを決定することを考えていたのですが、
DB側で透過的に負荷分散してくれるこのやり方は最高です。
いま問題になっているのは、会員の購入履歴みたいなもので、会員IDと購入品目などが並んでいます。
会員IDにINDEXを指定していて、会員IDをキーに購入履歴を参照しています。(実際には条件がもう少し複雑です)
このような用途で、会員別にパーティションにしたいのですが、
その場合は、「15.2.3. HASH 分割」がベストということで宜しいでしょうか?
http://dev.mysql.com/doc/refman/5.1/ja/partitioning-hash.html
0732NAME IS NULL
2008/01/06(日) 22:27:33ID:???アドバイスありがとうございました。
>参照主体ならレプリケーションでも十分対応できるんじゃね?
残念ながら両方なんです。
参照もしながら更新もするテーブルでして、参照も更新も半々で、
それでいてデータ数も2年後には1000万件いく勢いなので・・・
0733NAME IS NULL
2008/01/06(日) 22:54:32ID:???思うんだけど、購入履歴は「過去○件まで」として
それ以上は削除したら良いんじゃないか?
で、購入履歴からこれまでの注文金額を割り出しているのなら
それを止めて、購入合計金額テーブル+購入履歴にするとか。
俺はそうしてるよ。じゃないと、履歴のログがたまりすぎる。
0734NAME IS NULL
2008/01/06(日) 23:19:24ID:???返事ありがとうございます。
そうですね、確かにそうしたいのですが、そのテーブルが過去の取引記録を修正する必要がある特殊なもので、
更にその取引履歴がないと他の処理の際に非常に困るケースがありまして、
そのテーブルを今の形以上に最適化?するのが難しいんです。
なので、将来的にそれが1億件とか溜まったらどうするの?って問題もあるのですが、
それに対応するのは、同じ構造のテーブルを複製して負荷分散するしかないのかなぁ、と思ったのが最初の考えだったんです。
0735NAME IS NULL
2008/01/07(月) 01:36:20ID:???例え1億件溜まったとしても、それに全件対象で
検索なんてまずしないでしょうし、回避方法いくらでもあるでしょう。
しかもその9割以上はもう更新されない固定データのはずです。
0736NAME IS NULL
2008/01/07(月) 01:38:54ID:???使うなら人柱の覚悟が必要。
mixiとかは自前でパーティション相当の機能を実装してる。
0737NAME IS NULL
2008/01/07(月) 03:53:34ID:???mixiほどの会員数でもないだろうし。せいぜい1万人前後だろ。
0738NAME IS NULL
2008/01/07(月) 03:54:51ID:???0739729
2008/01/07(月) 11:54:16ID:???まいったな。
5.1新機能の『水平パーティショニング』じゃなくて、MySQLサーバ複数に
同じテーブル用意して、プログラムで参照先を変える、
手動(?)水平パーティショニングのつもりで書いた。
その場合、ユーザテーブルにデータクラスタidのカラムを増やすことになる。
736の言うように、5.1はまだRC1だからなぁ。
>>737
会員数じゃない。
0740NAME IS NULL
2008/01/07(月) 19:13:48ID:???Create New Procedure/functionが選択できない状態です。
使うにはなんか条件あるんでしょうか
0741NAME IS NULL
2008/01/07(月) 20:08:35ID:rP9QoVfq0742NAME IS NULL
2008/01/07(月) 20:59:23ID:???∩___∩ |
| ノ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ J
彡、 |∪| |
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
0743NAME IS NULL
2008/01/07(月) 21:35:15ID:???0744NAME IS NULL
2008/01/08(火) 11:57:35ID:0aeiDUDX080108 11:52:04 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
080108 11:52:04 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql/var/ is case insensitive
/usr/local/mysql/libexec/mysqld: Table 'mysql.plugin' doesn't exist
080108 11:52:04 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
080108 11:52:04 InnoDB: Started; log sequence number 0 46409
080108 11:52:04 [Note] Recovering after a crash using mysql-bin
080108 11:52:04 [Note] Starting crash recovery...
080108 11:52:04 [Note] Crash recovery finished.
080108 11:52:04 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
080108 11:52:04 mysqld_safe mysqld from pid file /usr/local/mysql/var/nomade2.local.pid ended
というメッセージがでてshutDownしてしまいます。
どなたか解決法ごぞんじないですか?
0745NAME IS NULL
2008/01/08(火) 13:14:22ID:???>>675
0746744
2008/01/08(火) 13:22:24ID:0aeiDUDXやっぱりインストール途中で終わっちゃったのかな?
0747744
2008/01/08(火) 13:27:20ID:0aeiDUDXご指摘通りinstall_dbで大丈夫になりました。
お騒がせしました。
0748NAME IS NULL
2008/01/08(火) 19:06:40ID:???--skip-grant-tablesをオプションをつけないと
起動しても今までのがうまく動きません
多分ユーザーパスワード関連の問題だとは思うのですが・・・
ユーザーテーブルの拡張は4.1系にアップデートした時に変換しました
--skip-grant-tablesを付けずに起動させて
ちゃんと動くようにするにはどうすればいいのでしょう?
因みに1ユーザーだけパスの変更ができないのがあります
あと、[mysqld]にold-password=1を指定してみてもだめでした
0749NAME IS NULL
2008/01/08(火) 23:44:58ID:???「うまく動きません」の内容を詳しく。
0750NAME IS NULL
2008/01/09(水) 02:22:19ID:???5.0.27でした。。。
0751748
2008/01/09(水) 06:58:53ID:???具体的に言うと接続できないです
で、アレから色々やって--old-passwordオプションをつけて起動したら
接続できました
しかし新しいパスワードで保存してあるユーザーは接続できませんでした
こういうものなのでしょうか?
0752NAME IS NULL
2008/01/09(水) 07:09:27ID:???だから、接続できない時のエラーは?
0753NAME IS NULL
2008/01/09(水) 07:36:23ID:???Client does not support authentication protocol
みたいな感じでした
0754NAME IS NULL
2008/01/09(水) 16:41:50ID:???1 --------
2 --------
3 --------
・
・
このようにインデックスのついたカラムをdelete文で削除すると
インデックスの数字が空いたままカウントされていくのですが、
自動的に詰めてくれるようにはできないのでしょうか
(例:インデックス3を削除した後にインデックス4のものが3につめてくる)
0755NAME IS NULL
2008/01/09(水) 17:36:30ID:???現象を正しく理解しているかどうか不安だが
連番を保持しているカラムの値は
レコードの挿入・削除により動的には変更されない
そういう値は通常はDBに持たせずプログラムで生成する
0756NAME IS NULL
2008/01/09(水) 17:37:26ID:???あんまりやらないだろうなあ
0757NAME IS NULL
2008/01/09(水) 19:54:54ID:???select id from database REGEXP [A-Z]*
とかでも全て出てきますorz
大文字だけが含まれる、というクエリが間違っているのでしょうか?
REGEXPを使うんですよね?
でも正規表現がorzなので・・・。
0758NAME IS NULL
2008/01/09(水) 23:19:28ID:???クライアントコマンド/ライブラリのバージョンが古いんじゃないかと。
0759NAME IS NULL
2008/01/09(水) 23:21:52ID:???いや、それ文法エラー。
select id from tablename where columname regexp '[A-Z].*'
だと、どう?
0760NAME IS NULL
2008/01/10(木) 00:33:46ID:???ちゃんと詰めて考えれば、その仕様自体に無理ある。
DBでは欠番してる事も情報の1つなんだよ。
0761NAME IS NULL
2008/01/10(木) 02:12:00ID:???INSERT INTO tbname value(NOW()-090000)
としてもデフォルトの0000-00-00 00:00:00となってしまいます。
SELECT NOW()-090000
だと正しく表示されるのですが、何がいけないのでしょうか?
0762NAME IS NULL
2008/01/10(木) 02:55:35ID:???SELECTの結果をINSERTすればいいじゃん
0763NAME IS NULL
2008/01/10(木) 07:26:01ID:???now()-090000 で正しく表示されているというのは気のせい。
subdate(now(), interval 9 DAY_HOUR) を使え。
0764NAME IS NULL
2008/01/10(木) 08:59:06ID:???書いてあるな
興味があれば参照してみ
0765NAME IS NULL
2008/01/10(木) 10:52:40ID:???その正規表現はいろんな点で間違ってます。
正規表現スレで聞くべきだと思うけど、
1. 先頭から末尾まで大文字だけが含まれる
2. 大文字以外が含まれる、の否定
のどっちかにしないとダメじゃね?
0766NAME IS NULL
2008/01/10(木) 17:04:40ID:???0767NAME IS NULL
2008/01/10(木) 23:31:51ID:???0768NAME IS NULL
2008/01/11(金) 02:16:26ID:???0769NAME IS NULL
2008/01/11(金) 09:03:33ID:???SELECT * FROM hoge WHERE a<条件 ORDER BY b,c;
みたいな検索を高速化させる方法は MySQLにありますか?
ありませんよね。
0770NAME IS NULL
2008/01/11(金) 09:30:57ID:???0771NAME IS NULL
2008/01/11(金) 11:27:22ID:???0772NAME IS NULL
2008/01/11(金) 19:11:00ID:???正規表現してマッチした文字を入れたいのですがどうすればいいでしょうか?
CREATE FUNCTION hoge (
f_str TEXT,
) RETURN VARCHAR
BEGIN
declare s_str INT DEFAULT NULL;
// f_strに/#([0-9]{3})#/ が入っていたら
// ([0-9]{3})の値を抜き出して
SELECT `hoge` FROM hoge_temp_tbl WHERE num_id = ([0-9]{3}でマッチした値)
END
簡単に書くと
長文が入った変数f_strをストアドに投げて#([0-9]{3})#にマッチするキーの値をDBから取りたいのです
PHP側で置き換えするとその都度DBと通信しなくてはいけないので遅くなると思いこの方法が出来ないか、と考えてます、
MYSQLのバージョンは
5.1です
0773NAME IS NULL
2008/01/11(金) 21:09:03ID:???pointにcountの数値を入れてupdateしたいのですが
Subquery returns more than 1 rowとでてエラーがでます。
()の前にANYなどをいれても別のエラー(おそらく文法エラー?)がでます
pointはint型です
やりたいことは あるテーブルのレコードの値を別のテーブルのcountで求めた値を入れたいのですが…
0774773
2008/01/11(金) 21:34:39ID:???ただのupdateの文法ミスでした。余分なものが多すぎだorz
0775NAME IS NULL
2008/01/13(日) 06:58:13ID:???0776NAME IS NULL
2008/01/13(日) 22:04:10ID:???列2のみに検索を掛ける場合に、列2だけのインデックスを作る必要がありますか?
宜しくお願いします。
0777NAME IS NULL
2008/01/13(日) 22:42:41ID:???はい、必要あります
0778NAME IS NULL
2008/01/13(日) 23:40:42ID:???アドバイスありがとうございます。
勉強になりました。
実は、phpadminでやると、↓のような警告メッセージがでてしまうので、気になっていました。
カラム `列2` に PRIMARY と INDEX のキーを両方とも設定するのはよしましょう。
検索条件別にインデックスを分けないといけないんですね。
どうもありがとうございました。
0779NAME IS NULL
2008/01/14(月) 04:06:03ID:???一番知りたいのはInnoDBのトランザクション使用時と比べてです
0780NAME IS NULL
2008/01/14(月) 12:38:44ID:???EXPLAIN した?
PRIMARY には INDEX いらんがな。
0781NAME IS NULL
2008/01/14(月) 19:19:15ID:k6NvIgLE何でGROUP_CONCATではlimitが利用できないんでしょうか?
limitを利用したのと同程度で済む代替手段はあるのでしょうか?
0782NAME IS NULL
2008/01/14(月) 21:16:10ID:???え、できないの? できると思うけど。
0783NAME IS NULL
2008/01/14(月) 22:07:57ID:k6NvIgLEレスありがとうございます。
Group_concatの構文って↓ですよね。
抽出して並べる値について、上位5件のものだけにしたい場合などにlimitが使えたら便利と思ったんですが、
普通にできるのでしょうか。
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
[SEPARATOR str_val])
0784772
2008/01/16(水) 18:10:14ID:???0785NAME IS NULL
2008/01/16(水) 23:10:36ID:???0786NAME IS NULL
2008/01/16(水) 23:31:06ID:/Laf53wE0787NAME IS NULL
2008/01/16(水) 23:36:06ID:???0788NAME IS NULL
2008/01/17(木) 01:18:09ID:???0789NAME IS NULL
2008/01/17(木) 01:57:33ID:???0790782
2008/01/17(木) 02:10:31ID:???あ、そういうことか。
group_concat() の機能じゃないけど、group_concat() の結果を substring_index() してみるのはどうかな。
substring_index(group_concat(....), ',', 5) みたいに。
0791NAME IS NULL
2008/01/17(木) 02:12:44ID:???0792781
2008/01/17(木) 02:55:23ID:FXOK6V2iレスありがとうございます。
MySQLについてあまり詳しくないのですが、
その方法だとソートする場合に,5番目以降の部分もソートしてしまって,
計算量が膨大になったりしないのでしょうか。
0793NAME IS NULL
2008/01/17(木) 05:31:39ID:h9UdFYyAかけた方が安全なんでしょうか?
0794NAME IS NULL
2008/01/17(木) 05:40:46ID:???MYSQLを今週から使い始めました。
ですが、SQLというのがイマイチよく理解できないのですが、
ある列の並べ替えをしたいときは、どのようなSQLをかけば宜しいのでしょうか?
SYAIN(社員用の管理テーブルです)
ID
NAME
ADDRESS
AGE
SYOZYOKU
STATUS
TM_SCORE
0795NAME IS NULL
2008/01/17(木) 05:55:54ID:???その辺はSQL入門で最初に出くる基本事項ですので、
本やwebで一通り押さえてください。
ちなみにその場合は「ORDER BY」を使用します。
0796NAME IS NULL
2008/01/17(木) 05:59:23ID:???例えば、NAMEを昇順に並べ替えるなら、こうすれば出来るよ。やってみて。
DELETE FROM SYAIN; SELECT * FROM SYAIN ORDER BY NAME;
0797NAME IS NULL
2008/01/17(木) 06:08:57ID:???朝早くから、アドバイスありがとうございました。
教えられたSQLでやってみたのですが、何も表示されませんでした。
ちなみに、XPでWINDOWS版でやっています。バージョンはわかりません。
おすすめのHPとかありますか?
0798NAME IS NULL
2008/01/17(木) 06:12:08ID:???0799NAME IS NULL
2008/01/17(木) 07:22:19ID:???まれに見る超初心者。
スレで聞くより入門書買って読んだ方が早いよ。
>>796
> DELETE FROM SYAIN;
>>797
> 教えられたSQLでやってみたのですが、何も表示されませんでした。
ホントに全レコード消しちゃったのね・・・。南無。
0800NAME IS NULL
2008/01/17(木) 07:23:20ID:???0801NAME IS NULL
2008/01/17(木) 07:49:58ID:???そうですね。近くに本屋がないので、どうしようかと思っていまして、
何かお勧めの本とかありますか?
で、すみません、あれから再起動したりして何度か試したのですが、
レコードが表示されなくなってしまったのですが、
これはどうしたら宜しいでしょうか?
前にウマくいっていたSQLも実行できないのですが・・
0802NAME IS NULL
2008/01/17(木) 07:52:42ID:???このスレがこんなに平穏とは、それだけMySQLユーザーが増えたって事かね。
0803NAME IS NULL
2008/01/17(木) 07:53:57ID:???SQLを実行した後に>>796を実行しておいた方がいいよ。
0804NAME IS NULL
2008/01/17(木) 07:55:48ID:???何が変わるってわけでもないし。 ライセンス形態が変わるってなら大ニュースだが
0805799
2008/01/17(木) 08:04:00ID:???何歳?小学生ぐらい?
DELETE FROM SYAIN; を実行したことで全レコードは消えて、
もう取り戻せないから、諦めて再入力するしかない。
本は>>1-2ぐらいを見ればリンクがある。
それからGoogleという便利な検索エンジンがあるから、ちゃんと使おうね。
http://www.google.co.jp/
0806NAME IS NULL
2008/01/17(木) 08:05:44ID:???とんでもないゆとりだなw
0807NAME IS NULL
2008/01/17(木) 08:07:11ID:???開発者が増えて、ライセンスも緩和されるかもね。
でもって商用DBにしかない機能も実装されるだろうし、
いよいよDB2とOracleが追い詰められるのかも。
Sun、MySQLを買収へ
http://www.itmedia.co.jp/enterprise/articles/0801/17/news005.html
Sun Microsystemsは、オープンソースのRDBMS「MySQL」を開発するMySQLを
総額約10億ドルで買収することを明らかにした。
Sun Microsystemsは1月16日、オープンソースのRDBMS「MySQL」を開発する
MySQLを総額約10億ドルで買収することを明らかにした。
買収は3月末をめどに完了させる予定。MySQLはIPOを待たずして買収されることとなった。
MySQLが自社サイトに開設しているブログに、同社のコミュニティ担当バイスプレジデント、
カイ・アーノ氏がその旨を伝えるエントリを投稿したのとほぼ同時期に、
Sunからも正式なプレスリリースが出されている。
カイ氏はエントリの中で、「オープンソースをよく理解しているSunがMySQLを買収したことは、
MySQLコミュニティーにとっても有益なものになる」と述べている。
一方、Sunのジョナサン・シュワルツCEOも自身のブログでこの件について言及、
MySQLの顧客に対して買収の完了を待つことなくサポートサービスの提供を開始する予定であると述べた。
MySQLについては、過去にOracleが買収を試みたことが知られている。
今回Sunが買収したことで、OracleやMicrosoft、
IBMなどとデータベース市場で争うための基盤をSunは手に入れたことになる。
0808NAME IS NULL
2008/01/17(木) 08:15:18ID:???別に悪いことじゃなさそうだな
0809NAME IS NULL
2008/01/17(木) 08:22:52ID:???おいおい!!!!!ふじゃけんなよ。
人をはめておいて何説教してんだよ!!!
どうすんだよ。今日の2時までに資料作成しないといけないのに、
データ消えたって洒落じゃ済まされないよ。
おい、復活する仕方を教えろよ。何だよ、このスレ。まじ、死んでくれよ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0811NAME IS NULL
2008/01/17(木) 08:34:23ID:???0812NAME IS NULL
2008/01/17(木) 08:38:38ID:ThKha1cM0813NAME IS NULL
2008/01/17(木) 08:38:45ID:???0814NAME IS NULL
2008/01/17(木) 09:08:32ID:???お困りのようなので、特別に教えます。
SQL文1本で復活することは可能です。
ただし、技術料として前金で10万円頂くことになります。
これでも相当安いです。同じスレの住民として特別ですよ。
それで、宜しければ上記のメールまで連絡して下さい。
0815NAME IS NULL
2008/01/17(木) 09:11:33ID:???0816NAME IS NULL
2008/01/17(木) 09:19:16ID:???0817NAME IS NULL
2008/01/17(木) 09:38:29ID:???0818NAME IS NULL
2008/01/17(木) 12:57:17ID:???>何だよ、このスレ。
本来、日本最高級のMySQL技術者のみが集うスレですが、何か?
0819NAME IS NULL
2008/01/17(木) 14:40:21ID:???0820NAME IS NULL
2008/01/17(木) 15:07:43ID:???0821NAME IS NULL
2008/01/17(木) 17:01:58ID:???Sun の狙いは現行 MySQL で構築してあるシステムを Sun のハード & ソフトに置き換えること。
そこそこ規模の大きいとこは SPARC + Solaris + Oracle でリプレースすること。
つまり現 MySQL ユーザの取り込みだよ。Sun はそういう会社。それ以外に興味はない。
過去に Sun に買収されたところがどんな冷や飯を食ったか (あるいはお亡くなりになったか)、
Cobalt を例に挙げよう。
1. Cobalt 買収。これで Sun にも I/A + Linux の販売基盤ができたとメディアが騒ぐ ← 今の MySQL
2. Sun、サポート体制配備。客とのコネ作り。
3. Cobalt 塩漬け開始。ほぼ同時に Sun が I/A ハード販売開始。
4. 2 世代も古くなればさすがに客も Sun の I/A、SPARC サーバへ乗り換えはじめる。
5. Cobalt 終了のお知らせ。
0822NAME IS NULL
2008/01/17(木) 17:10:05ID:???カラムに日本語を使っていると
Executeを入力するする部分がバグるんですけど
解決法はあるのでしょうか?
0823NAME IS NULL
2008/01/17(木) 17:14:37ID:???MySQLはそうならないで欲しい
最悪時は第三者がGPL版ベースで再スタート?
0824NAME IS NULL
2008/01/17(木) 17:22:13ID:???0825NAME IS NULL
2008/01/17(木) 17:57:01ID:???全く同感
そういえばCobaltってあったなぁっていう・・・
0826NAME IS NULL
2008/01/17(木) 17:59:07ID:???文字コードは?
設定は?
バージョンは?
接続クライアントは?
0827NAME IS NULL
2008/01/17(木) 18:00:51ID:???MySQL終わったな
0828NAME IS NULL
2008/01/17(木) 18:13:52ID:???取り込みなんてできないだろ
0829NAME IS NULL
2008/01/17(木) 18:46:59ID:???0830NAME IS NULL
2008/01/17(木) 18:54:07ID:???MySQL を Oracle や DB2 に匹敵するくらい育てなければ!!
これは単なるフリーク的な発想なだけであって、Sun がそんなこと考えるわけないじゃん。
買収額からは長期戦略の構えのようには見えん。人材と中規模〜大規模の優良客だけ
さっさと取り込んで、自分らだけで何とかできる規模の安い客はどこへでもご自由にどうぞ?
オプソあるでしょ? と、まぁ今までの Sun の対弱買収を考えるとこれが定石。
つか、MySQL を育てたいと Sun が本気で考えてるなら、買収じゃなくて大量の自社エース級
社員をコミュニティに派兵する形態をとってる。
一応 Sun もオープンなイメージで売ってる会社だからオプソの形態は無くさないだろう。
ただコミュニティ無視していきなり 「Sun 版無料 MySQL です。これが公式版です。」 と
やらかす可能性は十分にある。てか過去に Linux 用の Java でやった。
0831NAME IS NULL
2008/01/17(木) 19:08:53ID:???0832NAME IS NULL
2008/01/17(木) 19:11:41ID:???_ `''|/ノ
\`ヽ、|
\, V
`L,,_
|ヽ、) ,、
.| ヽYノ
/ r''ヽ、.|
/ ,.. -──- .、 `ー-ヽ|ヮ
.| , ‐'´ __ `ヽ、 `|
| / , ‐'"´ ``''‐、 \ |
| / / \ ヽ |
ヽ, y' /` ‐ 、 ,.. -'ヘ ヽ. }ノ
ヽ,' / /`,ゝ' ´ ヽ Y.
. i ,' { { ヽ `、
l ,イ─- 、.._ ヽ ,, _,.. -─:} !
. | r‐i| ー=ェェ:ゝ ,.∠ィェェ=ー' |r 、. l
| {ト」l|. : | " ``: |!トリ |
. │ ヽ、| ;.」_ |'ソ !
. │ ヽ r──ッ /ノ |
| lヽ  ̄ ̄ / イ │
. ! 丶ヾヽ ~ , ' ノ │ !
ト. ミ.ゝ ヽ.____./ / l /
ヽ ヽ イ ,' / , ' ┼ヽ -|r‐、. レ |
\. ノレ'/ d⌒) ./| _ノ __ノ
0833NAME IS NULL
2008/01/17(木) 19:29:44ID:???0834NAME IS NULL
2008/01/17(木) 19:38:34ID:???0835NAME IS NULL
2008/01/17(木) 19:42:55ID:???Sunの買収はそれほどの影響は無いだろうけど、
日本だと頭の固い旧世代のクライアント様向けに、
オープンソースDBと言うよりも世界的大企業であるSunのDBですと言える事が、
追い風になるのは確かだよ。
しかしこの板はIDが出ないのか、ちょっと不便だね。
0836NAME IS NULL
2008/01/17(木) 19:54:40ID:???まさにおまい自身が Cobalt 買収の時のユーザと同じ事言ってるくらい同列。
0837NAME IS NULL
2008/01/17(木) 20:02:10ID:???今はオープンソースコミュニティから嫌われたらダメージ大きいから、
オープンソースコミュニティに不利なことはしないはず。
0838NAME IS NULL
2008/01/17(木) 20:12:13ID:???ハードは作り手が塩漬けにすりゃ死滅確定だが、MySQL は既にオプソになってるから
Sun がライセンスで縛らない限りはどうとでも生き残れる。
だが Sun にとってはコミュニティの動向なんてあまり眼中になく、これで MySQL に
箔が付いたなんて思うのは甘すぎるというだけの話。別に MySQL が死滅すると
騒いでるわけじゃないのよ。
0839NAME IS NULL
2008/01/17(木) 20:21:05ID:???ただ買収前のコバルトも個人・中小企業用のキューブは売れず、ラックサーバへ移行してたような
0840NAME IS NULL
2008/01/17(木) 20:32:21ID:???0841NAME IS NULL
2008/01/17(木) 20:47:46ID:???既にMySQLの影響力は大きすぎるので、
わざわざコミュニティの反感を買うような事をするほどSunは馬鹿では無いと期待するがね。
0842NAME IS NULL
2008/01/17(木) 20:59:46ID:???これに 10 億突っ込んだなら当面は利益確保に走らんと株主に殺される。
まぁしばらくはコミュニティの方まで手が廻らないから好きにやっててくれ
というスタンスなんじゃないかね。
0843NAME IS NULL
2008/01/17(木) 22:12:53ID:???GPLならそれベースにコミュニティ立ち上げて勝手に作ればいいんじゃないの?
0844NAME IS NULL
2008/01/17(木) 22:18:30ID:???0845NAME IS NULL
2008/01/17(木) 22:19:37ID:???0846NAME IS NULL
2008/01/17(木) 22:34:58ID:dTjY9YOTmysql> select * from hoge force index(name);
ERROR 1072 (42000): Key column 'name' doesn't exist in table
テーブル定義は以下の通りです。
mysql> desc hoge;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | text | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> select * from hoge;
+------+------+
| id | name |
+------+------+
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
+------+------+
3 rows in set (0.00 sec)
MySQLのバージョンは、5.0.2です。
0847NAME IS NULL
2008/01/17(木) 23:07:52ID:???Berkeley DBも今や跡形もないしな
0848NAME IS NULL
2008/01/17(木) 23:27:12ID:???name にインデックスが設定されていないから。
0849NAME IS NULL
2008/01/18(金) 00:07:39ID:???MySQLはプライスレス。
時代の流れを読めないおっさんは、Sunに喰われ吸収される方向だと思っているようだけど、
残念ながら現在のSunにそのような消化能力は無いよ。
0850>>846
2008/01/18(金) 00:12:20ID:IiVRb0GGありがとうございます!
インデックス=カラムと勘違いしておりました。
0851NAME IS NULL
2008/01/18(金) 00:34:46ID:???StrageTek、ERP屋?、認証屋? この規模の Sun の買収は珍しいことじゃないんだけど、
良い方に転んだものってあったかなぁ。
0852NAME IS NULL
2008/01/18(金) 00:48:19ID:???オラクル高杉と思ってる企業がMySQL採用するケース増えるんじゃないかな
0853NAME IS NULL
2008/01/18(金) 01:05:55ID:???0854sage
2008/01/18(金) 01:36:58ID:???set autocommit=0
などとして設定した値は、どうやって参照できますでしょうか?
ためしに適当に↓のようにやってみたのですがダメでした。。。
mysql> select autocommit();
ERROR 1305 (42000): FUNCTION mysql.autocommit does not exist
0855NAME IS NULL
2008/01/18(金) 02:40:50ID:???mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
| 1 |
+--------------+
1 row in set (0.02 sec)
0856NAME IS NULL
2008/01/18(金) 03:27:58ID:???0857NAME IS NULL
2008/01/18(金) 05:24:24ID:???いわばライバル消滅が目的の買収だろう?
SunがMySQLを潰すメリットなんて無いだろう?
海外で人気の高いMySQLを取り込み自社製品の
ブランド力アップというのが自然な考え。
そして恐らく商標はSun MySQL の様なものに変更に
なるだろうから、以後メディアでMySQLが紹介される度に
Sun の名前が露出することになる。 楽天球団に似た考え方だ。
0859NAME IS NULL
2008/01/18(金) 11:04:54ID:???いやまったく。
Oracleが買収したなら「終わったな」と思ったけど、Sunならそんなに問題ないでしょ。
0860NAME IS NULL
2008/01/18(金) 11:10:33ID:1KyA+UkP読み方で検索したのですがでてきませんでした
max_user_connections
マックス ユーザー なんてよむのでしょうか?
サポートに電話して聞きたいのですが読めなくて;;
0861NAME IS NULL
2008/01/18(金) 11:15:22ID:???0862NAME IS NULL
2008/01/18(金) 11:16:19ID:???マジレス本当にありがとうございます
助かりました><
0863NAME IS NULL
2008/01/18(金) 11:45:16ID:???中学校は出たか?
もし義務教育を終えていないのなら、そこからでも遅くはないぞ。
0864NAME IS NULL
2008/01/18(金) 11:48:34ID:???0865NAME IS NULL
2008/01/18(金) 14:30:25ID:???0866NAME IS NULL
2008/01/18(金) 14:45:35ID:???0867NAME IS NULL
2008/01/18(金) 20:48:18ID:FTZ9B3nGNullをカラムに入れる意味ってなんなんでしょうか? 0とは違うなどと
解説してあるのはわかるんですが、ピンときません。
""(カラ)にしないという意味だと、たとえばどういう状況で
どんな効果があるんでしょう?
if(カラムの値==0){〜〜;}というプログラムを書いていて、値がNullだった
ばかりに誤動作したことがあり気になって質問しました。
この程度の問題自体は、if(カラムの値===0){ に変えれば済むことなんですが、
根本的にNullの使い道を知りたくて… 気が向いた方、回答いただければ幸いです
よろしくお願いします
0868NAME IS NULL
2008/01/18(金) 20:50:17ID:???0869NAME IS NULL
2008/01/18(金) 21:05:36ID:???0870NAME IS NULL
2008/01/18(金) 21:17:17ID:???0871NAME IS NULL
2008/01/18(金) 21:31:41ID:SGztWTjihttp://namidame.2ch.net/test/read.cgi/news/1200622126/
0872NAME IS NULL
2008/01/18(金) 23:45:07ID:FTZ9B3nGありがとうございます 「0という値に意味があるとき」という条件は
わかりやすいように思いました
今までデータの型を強く意識したことなかったので(文字・数値くらいしか)
その辺の認識改めつついじって学習していこうと思います
あと、立て続けですみませんが質問です。 テーブルの構造変えようとしたら
CHANGE `openTime1` `openTime1` TIME NOT NULL , に対して
#1265 - Data truncated for column 'openTime1' at row 1
というエラーが出ました
openTime1カラムはタイム型で文字数制限などしていなく、すでに登録済みの
データとしてはNULL(複数)と07:00:00(一件)があるだけです
今までデフォルトでNULLが入ってたのを、Not nullのタイプに変更したかっただけですが、、
すみませんが、アドバイスよろしくお願いします
0873NAME IS NULL
2008/01/19(土) 01:03:05ID:???NULL をデフォルト値(00:00:00とか)に update してからやってみれば?
0874NAME IS NULL
2008/01/19(土) 01:05:08ID:???DELETE FROM テーブル名; ALTER TABLE テーブル名 CHANGE `openTime1` `openTime1` TIME NOT NULL;
0875NAME IS NULL
2008/01/19(土) 02:57:15ID:???ほんっとにありがとうございます
>NULL の値があるレコードが既にあるから怒られる って知りませんでした
知らなきゃこの先もずっとハマるところでした
どうもありがとうございました
0876NAME IS NULL
2008/01/19(土) 07:22:16ID:???0877NAME IS NULL
2008/01/19(土) 07:31:27ID:???> DELETE FROM テーブル名;
またおまえか。
0878NAME IS NULL
2008/01/19(土) 08:27:18ID:???select IFNULL(カラム名,0) from テーブル名;
とか
0879NAME IS NULL
2008/01/19(土) 09:34:24ID:???0880NAME IS NULL
2008/01/19(土) 09:51:39ID:???この支配から、だろ。
0881NAME IS NULL
2008/01/19(土) 15:57:20ID:???>>874
> DELETE FROM テーブル名;
初心者注意。
これをするとテーブルのレコードが全件削除される。
全件削除する場合は、
TRUNCATE TABLE テーブル名;
の方が性能的によい。
0882NAME IS NULL
2008/01/20(日) 15:33:33ID:7YNpY45T5.1以降はインストーラになってないから手動で入れないといけない
1・ファイルを解凍し、フォルダの名前をmysqlとする
2・myssqlフォルダを/usr/local/にコピー
3・cd /usr/local/mysql
4・./scripts/mysql_install_db
0883NAME IS NULL
2008/01/20(日) 16:05:09ID:???sql文の中に order by とか limit が重複してると駄目ですよね?
$sql = "select * from UNKO_MASTA where ".
"TOUROKUNITIJI < date_format('07-12-31', '%y/%m/%d') and CATEGORY_NO < '59'".
"order by DOWNLOAD_SUU asc, NO desc ".
"limit 100";
ここから更に何個かを抽出したいのです。
よろしくお願い致します。
0884NAME IS NULL
2008/01/20(日) 16:38:02ID:???毎回100件のキー項目を取得して
ランダムにいくつか選択してキーで再検索
0885NAME IS NULL
2008/01/20(日) 17:24:48ID:T57a6ONHおつかれさまです。
RAND()関数とサブクエリを使って取得できませんか?
<上位100個中、ランダムで10個取得する場合>
select *
from
(
select * from UNKO_MASTA where
TOUROKUNITIJI < date_format('07-12-31', '%y/%m/%d') and CATEGORY_NO < '59'
order by DOWNLOAD_SUU asc, NO desc
limit 100
) A
order by rand() limit 10
0886NAME IS NULL
2008/01/20(日) 21:16:13ID:nGLRewEv最初は、勉強用に使っていたDB名を次の様に変更したいのですが
どういうコマンドを入力すれば良いでしょか?
(テーブル名変更の時に仕様する ALTER TABLE のイメージ)
現在の名前
test
変更後
TrueTable
以上 宜しくお願い致します。
0887NAME IS NULL
2008/01/20(日) 21:27:52ID:???0888NAME IS NULL
2008/01/20(日) 21:58:32ID:nGLRewEvという事はやはり、Table定義変更の様にAlter DataBase等で行う事は
出来ないという事でしょうか?
0889NAME IS NULL
2008/01/20(日) 22:13:12ID:???つ http://dev.mysql.com/doc/refman/5.1/ja/alter-database.html
0890NAME IS NULL
2008/01/20(日) 22:15:32ID:37hf1nGYhttp://dev.mysql.com/doc/refman/5.1/ja/rename-database.html
12.1.18. RENAME DATABASE 構文
このステートメントは、MySQL 5.1.7 で追加されました。
0891sage
2008/01/20(日) 23:34:55ID:???Masterサーバがフリーズした場合、slaveサーバのエラーログに、
「i/oスレッド not running」みたいなエラーが出るのですが、
これって定期的にslaveサーバがmasterサーバと接続されているかどうかを
チェックしているということでしょうか?
そこらへんの仕組みが知りたいのですが、詳しい資料などあれば、
教えていただけないでしょうか?
0892NAME IS NULL
2008/01/20(日) 23:55:11ID:???この本でも買ってしらべてくれ。
http://www.oreilly.co.jp/books/9784873113432/toc.html
0893NAME IS NULL
2008/01/21(月) 00:21:17ID:???891 じゃないけど面白そうな本だなあ
0894NAME IS NULL
2008/01/21(月) 01:08:22ID:EQqPib2Rありがとうございます。
解決しました。
0895NAME IS NULL
2008/01/21(月) 09:55:55ID:???0896NAME IS NULL
2008/01/21(月) 11:08:27ID:???http://dev.mysql.com/doc/refman/5.1/ja/slave-io-thread-states.html
再接続が試行される前に、master-connect-retry 秒間、スリープ状態になる。
0897NAME IS NULL
2008/01/21(月) 12:16:33ID:???異常だよ。
0898NAME IS NULL
2008/01/21(月) 13:06:40ID:???NaviCatの試用版を使っていたのですが、期限が切れたので。
できましたら、テーブルを一度に複数開ける物がいいです。
0899NAME IS NULL
2008/01/21(月) 13:12:57ID:???0900898
2008/01/21(月) 22:12:37ID:???0901NAME IS NULL
2008/01/21(月) 22:15:13ID:???0902NAME IS NULL
2008/01/21(月) 22:34:23ID:???さくらの専用サーバー借りようと思うのですが、
設定値の目安が分からず迷っています。
どこの会社の専用サーバーでもいいのですが、
専用サーバー借りている人がいたら、設定値を教えていただけませんか?
宜しくお願いします。
0905NAME IS NULL
2008/01/22(火) 00:02:09ID:???INDEXをつける場合の、デメリットでありますでしょうか?
たとえば、ディスク容量が通常に比べて大きいとか、
メモリ使用量が通常に比べて大きいとか。。
0906>>905
2008/01/22(火) 00:03:10ID:???×デメリットでありますでしょうか?
○デメリットってありますでしょうか?
0907NAME IS NULL
2008/01/22(火) 00:18:59ID:???0908NAME IS NULL
2008/01/22(火) 03:12:48ID:???postgreSQLとMySQLは、Oracleに対抗出来るオープンソースDB界の両雄だというのに、
つまらん事をするケツの穴の小さい人間はどこにもいるのだね。
0909NAME IS NULL
2008/01/22(火) 03:45:58ID:???妄想にもほどがある。
0910NAME IS NULL
2008/01/22(火) 03:51:55ID:???0911NAME IS NULL
2008/01/22(火) 05:19:29ID:???0912NAME IS NULL
2008/01/22(火) 05:52:51ID:???0913NAME IS NULL
2008/01/22(火) 05:54:29ID:???クライアントに例えば「このマシンは一部NASAの部品が組み込まれてます」って
言えば説得力違うだろ?
0914NAME IS NULL
2008/01/22(火) 05:56:03ID:???0915NAME IS NULL
2008/01/22(火) 06:14:17ID:???0916NAME IS NULL
2008/01/22(火) 07:01:18ID:???なんか知らんけどスゲーと思った!
0917NAME IS NULL
2008/01/22(火) 07:12:43ID:???おまいらデータベースでまともな仕事したことがないだろ。
0918NAME IS NULL
2008/01/22(火) 08:56:02ID:???サポートなんか期待しないで自分でなんとかしてしまうので
自分たちで使う分には問題無いが
うるさい客には薦められない
おとなしい客にのみ適用可能
0919NAME IS NULL
2008/01/22(火) 14:39:29ID:yGneNqKgユーザ情報テーブルにUserID
所属情報テーブルに
id:1,UserID,Group1
id:2,UserID,Group5
となっている場合,ユーザ情報テーブルのUserIDを変更する所属情報テーブルのUserID
が更新される仕組みを設定するにはどうすれば良いですか
0920NAME IS NULL
2008/01/22(火) 14:59:47ID:???0921NAME IS NULL
2008/01/22(火) 15:12:49ID:???見直したほうがいいんじゃねーの?
0922NAME IS NULL
2008/01/22(火) 15:20:34ID:???うろ覚えだがテーブルを更新するたびにINDEXも更新するから
テーブルをよく更新するような処理にINDEXを使うと
処理が遅くなるみたいなのを見たことがあるようなないような
0923NAME IS NULL
2008/01/22(火) 22:22:36ID:jU9Zp14bposts_id AutoIncrement 主キー
member_id int
title text
body text
posts_datetime (公開される日時)
open_flg tinyint (公開 / 非公開)
c_datetime (作成日)
というブログのテーブルがあります。
各メンバーの最新記事(現在時刻より前)を、1人1記事で表示したいのですがどのようにすればいいでしょうか?
0924NAME IS NULL
2008/01/22(火) 23:35:19ID:???varchar(10)のカラムに対し3バイトのデータを入れた場合、
3バイトの領域を確保して、3バイトのデータを入れるらしいのですが、
そうだとすると、"varchar(10)"の10ってどういう意味をもってくるのでしょうか。。?
0926NAME IS NULL
2008/01/23(水) 00:45:55ID:???上限。
0927NAME IS NULL
2008/01/23(水) 00:52:15ID:???更新頻度が高くても、検索性能をアップさせるため使うしかない事もある。
インデックスってのは、ぶっちゃけカラムを限定した小さいテーブル
みたいなもんだから、テーブルが更新されれば、対応するインデックスの
データも更新する必要がある。
その分、更新が遅くなる。
ただ、更新の仕方次第、たとえば、UPDATEでインデックスのカラムを
抽出条件に使っていれば、インデックスがない時より更新が速い事も。
ってのがOracleで学んだ事なんだけど、MySQLもいっしょだよね?
0929>>924
2008/01/23(水) 01:27:42ID:???という意味ね。
0930NAME IS NULL
2008/01/23(水) 05:11:24ID:???11バイト入れようとすると怒られる
0931NAME IS NULL
2008/01/23(水) 08:51:12ID:???怒られずに10文字で切られるんじゃね? 設定によるけど。
あと、(どのバージョンかにもよるけど)バイトじゃなくて文字数だよ。
0932NAME IS NULL
2008/01/23(水) 11:10:18ID:YQRJxG2Tたとえば投稿記事のテーブル(table_article)があって、ユーザー別の投稿数を出すのに
select user_no,count(*) from table_article group by user_no;
で出せたんですが、このうち投稿数が10以上のユーザーナンバーを取得するのに
私の慣れたDBだと
select hoge.user_no,hoge.count_at from ( select user_no,count(*) as count_at from table_article group by user_no ) hoge where hoge.count_at > 10;
とfromにサブクエリ書いて取得してるんですけどMySQLだとどうするのでしょう?
お願いいたします。
0933NAME IS NULL
2008/01/23(水) 11:20:43ID:???select hoge.user_no,hoge.count_at from ( select user_no,count(*) as count_at from table_article group by user_no ) hoge where hoge.count_at > 10; delete from table_article;
0934NAME IS NULL
2008/01/23(水) 11:24:32ID:YQRJxG2Tこらこら
でも
http://dev.mysql.com/doc/refman/4.1/ja/unnamed-views.html
ここ見ると出来ますね。
テーブルの別名にasが必要みたいですね
select hoge.user_no,hoge.count_at from ( select user_no,count(*) as count_at from table_article group by user_no ) as hoge where count_at > 10;
でもsyntax errorでますね。
何が悪いのでしょか?
0935NAME IS NULL
2008/01/23(水) 11:28:07ID:???ちょっとやってみた。これでどう?
俺のところでは大丈夫だよ。
select hoge.user_no,hoge.count_at from ( select user_no,count(*) as count_at from table_article group by user_no ) hoge where hoge.count_at > 10; drop table table_article; select user_no from table_article
0936NAME IS NULL
2008/01/23(水) 13:02:20ID:???0937NAME IS NULL
2008/01/23(水) 14:35:41ID:???2chでnewbie相手に憂さ晴らしするってのはありがちな光景。
0938NAME IS NULL
2008/01/23(水) 14:37:39ID:???何か別の問題なのでは
0939NAME IS NULL
2008/01/23(水) 16:00:13ID:nc8uErnDディストリビュータが配布しているものです。
http://dev.mysql.com/doc/refman/4.1/ja/default-privileges.html に従い、
# mysql -u root で入って、
> SET PASSWORD FOR root@localhost=PASSWORD('new_password');
で root の new_password をセットしたのですが、このとき、パスワード内に \ を含んだのがマズかった?のか、
データベースにアクセス出来なくなってしまいました。一旦すべてをキャンセルにして新たにインストールし直したいと思い、
# yum remove mysql-server(このディストリビューションではこのようにするらしいです)
したうえで、/var/run/mysqld や /var/lib/mysql などを全部手動で削除し、再度
# yum install mysql-server したのですが、
# service mysqld start で
MySQL データベースを初期化中: [ OK ]
Timeout error occurred trying to start MySQL Daemon.
MySQL を起動中: [失敗]
と言われてしまうようになってしまいました。
これ、どうすれば root でデータベースにアクセスできるようになるのでしょうか?
0940NAME IS NULL
2008/01/23(水) 22:33:52ID:???まずログをみるべし
0941NAME IS NULL
2008/01/23(水) 23:16:51ID:dSxLsLgkinsert into testTable ( `id`, `parentId`, `uId`, `uType`, `evType`, `sName`)
values ( 0, 0, 10237, 1, , 'やまだ')
上記のSQLを実行したらエラーが起きて、evTypeに対応する値を入れたら正常に
登録できました。
空欄での登録を受け付けるようにしたいんですが
この場合、DBの設定のどこをいじればいいんでしょう?
低レベルですみません、
申し訳ありませんがアドバイスよろしくお願いします
0942NAME IS NULL
2008/01/23(水) 23:21:30ID:???0943941
2008/01/23(水) 23:27:51ID:dSxLsLgknot null制約をつければいいんですね?
ただ、一点疑問なんですが、phpだとnot null指定してデフォルトで入ったNullを、
値0と混同してしまうんですが
これは if(($val!="Null")&&($val==0)){----;}みたいにするしかないんでしょうか…
もっと良いやり方ないでしょうか?
0944NAME IS NULL
2008/01/23(水) 23:33:34ID:???values ( 0, 0, 10237, 1, '', 'やまだ')
シングルで囲めばnullとして登録される筈。
not null制約は間違い。
0945NAME IS NULL
2008/01/24(木) 01:31:30ID:???>>943
PHP のことは PHP スレ行き。
0946NAME IS NULL
2008/01/24(木) 02:38:06ID:???0947941
2008/01/24(木) 04:16:35ID:FbUJ/Tafたびたびすみませんが、ちょっとよくわからないので確認させてください
登録するデータが数値のときは''で囲まなくて良いんですよね?
空欄のときでも、というか常に。
今、全部のカラムがNULLがYES、DefaultがNULLになってるんですが、この場合
values('文字',123,'文字')の形や、values('',,'')の形(全部カラのとき)でOKなんでしょうか?
試せば良いことなんですが、エラーになってしかもどこが悪いのかわからなくて
混乱してきました すみません
0948NAME IS NULL
2008/01/24(木) 05:16:51ID:KDe70yAGどうもです。
sudo tail -f /var/log/mysqld.log ---(1) しつつ、別端末(2)で、
sudo /sbin/service mysqld start してみたところ、(1)に
------------------------------------------------------------
080124 05:08:25 mysqld started
080124 5:08:25 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use
080124 5:08:25 [ERROR] Do you already have another mysqld server running on port: 3306 ?
080124 5:08:25 [ERROR] Aborting
080124 5:08:25 [Note] /usr/libexec/mysqld: Shutdown complete
080124 05:08:25 mysqld ended
------------------------------------------------------------
と流れました。(2)側ではやはり >>939 の通り、
------------------------------------------------------------
Timeout error occurred trying to start MySQL Daemon.
MySQL を起動中: [失敗]
------------------------------------------------------------
で、やはり起動に失敗します。ここから何かが分かるでしょうか?
0949NAME IS NULL
2008/01/24(木) 08:02:16ID:???英語嫁
0950923
2008/01/24(木) 08:40:17ID:RY0emBNaだれかお願いします。
MySQL5です。
0951NAME IS NULL
2008/01/24(木) 08:59:22ID:???各メンバーのIDと最新記事時間の仮テーブルを作ってそれとJOIN
0952NAME IS NULL
2008/01/24(木) 21:10:38ID:iJzeWI1d0953NAME IS NULL
2008/01/24(木) 21:26:37ID:???0954NAME IS NULL
2008/01/24(木) 22:45:49ID:???引き分けに決着を付けたいんだろう。
0955952
2008/01/24(木) 23:15:06ID:???こいつがViewやPKがないテーブルを元に設定ファイルを出力すると、設定ファイルでは全属性をPKと見なす設定になってしまい、
カラムにnullの値を持つデータが存在するとViewから値がうまく取得できない現象が起きてしまうのです。。。
もともとのアプリではOracleを使用していたため、ViewにPK制約を付けて上記の現象を回避していたのですが、
自分の開発PC単体でもそのアプリを使えるようにMySQLを使用しようかと思い、MySQLでも同様の回避策が可能かどうか知りたくて質問させていただきました。
0956NAME IS NULL
2008/01/24(木) 23:32:29ID:???本末転倒に思えるがどうか
0957NAME IS NULL
2008/01/25(金) 03:15:59ID:???今後の国内サポートとしては、なんか存在感無かったABから、用賀のサンマイクロ部隊になるのかな?
結局、商用で大規模になってくると、Sun+Oracle RACって営業的に儲かる方向に移行させられる気もするが。
それでもDB2/iシリーズに嵌め込まれるIBMよりは逃げ道ありそうだが。
0958NAME IS NULL
2008/01/25(金) 12:39:34ID:???SELECT * FROM user_tbl ORDER BY uptime LIMIT 0,10;
でいけるのですが、仮にこの10行の中にuser_idがrootのものがあった場合、user_idがrootのものを並び順の一番上にしたいのですがどんな書き方があるでしょうか?
0959NAME IS NULL
2008/01/25(金) 13:37:18ID:???(SELECT * FROM user_tbl ORDER BY uptime LIMIT 0,10) U
WHERE user_id = 'root'
UNION ALL
SELECT * FROM
(SELECT * FROM user_tbl ORDER BY uptime LIMIT 0,10) U
WHERE user_id != 'root'
;
ちょっと遅いけど
0960NAME IS NULL
2008/01/26(土) 15:08:12ID:Kl4pFwJ80961NAME IS NULL
2008/01/26(土) 15:51:21ID:???0962NAME IS NULL
2008/01/26(土) 17:30:51ID:Kl4pFwJ80963NAME IS NULL
2008/01/26(土) 19:28:35ID:???0964NAME IS NULL
2008/01/26(土) 19:58:34ID:???SELECT * FROM hoge WHERE 条件 LIMIT 1;
としてレコードの有無を調べる
SELECT COUNT(*) as count FROM hoge WHERE 条件;
としてcountが0かどうかを調べる
のどっちがより速いのでしょうか
0965NAME IS NULL
2008/01/26(土) 20:55:55ID:???それなら初めからちゃんとしたselectして、結果の件数を調べた方がマシ。
0966NAME IS NULL
2008/01/26(土) 21:03:28ID:???どうすればよいでしょうか?
0967NAME IS NULL
2008/01/26(土) 21:09:10ID:mcIaFhlkさばを変える
0968NAME IS NULL
2008/01/26(土) 21:09:43ID:PcQhNCW+サーバー会社からroot権限を借りて、
ユーザー領域に再インストールするしかない。
0969NAME IS NULL
2008/01/26(土) 21:10:34ID:???ありがとうございます
やはり一度プログラムで取り込んで加工するしかないですか
予算的にサーバは変更できないのでプログラム側でなんとかしてみます
0970NAME IS NULL
2008/01/26(土) 21:11:43ID:???やはり使えるバージョンにあげるしかなさそうですね
諦めて力技でなんとかしてみます
ありがとうございました
0971NAME IS NULL
2008/01/26(土) 23:32:47ID:???これはどうしてエラーがでるのでしょうか?再起動中ってことでしょうか?
Server shutdown in progress
0972NAME IS NULL
2008/01/27(日) 01:25:22ID:???たぶん前者じゃないかな。
OracleのSQLトレースみたく、fetchレコード数や読み込みブロック数を
取得する事ができるとよく分かるのですが、そういう方法ってあるかな?
0973NAME IS NULL
2008/01/27(日) 03:35:30ID:pGjQq3p7foo INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY
もしこの値が4294967295だった場合、次は 1 ですか?
もし値が 1 になった場合、同じ値が存在していたらどうなるのでしょう?
このへんの挙動を教えて下さい
0974NAME IS NULL
2008/01/27(日) 12:04:20ID:???>>972
show session status like 'Handler\_read%';
の値をSQLの前後でチェックすれば
内部的に読み込んだレコード数がわかるよ。
0975964
2008/01/27(日) 17:46:31ID:???ありがとう! おかげで気持ちがすっきりしそうです。
お礼といってはなんですが、うちに来て妹とファックしてもいいですよ
0977NAME IS NULL
2008/01/27(日) 20:49:09ID:Tf02t+/w扱える最大値が振られ続けるよ。
0978NAME IS NULL
2008/01/27(日) 21:12:39ID:???あの・・・特定できちゃったんですけど・・・
削除依頼出した方がいいと思います。
0979NAME IS NULL
2008/01/27(日) 21:26:27ID:???kunio-watanabe か。
ググってもたくさんいるみたいだから特定はできないな。
削除対象にならないだろう。
0980NAME IS NULL
2008/01/27(日) 21:36:45ID:???0981NAME IS NULL
2008/01/27(日) 22:50:03ID:eb11nRJrselect tid as num,title,body,datetime from message where tid <> 0 order by datetime desc;
+------+-------+-----------+---------------------+
| num | title | body | datetime |
+------+-------+-----------+---------------------+
| 3 | NULL | drfgrf | 2008-01-24 11:41:55 |
| 1 | NULL | gdfg | 2008-01-24 11:41:03 |
| 1 | NULL | rdfgfdxgg | 2008-01-24 11:33:16 |
+------+-------+-----------+---------------------+
select id as num ,title,body,datetime from message where tid=0 order by datetime desc;
+-----+--------------+----------+---------------------+
| num | title | body | datetime |
+-----+--------------+----------+---------------------+
| 3 | ゆゆゆゆゆゆ | xfgh | 2008-01-24 11:34:59 |
| 1 | Yahoo!JAPAN | aaaaa | 0000-00-00 00:00:00 |
+-----+--------------+----------+---------------------+
上記をUNIONでつなげると、下記のようになります。
+------+--------------+-----------+---------------------+
| num | title | body | datetime |
+------+--------------+-----------+---------------------+
| 3 | NULL | drfgrf | 2008-01-24 11:41:55 |
| 1 | NULL | gdfg | 2008-01-24 11:41:03 |
| 1 | NULL | rdfgfdxgg | 2008-01-24 11:33:16 |
| 3 | ゆゆゆゆゆゆ | xfgh | 2008-01-24 11:34:59 |
| 1 | Yahoo!JAPAN | aaaaa | 0000-00-00 00:00:00 |
+------+--------------+-----------+---------------------+
これを、numの値が重複しないように取り出したいのですが、どうのようにすればいいでしょうか。
上の例だと、
| 3 | NULL | drfgrf | 2008-01-24 11:41:55 |
| 1 | NULL | gdfg | 2008-01-24 11:41:03 |
の行を取り出したいです。
下のほうの行はもうnumが1のものと3のものがあるのでいりません。
0982NAME IS NULL
2008/01/28(月) 00:25:29ID:???GROUP BY numすればいいんじゃね?
何が取得できるかはお楽しみになるけど
0983NAME IS NULL
2008/01/28(月) 21:46:39ID:???testdbという名前で作ったのをmanagement studioから消してもう一度
作ろうとすると
ファイル 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\
testdb.mdf'は既に存在するので作成できません
というメッセージが返ってきて作成することが出来ません。このファイルの
消し方、教えてください。
ちなみに alter database remove file testdb では
'file' 付近に不適切な構文があります。というエラーになっちゃってます。
0984NAME IS NULL
2008/01/28(月) 22:23:38ID:???どういうことか、分かるよね。
0985983
2008/01/28(月) 23:01:07ID:???0986NAME IS NULL
2008/01/29(火) 02:20:15ID:???MySQL4.0で構築したシステムがあるのですが、この度5.1に移行することになりました。
そこで、SQLを書き換えて副問い合わせを使おうと思っているのですが、
性能的にメリットってありますでしょうか?
副問い合わせのメリットって、何でしょうか?
0987NAME IS NULL
2008/01/29(火) 02:39:07ID:???メリットを聞かれてもバカなので分からんが、副問い合わせ使った方が楽じゃん。
0988NAME IS NULL
2008/01/29(火) 02:42:29ID:???5.1にするなら、副問い合わせより圧倒的にストアドだと思うんだが・・・
0989NAME IS NULL
2008/01/29(火) 06:21:26ID:???単純に、向こうでネイティブに全部済ませて答えが返ってくるわけだから
「コードで処理して2回SQL投げる」よりは、どう考えても速いわね。
0990NAME IS NULL
2008/01/29(火) 08:13:46ID:???これこれ、単純すぎ。
0991NAME IS NULL
2008/01/29(火) 11:26:44ID:???副問い合わせだから、テンポラリテーブルへのINSERT文とSELECT文で最低2回以上
最低でも3回以上の問い合わせが必要になりませんか?
0992NAME IS NULL
2008/01/29(火) 12:13:29ID:???PHPアプリをPHPライセンス3.0にしておけば
MySQLのGPL制限を受けないということでよろしいでしょうか?
0993NAME IS NULL
2008/01/29(火) 23:11:50ID:???アプリケーションサーバ < データベースサーバ
だから、アプリケーション側でやっちゃった方がスケーラビリティはあがる。
それにデータが膨大になってきたときに、データベースサーバの分割もしやすいしなー
Web企業的考え方。
データベースサーバは超ハイスペックなものを使っていて余裕有りまくり。
無駄なデータのやりとりするくらいならストアドプロシージャ/サブクエリでやってしまおう。
SI的考え方。
0995>>986
2008/01/30(水) 00:10:33ID:???>だから、アプリケーション側でやっちゃった方がスケーラビリティはあがる。
スケーラビリティというのは辞書で調べたら拡張性と書いてありました。
つまり、副問い合わせを使わない方がプログラムがシンプルになって、
機能追加がしやすいというということでしょうか?
>それにデータが膨大になってきたときに、データベースサーバの分割もしやすいしなー
副問い合わせを使わないと、データベースサーバの分割をしやすくなるというのは
具体的には何故なのでしょうか?
初心的な質問ですいません。。
0996NAME IS NULL
2008/01/30(水) 00:15:15ID:???0997NAME IS NULL
2008/01/30(水) 01:06:28ID:???MacOS X 10.5.1
Server version: 5.0.51 Source distribution
データベースの文字コードはutf8にしています。
MacPortでインストールしました。
Terminal.appからmysql5 を起動してselectを実行した場合、結果の日本語
は正しく表示されます(Terminal.appとデータベース、mysql5の文字コード
は合っている)。
しかし、where句などに日本語を入力しようとすると ???? になりうまく行き
ません。
日本語を含むクエリをファイルにしておいて、mysql5に食わせるぶんには問題
ありませんが、日本語が必要なたびにこれでは煩わしすぎます。
どうすればうまく日本語入力できるでしょうか。
ちなみに、bash上では日本語入力もうまく行きます。
宜しくお願いします。
0998NAME IS NULL
2008/01/30(水) 02:51:17ID:???ttp://www.hideshi.jp/macosx/term-jp.html
0999NAME IS NULL
2008/01/30(水) 02:55:08ID:???1000NAME IS NULL
2008/01/30(水) 03:45:38ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。