MySQL 総合 Part20

このエントリーをはてなブックマークに追加
196NAME IS NULL
PDSはライセンスあるの?
197NAME IS NULL:2011/07/14(木) 11:53:34.80 ID:???
>>195
社内にITグループというのがあるのですが、windowsのライセンスは詳しいのですけど。
unixは触ったことがないそうです。
社内サーバーにファイルアップロードするPHPをおいて、ファイル名をMYSQLに登録するというものです。

198NAME IS NULL:2011/07/14(木) 14:23:06.49 ID:???
業務なら2chで確認しました! って違法行為する前に金なり何なり掛けて調べろと
199NAME IS NULL:2011/07/14(木) 19:56:40.35 ID:???
2chで確認するにも金掛かるんですが
200NAME IS NULL:2011/07/14(木) 20:10:03.05 ID:???
>>197
MySQLのライセンスは怖すぎるから、やめておけ。
PostgreSQLにしておくのが無難。

以下、MySQLの本家サイトから抜粋
http://www-jp.mysql.com/about/legal/licensing/faq.html
http://www-jp.mysql.com/about/legal/licensing/index.html

「GPL ライセンスに基づくオープンソースアプリケーションを開発・頒布する場合、お客様は MySQL を GPL ライセンスに基づいて無償で使用することができます。」
つまり、 MySQLを単に「使用」して、開発する場合でもGPL ライセンスに抵触する。

ネット上で良く言われてる「MySQLは配布しなけりゃOK」ってのは、嘘。
201NAME IS NULL:2011/07/14(木) 21:35:08.62 ID:???
>>200
「twitter1000円」にカネ払っちゃう情弱www
202NAME IS NULL:2011/07/14(木) 22:21:34.40 ID:???
>>201
搾取される者がいるからこそ我々の生活は成り立つのだよ
203NAME IS NULL:2011/07/15(金) 03:41:31.21 ID:???
MySQLが起動しません。
my.iniの[sqld]にsock=/tmp/mysql.sockと書いてるのに
/var/mysql/mysql.sockがなんとかとか言って起動しない。
バカヤロ
204NAME IS NULL:2011/07/15(金) 03:50:44.94 ID:???
MySQLの何が一番怖いのかっつーと
開発元のOracleが一番怖い、色々な意味で
205NAME IS NULL:2011/07/15(金) 04:06:36.97 ID:???
ネットコミュはなんであんなにMySQLをもてはやすのだ?
206NAME IS NULL:2011/07/15(金) 04:08:15.85 ID:???
使いやすさじゃね?
企業だとPostgreSQLのほうが人気だけど
207NAME IS NULL:2011/07/15(金) 04:24:08.15 ID:???
もてはやすっていうかMySQL一択だからじゃね
どこのレンタルサーバにも入ってるでしょう
MySQL、SQLite>>PostgreSQL>>>>>その他
ぐらい
208NAME IS NULL:2011/07/15(金) 05:59:08.29 ID:???
たとえば、「LAMP」という言葉。
LAMP(ランプ)とは、OSであるLinux、WebサーバであるApache HTTP Server、データベースであるMySQL、スクリプト言語であるPerl、PHP、Pythonを総称した頭文字から成る造語である。
いくつかのサーバー用Linuxディストリビューションにおいては、LAMPがセットになって配布される。LAMPを1つのセットにすることで、OSのインストール時にLAMPの多くの設定・関連付けを自動的に行うことができ、サーバー管理者の手間を軽減させることができる。
209NAME IS NULL:2011/07/15(金) 06:08:13.18 ID:???
>>203
設定に関しちゃPC環境わかんないから助言できんわ
210NAME IS NULL:2011/07/15(金) 06:22:20.49 ID:???
>>206
日本だけだろ
211NAME IS NULL:2011/07/15(金) 09:29:42.79 ID:???
>>203
>/var/mysql/mysql.sockがなんとかとか言って起動しない。

コマンドラインのエラーメッセージ?
エラーログ(ファイル)の内容?
212NAME IS NULL:2011/07/15(金) 10:20:34.91 ID:???
>sudo bin/mysqld_safe --user=mysql &

としたら
110715 10:16:54 mysqld_safe Logging to '/var/log/mysql/error.log'.
110715 10:16:54 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
110715 10:16:56 mysqld_safe mysqld from pid file /var/lib/mysql/h57m.pid ended

[2]- Done sudo bin/mysqld_safe --user=mysql

で止まる。
頃すぞ。
213NAME IS NULL:2011/07/15(金) 10:38:20.26 ID:???
おれのGPLの理解が間違ってるのか

1 個人で非商用のmysqlを利用したホームページを開設 wordpressとか
2 会社が商用のmysqlを利用したホームページを開設 wordpressとかdrupalとか
3 社内で利用するためのphp+mysql のシステムを開発 社内のみで利用
4 mysqlを利用できるphpプログラムを開発して無償で頒布 epgrecみたいな
5 mysqlを利用できるphpプログラムを開発して販売 sugarcrmみたいな
6 mysqlを同梱したシステムを販売

どこまで有償で?ソース公開?
214NAME IS NULL:2011/07/15(金) 12:28:08.62 ID:???
>>213
GPLの解釈は関係ない。MySQLのライセンスがわかりにくいだけ。

わかりやすく言えば、
MySQLは、自分自身もGPLだけど、使うソフト(WEBサイト)もGPLであることを求めている。
それによって、オープンソースが世の中に多くなるからって理由。

使うソフトをGPLにしたくない場合は、商用ライセンスを買う必要がある。

非商用、商用関係、同梱云々一切関係ない。だからCMS系はWEBサイトもGPLにしてる。

ここの1章、2章をよく読む。
http://www-jp.mysql.com/about/legal/licensing/faq.html

1章は、「MySQL 製品を使用」するソフトは、GPLにして下さい。じゃなきゃ商用ライセンスを買ってください。
2章は、使うソフトもGPLにしなきゃいけない理由。
215NAME IS NULL:2011/07/15(金) 12:56:04.02 ID:???
Oracleがsunを買収した狙いはMySQL?
216NAME IS NULL:2011/07/15(金) 13:02:33.80 ID:???
>>215
単純にハードウェア(サーバ)が目的じゃないか。
Oracleセット販売できるし。Solarisに入れちゃうのかもね。
217NAME IS NULL:2011/07/15(金) 13:56:05.33 ID:???
ウェブサイトはサービスであって、製品では無い
ので、GPLライセンスで十分

とか書いたら信じるの?
218NAME IS NULL:2011/07/15(金) 19:35:21.79 ID:???
>>217
製品とかサービスとか関係ない。

MySQLは営利企業のソフトだぞ。
当然、そのソフトを使用した段階で、ライセンスフィーが発生する。

ただ、その除外規定として、作成したソフトがGPLである場合、
MySQLを無料で使用できる。
219NAME IS NULL:2011/07/15(金) 20:59:59.49 ID:???
いやだから、何もソフト作って無いし
WordPress設置をプロダクト製作とするの?
使うだけならGPLライセンスだから無料は同意してもらえたのかな

手な具合に非常にあやふやだから、金儲けするのに心配なら素直にオラクルに連絡しれ
220NAME IS NULL:2011/07/15(金) 22:22:22.62 ID:???
>>214
PHPはFOSS除外規定があるって書いてあるがこれでPHPライセンスで配布できるってことじゃないか?
MySQL使ってても
221NAME IS NULL:2011/07/15(金) 22:32:06.75 ID:???
そのPHPライセンスってどういう物?
222NAME IS NULL:2011/07/15(金) 22:36:31.41 ID:???
223NAME IS NULL:2011/07/15(金) 22:42:42.71 ID:???
MySQLとPHPのライセンスがどうたらってPHP3までの話じゃないのか
224NAME IS NULL:2011/07/15(金) 23:07:24.79 ID:???
ブログとかでよく誤解されてるけど、PHPライセンスのバージョン3とPHP3は別物だから。

http://www.php.net/license/
> PHP 4 and PHP 5 are distributed under the PHP License v3.01, copyright (c) the PHP Group.
225NAME IS NULL:2011/07/15(金) 23:16:23.87 ID:???
結局PHPでMySQL使う場合はPHPライセンスでおk?
226NAME IS NULL:2011/07/15(金) 23:26:36.67 ID:???
>>214
GPLについて質問しているのにGPLの解釈は関係ないって、アタマ沸いてんのか?
227NAME IS NULL:2011/07/15(金) 23:33:31.94 ID:???
>>226
× アタマ沸く
○ アタマ湧く
228NAME IS NULL:2011/07/15(金) 23:43:24.13 ID:???
「が」と「に」の違いか。
229NAME IS NULL:2011/07/15(金) 23:46:45.14 ID:???
さるかに合戦会場と聞いて
230NAME IS NULL:2011/07/16(土) 12:21:32.03 ID:???
>>226
お前の質問の意図が外れてる。

GPLの規定について聞くなら、お前が示した1〜6の例示が間違ってる。
1〜6はMySQLの使用に関するライセンスであって、GPLの例にはならない。

MySQLのライセンスに抵触するかどうかで答えれば

1 -> 質問が非常に曖昧だけど、フリーのGPLのCMSを使用するという前提でOK (wordpress自体の改変をしなければ。改変した場合はGPLに従う)
2 -> 質問が非常に曖昧だけど、フリーのGPLのCMSを使用するという前提でOK (上記に同じ)
3 -> 代理店によって解釈が異なる。
  ・以前は、外部に作成したソフトウェアを譲渡しなければOK
  ・今は非常に微妙。
4 -> GPLに従って、派生物のソースを公開するならOK
5 -> GPLに従って、派生物のソースを公開するならOK
5 -> GPLに従って、派生物のソースを公開するならOK
231NAME IS NULL:2011/07/16(土) 13:11:29.22 ID:???
「MySQLのGPL」が特別だとでも思ってるのか?
GPLはGPL、それ以上でもそれ以下でもない。
232NAME IS NULL:2011/07/16(土) 16:38:33.37 ID:???
ここの多数の理解は6以外、無料でソースを公開しなくてもGPLに抵触しないでおk?
233NAME IS NULL:2011/07/16(土) 17:33:04.23 ID:???
有料でもいいんじゃないの?
公開するなら
234NAME IS NULL:2011/07/16(土) 19:53:10.76 ID:???
配布しなければオープンライセンスはなんの制限もない。
235NAME IS NULL:2011/07/16(土) 22:05:18.41 ID:???
MySQLは有料だといくらになるの?
236NAME IS NULL:2011/07/16(土) 23:12:15.54 ID:???
>>232
よく見ろ。>>230には6は無い。
237NAME IS NULL:2011/07/16(土) 23:29:50.12 ID:???
http://www-jp.mysql.com/about/legal/licensing/faq.html

GPLのMySQL使うならPHPのソースもGPLとしろよ
って解釈でいいの?
238NAME IS NULL:2011/07/16(土) 23:34:32.24 ID:???
>>230は相手にされてないことに気付け。
239NAME IS NULL:2011/07/17(日) 01:41:39.01 ID:???
>>233
書き方がまずかった
6以外、MySQLの有償ライセンスを購入する必要もないし、ソースを公開する義務もない、でOK?
240NAME IS NULL:2011/07/17(日) 01:52:59.58 ID:???
GPLに従って、派生物のソースを公開するならOK
241NAME IS NULL:2011/07/17(日) 02:48:25.53 ID:???
242NAME IS NULL:2011/07/17(日) 08:24:56.48 ID:???
「あなたの開発したソフトウェアが動作するためにはMySQLが必要ですか?→NO→MySQLをお試しください」
必要ないのになんで試さなければいけないの?
243NAME IS NULL:2011/07/17(日) 08:33:30.53 ID:???
オラクルだからさ
244NAME IS NULL:2011/07/17(日) 10:17:56.93 ID:???
http://nippondanji.blogspot.com/2009/05/foss-license-exception.html
例外規定があるから、派生物がphpならソースを公開しなくてよいだろ?
245NAME IS NULL:2011/07/17(日) 10:41:05.96 ID:???
その規定はGPLを適用しなくてもよいということであって、認められているのは
いくつかのオープンソースライセンス。
それ以前に、phpで書いたプログラムは普通ソースのまま配布するだろ。
246NAME IS NULL:2011/07/17(日) 11:34:26.73 ID:???
phpがスクリプト言語でもソース公開の義務とは別だろ
少なくとも上の3の場合とかソースの公開の義務はないだろ
5でphp部分を改変して納品しても、相手先はソースを読めても世間に公開する義務はないと思うな
247NAME IS NULL:2011/07/17(日) 11:50:28.40 ID:???
世間に公開する義務なんてもともとねーだろ
248NAME IS NULL:2011/07/17(日) 12:16:29.40 ID:???
>>246
なんかここのところトンチンカンな主張する奴ががんばっていると思ったが、そんな
ライセンスの基本的なことすら理解してないんだ。
GPLについても「なんか伝染する怖いもの」程度の認識しか持っていないんじゃないのか。
249NAME IS NULL:2011/07/17(日) 13:21:44.25 ID:???
GPLのプログラムにソケットで接続したプログラムは全部GPLだあ!なんてタワゴトを言っているのは、
ここの基地外くらいのもん。
んなこと言ったら、LinuxというOS上でプロプリエタリなプログラムなど一切作れないだろうが。
250NAME IS NULL:2011/07/17(日) 14:48:58.52 ID:???
きちがいのあいてすんな
251NAME IS NULL:2011/07/17(日) 15:09:37.91 ID:???
プロプリエタリってなに?
252NAME IS NULL:2011/07/17(日) 15:10:17.10 ID:???
>>246
世間に公開する義務はないよ。権利だけ持ってる。
253NAME IS NULL:2011/07/17(日) 15:17:49.52 ID:???
じゃぁ何の義務があるの?
254NAME IS NULL:2011/07/17(日) 20:25:57.06 ID:???
>>253
別に何も
255NAME IS NULL:2011/07/19(火) 21:20:08.91 ID:???
これで独立できる

売るものはスマートフォンアプリ WEBサイト運営
サーバーはクラウド VPS
電話はスマートフォンSkype
オフィスは地方にプレハブ型の格安高性能オフィスを建て(300万〜500万)
レンタル自習室&シェアオフィスで収入を得ながらそこで開発する
http://tinyurl.com/43xmk7m
http://tinyurl.com/3mopkfy
256NAME IS NULL:2011/07/23(土) 14:03:36.36 ID:???
>>249
ライセンスを認識していないのはお前のほう。

http://www-jp.mysql.com/about/legal/licensing/index.html
GPL ライセンスに基づくオープンソースアプリケーションを開発・頒布する場合、お客様は MySQL を GPL ライセンスに基づいて無償で使用することができます。

要約するまでもないけど「GPLでアプリを作る場合に、使用するMySQLもGPLになる。」ってこと。
GPLでアプリを作らなきゃ、当然、MySQLもGPLにはならない。
257NAME IS NULL:2011/07/23(土) 14:14:41.42 ID:???
何日間続いてるんだこの話
>>241で十分だろ
MySQL使ってないのならMySQLを使え、必要なくてもMySQL使えウエッヘヘヘヘ
258NAME IS NULL:2011/07/23(土) 14:16:19.65 ID:???
「MySQLはGPLだ!」って認識が間違ってるんだよ。

正確には
「MySQLは、一定の条件の下でGPLとして使用できる」
であって、

通常は
「MySQLはOracleの商用ソフトなので、ライセンス購入して下さい。」
になる。
259NAME IS NULL:2011/07/23(土) 14:19:54.38 ID:???
MySQLを使う必要が無いって言ってるのに使えというのはどういうことか
必要ないって言ってんじゃん
260NAME IS NULL:2011/07/23(土) 14:54:06.00 ID:???
理系ってちょっと違った表現するとすぐ突っ込んでくるから面白いよな
261NAME IS NULL:2011/07/23(土) 17:57:49.30 ID:???
>>258
こうもしつこいと、意図的にデタラメを流布しようとしているとしか思えんな。
262NAME IS NULL:2011/07/23(土) 18:32:52.75 ID:???
ちゅうこたー、
MixiやGoogleもMySQL使ってるし、彼らのコードはGPLなわけだ。
社員が外に流しても問題ないわけだ。
機密保持義務とGPLどっちが強いんだろ。

ちなみに、facebookやgreeはphpだから特例だ。twitterはrubyだっけ。

これだけの大プレイヤーが使っててMySQLも何も言わないんだし、配布なしの自社利用は制限なし、と思えばよかろう。
263NAME IS NULL:2011/07/23(土) 21:05:15.72 ID:???
>>261
どの辺がデタラメ?>>258じゃないけどわからんので教えて
264NAME IS NULL:2011/07/23(土) 21:13:34.44 ID:???
>>262
勘違いしてるみたいだけど、Google等は自社で開発したシステムをユーザーに利用させているだけであって、
システムそのものを販売・頒布しているわけではないからGPLかどうかという議論にすらならない。
265NAME IS NULL:2011/07/23(土) 22:23:07.24 ID:???
>>263
どのへんもなにも、全部。
GPLとのデュアルライセンスであるのは周知のことだと思うが、
一旦GPLでライセンスされたソフトウェアであれば、それをGPLの
下で再配布するのに「一定の条件」など付けることはできない。
配布されるモノは同じでもライセンス的には両者はお互い別物だと
いうことが理解できてないんだろう。
266NAME IS NULL:2011/07/23(土) 23:13:33.39 ID:???
>>264
いや、自分も同意見だけど、
いまここで言われてることを元にしたら
>>262なことになるってこと。
267NAME IS NULL:2011/07/24(日) 11:09:42.92 ID:2of7b51i
mysqlはdeleteが遅いという記述を見たことあるんですが、というかよく見るんですが
ではdeleteしたい時はどうしたら良いのか気になります

その行の利用可能/不可能を判定するカラムを追加して、deleteしたい時は利用不可にし、
サーバに余裕がある時間帯にクーロンでdelete実行する。…みたいなやり方で良いんでしょうか?
268NAME IS NULL:2011/07/24(日) 11:53:21.72 ID:???
で、ついでにインデックスの更新をしておくと
269NAME IS NULL:2011/07/24(日) 12:26:08.88 ID:???
パーティショニング機能を使って過去データを一気にDROPするのがいいんだけど
実際にやってる人はまだあまりいない。
フラグ立てて論理削除で済ませるのはアリだと思う。
ただなんにしろ自分のシステムで実際に遅いかどうかを確認してからの方がいい
270267:2011/07/24(日) 12:26:39.93 ID:2of7b51i
>>268
すみません、インデックスの更新ってどういうことですか?
今調べたら、 ANALYZE TABLE category; ってのが出てきました

267のdelete処理の後、このテーブルのインデックスがcategoryだとしたら
ANALYZE TABLE category;ってすればいいんでしょうか?
271268:2011/07/24(日) 12:40:05.24 ID:wJQBLiqA
インデックス貼ってないんだったら要らんだろうけど

俺は OPTIMIZE TABLEでやってる
レファレンスマニュアル見たけど ANALYZEとOPTIMZEの違い、よく判らんw
それから

ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
とあるから

ANALYZE TABLE category
ってのは、この場合 インデックスの名称ではなくテーブル名称になるんじゃ?

272NAME IS NULL:2011/07/24(日) 18:05:21.96 ID:???
googleはNoSQLだろ。
内部的にもMySQLをrdbに使用しているとは思えない。

知識不足が酷いな。

>>265
>一旦GPLでライセンスされたソフトウェア
だから、その認識が間違ってるんだって。

MySQLは、GPLでライセンスしていない。
ただし、OSSの発展のため、OSSのソフトがGPLである場合のみ、
MySQLをGPLライセンスとして無料で使用できる。
(まあ、MySQLを改変するケースなんて無いだろうから、ほとんど無意味だけど。)

良くわからないのは、なんでMySQLの本家サイトのライセンスについて読まずに、
GPLにばかり拘って、GPLの条項についてのみわめいているのか。。。

http://www-jp.mysql.com/about/legal/licensing/index.html

あと関係ないけど、GPLだからって別に無料ってわけじゃないぐらい知っているよね?
273NAME IS NULL:2011/07/24(日) 18:10:53.73 ID:???
>>272
おおかみが来たぞ〜♪
274NAME IS NULL:2011/07/24(日) 18:36:56.64 ID:???
>>272
オマエがわからんw。Web上の「解説」しか読まずに、しかもそれを
曲解してトンチンカンなことを主張しているのか。

ライセンス条項といったらEnd-User License Agreementのことだろ。
Windows版ならインストール時に必ず読まされるはずだぞ。
275NAME IS NULL:2011/07/24(日) 18:45:17.48 ID:???
>>272
実際Googleでも使われてるんだがな。
InnoDB関係でコードを寄贈したこともある。
どっちが知識不足なんだろうねぇ。
276NAME IS NULL:2011/07/24(日) 22:13:00.34 ID:???
>>272
> MySQLをrdbに使用しているとは思えない

妄想乙
277267:2011/07/24(日) 22:23:04.32 ID:???
>>269
ですね、ちゃんと速度を確認してみます
ありがとうございました

>>271
optimizeってのもあるんですね
自分のdbにあうのを見つけてやろうとおもいます
ありがとうございました
278NAME IS NULL:2011/07/25(月) 01:12:28.19 ID:???
googleほどMySQLをたくさん使っていた企業はこれまでなかったし今後も出てこないだろうね。
279NAME IS NULL:2011/07/25(月) 06:23:14.59 ID:???
>>278
妄想乙
280NAME IS NULL:2011/07/25(月) 06:25:11.54 ID:???
googleは確かにMySQLよく使ってるけど
突出してるのはAjaxじゃね
281NAME IS NULL:2011/07/25(月) 07:24:53.57 ID:???
290
 |  /l、 ???
 | (゚_ 。 7  ツンツン
 し⊂、 ~ヽ
    しf_, )ノシ
282NAME IS NULL:2011/07/25(月) 08:09:33.86 ID:???
Googleはほんの一部でしから使ってないだろう。
基本はBigTableとか独自のシステムだろう。

Ajaxかぁ。そうくるとは。返す言葉もない。
283NAME IS NULL:2011/07/25(月) 11:39:38.99 ID:???
>>279
>>282
ゴミはレスすんな。

GoogleはMySQLを使って事業を始め、しばらくそれでやってきたんだよ。
ただし、SQLなどかませずに、MySQLのindexに直接アクセスを掛ける手法。
切り替えたのは5年ほど前だ。
284NAME IS NULL:2011/07/25(月) 22:39:37.35 ID:???
>>283
妄想乙
285NAME IS NULL:2011/07/26(火) 05:46:46.83 ID:???
>>260
なるほど、分かった。お前らにとっては「ちょっとの違い」なんだな。つまり量の問題。
しかし、俺達は、その「ちょっと」が致命的な場合は訂正したくなるんだよ。
些細な問題なら指摘しない。質の問題なんだ。

レポートも卒論も質は議論されず量のみで評価される教育を受けると、
そうなってしまうんだな。分かった気がするよ。
286NAME IS NULL:2011/07/26(火) 07:53:59.22 ID:???
ちょっとの違いと些細な問題を区別するのはちょっとの違い。
287NAME IS NULL:2011/07/26(火) 15:23:27.93 ID:???
>>285
妄想乙
288NAME IS NULL:2011/07/27(水) 01:09:18.47 ID:???
ちょっと足し算と割り算を間違えたくらいでプログラム落ちるなよw
みたいな感じのちょっとだよね、文系の人の「ちょっと」って。
289NAME IS NULL:2011/07/27(水) 03:21:57.04 ID:???
>>288
妄想乙
290NAME IS NULL:2011/07/27(水) 09:21:55.45 ID:???
足し算と割り算を間違えるってどういう頭の構造しているんだ?
291NAME IS NULL:2011/07/27(水) 11:43:42.97 ID:???
>>290
+と÷は記号が似てるジャン
292NAME IS NULL:2011/07/27(水) 12:01:16.04 ID:???
まぁ7×3を無意識で23って書いちゃうような事は偶にある
293NAME IS NULL:2011/07/27(水) 12:27:03.97 ID:???
>>292
ねぇよw
って言って欲しいのか?
294NAME IS NULL:2011/07/27(水) 12:29:08.48 ID:???
7*7を47にすることならある
295NAME IS NULL:2011/07/27(水) 12:31:00.82 ID:???
高校生の頃から肝心な数式はあってるのにそういうミスが多い奴って
セミコロン付け忘れて「おいー、またセミコロン付け忘れてるぞお前ー」
って言われるタイプだよね
296NAME IS NULL:2011/07/27(水) 12:32:56.44 ID:???
わかってんならつけといてくれよブツブツ
とコンパイラに対して呟きながら修正する、とw
297NAME IS NULL:2011/07/27(水) 12:34:59.97 ID:???
>>295
やべぇ、俺だ
298NAME IS NULL:2011/07/27(水) 12:38:48.74 ID:???
最後に一括してセミコロン付けるといいよ。 \n → ;\n みたいな置換で。
299NAME IS NULL:2011/07/27(水) 14:30:36.80 ID:???
>>298
それ、すでについてる場合、
二重についちゃうだろ

正規表現で
置換前 (.+?[^;])$
置換後 $1;

でいけると思う。
300NAME IS NULL:2011/07/27(水) 14:37:51.11 ID:???
つかない行だって多いんだし、どうせつけ忘れなんて2,3行だべ
301NAME IS NULL:2011/07/27(水) 15:21:02.81 ID:???
まぁ、うっかりしてる奴は
改行するだけでセミコロン付いちゃうような時には
逆にうっかりしてセミコロン付けちゃうと思う
302NAME IS NULL:2011/07/27(水) 16:16:14.46 ID:???
うっかりしている奴はロジックがうっかりしているケースが多いので
辞めた後デバッグするやつらが悶絶するw
303NAME IS NULL:2011/07/28(木) 00:01:15.09 ID:???
>>299
セミコロンは2重になっても問題ないから
304NAME IS NULL:2011/07/28(木) 06:30:48.78 ID:???
>>303
つ セミコロン演算子
305NAME IS NULL:2011/07/28(木) 21:05:47.95 ID:Q69TJPvM
SELECT * FROM `posts` AS `Post`
  WHERE
    `Post`.`parent_id` IS NULL
  AND
    `Post`.`status` = 1
  ORDER BY `Post`.`modified` DESC
  LIMIT 15

↑このようなSQLを毎回投げるテーブルに、インデックスを付けるなら、どこにつけたらいいですかね?
(parent_id = INT
modified = DATETIME)

modifiedでいいかな?
306NAME IS NULL:2011/07/28(木) 22:35:57.93 ID:???
数千件程度の小規模なテーブルで、explain付けて試してみるよろし >>305
307NAME IS NULL:2011/07/29(金) 15:44:12.00 ID:???
explain付けて試したら気持ち良かった
308NAME IS NULL:2011/07/29(金) 17:16:13.39 ID:???
>>307
どのへんがどんなふうに気持ちよかった?
309NAME IS NULL:2011/07/29(金) 22:58:23.51 ID:lVApXi4L
>>306
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE Post ALL NULL NULL NULL NULL 63200 Using where; Using filesort

こんなふうに出ました
これはどう見たらいいんでしょうか??
310NAME IS NULL:2011/07/29(金) 23:49:18.35 ID:???
どっちのカラムにインデックス付けたら、より効果的なのかを知りたいんだろ?
それぞれの場合で、同じSQL実行してexplainの結果比較したりするもんじゃないの?

explainでの結果の読み方が分らないというのなら、「mysql explain」でぐぐって
最初に出てきたこのページなんか良さそうだぞ。
ttp://nippondanji.blogspot.com/2009/03/mysqlexplain.html
311NAME IS NULL:2011/07/30(土) 00:31:32.07 ID:???
MySQLって企業で使うのにライセンス料いるの?
市況2のドル円スレで必要って言う奴がいて質問に来ました。
312NAME IS NULL:2011/07/30(土) 00:44:48.94 ID:???
んなこと聞くようなやつは、金を払ってシステム組んでもらえよ。
そのほうが安上がり。
313NAME IS NULL:2011/07/30(土) 04:58:22.56 ID:???
>>312
どうしてその方が安上がりなんだよw
314NAME IS NULL:2011/07/30(土) 05:35:14.68 ID:???
まぁライセンスについてはログ読め。
このスレでも少し前に語りまくってるだろ。
315NAME IS NULL:2011/07/30(土) 05:57:43.01 ID:???
インデックスを作成したら速くなるということなのですが、
インデックスの名前は自由なんですか?
インデックスを作ったあとはほっとけば速くなるのですか?
316NAME IS NULL:2011/07/30(土) 06:25:22.37 ID:???
>>314
ライセンスについては自分の意見を主張しあってるだけで何も解決してないじゃないかw
317NAME IS NULL:2011/07/30(土) 07:33:27.15 ID:???
>>315
MySQLの質問というより↓で訊け

SQL質疑応答スレ 11問目
http://hibari.2ch.net/test/read.cgi/db/1299305530/l50
318NAME IS NULL:2011/07/30(土) 07:57:30.73 ID:???
「主張しあってる」w
そう思ってるのは1人だけのような気がする
319NAME IS NULL:2011/07/30(土) 08:33:38.81 ID:???
>>313
MySQLに限らず、多くの場合、その無能な担当者の人件費より安く上がる。
320NAME IS NULL:2011/07/30(土) 08:35:14.28 ID:???
>>316
主張し合うも何も、ライセンス条項がすべてだよ。読めよ。
GPLで使うならタダ。GPLで使えないなら買え。企業とか個人とか関係ない。
321NAME IS NULL:2011/07/30(土) 08:37:59.19 ID:???
>>315
名前は予約語じゃ無ければOK。日本語でも良いらしい(ここで聞いた話)。
インデックスはSQLの基本なので、MySQLのドキュメント2画面分ぐらい読んでおくと良いよ。
322NAME IS NULL:2011/07/30(土) 08:51:26.33 ID:???
インデックス名なんて内部で使うただの識別子にすぎないからなんでもいいけど
だいたいルール(命名規則)としてどういうものをつけるかというのは決まってる
人によってバラバラだけど
323NAME IS NULL:2011/07/30(土) 09:42:42.82 ID:???
>>322
「決まってる」のに「人によってバラバラ」ってどういうこと?
324NAME IS NULL:2011/07/30(土) 09:56:37.43 ID:???
>>323
カレーの作り方でも、目玉焼きに何をかけるかでも、
だいたいいつも決まってるけど、人によってばらばらだろ。
325NAME IS NULL:2011/07/30(土) 11:15:48.80 ID:???
>>324
はいはい。お前がいつも正しいよ。
326NAME IS NULL:2011/07/30(土) 13:53:33.25 ID:???
素人です。mysql で簡単な掲示板を作成したいのですが、一つ質問があります。
本文の入力でsql インジェクション対策はどのようにするのが一般的なのでしょうか?
現在はpost された値をそのままインサートしています。このとき、”を入力されると簡単にsql インジェクションされます。
327NAME IS NULL:2011/07/30(土) 14:52:43.30 ID:???
それはプログラムの方の問題だな
328NAME IS NULL:2011/07/30(土) 15:17:03.96 ID:???
>>326
どうせPHPだろうからPHPスレ行って聞いて来い
329NAME IS NULL:2011/07/30(土) 17:04:45.47 ID:???
330NAME IS NULL:2011/07/30(土) 19:47:53.15 ID:???
MySQL3系以来の素人です。
この度仕事でHAクラスタを組まなければならなくなり色々調べています。

Semi-Syncronus Replicationについて質問なのですが
スレーブが落ちてしまった場合、マスタの更新はタイムアウトするようですが、こういう場合の備えはどうすればいいのでしょう?

例えば、スレーブが死んだらsemi-syncをasyncに切り替えるにはどうすればいいのでしょう?

それともスレーブを2台以上にするのが常道でしょうか?
その場合でもマスタのネットワークアダプタが死んでしまったらやっぱり待ちになるような気がするのですが、それは仕方がない事なのでしょうか?
331NAME IS NULL:2011/07/30(土) 21:31:20.65 ID:???
レプリケーションが生きてるかどうかをHeartbeatやLifeKeeperで
監視して、壊れたらVirtual IPの張り替えとかするんだと思う。

Semi-Synchronous Replicationでクラスタ組んだ人まだ見たことない。
人柱頑張って!
332NAME IS NULL:2011/07/30(土) 21:40:09.22 ID:???
sqlのselectで分からないところがあります、ご教授お願いいたします。

data00 (id int, val00 text)
data01 (id int, point int, val01 text)

data00の全行をselectする必要があります。data01はdata00に関連付けされたデータです。
data00.id == data01.id でpoint最小の1つを表示させるのですが、方法がわかりません。
data00.idに関連付けされたdata01.idが1つでもあれば簡単ですが、data01がない場合もあります。
この場合はpoint,val01は空で、data00 のデータだけを取得する必要があります。

この方法を教えていただけないでしょうか? sql初心者ですがよろしくお願いいたします。
333NAME IS NULL:2011/07/30(土) 22:21:24.05 ID:???
>>331
ありがとうございます。

semi-synchronus replicationのプロトコルは以下のようになってるみたいです。
1. トランザクションをコミットする
2. レプリカからのACK(トランザクションを受信したかどうか)を待つ。
 ACKがない場合はここでタイムアウトが発生する。
3. クライアントにコミットが成功したことを知らせる。

・タイムアウトが発生したら、それ以降はsemi-syncronus replicationがdisabledになる。
・ネットワークのACKをWAITしている間、他のトランザクションはプロックされない。(ちょっと意味不明ですがクライアントに待ちが発生しないってことかな?)

すなわちタイムアウトはするけどトランザクションは成功するよん、
ってことかな。要するに>>330の懸念は織り込み済みみたいです。(多分…)

余談ですが、2phase commitみたいなイメージだったのでパフォーマンスを懸念していましたが、
ローカルのcommitが先行するみたいなのでそれも杞憂かもしれませんねぇ。
334NAME IS NULL:2011/07/30(土) 23:54:09.19 ID:???
>>332
「SQL 外部結合」とか「SQL outer join」とか「SQL left join」とかでぐぐってみなはれ。
335332:2011/07/31(日) 13:19:04.14 ID:z65ORH9i
>>334
ありがとうございます。
ググってみたところ実装できそうです(^^
336NAME IS NULL:2011/08/01(月) 19:52:54.78 ID:???
http://item.rakuten.co.jp/itjuken/10000002/
ここって酷くね?
MySQLってオラクルマスターのチケットで受験できるのに、1万円近く高くしてやがる。
無知は余分に金払えってか?
こういうのどこに言えばいいんだ。消費者センター?、公正取引委員会?
337NAME IS NULL:2011/08/01(月) 20:09:57.88 ID:???
ORACLE
338NAME IS NULL:2011/08/02(火) 06:44:49.63 ID:jJIdpw0B
初心者すぎてあほかと思われるだろうけど、
インデックスつけたら140msとか70ms(1ページ20クエリぐらいあった)かかってたクエリが全部0msになったwすげえw

フレームワークのSQLクエリログのクエリにかかった時間を見ながら
適当に組み合わせて試行錯誤したけど、3つのインデックスつけるのが一番いい結果になった。

インデックスはたくさんつけてもデメリットないのかな?
ファイルサイズがでかくなるとか聞いたけど、、、
339NAME IS NULL:2011/08/02(火) 06:46:59.71 ID:???
>1ページ20クエリぐらいあった
ここを1回でとれよ
340NAME IS NULL:2011/08/02(火) 08:55:14.57 ID:???
>>338
>インデックスはたくさんつけてもデメリットないのかな?
>ファイルサイズがでかくなるとか聞いたけど、、、

そりゃでかくなるよ、インデックスがゼロbyteで済むわけないから。
それと、insertおよびインデックス対象カラムの内容が変わるようなupdateは
インデックスの更新も伴うから、それなりに遅くなる(はず)。
341NAME IS NULL:2011/08/02(火) 15:32:38.82 ID:jJIdpw0B
>>340
なんか初心者からしたら、
全部にインデックスつけたらよくね?って結論になりそうです
全部つけた場合具体的にどのような障害?が起こりえますか?
342NAME IS NULL:2011/08/02(火) 15:42:36.35 ID:???
>>341
INSERTするたびにインデックス再構築が起こるでしょ
無駄なインデックスは書き込みを遅くするだけ
343NAME IS NULL:2011/08/02(火) 16:29:47.83 ID:jJIdpw0B
INSERTが重くなる、がデメリットですね
ありがとうございます
344NAME IS NULL:2011/08/02(火) 21:33:55.31 ID:???
正しくは更新処理だ
345NAME IS NULL:2011/08/02(火) 22:47:26.82 ID:???
SSDで運用してる人いる?
ランダムWriteが激しいので書き換え寿命が気になって仕方ないです。
データファイル、インデックスファイル、バイナリログの更新に対してTrimって意味あります?追記型だったら意味ないかな?
ちなみにストレージはInnoDBです。

そもそもストレージエンジンがTrim発行できるの?
RAWデバイス(ってかDIRECT IO)だったらできる?
346NAME IS NULL:2011/08/02(火) 22:50:57.34 ID:???
>>338
全部0msになるはずなくね?
ディスクのシークタイムが数msあるだろ
347NAME IS NULL:2011/08/02(火) 23:54:26.17 ID:???
>>345
基本trimが発行されるのはファイルを削除したとき。
古いバイナリログを削除するときにいまどきのOSならtrimが出せるはず。
データファイルは無理、っていうかそこにデータがあるんだからtrimしちゃだめ。
あと寿命が気になるなら業務用のSSDを買え
348NAME IS NULL:2011/08/03(水) 00:11:39.39 ID:???
やっぱりファイル単位ですか。
ログの削除ぐらいですね。意味あるのは。
ログはシーケンシャル書込でいいんだろうから独立したHDDでもよくって、

ということはコンシューマSSDでRAID組んでもOKじゃん!
ioDriveもバッテリー付いてないみたいだし?(買えないけど)
349NAME IS NULL:2011/08/03(水) 00:15:01.97 ID:???
RevoDrive3が気になります(安いっす)
SandForceコントローラってエラー訂正がしっかりしてるイメージがあるんだけど、
ioDriveと比べてどうなのかな?
350NAME IS NULL:2011/08/03(水) 00:50:53.64 ID:???
InnoDBのアーキテクチャ見てみた
MVCCだとかそうじゃないとかいろんな情報があったわけだが
ポスグレとは根本的に違うのね。バキュームがないわけだ。

追加か更新がほとんどで削除なんてめったにないけど
これだったら、データファイルの削除ブロックにTrimコマンド発行すればいいように思えるんだ…

OSのAPIからなにから書き換えんと無理か?
351NAME IS NULL:2011/08/03(水) 03:21:41.56 ID:???
今風のUI。Ajaxを使ったPHPベースのMySQL管理システム「MyWebSql」
http://www.moongift.jp/2011/07/20110731-2/
これ便利そうだな、phpmyadminより良さそう
352NAME IS NULL:2011/08/03(水) 07:51:42.86 ID:FuNOWK6t
またセキュリティホール増やすのか
353NAME IS NULL:2011/08/03(水) 07:53:01.62 ID:???
moongiftってRubyスレで暴れてた基地外じゃないか
354NAME IS NULL:2011/08/03(水) 08:56:26.55 ID:ethrgDzv
>>353
kwsk
355NAME IS NULL:2011/08/04(木) 14:05:52.54 ID:???
このMySQL-MHAってツールはどのくらい凄い事なんでしょうか?


「DeNAが社内利用しているMySQLの自動フェイルオーバーツール、オープンソースで公開開始」
http://www.publickey1.jp/blog/11/denamysql_1.html
356NAME IS NULL:2011/08/04(木) 15:17:13.44 ID:???
知らん
357NAME IS NULL:2011/08/04(木) 15:39:23.52 ID:???
>>355
・Active-Stanby構成のHAクラスタがいらないところ。
・つまりサーバーリソースが無駄にならない。
・寝覚めが良くなる。

問題はR/W Splittingしている場合のフェイルオーバー時の挙動。
358NAME IS NULL:2011/08/04(木) 19:35:34.41 ID:???
>>355
・健康で文化的な最低限度の生活を営む権利を有する。
・納税の義務を負う。
・その能力に応じて、ひとしく教育を受ける権利を有する。

問題は施行後に獲得された領土についての場所的適用範囲。
359NAME IS NULL:2011/08/05(金) 04:16:04.01 ID:j8SQmHpl
WorkBenchの表示フォント サイズが変更できん
おっさんには酷過ぎる
360NAME IS NULL:2011/08/05(金) 14:44:52.53 ID:???
メガネを換えるんだ
361NAME IS NULL:2011/08/05(金) 15:01:22.87 ID:???
メガネは顔の一部です
362NAME IS NULL:2011/08/05(金) 16:45:57.77 ID:???
遠近両用
363NAME IS NULL:2011/08/05(金) 18:02:57.18 ID:???
InnoDBがクソすぎる
364NAME IS NULL:2011/08/05(金) 18:21:17.88 ID:???
クソも食えば栄養になる
365NAME IS NULL:2011/08/05(金) 20:58:47.98 ID:???
その栄養がまたクソになる
366NAME IS NULL:2011/08/05(金) 21:30:58.77 ID:???
そのクソは、やがてinnoDBとなる
367NAME IS NULL:2011/08/05(金) 21:40:27.01 ID:???
InnoDBがクソすぎる
368NAME IS NULL:2011/08/06(土) 00:01:47.76 ID:???
クソも食えば栄養になる
369NAME IS NULL:2011/08/06(土) 00:54:52.85 ID:???
http://www.youtube.com/watch?v=hj1B8OGgwYc
検証番組とかいらないと思うよ。
とりあえず謝らないと、それはそれで問題だから、まあ、謝ったの?は正しいと思うけど。
これってさ、間違えを犯してさ、今度から気をつけようってレベル?のことじゃあないから。
風評被害で自殺してる農家だっているんだぜ?
震災の時って、日テレとかフジでも中継の時に不謹慎なことを
やってる人がいたけど、その程度のメディアリテラシーの人間が番?組作ってるから、
その程度の人間しか見なくなって、見ると人がどんどん減ってるっ?てことに、
そろそろ気がついたほうがいいよ。
まあ、オレは見ないから関係ないけどね。?
MYSQL5 <-注目
370NAME IS NULL:2011/08/06(土) 10:48:46.02 ID:???
質問
検証できる環境が手元に無いので聞きたいんだけど
mysqldumpでスキーマ別でダンプデータとって、
それをそのまま同じスキーマにリストアしてしまった場合って
データは二重に登録されてしまう?
それともその後差分があったとしたらその差分が消されるとかでしょうか
371NAME IS NULL:2011/08/06(土) 10:51:42.76 ID:???
試してから質問しろ
372NAME IS NULL:2011/08/06(土) 11:14:17.65 ID:???
>>370
ヒント。プライマリーキー。
373NAME IS NULL:2011/08/06(土) 11:48:10.82 ID:???
>>371
試したいんだけど、数日検証できない状況にいるからすぐ知りたくて

>>372
ありがとう
てことは、データが二重に登録されることはないんだね
374NAME IS NULL:2011/08/06(土) 15:45:39.16 ID:lyPiye8U
sql初心者です。 簡単な掲示板を作成しているのですが、最新の書き込み100件を古い順に取得する方法がわかりません。
limitとorder byで先頭から100件なら簡単ですが、終わりの100件をどのように取得すればよいでしょうか?
375NAME IS NULL:2011/08/06(土) 15:58:08.03 ID:???
どんなテーブル構成かわからんけど、
order by desc でどう?
376NAME IS NULL:2011/08/06(土) 18:52:48.68 ID:???
テーブルは簡単で、less_no int, msg textです。
たとえば、書き込みが900件だと 801〜900番までを順に取得したいです。descだと逆転して900番から上に取得になります。
レスのサイズを先に取得して、limitで開始位置を指定すればできますが、もう少しスマートで簡単に取得できる方法があれば教えていただきたいですm(_ _)m
377NAME IS NULL:2011/08/06(土) 19:20:28.88 ID:???
>レスのサイズを先に取得して

レスのサイズって何?
378376:2011/08/06(土) 19:30:13.25 ID:???
>>377
テーブルの行数、掲示板のレスの数です。レスの数がわかれば -100でlimitの開始位置がわかります。
379NAME IS NULL:2011/08/06(土) 20:02:22.02 ID:vIoRVp2z
初心者です。mysql5を使ってて、InnoDBのテーブルについて質問です

現在100行のデータが入ってるテーブルに、新たに101行目のデータをInsertするとき
1)新しいデータが何行目か取得する
2)カラムに、「このデータは101行目だよ」という内容で新規insertする
3)1,2の処理の間に、他のデータのinsertをさせない
…とするにはどうしたら良いでしょうか?
自分ではこのやり方が出来ないので、結果は同じってことで一度insertした後にlastinsertIDを取って
updateを実行してますがこれだとムダな負荷がかかってる気がします

ストレートに1〜3の処理を実行する方法はないんでしょうか?
380NAME IS NULL:2011/08/06(土) 20:25:24.66 ID:???
>>379
トリガを使うケースに見える。

ただ、DELETEしたら番号崩れるじゃないかとか
他に心配することがたくさんありそう
381NAME IS NULL:2011/08/06(土) 20:48:19.81 ID:vIoRVp2z
>>380
トリガていうんですか、、調べてみます
取得したい値はオートインクリメントの主キーなんですが、deleteしたら崩れるんでしょうか?
不安になってきた、今のやり方のままで良いのかなぁ…
382NAME IS NULL:2011/08/06(土) 21:41:01.98 ID:???
番号崩したくないならDELETEしなきゃいいじゃない
383NAME IS NULL:2011/08/06(土) 23:08:47.41 ID:???
それだとDELETEの存在意義が無いように思えるのですが
384NAME IS NULL:2011/08/06(土) 23:14:59.28 ID:???
>>381
取得する値(キー)じゃなくて設定したい値(「このデータは101行目だよ」)のことだろ。
なにをどうしたいのか、もうちょっとわかるように説明すれ。
385NAME IS NULL:2011/08/06(土) 23:19:09.31 ID:???
初心者なので何をどう説明すればちゃんと理解してもらえるのかわかりません
386NAME IS NULL:2011/08/06(土) 23:35:03.78 ID:???
オートインクリメントの主キーがDeleteしたら崩れるとか
何言いたいのかわからない
387NAME IS NULL:2011/08/06(土) 23:46:19.19 ID:???
わからないのは私の説明不足ではなく、あなたの理解力が足りないせい?
388NAME IS NULL:2011/08/06(土) 23:51:42.20 ID:???
連番にしたいのか?やめとけ
389NAME IS NULL:2011/08/06(土) 23:51:42.51 ID:???
AがBです。
でも、AがBっておかしくない?

日本語以前の問題かもしれない。。
390381:2011/08/07(日) 00:13:15.53 ID:???
>>384
なるほど!そういうことですか!勘違いしてました、納得出来ました

a-1)既存データが100件ある。最新データの主キーのidは100で一致してる
a-2)次にinsert予定のデータが何件目になるか判定する >101である
a-3)「101件目だよ」としてinsertする(id=0 でinsert、auto_incrementのため)

b-1)既存データが70件ある。最新データの主キーのidは100。(30件削除したのでデータ数とは一致しない)
b-2)次にinsert予定のデータが何件目になるか判定する >101である
b-3)「101件目だよ」としてinsertする(id=0 でinsert、auto_incrementのため)

これが両方成立するような、スマートなやり方を知りたいんです
最初に書いたような、とりあえずinsertしてlastinsetIdとって対象カラムをupdateすれば確実なんですが
何か他にやり方あるかなって。。

実際の計画としては「101件目だよ」の部分には別のデータが入ります
idをパラメータにした http://hoge.com/id/101 てページがあって、
それをgoo.glのshortURLに変換して 101件目だよ のカラムに入れてInsertしたいんです
なので、自己のIDの値がinsertの時点で必要なんです
最初からこう書いた方がわかりやすかったかもですね、すみません
391NAME IS NULL:2011/08/07(日) 00:32:43.41 ID:???
1) IDを決める
2) IDをもとにしたショートURLを求める

これって2)を1)と同時にやる必要なくない?
ショートURLあらかじめ10万個ぐらい作っておいて
SHORT_URL(ID, URL)テーブルに入れておけばいいんじゃ
392NAME IS NULL:2011/08/07(日) 01:22:04.74 ID:???
>>391
何の話?
393NAME IS NULL:2011/08/07(日) 01:24:30.86 ID:???
>>390
理解したと思ったら、他の奴のレスをもう一回読んで、
本当に必要な設計を再検討してみると良いよ。
単に auto increment 使うのが最適解に100万円。
394NAME IS NULL:2011/08/07(日) 01:27:43.40 ID:???
mysqlにSEQUENCEはないからスマートな手段もないんじゃね。
goo.glのAPIのリターンを待つ必要があるのが最大のポイントじゃね。
395381:2011/08/07(日) 01:43:30.67 ID:???
>>391
確かにそうなんですけどね、apiがエラーした時が恐いし
>>393
もう一回読んでみます
>>394
goo.gl、恐くなってきたな〜

皆さん意見ありがとうございました
396NAME IS NULL:2011/08/07(日) 05:05:39.69 ID:???
IDテーブルに1レコード作って自分で管理すれば?
397NAME IS NULL:2011/08/07(日) 05:53:05.99 ID:???
>>374
SELECT * FROM (SELECT * FROM t ORDER BY less_no DESC LIMIT 100) AS recent ORDER BY less_no ASC;
398381:2011/08/07(日) 06:41:29.69 ID:???
>>396
自前でショートURL機能実装した方が良い気もするんですが。。どうなんですかねぇ
399NAME IS NULL:2011/08/07(日) 08:28:47.42 ID:???
ハード更改したんだけど、あまりパフォーマンスが変わらないから、
topで見たらシングルのまま動いてるみたい。

まんべんなくCPUを使うための設定って何か必要なのですか?

centos5でmysqlのバージョンは
Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (i686) using readline 5.1

DBはMyISAM型です。
400NAME IS NULL:2011/08/07(日) 08:36:13.28 ID:bgq2n8mg
mysql初心者です。phpで定義した配列$sample[N][N]のそれぞれのデータ全てをmysqlに保存するというコードを書きたいと思っています。
もしこのNなどが大きい場合、テーブルを作成する際に
CREATE TABLE test_table1 ( id int, name varchar(100) );の id int, name varchar(100)の部分がとても長くなり面倒だと思うのですが、多数の列を簡単に定義し、テーブルを作成する方法はあるのでしょうか?
文章がうまくなくて申し訳ございません、解答よろしくお願いします。
401NAME IS NULL:2011/08/07(日) 09:48:42.94 ID:???
phpスレ向きじゃあるまいか
402NAME IS NULL:2011/08/07(日) 10:02:52.17 ID:???
>>398
実在のドメインを書き込むな>>390
403NAME IS NULL:2011/08/07(日) 10:16:25.93 ID:???
>>402
なんかマズイの?
404NAME IS NULL:2011/08/07(日) 10:20:21.48 ID:???
例示のためのドメインが用意されてるんだからそれ使えってことじゃない?
405NAME IS NULL:2011/08/07(日) 16:08:17.02 ID:???
>>399
MyISAMは更新処理でテーブルロックするから、頻繁に更新を行うプログラムは
並列度1でしか動かない≒CPU1コアしか使えない
406NAME IS NULL:2011/08/07(日) 16:14:28.16 ID:???
>>400
Nの値に合わせて列を増やすのではなくて、行を増やすんじゃないの普通

CREATE TABLE test_table1 (
id1 INT,
id2 INT,
name VARCHAR(100),
PRIMARY KEY (id1, id2));

INSERT INTO test_table1 (id1, id2, name)
VALUES ($i, $j, $sample[$i][$j]);
407NAME IS NULL:2011/08/08(月) 12:29:41.81 ID:???
質問です。

PHP 5.2.17、MySQL 5.0.51a
文字コード utf-8

カラムにUNIQUEを設定したテーブルを作成し、
そのテーブルにレコード追加処理を試み、追加されたのち、
もう一度異なるレコードを追加する処理を試みると、
重複が一切ないにも関わらず、二度目の追加には失敗してしまいます。

テーブルを完全に空にすれば再度追加できるようになるんですが、
一度目の処理で追加されたレコードが1行でも残っていると失敗します。

長くなってしまいましたが、対処法を教えて下さい。
408NAME IS NULL:2011/08/08(月) 13:46:25.58 ID:???
テーブル定義とレコードを追加するプログラムと
エラーメッセージを見せてください
409NAME IS NULL:2011/08/08(月) 13:49:05.55 ID:???
特にエラーメッセージだな。
410NAME IS NULL:2011/08/08(月) 14:03:12.05 ID:???
特定のディレクトリにあるファイル(mp3, mp4 など)を、
MySQLを使って管理したいです。管理したいというのは、
「聞いた/聞いてない」「買った/借りた」などのチェックを、
ファイル単位で評価付けできるようにする、ということです。
どこからどう手を付けたらいいのか分かりません。
入り口を教えて下さい。
411NAME IS NULL:2011/08/08(月) 14:06:36.42 ID:???
まずはタイトルを管理するものでも作ってみては
そのタイトルの属性の一つとしてファイル名があるとか
412NAME IS NULL:2011/08/08(月) 14:11:14.21 ID:???
>>410
オンラインで、複数人でやるなら考えようだけど、
自分だけならiTunesとか使った方が幸せになれるのでは?
413NAME IS NULL:2011/08/08(月) 14:30:38.15 ID:???
ExcelかAccessでやってみて、それで何か不足があってから
MySQLを使い始めればいいと思う
414NAME IS NULL:2011/08/08(月) 15:42:25.61 ID:???
Wordで一覧表を作れば充分
415NAME IS NULL:2011/08/08(月) 16:06:39.91 ID:???
どうしてもDBでやりてぇってのなら

DB設計を語るスレ 4
http://hibari.2ch.net/test/read.cgi/db/1309828440/l50

こちらで
416407:2011/08/08(月) 22:59:28.86 ID:???
どうか上手く行きそうです。報告申し上げておきます。
>>408-409さん、レスありがとうございました。
遅れてしまい、申し訳ありませんでした。
417NAME IS NULL:2011/08/08(月) 23:20:44.89 ID:???
>>416
原因は何だったんだ?
418NAME IS NULL:2011/08/08(月) 23:26:17.27 ID:???
それは、な・い・しょ(ハート)
419NAME IS NULL:2011/08/09(火) 00:54:39.65 ID:mphQrePV
>>406
回答ありがとうございます。その方がよさそうですね。

またみなさんに質問なのですが、insertでwhere指定をする時にphp側で定義した変数$sampleの値を持つidをselectするというコードを書きたいのですが、
$result = mysql_query('SELECT id,name FROM sample where id = $sample');
とするとエラーが出てしまいます。どのようにすればよいのでしょうか?
420NAME IS NULL:2011/08/09(火) 01:01:43.60 ID:???
完全にPHPの話なのでそっちで聞いて下さい
421NAME IS NULL:2011/08/09(火) 01:09:48.06 ID:???
>>419
そのサンプルコードから察するに、$sampleは数字じゃなくアルファベットなんじゃないかな?
422NAME IS NULL:2011/08/09(火) 01:31:22.79 ID:mphQrePV
>>420わかりました phpスレでも質問してみます
>>421いえ、$sampleは数字尾で定義しています。それでもエラーがでます・・・
423NAME IS NULL:2011/08/09(火) 01:35:17.65 ID:???
>>419
'(シングルクオーテーション)なので$sampleが展開されない。
"(ダブルクオーテーション)で囲むか、下記のように変える
$result = mysql_query('SELECT id,name FROM sample where id = '.$sample);
424NAME IS NULL:2011/08/09(火) 01:37:16.45 ID:???
シングルクオートで変数展開はされねーだろ
425NAME IS NULL:2011/08/09(火) 02:13:09.43 ID:???
>>419
直し方はみんなが書いているとおりだけど、MySQLスレなので調べ方。
MySQL 5.1以上で、my.cnfかmy.iniに

[mysqld]
general_log = 1
general_log_file = general.log

と書いて再起動。
出てきたログを見ればそのプログラムのどこが間違っているかが分かる
426NAME IS NULL:2011/08/09(火) 11:51:32.07 ID:mphQrePV
>>423
>>424なるほど・・・変数を展開する時には"で囲むある必要があるとは知りませんでした・・・ありがとうございます!

>>425今も一応どこの行が間違えているなどは出ているのですが・・・ 一応やってみます。ありがとうございます。
427NAME IS NULL:2011/08/09(火) 11:59:15.28 ID:???
とにかくSQL関係のエラーが出たら
そのプログラムが出力してる通りのSQLをログ等で出して
そのままコマンドラインででも実行してみるのが近道
428NAME IS NULL:2011/08/09(火) 12:16:55.22 ID:???
クエリが弾かれたら、とりあえずクエリを見てみるって発想がなんで出てこないんだろう?
429NAME IS NULL:2011/08/09(火) 13:33:16.52 ID:???
おまえじゃないから
430NAME IS NULL:2011/08/11(木) 22:26:53.21 ID:???
Mysql使えると食っていけますか?

oracleとどっちがいいのか知りたいです。(将来的に稼ぐために)
431NAME IS NULL:2011/08/11(木) 23:46:06.56 ID:???
>>430
MySQLもOracleも、使えるだけなら三流
432NAME IS NULL:2011/08/12(金) 00:58:50.71 ID:???
MySQLはソース読めるなら食っていけると思う
サポートエンジニア募集してたし
433NAME IS NULL:2011/08/12(金) 10:06:47.85 ID:???
>>430
究めれば、そして周囲にそうだと認められれば、稼げるのはオラクルの方でしょうね。
434NAME IS NULL:2011/08/12(金) 13:07:35.28 ID:???
Oracleは使えるけどMySQL使えないなんて奴、使い物になるかよ
435NAME IS NULL:2011/08/12(金) 19:48:53.80 ID:HW0R2j9V
先生質問です。

hoge int(1) unsigned zerofill

hoge tinyint(1) unsigned zerofill

だとデータ量とか検索速度とか変わってきますか?
また、どうするのがベターですか?
436NAME IS NULL:2011/08/12(金) 20:00:59.81 ID:???
>>435
1桁でいいならなんでわざわざintにしようと思うんだ?
437NAME IS NULL:2011/08/12(金) 20:02:56.21 ID:???
>>436
ちゃかさないで質問に答えてください
438NAME IS NULL:2011/08/12(金) 20:03:52.82 ID:???
>>436
桁によって変えるのがめんどくさいから・・・かな・・・

やっぱり相応の型にしたほうがいいんですかね?
439NAME IS NULL:2011/08/12(金) 20:04:39.69 ID:???
>>437
ee・・だれだよ・・
440NAME IS NULL:2011/08/12(金) 20:09:50.66 ID:???
tinyint使ったことない
intとbigintだけにしたほうが好きだなー
441NAME IS NULL:2011/08/12(金) 21:32:11.93 ID:???
必要なデータ量が入る最適なデータ型が常識だと思うけど。
MySQLってintにしても桁数少なければtinyint扱いになるんだっけ?
そうでなければ、1桁でも4バイト消費なんじゃ?
tinyintは1バイト。
442NAME IS NULL:2011/08/12(金) 21:39:07.90 ID:???
http://dev.mysql.com/doc/refman/5.1/ja/numeric-types.html

読む限りはint(1)の1はzerofillのためのもので、値を制限するものじゃないみたいだな。やっぱ、4バイトか。
443NAME IS NULL:2011/08/12(金) 21:50:33.15 ID:???
>>442
なるほど!ありがとうございます。
不精せずにちゃんと型指定することにします。。
444NAME IS NULL:2011/08/12(金) 22:12:53.30 ID:Ma8BMp8A
445NAME IS NULL:2011/08/12(金) 22:32:42.00 ID:???
>>434
その逆はもっとダメだけどな。
446NAME IS NULL:2011/08/13(土) 05:17:05.25 ID:???
>>445
MySQLは使えるけどOracle使えない技術者なんて山ほどいるぞ
447NAME IS NULL:2011/08/15(月) 21:29:16.05 ID:???
dataset = DB[:kabuka]
aa= "mizuho"
dataset.insert(:yy_mm_dd => '2009-12-05', :name => "#{aa}" ,:code=>'8411')

rubyを使っていますが、上の文だと、MYSQLに書き込めるのですが
下のように数字やdateなどを、変数で入力しようとするとDBに書き込めません。
いい方法はないでしょうか?

dataset = DB[:kabuka]
aa= "mizuho"
bb='2009-12-05'
cc='8411'

dataset.insert(:yy_mm_dd => bb, :name => "#{aa}" ,:code=>cc)
448447:2011/08/15(月) 22:01:01.11 ID:???
自己解決できました。
449NAME IS NULL:2011/08/16(火) 01:57:35.84 ID:???
>>448は偽者です。
>>447の質問、よろしくお願いします。
450NAME IS NULL:2011/08/16(火) 10:02:57.94 ID:???
いずれにせよ すれ違いだ
""でくくって変数展開してみたら?
451NAME IS NULL:2011/08/16(火) 11:29:08.37 ID:???
>>447
その株ツールで儲けた利益の5割をもらえるなら教えてあげるよ
452NAME IS NULL:2011/08/16(火) 11:44:31.20 ID:???
損も5割持ってくれるかい?
453NAME IS NULL:2011/08/18(木) 00:07:04.53 ID:???
MyISAMでトランザクション処理を実装するにはどうしたらいいんですか?
どこか参考になるサイトはないでしょうか?
454NAME IS NULL:2011/08/18(木) 00:20:18.60 ID:???
InnoDB使え
455NAME IS NULL:2011/08/18(木) 01:18:08.81 ID:???
ALTER TABLE hoge ENGINE=InnoDB
START TRANSACTION
〜〜〜〜〜
COMMIT
ALTER TABLE hoge ENGINE=MyISAM
456NAME IS NULL:2011/08/18(木) 02:33:30.26 ID:???
>>455
あたまいいな
457NAME IS NULL:2011/08/18(木) 02:37:35.08 ID:???
>>455
感心するわ。トランザクションと全文検索ができるテーブルなんて。

まぁ、もうすぐInnoDBでも全文検索できるようになるけど。
458453:2011/08/18(木) 02:41:40.52 ID:???
>>454
InnoDB使えないサーバなんです
世の中にはトランザクションに意図的に対応していないものも数多くあって
そういうものでもトランザクション処理風のことはできるらしいという情報は得たのですが
具体的にどうするかまではわからなくて
459NAME IS NULL:2011/08/18(木) 03:18:11.18 ID:???
ここで聞くよりググったほうが早いよ
460NAME IS NULL:2011/08/18(木) 06:13:43.63 ID:dNV883jN
centOSの64bit版を使ってるんですが(某ホスティングで借りてます)
yum list installed | grep mysql したところ
mysql.i386 5.0.77-4.el5_6.6 installed
mysql.x86_64 5.1.52-jason.1 installed
という結果が返ってきました
どう解釈したらいいんでしょうか? どっちを使うことになるのかわかりません
(/etc/my.cnfがあるんですが、これはどっちの設定ファイルなのか…)

また、mysqlのインストール方法を調べていたら
# yum -y install mysql.x86_64 mysql-devel.x86_64 mysql-server.x86_64
という記述を某サイトで見つけました
mysql-devel.x86_64 mysql-server.x86_64というのはなんなんでしょうか
必須のものですか?
比較のため自宅の32bit版のcentOSで yum list installed | grep mysql したところ
mysql.i386 5.1.52-jason.1 installed
mysql-server.i386 5.1.52-jason.1 installed
このようになっていて、サーバーの実態として動いてるのはどっちだろうとわからず困っています

まとまりのない質問になってしまいましたが、64bit版OSで使うのは---x86_64で良いのか。
mysql.x86_64 mysql-devel.x86_64 mysql-server.x86_64 それぞれの違いはなんなのか、
mysql-server.x86_64だけ、もしくはmysql.x86_64だけのinstallじゃ何か困るのか
申し訳ないですが良ければ教えてください

いろんなサイトを見るとinstallの組み合わせがまちまちで、
x86_64の明記がなかったりもして何の意図でそうしてるのか、どれを信じたらいいのかわかりません
461NAME IS NULL:2011/08/18(木) 06:56:00.44 ID:???
i386はyum eraseしちゃえば
mysql クライアントだけ
mysql-devel mysqlライブラリと開発環境
mysql-server サーバー本体mysqld

mysqldが別のホストで動いているなら一個目のクライアントだけで十分かと
462NAME IS NULL:2011/08/18(木) 11:37:23.12 ID:???
すみません
なぜMySQLだと稼げなくて
ORACLEだと稼げるのでしょうか?
もしそれが本当なら
MySQLやめてORACLEに乗り換えたいです
463NAME IS NULL:2011/08/18(木) 13:36:44.41 ID:???
MySQLを使う客:あまりお金がない
Oracleを使う客:お金持ち
お金持ちにタカって稼ぐならOracleだ
464460:2011/08/18(木) 13:48:56.26 ID:dNV883jN
>>461
ご意見ありがとうございます
i386はアーキテクチャが違うから削除でOKなんですよね?
自分はこのホスティングで借りてるサーバをDBサーバとしても使いたいんですが
その意図だけだとmysql-serverのインストールだけでいいんでしょうか?
今、mysql関連をすべて一旦削除して
yum --enablerepo=utterramblings install mysql-server したところ
mysql.x86_64 5.1.52-jason.1 installed
mysql-server.x86_64 5.1.52-jason.1 installed
mysqlclient15.x86_64 5.0.91-1.jason.1 installed
上記3つがインストールされたんですがこれで大丈夫なんですよね?
mysql-develの用途がわからないんですが、開発環境ってことは
mysql自体の開発をする有志の人向けのものですか?
465NAME IS NULL:2011/08/18(木) 14:33:38.21 ID:???
mysql-develはC/C++で書いたプログラムからMySQLにつなぐとか
あとはperl-DBD-MySQLやphp-mysqlをビルドするときに使う
466460:2011/08/18(木) 16:58:14.80 ID:???
>>465
詳しい説明ありがとうございました!助かりました、ありがとう
467NAME IS NULL:2011/08/19(金) 01:32:14.43 ID:???
>>458
本当にトランザクションが必要なら、そのサーバを使うのが間違い。
自前でトランザクションを組むことはできるが、結局それは ariadb もどきを作ることになるだけだぞ。
468447:2011/08/19(金) 03:33:23.13 ID:???
449は偽物さんです。
#{ }で、""をつけて数字や日付も扱えました。
469NAME IS NULL:2011/08/19(金) 05:30:58.66 ID:???
>>468は偽者です。
>>447の質問、よろしくお願いします。
470NAME IS NULL:2011/08/20(土) 21:19:47.10 ID:???
すみません、皆さんは日本語全文検索対策はどのようにされていらっしゃいますでしょうか?
やはり、SennaとかTritonnを使用しているのでしょうか?
471NAME IS NULL:2011/08/20(土) 22:00:39.97 ID:???
今ならgroongaじゃない?
472NAME IS NULL:2011/08/21(日) 03:37:44.12 ID:???
運用中のmysqlのバックアップをmysqlhotcopyで行おうと検討しているのですが
バックアップ中にlockが行われるとのことで不安に思ってます

バックアップ処理中、つまりロック中にデータが書き込まれて
そのロックが長時間続いた場合
書き込みデータがロストするようなことはないのでしょうか

また
書き込み→書き込んだデータの読み込み
という処理をしたときにロック中出会った場合
書き込もうとしたデータの読み込みが行えないという認識であっているでしょうか
473NAME IS NULL:2011/08/21(日) 05:54:53.93 ID:???
lockはそういうものだろ
474NAME IS NULL:2011/08/21(日) 19:47:12.37 ID:???
MySQLのロックって、書き込みOKで読み込みをブロックするのかよ
おそろしいDBだな
475NAME IS NULL:2011/08/21(日) 20:51:45.11 ID:yF3YwHrz
今まで5.1を使ってたんですが、さすがにそろそろ5.5もいいかと思い使い始めました。
(OS MacOSXServer 10.7)
それで今までのtableを読み込み直した後、root以外のユーザーの設定も登録しようと思い、


grant select,insert,lock tables on db_name.* to user_name identified by 'password';

と入力し、試しにそのuser+passwordでログインしようとしたところ、全然ログインできません。
何が原因なのでしょうか?

またもしgrantが間違っているのであれば、どのような入れ方が正しいのでしょうか??

どなたかお教えください。お願いします。
476NAME IS NULL:2011/08/21(日) 20:55:05.28 ID:???
>>474
排他ロックってそういうもんじゃん
477NAME IS NULL:2011/08/21(日) 21:04:27.82 ID:???
>>476
普通のロックは、書き込みをブロックするんもんだと思ってたが
478NAME IS NULL:2011/08/21(日) 21:12:56.61 ID:???
>>475
ユーザ名は、ホストとユーザ名の組で指定した?
479NAME IS NULL:2011/08/21(日) 21:16:40.45 ID:???
どっからきたの?
SQL鯖かい?それともDB2?
480NAME IS NULL:2011/08/21(日) 21:18:36.69 ID:yF3YwHrz
>>478
いえ。ユーザー名だけで5.1では行けてたので'user_name@host'とか'user_name@*'ってのではなく、
'user_name'だけでしたが、それが原因ですか?
内部からもつなげたいし、外部からもつなげたいので、その場合'user_name@*'でいいのでしょうか?
481NAME IS NULL:2011/08/21(日) 22:07:53.82 ID:???
>>480
user_name@'%'
あとguestユーザが残っているとそっちで認証されることがあるので
念のためmysql_secure_installationしておく。
5.1と5.5で認証まわりは特に変わってないはず
482NAME IS NULL:2011/08/21(日) 22:32:06.63 ID:???
>>477
排他なら読み込みもブロックするよ
483NAME IS NULL:2011/08/21(日) 22:43:04.72 ID:gS6Fu7TZ
サブクエリー、join などしてレコードを20件抽出するのですが0.14secかかっています。
これって遅い方でしょうか。
484NAME IS NULL:2011/08/21(日) 23:16:48.48 ID:???
>>483
それだけじゃわからん。
CPU1コア使って1秒間に7回しか実行できないという点が
目的にかなうかどうかで判断するべし
485NAME IS NULL:2011/08/22(月) 01:18:13.43 ID:???
>>482
問題は書き込みはブロックされないのかってことだが?
読み込み「も」ってことは書き込みもブロックされるという事を言ってるのか?
>>474は書き込みOKでって言ってるんだが
486NAME IS NULL:2011/08/22(月) 03:20:57.04 ID:???
>>483
母数によるだろ
487NAME IS NULL:2011/08/22(月) 05:33:35.39 ID:???
>>485
「書込OKで」の意味がよくわからんが
select for updateでプロックすればいいんなじゃいのか?
違うのか?
488NAME IS NULL:2011/08/22(月) 06:41:19.79 ID:???
>>487
書き込みがOKなんだから書き込みがブロックされないって意味だろ
>>472
>つまりロック中にデータが書き込まれて と、ロック中でもデータが書き込まれるという旨の発言をしてる
それに対して>>473がそういうものだろっていうんで、>>474
>書き込みOKで読み込みをブロックするのかよ つまり書き込みはブロックされないのかよと言ってるわけだ
489NAME IS NULL:2011/08/22(月) 07:02:10.89 ID:???
>>472はロック中のテーブルに書き込むなんて書いてないだろ。
だから>>474とあんたの誤読。
490NAME IS NULL:2011/08/22(月) 10:03:51.70 ID:???
いや多分>>472はロック中のテーブルに書き込む話をしてるんだと思うが。
>書き込みデータがロストするようなことはないのでしょうか
って聞いてるわけだし。
491NAME IS NULL:2011/08/22(月) 12:08:07.69 ID:cErCHUJg
>>481さん
ありがとうございます。
492474:2011/08/22(月) 14:33:50.66 ID:???
で、結局ロック中のテーブルに書き込めるのか書き込めないのかどっちなんだ?
俺は共有ロックだろうが排他ロックだろうが書き込みなんぞ出来るわけないと思うんだが
>>473,476はそう思ってないみたいだが
493NAME IS NULL:2011/08/22(月) 19:27:35.98 ID:???
494NAME IS NULL:2011/08/22(月) 21:29:34.36 ID:???
>>492
逆に、どこをどう読んだらロック中のテーブルに書き込めると言っている
人がいると思ったのか訊いてみたい。
495NAME IS NULL:2011/08/22(月) 22:15:24.19 ID:???
そもそも、>>472の勘違いを>>473が読み間違えて、>>474が真に受けた、
っていうだけのヲチ。
496NAME IS NULL:2011/08/23(火) 21:32:54.93 ID:???
こうやってデマってのは広がっていくんだな
497NAME IS NULL:2011/08/23(火) 21:40:25.41 ID:???
MySQL5.1と5.5は、InnoDBの性能がアップした、という以外にもどの程度進化しているのですか?
全体的に処理速度がかなり速くなったり、「これは使える」という機能など追加されたのですか?
5.5に移行しようかどうか、サードパーティ製ソフトの対応等も含めて迷っています
CMAKEになって./configureオプションが変わるでしょうし、my.cnfの設定もある程度変わるのかなと思っています

逆に5.5の欠点などもあれば教えていただきたいと思います
498NAME IS NULL:2011/08/23(火) 21:47:00.38 ID:???
プラグインのAPIが変わってるらしく、5.1様のソースがそのままじゃコンパイル出来ない
499NAME IS NULL:2011/08/23(火) 22:28:21.57 ID:???
utf8mb4はけっこう重要だと思う
500NAME IS NULL:2011/08/24(水) 05:29:26.82 ID:???
手元でやると、5.5はtemporary table作るのが遅すぎて移行できなかった。
5.1と比べてね。
10倍くらい時間かかった。
MacでもUbuntuでも同じ結果だった。
501NAME IS NULL:2011/08/24(水) 08:06:57.39 ID:???
temporaryが遅いとな。
ストレージエンジンはMYISAM、MEMORY?

テンポラリーテーブルに限った話ではないけれど
InooDBPlugingが標準になったので
初期状態で立ち上げると確かに重くはなってる気がしますね。
(DEFAULT_STORAGE_ENGINEは相変わらずMISAM?だけど)

今のハードに併せてきたんじゃないかなと予想。

502NAME IS NULL:2011/08/24(水) 09:29:14.04 ID:???
ほんとにTEMPORARY遅いなら調べるけど。
再現ケース欲しいな
503NAME IS NULL:2011/08/24(水) 21:05:30.33 ID:???
結局皆MySQL5.5導入してるの?
俺は一応Linuxにcmakeでインストールして単純な動作確認だけはしたけど、まだ5.1使ってる
マイナーだろうけどmMeasure使ったりしてるんで
これ5.0、5.1、とインストール方法が変わるので、おそらく5.5では利用できないんだろうなと思って
cacti、munin等は試していないけれど
あと、バージョンの問題だったかもしれないけれど、ソースからインストール後起動時に何度かエラーが出て解決できなかった事もあった
5.1では一度も無かったけれど
504500:2011/08/25(木) 00:59:23.78 ID:???
500です。
チェーン店の日別店別の商品売り上げテーブルなんだが、

date date
store_id smallint
item_id mediumint
sales mediumint

って感じ。
10店舗くらいあって、指定商品が各店の売上ランキング何位にあるのかを割り出すのに

指定期間の商品別の売上順に集計したtemporary tableを作って
@i=0;
create temporary table `t1` select (@i:=@i+1)as`rank`,SUM(`sales`)as`sales`,`item_id` form `table` where `date` between 'A' and 'B' and store_id=1 group by `item_id` order by `sales` desc;
って感じで。
で、そこから指定のitem_idを条件に rank を出す。
これを店舗回繰り返す。
505500:2011/08/25(木) 01:02:09.08 ID:???
テンポラリテーブル作成を繰り返すから、5.1よりめちゃめちゃ時間かかってしまった。
5.1だと1秒未満で5.5だと5秒以上かかった。

日付指定が変動したり、カテゴリで絞ったりで、事前に値を出しておけないので、このようなことをしてたけど、
今は日付の期間指定させないで、日別、週別、月別のサマリテーブルに順位いれて、そこから選ばせるようにしてる。

まぁ、設計や方法がアホだったと思うけど、ようは5.5のテンポラリーテーブルは遅い、ってのはここで強く感じたわけです。

ちなみに、5.1、5.5ともにInnoDB plugin でbuffer poolは5GBくらい。
tmp_table_sizeもmax_heap_table_sizeも 512MBくらい割り当ててた。
506NAME IS NULL:2011/08/25(木) 01:12:28.91 ID:???
5.5のテンポラリーテーブルが遅いってのは本当なのか?
何か回避策があるんじゃないのか?
507NAME IS NULL:2011/08/25(木) 08:00:14.32 ID:???
OSとファイルシステムは同じ?
508NAME IS NULL:2011/08/25(木) 11:22:51.47 ID:???
>>504
indexの付け方が悪いんだろ。
509NAME IS NULL:2011/08/25(木) 12:00:46.70 ID:???
>>507
ファイルシステムはubuntuだとext4で、
Macはデフォルトです。

>>508
Indexは、
date=index
store_id,date=index
item_id,date,store_id=primary
にそれぞれついてます。

たとえなにかおかしくても、5.1と5.5でまったく同じ環境でやってるので、
どちらにも同じように事象は起きるはずですが。

5.1はOSのパッケージ管理でインストール。
5.5は遅かったので、パッケージ管理と公式サイトからバイナリ、の2種類で試しました。が、結果は同様でした。

あと、5.1で作ったテーブルをそのまま5.5で共用しました。5.5で何か変更があって互換性に問題が起きてるんでしょうかね。
ファイルフォーマットはBarracuda。
510NAME IS NULL:2011/08/25(木) 21:37:31.39 ID:???

my.cnfのdiffを晒してくれ
511NAME IS NULL:2011/08/25(木) 23:25:05.78 ID:???
個人情報を晒すのは御勘弁ください。
512NAME IS NULL:2011/08/26(金) 17:20:44.67 ID:???
key_buffer_size というのはMyIsam用にあるインデックスを保存しておくバッファ
の大きさを指定するパラメータみたいですけど、Innodb用にはそれに該当する
パラメータは無いのでしょうか?

513NAME IS NULL:2011/08/26(金) 19:32:04.95 ID:???
>>512
innodb_buffer_pool_size
インデックスもテーブル本体もこれ
514NAME IS NULL:2011/08/26(金) 19:58:34.25 ID:???
>>513
ありがとうございます
515NAME IS NULL:2011/08/27(土) 17:29:18.93 ID:???
日付についての質問です。
year,month,dayで3つのIntegerフィールドを定義するのと、Dateフィールドを1つ定義するのとでは、
年+月または年+月+日でSelectする場合どちらが高速にできるのでしょうか?

できるだけ高速にSelectしたのです
516NAME IS NULL:2011/08/27(土) 17:33:15.32 ID:???
試した方が早くね?
517NAME IS NULL:2011/08/27(土) 17:50:18.06 ID:???
Dateフィールドを1つ
518NAME IS NULL:2011/08/27(土) 19:01:55.02 ID:???
year,month,dayの数字を各桁ごとに分解し、それぞれを2進数化してTextフィールドに納めるのが良い
519NAME IS NULL:2011/08/27(土) 19:34:29.26 ID:???
time_t だろ常考
520NAME IS NULL:2011/08/27(土) 20:09:52.23 ID:???
DATE型の内部表現は3バイトの整数なんでしょ
他の型で代用するとかえって遅くならね?
521NAME IS NULL:2011/08/27(土) 21:30:02.18 ID:???
DATEだと、毎年2月とか、毎月5日とか飛び飛びのデータを集計するのがつらい。
Y/M/Dだと、2010/12/25〜2011/1/15といった、月またがり、年またがりの
データを集計するのがつらい。
どういう集計をしたいのかによって考えるべき。両方つけてもよい
522NAME IS NULL:2011/08/27(土) 21:53:26.60 ID:???
固定文字列8桁でいいじゃん
523NAME IS NULL:2011/08/27(土) 22:50:35.76 ID:???
8桁の数値にしてるわ。スッゲー楽。
524NAME IS NULL:2011/08/27(土) 23:06:16.21 ID:???
>>523
毎月5日とか10月とかは、文字列ならsubstrとかrightで抽出できそうだけど、数値のときはどうやるの?
525NAME IS NULL:2011/08/28(日) 03:25:49.87 ID:???
>>521
> DATEだと、毎年2月とか、毎月5日とか飛び飛びのデータを集計するのがつらい。
5日締め毎に集計って事ですか?
何が辛いのか分からないので詳しく教えて下さい
526NAME IS NULL:2011/08/28(日) 03:53:49.21 ID:???
2月29日の有無とか11月31日とか
3月3日の一週間前とか

クライアントソフト側できっちり丸められれば良いねぇ
527NAME IS NULL:2011/08/28(日) 09:19:42.91 ID:???
day of monthで検索するなら、フィールドを分けておけば(日,月,年)なんてindexを張れて便利。
DBMSによっては関数インデックスが使えるからその場合はdateでもいけるけど、
MySQLだとたしか使えない。
528NAME IS NULL:2011/08/29(月) 11:55:18.78 ID:9NlgRHdO
質問お願いします。
MySQL5.1です。
負荷軽減するためにmemoryストレージを使いたいのですが
システムダウンしたときにデータが消えてしまいます。
これを回避するために、バックアップ用のテーブルに同期することはできますでしょうか?
insert updateを2つかくという方法以外で方法があればお願いします。
529NAME IS NULL:2011/08/29(月) 12:17:31.58 ID:???
insert updateを3つかく
530NAME IS NULL:2011/08/29(月) 13:04:17.44 ID:???
トリガーでも使えば
531NAME IS NULL:2011/08/29(月) 14:15:48.09 ID:???
>>528
どんなデータいれるんだ?
KeyValueでいいならhandlersocketで幸せになるんじゃね?
532NAME IS NULL:2011/08/29(月) 14:34:24.88 ID:???
insert updateを4つかく
533NAME IS NULL:2011/08/29(月) 17:17:51.01 ID:???
トリガでできそうですね!勉強してみます。
ありがとうございます。
534 忍法帖【Lv=5,xxxP】 :2011/08/29(月) 17:30:19.06 ID:???
MySQLは100万件程度のレコードでの運用は問題ないでしょうか?
ユーザは20名程度です。
535NAME IS NULL:2011/08/29(月) 19:23:10.00 ID:???
とりあえず、
訪問者数、日に300人前後。
収録データ数は800万ちょい超え
というショボ目のwebサイトは普通に動いてるよ。
536NAME IS NULL:2011/08/29(月) 20:21:32.73 ID:???
innodbも定期的にoptimize tableやったほうがいいの?
537NAME IS NULL:2011/08/29(月) 21:23:29.89 ID:???
>>536
大量DELETEした場合はやっておいてもいい。
やらんでも困ることはまずない
538NAME IS NULL:2011/08/29(月) 21:46:24.05 ID:???
>>534
MS製品以外は普通大丈夫
539536:2011/08/29(月) 21:57:45.10 ID:???
>>357
ありがと!
540536:2011/08/29(月) 21:58:57.84 ID:???
ごめん>>537
541NAME IS NULL:2011/08/29(月) 22:00:04.07 ID:???
絶対に許さない
542NAME IS NULL:2011/08/30(火) 07:42:34.29 ID:2jLDvlEm
お前らの中で管理をMSAccessでしてるやついないのか?
543NAME IS NULL:2011/08/30(火) 09:02:01.88 ID:???
数千件レベルならMSAccessでもなんとか
544NAME IS NULL:2011/08/30(火) 10:10:36.49 ID:???
ちなみにSQL Serverだとどんなもん?
545NAME IS NULL:2011/08/30(火) 10:28:10.01 ID:???
542はMySQLの管理をAccessでっていう意味だと思ってたが違うのか
546NAME IS NULL:2011/08/30(火) 10:59:10.65 ID:???
MySQLってなんだよ
さっぱり解からん
サルにも解かるように教えてくれ
547NAME IS NULL:2011/08/30(火) 12:13:44.04 ID:???
サルには必要ねーよ
548NAME IS NULL:2011/08/30(火) 13:48:31.73 ID:???
>>546
MySQLってのは、MySQLの作者の娘(まいちゃん)から取った名前だよ
549NAME IS NULL:2011/08/30(火) 15:28:15.38 ID:???
MariaDBみたいなもんか
MAISQLに改名しる
550NAME IS NULL:2011/08/30(火) 15:34:50.25 ID:???
>>534
運用というか分析系には弱いね
そういう用途ならSQLServerのほうが向いているかと
予算がカツカツとかいう事情があるならPostgresでも入れるべし
551NAME IS NULL:2011/08/30(火) 15:40:19.23 ID:???
>>528
文面からするとMySQL Clusterが最適解のように思えるが。
ストレージがメモリじゃなきゃだめって制約がなければSemi-Syncつかえば
552NAME IS NULL:2011/08/30(火) 16:56:30.24 ID:???
俺もHinataSQL作ろうかなあ
553NAME IS NULL:2011/08/30(火) 18:05:10.72 ID:???
じゃぁ俺はIinchoSQLにする
554NAME IS NULL:2011/08/30(火) 18:18:10.24 ID:???
すでにMoSQLがあるわけだが
555NAME IS NULL:2011/09/02(金) 01:36:12.08 ID:Epz2y1xk
SELECT name,(SELECT COUNT(`id`) FROM table2 WHERE table2.t1_id = table1.id ) as t1_count FROM table1 WHERE t1_count > 0;

上みたいなネストさせたSQL書いたらめちゃくちゃ重くなりました・・・・。
なんとか軽くする方法ってないんでしょうか。
556NAME IS NULL:2011/09/02(金) 05:12:42.72 ID:???
サブクエリの部分をINで書きなおしてみ。
それでもダメなら5.6使ってみ
557NAME IS NULL:2011/09/02(金) 05:15:52.25 ID:???
あと最後のwhere句の部分はHAVINGの間違いでは?
558NAME IS NULL:2011/09/02(金) 06:35:27.63 ID:???
サブクエリ使わんでも、ふつーにjoinでいけないか?これ。
559555:2011/09/02(金) 06:35:44.60 ID:???
サーセン自己解決
アホなことになぜかtable2.t1_idをテキスト型にしてた
table1.idに合わせてINT型にしたら早くなりますた
560NAME IS NULL:2011/09/02(金) 10:48:09.56 ID:cqdHSpY6
mysqlが起動しなくなって、バックアップとリストア作業で困っています
原因:
centOS5.6でremiというリポジトリを使ってmysqlをyum updateしました
そしたら、mysql.i386 5.5.15-1.el5.remi installedになったわけですが、起動しなくなりました
調べたところ/etc/my.cnfの中のsocket=/var/lib/mysql/mysql.sockのソケットが実際にそのパスに存在しません。
で、
#find / -name mysql.sockしてもどこにも見つかりません

この状況でどうしたら良いんでしょうか
自分はmysqlを全削除して再インストールすべきなのかなと思いますが、それ以外の方法ありますか?
また再インストールするしかない場合、これまでのDBなど全部保持したいので
cp /var/lib/mysql /tmp/mysql-backup としたのですが他にしておくべきことはあるでしょうか?

すみません、復旧作業は初めてでビビっています。アドバイスお願いします
561560:2011/09/02(金) 11:02:57.73 ID:cqdHSpY6
書き忘れましたが、サーバを再起動したらソケットが生成されるかもという記述を見つけて試したものの
生成されませんでした
ご意見よろしくお願いします
562NAME IS NULL:2011/09/02(金) 11:19:18.83 ID:???
>>560
エラーログ探してちゃんと読め。見つからないなら
remi版アンインストールしてMySQL 5.0.77に戻したらいいよ
563NAME IS NULL:2011/09/02(金) 12:26:04.15 ID:???
InnoDB使ってるならInnoDBログのサイズが違うというエラーが出てるだろう
InnoDBログを一旦消してみれば
564NAME IS NULL:2011/09/02(金) 23:11:23.58 ID:???
mysql> SELECT * FROM list_a;
+------------+---------+
| NAME | TYPE_ID |
+------------+---------+
| MySQL | 1 |
| Perl | 2 |
| Oracle | 1 |
| PHP | 2 |
| C言語 | 3 |
| PostgreSQL | 1 |
| Java | 3 |
| Ruby | 2 |
+------------+---------+
8 rows in set (0.01 sec)

mysql> SELECT * FROM list_b;
+---------+--------------------+
| TYPE_ID | TYPE |
+---------+--------------------+
| 1 | データベース |
| 2 | インタプリタ型言語 |
| 3 | コンパイラ型言語 |
+---------+--------------------+
上の二つを結合し下の結果で出したいんだがどんなクエリー発行すればいいの?
教えてくださいエロい人
mysql>????
+------------+---------+---------+--------------------+
| NAME | TYPE_ID | TYPE_ID | TYPE |
+------------+---------+---------+--------------------+
| MySQL | 1 | NULL | NULL |
| Perl | 2 | NULL | NULL |
| Oracle | 1 | NULL | NULL |
| PHP | 2 | NULL | NULL |
| C言語 | 3 | NULL | NULL |
| PostgreSQL | 1 | NULL | NULL |
| Java | 3 | NULL | NULL |
| Ruby | 2 | NULL | NULL |
| NULL | NULL | 1 | データベース |
| NULL | NULL | 2 | インタプリタ型言語 |
| NULL | NULL | 3 | コンパイラ型言語 |
+------------+---------+---------+--------------------+
11 rows in set (0.00 sec)
565NAME IS NULL:2011/09/02(金) 23:20:46.09 ID:???
ここって初質スレなの?
こういう質問ありなの?
566NAME IS NULL:2011/09/02(金) 23:24:49.18 ID:???
気が向いたら返答するかもねー
567NAME IS NULL:2011/09/02(金) 23:31:08.55 ID:???
俺はスルーで
568NAME IS NULL:2011/09/02(金) 23:51:17.44 ID:???
>>565
余裕でありだろ
質問する自由、回答する自由
569NAME IS NULL:2011/09/03(土) 00:19:44.22 ID:???
ここよりSQL質問スレで聞いたほうがいいと思われ
570NAME IS NULL:2011/09/03(土) 00:29:01.75 ID:???
>>568
MySQLとかほとんど関係ないし
571NAME IS NULL:2011/09/03(土) 00:33:52.06 ID:???
どうせお前らわかんねえんだろ
572NAME IS NULL:2011/09/03(土) 00:37:38.16 ID:???
煽って駄々こねても、だ〜め(はぁと
573NAME IS NULL:2011/09/03(土) 01:45:45.48 ID:???
バカを育てることに意義がある
そんなマヌケな方針のお方がいましたので、初心者が沸いているのです
574NAME IS NULL:2011/09/03(土) 01:48:48.13 ID:???
>>565
よく>>564を見てみな。そんなに簡単じゃないぞ。
575NAME IS NULL:2011/09/03(土) 02:24:35.03 ID:???
自己解決
お前らたいした事ねーなハゲp

left outer null=null
union
right ごにょごにょ
で出来た
576NAME IS NULL:2011/09/03(土) 02:56:14.36 ID:???
口だけ達者なおまえら役になすぎワロン
577NAME IS NULL:2011/09/03(土) 09:48:01.46 ID:???
>>564
十分な難問なんだが
初心者とか言って煽ってるやつはくたばっとけ
578NAME IS NULL:2011/09/03(土) 10:29:01.39 ID:???
難問というよりちょっと調べればわかることを調べずに聞いてるから
これだけ自分でやってやってみたけどうまくいかないなら分かるけど
579NAME IS NULL:2011/09/03(土) 10:58:12.35 ID:???
>>577
どこが?
普通にUNIONしてるだけにしか見えん
580NAME IS NULL:2011/09/03(土) 10:59:49.64 ID:???
あとUNION ALLしろよな
581sage:2011/09/03(土) 11:58:41.63 ID:+juhx5Y2
どーでもいいけどTYPE_ID が2つあるからどっちのテーブルから
データを持ってきてるのか良くわからない
582NAME IS NULL:2011/09/03(土) 12:29:35.31 ID:???
>>581
さすがにそれはわかるだろ・・・
583NAME IS NULL:2011/09/03(土) 20:01:57.68 ID:???
質問です。
今通販サイトを作っているんですが
何もいじってないのに突然データベースが表示されなくなりました。
昨日まではちゃんとではないですが表示されていました。
昨日までは表示されたりされなかったり不安定で、その時は更新を何回も押せば表示されました(表示されてもまた更新押すと消えたりする)
XAMPP使っています。Mysqlは起動してあります。
584NAME IS NULL:2011/09/03(土) 20:09:32.70 ID:???
モニターの電源入ってる?
585NAME IS NULL:2011/09/03(土) 21:55:10.15 ID:???
メガネ掛け忘れてない?
586NAME IS NULL:2011/09/03(土) 22:14:05.27 ID:???
更新を何回も押し忘れてない?
587NAME IS NULL:2011/09/03(土) 22:16:41.31 ID:???
データベースって表示されるものなのか?
588NAME IS NULL:2011/09/03(土) 22:16:59.90 ID:???
>>564といい>>583といい、ただの釣りだろ
589NAME IS NULL:2011/09/03(土) 22:40:13.41 ID:???
>>583ですが釣りじゃないですw
ブラウザで表示する時データが反映されないんです。
昨日までは更新連打してれば反映されましたw
まぁこの時点で何かおかしいですが・・・
やり方間違ってるのかなぁ
590NAME IS NULL:2011/09/03(土) 22:56:22.37 ID:???
連打が足りないんだと思う
591NAME IS NULL:2011/09/03(土) 23:01:42.45 ID:zd/KEFO9
連打しなければ更新が反映されない


www
592583:2011/09/03(土) 23:06:13.21 ID:???
全然ワロエナイwww
もうやめたいわー
でもやらないとダメだし、どうすればいいんだ全く・・
データベース使わないでやるしかないのか
593NAME IS NULL:2011/09/03(土) 23:07:53.44 ID:???
連打するとレンダリングされる…

ククッ
594NAME IS NULL:2011/09/03(土) 23:21:57.17 ID:???
MySQLの問題なのかプログラムのせいなのか切り分けしろよ、カス。
595583:2011/09/03(土) 23:27:39.40 ID:???
>>594
それがわかったら苦労しないっす
596NAME IS NULL:2011/09/03(土) 23:28:51.87 ID:???
>>592
DB使わなくってもそのうち表示されなくなるよ
あとそういう質問はここで聞け
http://hibari.2ch.net/test/read.cgi/php/1314692611/
597NAME IS NULL:2011/09/04(日) 00:30:30.04 ID:???
>>595
すれ違いだけど
Apacheのエラーログみたり、myphpadminでphpのsql文を試してみたりすれば問題を切り分けられると思うよ
598NAME IS NULL:2011/09/04(日) 01:15:22.76 ID:???
更新ボタンが壊れたんだろ
キーボード交換しれ
599NAME IS NULL:2011/09/04(日) 01:28:50.31 ID:???
それならむしろマウスの左ボタンではないかと
600NAME IS NULL:2011/09/04(日) 02:04:47.86 ID:???
ふつうF5キーだろ
601583:2011/09/04(日) 03:56:48.39 ID:???
またF5連打頑張ってきますね
いつか更新されるはず
602NAME IS NULL:2011/09/04(日) 15:19:03.24 ID:BEWeRh6S
相談させてください。ちょっと前まで動いてたmysqlが動かなくなりました
ログを確認するとmysql_upgradeするように指示が出てたんですが、upgradeしようとしても失敗します

[root@localhost ~]# mysql_upgrade
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck with default connection arguments
mysqlcheck: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect
FATAL ERROR: Upgrade failed

どうしたら良いんでしょうか?
つい数時間前までselect,insert,updateも出来ていて、それから今までの間にyum updateなどは一切してないのですが…

mysqlのエラーログは以下の通りです
70 110904 15:12:20 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
71 110904 15:12:20 InnoDB: Started; log sequence number 0 6872537
72 110904 15:12:20 [ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist
73 110904 15:12:20 [ERROR] Column count of mysql.db is wrong. Expected 22, found 20. Created with MySQL 50045, now running 50152. Please use mysql_upgrade to fix this error.
603NAME IS NULL:2011/09/04(日) 15:28:52.59 ID:???
Please use mysql_upgrade to fix this error.
604NAME IS NULL:2011/09/04(日) 15:30:54.55 ID:???
mysql_upgradeコマンド実行する時にフルコントロールできるアカウントのユーザー名パスワードわたしんしやい
-hか--helpて付けりゃ何か説明出るでしょ
605NAME IS NULL:2011/09/04(日) 16:08:04.50 ID:???
>>602

> Created with MySQL 50045, now running 50152.
MySQLが5.0.45から5.1.52にアップグレードされてるぞ。
誰かがいじったんじゃないの
606583:2011/09/04(日) 16:09:53.67 ID:???
解決したあああああああああきたああああああああああ
SQLの書き方が間違ってたw
何もいじってないのですが・・・とかいってたけど弄ってたww
みなさんありがとう!!
607NAME IS NULL:2011/09/04(日) 16:43:55.56 ID:???
>>606
おめ。
ちゃんと報告してくれたのも好評価です。
こんだけ礼儀正しいのに厨扱いしてごめん。謝るわ。
608NAME IS NULL:2011/09/04(日) 17:03:57.71 ID:???
しかし、そんな危うさで通販サイトを作ってて大丈夫なのか?
609602:2011/09/04(日) 17:31:35.08 ID:???
>>604-605
ありがとうございます
REPAIR TABLEを繰り返したり七転八倒してmysql自体はターミナルからのmysqlコマンドで動くようになったものの
phpからの操作が出来ないままだったりいくつか問題残ったままだったんで
一つのリポジトリでmysql, mysql-server, php, php-mysqlと全部インストールし直しました
依存関係をちゃんと理解してなかったのが問題だったようです
今でもよくわからないですが…
ありがとうございました

>MySQLが5.0.45から5.1.52にアップグレードされてるぞ。
これ、確かにそうなんですがアップグレードした後も正常に動いてたんです
それが急に動かなくなって。原因は不明のままです、怖いなぁ
610NAME IS NULL:2011/09/04(日) 19:21:13.10 ID:???
むしろアップグレードしたあと動いていたほうがおかしいだろう
611583:2011/09/04(日) 21:36:41.90 ID:???
練習なので問題ないです
アップロードも販売もしませんw
612NAME IS NULL:2011/09/05(月) 09:32:47.24 ID:???
躓いているのでどなたか助けて頂けないでしょうか。

cシェルで、特定の一つのレコードの特定のカラムを取得するselect文を発行して、変数の中に格納したいのですが、
この時に、値が空文字だと変数の領域をオーバーする旨のエラーになってしまいます。
(ここでいう空文字とは、insert時に値を""と指定したものです。)

nullでもなく、スペースでもないこの値を取り扱うにはどうすれば良いでしょうか?
613NAME IS NULL:2011/09/05(月) 09:37:18.59 ID:???
数字のカラムにヌルがある場合ってこと?
で、変数がintとか
614NAME IS NULL:2011/09/05(月) 09:43:17.11 ID:???
>>612
C ShellではなくSQLで頑張る方針でどうか
SELECT CASE WHEN col1 = '' THEN '<EMPTY STRING>' ELSE col1 END FROM test1;
615612:2011/09/05(月) 13:47:44.58 ID:???
>>614
ぶらぼー!
お陰さまでなんとかできました!
ありがとうございました!
616NAME IS NULL:2011/09/06(火) 16:11:59.52 ID:vFZ6NMqY
全文検索について質問というか相談したいんですが、皆さんどうやって実装していますか?
まったく初心者で、tritonとかgloongaとかが調べたらでてきたものの、
説明にかいてあることがよくわからず、その質問をここでしても良いのかもわかりません
良いのでしょうか?
というか、みんな、全文検索はどうやっていますか?
単純な名前検索とかならともかく全文検索だと検索結果のリストの作り方などもどうすべきかわかりません
どのように勉強したら良いんでしょうか
617NAME IS NULL:2011/09/06(火) 18:35:43.84 ID:???
>>616
Googleでsite指定で検索する
618NAME IS NULL:2011/09/06(火) 18:36:17.19 ID:???
いまはApache Solrじゃない?
MySQL関係ないけど
619NAME IS NULL:2011/09/06(火) 19:32:40.23 ID:vFZ6NMqY
>>617
やっぱりそれが簡単ですよね
よっぽど更新性が高くてそれへの対応度を高めたい場合以外はgoogleで良いのかなぁ

>>618
こんなのあったんですね!
独立した検索用サーバーってのはいいなぁ
tritonnみてたらmysqlを専用のソースで再コンパイル+インスコしなきゃいけないそうで
面倒くさそうで参ってました

2人ともありがとうございました
620NAME IS NULL:2011/09/06(火) 21:12:52.22 ID:???
bigramプラグインでなんとか
ただ、5.1だけなんだよな
621NAME IS NULL:2011/09/06(火) 23:04:46.67 ID:???
tritonnとかsennaとかいろいろあるけど、mysqlのバージョンが限られてて自由度低いですよね
Apache Solrてのはそのへんの縛りないのかな期待して調べてみよう
622NAME IS NULL:2011/09/07(水) 08:13:55.93 ID:???
更新が少ない用途だとgroongaよりTritonnの方がいいな
マルチカラムで検索できたり、検索後にタグ付できたり、いろいろ気が利いてる
623NAME IS NULL:2011/09/08(木) 17:51:55.07 ID:???
クエリーを入力すると、テーブルのどこにインデックス春香教えてくれる
ソフトって、需要ある?
624NAME IS NULL:2011/09/08(木) 18:44:43.15 ID:???
MySQLならある
OracleはオプションのTuning Packでできる
625NAME IS NULL:2011/09/08(木) 18:58:06.92 ID:???
>>624
MySQLでは無いだろ。無いから作ってんのに。

・・・うそだよね? 無いよね?
626NAME IS NULL:2011/09/08(木) 19:13:42.46 ID:???
需要があるってことでは?
627624:2011/09/08(木) 19:59:03.68 ID:???
分かりづらくてすまん。
そういうツールはいま存在しない。需要はある。
スロークエリログを直接読み込めるようにするときっとみんな喜ぶ
628NAME IS NULL:2011/09/09(金) 08:37:29.17 ID:KBWgcLx7
少し質問なのですがURLを主キーにすると速度は遅くなりますか?

主キーはオートインクリメントのintを使ってユニーク・インデックスで
URLのカラムと別にするのとでは速度に違いはありますか?
629NAME IS NULL:2011/09/09(金) 09:01:32.24 ID:???
速度の質問する奴多いけど、それくらい自分で試せばいいと思うけどな。
どうせここで聞いたってMysqlの中の人がいるわけじゃなし、経験か想像の答えしか得られないんだから。
630NAME IS NULL:2011/09/09(金) 10:07:46.39 ID:???
InnoDBにINDEX長767バイトの制限があるので
URLにPRIMARY/UNIQUE INDEXはそもそも張れない場合がある
631NAME IS NULL:2011/09/09(金) 11:25:47.28 ID:???
それ以前にURLって変わったりなくなったりすることがあると思うけど、それを主キーにして良いの?
632NAME IS NULL:2011/09/09(金) 12:10:51.61 ID:KBWgcLx7
>>631
基本的に問題ないです無くなっても変わってもいいので
重複さえしなければ

それよりアクセス1万/dayくらいのサイトなのですがプログラムを
サイトにアップしたらサクラ鯖ですがすぐにテンポってしまいます

テスト環境では正常に動作してます

サクラのDBがダメ?
それとも設計が悪い?
633NAME IS NULL:2011/09/09(金) 12:35:17.02 ID:???
>テンポってしまいます
ってどういう意味?
634NAME IS NULL:2011/09/09(金) 12:46:57.05 ID:KBWgcLx7
>>633
英語でサービステンポラリー エラー?
というのがでます
サーバー10個くらい借りてるので違うDB使ってみたら動作しました
???ですね
いわゆるハズレサーバーだったということでしょうか
635NAME IS NULL:2011/09/09(金) 15:35:15.15 ID:???
CentOS Linux でインストールして起動すると失敗になるけど、
MySQL の再インストールどうしたらいいですかね?
636NAME IS NULL:2011/09/09(金) 18:03:09.23 ID:???
すれば?
637NAME IS NULL:2011/09/09(金) 18:21:51.06 ID:???
すってもうまくいかない
638NAME IS NULL:2011/09/09(金) 19:51:25.03 ID:dF3d8pnA
LinuxのlamppでMySQL5.5.8を使っています。
prod.sqlというファイルを
mysql -u root < prod.sql
で読み込んだのですが、文字化けしてしまいます。
mysqladminで確認してもやっぱり文字化けしています。

端末とvimはUTF-8を使っています。
そのprod.sqlを利用するphpコード中には
// 文字コード
$enc_disp = "EUC-JP";
$enc_db = "EUC-JP";
とあります。
これらをUTF-8に変えても、同じように文字化けします。
文字化けを解消する方法を教えてください。
639NAME IS NULL:2011/09/09(金) 19:59:23.63 ID:dF3d8pnA
このmysqlの設定だけは分かるようになりました:
show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /opt/lampp/share/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

データベース名は 'testdb' というんですが、
これの文字セットを調べるにはどうすればいいんですか?
640NAME IS NULL:2011/09/09(金) 20:10:15.51 ID:???
>>639
SHOW CREATE DATABASE testdb\G

・my.cnfに character_set_server=utf8 を入れて再起動
・DROP DATABASE testdb;
・CREATE DATABASE testdb CHARACTER SET utf8;

して、もう一度prod.sql流してみて
641638-639:2011/09/09(金) 20:11:33.86 ID:dF3d8pnA
>>640
ありがとうございます!
やってみますので、しばらくお待ちくださいm(__)m
642NAME IS NULL:2011/09/09(金) 20:51:39.98 ID:???
今更だと思われるでしょうが、Maatkitでいかがなんでしょうか?
検索しても日本語の情報がそれほど多く出てくるわけでもないですし
あまり使ってる人多くないのかなと思ったもので

もしMaatkitに変わる、今皆さんが使っているサードパーティ製のものが何かあれば教えて頂けないでしょうか?
643638-639:2011/09/09(金) 20:52:17.74 ID:dF3d8pnA
>>640

・my.cnfに character_set_server=utf8 を入れて再起動
入れてからlamppをstop/startして再起動しました

・DROP DATABASE testdb;
消えました

・CREATE DATABASE testdb CHARACTER SET utf8;
作られました、新しいデータベースはこれ↓です

show create database testdb \g
+----------+-----------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------+
| testdb | CREATE DATABASE `testdb` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)

・・・しかし、今度は"PHP"しか表示されなくなりました。
select id, nam from prod order by id;
+----+------+
| id | nam |
+----+------+
| 1 | PHP |
| 2 | PHP |
| 3 | PHP |
| 4 | PHP |
| 5 | PHP |
+----+------+
5 rows in set (0.00 sec)
データ自体がそうなってしまっているようです。MySQLAdminでも同じでした。
prod.sqlからの抜粋はこうです:
INSERT INTO prod(nam) VALUES('PHPサンプル集');
INSERT INTO prod(nam) VALUES('PHPリファレンス');
INSERT INTO prod(nam) VALUES('PHPデータベース構築法');
INSERT INTO prod(nam) VALUES('PHPの基礎がわかる本');
INSERT INTO prod(nam) VALUES('PHP活用法');
どうしたらよいでしょうか?
644NAME IS NULL:2011/09/09(金) 21:11:22.32 ID:???
データベースが入ってるフォルダのdb.optに書いてあるよ
645638-639:2011/09/09(金) 21:21:32.33 ID:dF3d8pnA
db.optには

default-character-set=utf8
default-collation=utf8_general_ci

と書かれていました。
これはとりあえず表示するのには正しそうですか?
646NAME IS NULL:2011/09/09(金) 21:24:10.02 ID:???
>>642
Percona ToolkitというMaatkit後継がおととい出たばかり
http://www.mysqlperformanceblog.com/2011/09/07/percona-toolkit-1-0-1-released/
647NAME IS NULL:2011/09/09(金) 21:32:12.91 ID:???
>>643
うーんDB設定までは期待通りになってるんだけどな。

prod.sqlって自分で作ったのではなくて書籍の付録か何かなの?
End-to-EndでUTF-8に統一したいなあ

$ iconv -t UTF-8 prod.sql > prod_utf8.sql
とか
648NAME IS NULL:2011/09/09(金) 21:38:16.07 ID:???
>>646
笑w
一昨日出たばかりなんですか?www
いいタイミングで質問しましたw

自分はDBAではないのですが、学習でMaatkitが色々と便利そうだなと思ったのですが、全然情報がなくて、日本では人気ないのかなと思っておりました
@ITとか、特集があるかと期待しましたが無いようですし
皆さんはあまりこういったものは使用しないのでしょうか?
GoogleCode(GooglePatch?)など
649638-639:2011/09/09(金) 21:45:51.62 ID:dF3d8pnA
>>647
ありがとうございます。

iconv -t UTF-8 prod.sql > prod_utf8.sql

を実行すると

iconv: 位置 3 に不正な入力シーケンスがあります

とエラーらしきものが表示されました。
位置 3 ということは、UTF-8ですよね?
utf-8と小文字にしてみましたがダメでした。
man iconv読んでもちょっと分からないです・・・。
650638-639:2011/09/09(金) 21:49:09.22 ID:dF3d8pnA
>>647
書き忘れましたが、おっしゃる通り、
prod.sqlというのはPHPスーパーサンプルに付いてきた書籍の付録です。
これを利用するsellist.phpというのに

// 文字コード
$enc_disp = "EUC-JP";
$enc_db = "EUC-JP";

と書かれているので、元々はEUC-JPで書かれているのだと思います、分からないですけど。
651NAME IS NULL:2011/09/09(金) 21:49:21.47 ID:???
>>649
機密情報とかでなければprod.sqlをどこかにUPするんだ
652638-639:2011/09/09(金) 22:02:13.18 ID:???
>>651
そんなぁ、無茶言わないでくださいよぉ・・・(´・ω・`)
653638-639:2011/09/09(金) 22:33:45.90 ID:dF3d8pnA
文字セットにこんなに悩まされるとは思っていませんでした。
憂鬱です・・・英語で 目 欄 ・・・間違えた・・・メランコリーでしたっけ?

もう全部の文字セットをUTF-8に統一すればいいじゃないですか・・・
何故やらないのか不思議です・・・。
654NAME IS NULL:2011/09/09(金) 22:49:48.70 ID:k/DlnFyj
バックアップについて教えて下さい。

いつもdumpをして、sqlを保存しているのですが、
mysqlサービスを停止させた後に、dataフォルダ毎バックアップする方法の方が速いので、
できれば毎日のバックアップはその方法にしたいのですが、
この方法で問題ありませんか?

バックアップしたdataフォルダを全く別のPCにコピーさせてmysqlサービスを開始すれば、
問題が発生する場合があるかどうかが分からないため不安に思っています。

windows/mysql5.5環境です。どうぞ、宜しくお願いします。
655NAME IS NULL:2011/09/09(金) 22:57:10.09 ID:???
>>654
問題ありません
mysqlサービスを止めるタイミングがあるなら物理バックアップが一番平和
656638-639:2011/09/09(金) 22:59:03.93 ID:dF3d8pnA
657NAME IS NULL:2011/09/09(金) 23:04:25.29 ID:???
>>656
$ iconv -f EUC-JP -t UTF-8 prod.sql > prod_utf8.sql
でおk
658638-639:2011/09/09(金) 23:19:41.32 ID:dF3d8pnA
>>657
ありがとうございます。あと一歩のようです。
PHPを実行したところ、ドロップダウン・メニューに

     PHP?????

…と日本語の文字数だけハテナが表示されています。
データはどうなっているかと言いますと、

select id, nam from prod order by id;
+----+--------------------------------+
| id | nam |
+----+--------------------------------+
| 1 | PHPサンプル集 |
| 2 | PHPリファレンス |
| 3 | PHPデータベース構築法 |
| 4 | PHPの基礎がわかる本 |
| 5 | PHP活用法 |
+----+--------------------------------+
5 rows in set (0.00 sec)

…ちゃんと日本語になっています。MySQLAdminも同じです。

ブラウザIEの文字コードをUTF-8に変えたら全部文字化けして
F5を押すと自動判別されてからまたEUC-JPに戻ってPHP?????になりました。
PHPのコードの文字コードをUTF-8から元のEUC-JPにしても同じ結果です。
多分、もう一歩です。どうすればよいのでしょうか?
659638-639:2011/09/09(金) 23:26:46.92 ID:dF3d8pnA
ここからはもうPHPスレで訊いた方が良さそうでしょうか?
一応書いておきますと・・・

このsellist.phpはテーブルprodから読み出した情報を
ドロップダウン・メニューに表示するだけのコードのようです。
選んだからといって何かするわけではなさそうです。
ですから正しく表示されればこのコードの目的は果たされます。

// 取り出したデータを表示する
echo "<select name=\"menu1\">";
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
echo "<option value=\"".$row["id"]."\">".
cnv_enc($row["nam"], $enc_disp, $enc_db)."</option>";
}
echo "</select>";

cnv_encのところで上で設定した
// 文字コード
$enc_disp = "EUC-JP";
$enc_db = "EUC-JP";
を引数として与えていますね。
これが動いていないということでしょうか?
660638-639:2011/09/09(金) 23:35:19.60 ID:dF3d8pnA
お陰様でデータベースの方にはもう何も落ち度が無いことが分かりましたので、やはりPHPスレで訊いてきます。
(cnv_enc()というのはよく見るとユーザー定義関数でした・・・分解して一つ一つ見てみることにします)
答えてくださった皆さん、ありがとうございました!良い週末を!
661NAME IS NULL:2011/09/09(金) 23:41:45.90 ID:???
MySQLの話がひとつもない
荒らし認定
662NAME IS NULL:2011/09/10(土) 16:54:52.86 ID:???
MySQLの話してるじゃん一応
663NAME IS NULL:2011/09/10(土) 20:49:54.03 ID:LXtWlowA
すいません
mysqlターミナルを使ってMySQLサーバーにアクセスしたいです

どのようにするとよいでしょうか?

環境 mac

XAMPPを、インストールして、MySQLの動作を確認しました。
664NAME IS NULL:2011/09/10(土) 21:06:56.76 ID:???
665NAME IS NULL:2011/09/11(日) 14:46:14.31 ID:???
create tableでは、c1 c2 c3...cnの順にカラムを登録したとします

create table t1 (
c1 int,
c2 int,
c3 int,
c4 int,
cn int
)

この時、登録した順番に取り出す、
select c1, c2, c3 from t1と、
バラバラに取り出す、
select c3, c1, c2 from t1では速度的に差は出るのでしょうか?
プログラム側で速度を計測しても差はわかりませんでした。
あとあと必要なカラムを追加するとき、

select c3, c5, c7 from t1から、
select c1, c3, c5, c7 from t1に変更するか、
select c3, c5, c7, c1 from t1にするか悩んでいます。
後者にしたほうがプログラムの変更が楽なのですが、
速度的には差は出ないという認識でよいでしょうか?
666NAME IS NULL:2011/09/11(日) 15:20:53.69 ID:???
>プログラム側で速度を計測しても差はわかりませんでした

そしたら、それで充分だと思うけど。
下らんこと悩んでいる暇があったらさっさとプログラム完成させたほうがいいよ
667NAME IS NULL:2011/09/11(日) 16:28:05.28 ID:???
>後者にしたほうがプログラムの変更が楽なのですが、

なんか馬鹿なことしてそう
668NAME IS NULL:2011/09/11(日) 17:23:29.74 ID:???
順番変わる方が面倒だろ
何だ?馬鹿なことって
669NAME IS NULL:2011/09/11(日) 17:41:57.46 ID:???
とりあえずSELECTのカラム順は性能に関係ないよ。
EXPLAINとってPLANが同じなら性能は同じとみなしてよし

ただし
「SELECT * をせずに必要な列だけSELECT c1, …する」
という点は大前提
670NAME IS NULL:2011/09/11(日) 18:22:39.44 ID:???
mysqlを入れて [mysqld]の中に
innodb_log_file_size=64M
innodb_buffer_pool_size=128M
と追記したら
mysqlが立ち上がらなくなりました。

どなたか分かる方いたら教えて下さい
671NAME IS NULL:2011/09/11(日) 18:26:32.57 ID:???
>>670
どうやらバッファーサイズのほうはあっても問題ないようです。
ログファイルサイズのほうはmy.cnfの中に書かれているとmysqlが立ち上がりません。
672665:2011/09/11(日) 18:59:23.68 ID:???
レスどうもありがとうございます
explainの見方がよくわからなくて困っていました
カラム順は関係ないとのことなので安心しました
どうもありがとうございます
673NAME IS NULL:2011/09/11(日) 19:14:33.80 ID:???
>>670
「innodb_log_file_size 変更」
ぐぐれ
674NAME IS NULL:2011/09/11(日) 22:17:42.95 ID:???
>>670
追記したのを消せばいいじゃん!
675NAME IS NULL:2011/09/12(月) 15:34:12.76 ID:???
自分の場合、
php の場合は、
$db = mysql_connect($db_host,$db_user,$db_passwd);
の後に、
mysql_query("SET NAMES utf8",$db); //クエリの文字コードを設定

を追加して、文字化けを解消できた。

また、プログラム上では、

$sql = "select * from table_hogehoge";
$sql = mb_convert_encoding($sql, "UTF-8", "SJIS");

などで対応。
676NAME IS NULL:2011/09/12(月) 16:41:47.31 ID:???
あと、自分でサーバーを立ち上げているのなら、
httpd.conf の修正も必要みたいだね。

#AddDefaultCharset ISO-8859-1
AddDefaultCharset off
677NAME IS NULL:2011/09/12(月) 17:04:54.53 ID:???
文字化け解消のためのSET NAMESはやめろとあれほど
678NAME IS NULL:2011/09/12(月) 17:10:08.16 ID:???
文字コード変換はSQL(SET NAMES)で行うのは危険なので
API関数のmysql_set_charsetを使え、と読んだことがあるのですが。
679NAME IS NULL:2011/09/12(月) 17:34:03.75 ID:???
//mysql_query("SET NAMES utf8",$db);
mysql_set_charset("utf8");

がってん。

SET NAMES ではなく、mysql_set_charsetを推奨って書いてるね。
http://jp.php.net/manual/ja/function.mysql-set-charset.php
680NAME IS NULL:2011/09/12(月) 17:34:59.69 ID:???
MySQLの転送量について聞きたいことがあります

a.DBが20M
a tableが20Mだとしてそのうちの一つのレコードの
1 hoge fuge hage
のhogeの部分を取り出した場合
転送量は20Mになるのでしょうか?それとも1 hoge fuge hageの分になるのでしょうか?それともhogeの分だけになるのでしょうか?

転送量だけだからhogeの分だけだと思うのですが
681NAME IS NULL:2011/09/12(月) 17:52:03.62 ID:???
>>680
1 fuge hage
については転送されないが、「hogeの分だけ」というほど単純でもない。

http://forge.mysql.com/wiki/MySQL_Internals_ClientServer_Protocol
1.13 Result Set Header Packet
1.14 Field Packet
1.15 EOF Packet
1.16 Row Data Packet

を読めばいいと思うよ
682NAME IS NULL:2011/09/13(火) 01:45:25.77 ID:???
>>677
なんでだめなの?
683NAME IS NULL:2011/09/13(火) 03:56:24.23 ID:???
>>682
SET NAMES ではMySQLに対して文字コードの変更を指示できるけど、
PHPの内部関数 mysql_real_escape_string が解釈する文字コードは変更されない。
そのためSQLイジェクションの脆弱性が生じる。
詳しくはググって
684NAME IS NULL:2011/09/13(火) 20:07:53.89 ID:???
画像とかを保存する場合、MySQLのDBに保存するのか
もしくはファイルはどこかに置かれるようにして、そこへのリンクurlだけを保存
どちらがいい?
後者だと画像へ直接外部リンク張られるよね?
685NAME IS NULL:2011/09/13(火) 23:52:00.38 ID:???
ファイルはどこかに置かれるようにして、そこへのリンクurlだけを保存
686NAME IS NULL:2011/09/14(水) 05:06:09.95 ID:???
直リンを防ぎたいならDBに保存でもいいけど、直リンを防ぐ方法はいくらでもあるから
どっちでもいい。
687NAME IS NULL:2011/09/14(水) 10:51:13.18 ID:???
yry
688NAME IS NULL:2011/09/14(水) 15:01:52.24 ID:???
ディレクトリ変更や一時ファイルで対応など手法はあるね。
689NAME IS NULL:2011/09/14(水) 15:17:15.56 ID:???
どうでもいいよ。下らん。
690NAME IS NULL:2011/09/14(水) 16:05:16.33 ID:???
間にcgiはさんでリファ見ればいいだけ
691NAME IS NULL:2011/09/15(木) 01:09:13.52 ID:???
>>683
ありがとう
PDO使ってる分には関係ないってところか
692NAME IS NULL:2011/09/15(木) 22:46:58.61 ID:???
xampp使ってるんですがどんなにがんばってもERROR 1045のAccess Deniedが出てきてmysqlにアクセスできません
ぐぐって外国のフォーラムもみましたがよくわかりませんでした
よくわからないなりにmysqladminでみたところuserもhostもNo defaul valueとなっています
どうすればいいですか
693NAME IS NULL:2011/09/15(木) 22:58:02.35 ID:???
error 1045ってこれでしょ?
ttp://mysql.deikou.com/pages/000060.html
694NAME IS NULL:2011/09/15(木) 23:48:19.41 ID:???
なるほどありがとうございました
695NAME IS NULL:2011/09/17(土) 01:08:02.62 ID:???
お安い御用です。
696NAME IS NULL:2011/09/20(火) 00:49:38.33 ID:uKJl/+/o
indexの概念がイマイチわかりません。
遅くなる時、また再構築が必要なケースの認識があっているか教えてください。

遅くなる時
INSERT、DELETEを実行した時

再構築が必要
ALTER TABLEなどテーブルの構造に変更があった時
697NAME IS NULL:2011/09/20(火) 02:02:19.18 ID:???
MySQLのINDEXはALTER TABLEのあと再構築とかしなくていいよ
ていうかALTER TABLEのときにINDEXも再構築される
698NAME IS NULL:2011/09/20(火) 02:06:52.44 ID:uKJl/+/o
>>697
なるほど、了解しました。
ありがとうございます。
699NAME IS NULL:2011/09/20(火) 03:57:12.57 ID:???
お安い御用です。
700NAME IS NULL:2011/09/20(火) 09:56:46.47 ID:???
>>697
これは知らなかった。
有益な情報ありがとうございます。
701NAME IS NULL:2011/09/20(火) 12:33:21.33 ID:???
お安い御用です。
702NAME IS NULL:2011/09/20(火) 16:14:53.05 ID:???
というか、テーブルの構造が変わったら
INDEXも変えなきゃ意味がないでしょ
703NAME IS NULL:2011/09/20(火) 16:26:02.65 ID:???
そうとも限らない
704NAME IS NULL:2011/09/20(火) 18:57:50.06 ID:???
>>702
Oracleで半べそかいて来い
705NAME IS NULL:2011/09/20(火) 19:50:52.79 ID:???
ここってoracleスレだっけか
706NAME IS NULL:2011/09/21(水) 15:25:44.61 ID:???
Oracleが動いてるサーバーにMySQLを同居させることってできますか?
サーバーっていってもWindowsXP機でどちらのDBも月間1万件くらいのデータを扱う程度の規模。
707NAME IS NULL:2011/09/21(水) 15:38:36.05 ID:???
なぜできないと思うのかそれが聞きたい
708NAME IS NULL:2011/09/21(水) 19:23:33.59 ID:???
できるできないってより悪影響あるのかな。
こんなバカなことやってる人って他にいるのかな?

ってことです。
709NAME IS NULL:2011/09/21(水) 20:05:17.78 ID:???
SELECTするときにGROUP BYでまとめて、HAVINGで条件付けをしています。
HAVINGしたものと、していないもののCOUNTが等しい場合のみ結果を返すようにしたいのですが、
HAVINGしたものと、してないものを2つ書いてCOUNTするしかないのでしょうか?
710NAME IS NULL:2011/09/21(水) 20:35:37.82 ID:???
OracleとMySQLを同居させるくらい昔からよくあること。
711NAME IS NULL:2011/09/21(水) 20:36:08.50 ID:???
>>709
つか、それが等しくならない場合ってあるか?
どんなクエリ書いたんだ?
712NAME IS NULL:2011/09/21(水) 20:52:39.18 ID:???
>>708
そりゃ悪影響はあるよ、メモリを喰うとか。
713NAME IS NULL:2011/09/21(水) 21:19:21.09 ID:???
>>709
HAVINGのところでHAVINGで書いてる条件とCOUNTの条件を比較すればいいんじゃね
714708:2011/09/21(水) 22:25:04.38 ID:???
>711, 713
ありがとうございます。

SELECT id FROM Table1 WHERE id IN (SELECT tbl1_id FROM Table2 WHERE name = 'hoge')
GROUP BY num HAVING (SUM(num2) + 5) <= (SELECT base FROM Table2 WHERE id = tbl2_id));

こんな感じのSQLで、
Table1をnumでまとめて、num2の合計と任意の数の和がTable2のbase以下になるものをとり出しています。
このHavingの条件で限定する前のTable1のCount(id)と限定したあとのTable1のCount(id)が等しい時のみ、
Table1のidを返すようにしたいです
715NAME IS NULL:2011/09/21(水) 22:43:52.84 ID:???
また嘘SQLの犠牲者が…
716NAME IS NULL:2011/09/21(水) 23:04:50.10 ID:???
>>714

mysqlあんまり使わないから分からないけどそんな感じのクエリ通るのか?
SQLからだと取得したいデータの形がわからないけど
HAVINGのところで比較するのが難しいならCASE式でやってみたらどう

SELECT
CASE WHEN sex = (SUM(num2) + 5) <= (SELECT base FROM Table2 WHERE id = tbl2_id)) THEN id
ELSE NULL END
FROM Table1
WHERE id IN (SELECT tbl1_id FROM Table2 WHERE name = 'hoge')
GROUP BY num

みたいな感じで
717NAME IS NULL:2011/09/21(水) 23:07:51.46 ID:???
まちがえた

SELECT
CASE WHEN (SUM(num2) + 5) <= (SELECT base FROM Table2 WHERE id = tbl2_id)) THEN id
ELSE NULL END
FROM Table1
WHERE id IN (SELECT tbl1_id FROM Table2 WHERE name = 'hoge')
GROUP BY num

みたいな感じで
718NAME IS NULL:2011/09/22(木) 23:55:27.75 ID:???
percona-toolkit試した人いません?
自分には全然分かりませんでした
どんな感じで、利用方法など聞いてみたいです
719NAME IS NULL:2011/09/23(金) 04:31:22.59 ID:???
全然分からないんだから豚に真珠。
あきらめろ。
720NAME IS NULL:2011/09/23(金) 06:06:06.34 ID:???
ひどい
721NAME IS NULL:2011/09/23(金) 18:39:25.38 ID:???
外部キーを指定すると、カラムに格納できる値が親テーブルに格納されている
値に制限されると書いてあったのですが、実際にやってみるとどのような値でも
格納出来てしまいます。

指定方法がおかしいのか、何か別の理由があるのか教えて頂けないでしょうか。
よろしくお願いします。
722NAME IS NULL:2011/09/23(金) 18:50:40.06 ID:???
お安い御用です。
723NAME IS NULL:2011/09/23(金) 19:23:46.83 ID:???
全然分からないんだから豚に真珠。
あきらめろ。
724NAME IS NULL:2011/09/23(金) 20:16:12.22 ID:???
ひどい
725NAME IS NULL:2011/09/23(金) 20:27:01.33 ID:???
>>721
NOT NULLになってないんじゃないの?
726NAME IS NULL:2011/09/23(金) 23:27:25.70 ID:???
>>721
そんな都合のいいことが出来るわけないだろ
727NAME IS NULL:2011/09/23(金) 23:39:24.65 ID:???
>>721
MyISAMだと無視される
728NAME IS NULL:2011/09/24(土) 01:27:29.80 ID:???
そんなバカな
729NAME IS NULL:2011/09/24(土) 07:20:47.47 ID:???
調べてご覧よ。
730NAME IS NULL:2011/09/24(土) 13:03:31.60 ID:???
ひどい
731NAME IS NULL:2011/09/24(土) 15:20:03.52 ID:???
これが自然の掟だ。
732NAME IS NULL:2011/09/24(土) 15:41:32.94 ID:???
そんなバカな
733NAME IS NULL:2011/09/24(土) 17:13:13.98 ID:???
そんなバナナ
734NAME IS NULL:2011/09/24(土) 17:42:06.13 ID:???
丸ごとバナナ
735NAME IS NULL:2011/09/24(土) 20:01:27.34 ID:???
まるでバナナ
736NAME IS NULL:2011/09/24(土) 20:43:51.77 ID:tDBc0TKq
またとお思いでしょうが、MySQLのライセンスについて教えてください。
MySQLを会社のイントラネットのサーバーに入れて
Webを使って技術情報検索に使おうと思っています。

MySQLのGPLライセンスとしては
-----------------------------------
http://www.softagency.co.jp/products/mysql/license/
もしあなたがMySQLを使ったソフトウェアを開発し、他の人に配布しようとしている場合、
それは有料、無料、評価版、製品版にかかわらず、あなたの開発したソフトウエアをGNU GPLに従い
配布するつもりがなければ、コマーシャルライセンスの購入が必要となります。
------------------------------------------
とあるので、その検索ソフトウェア(PHPで書くつもりです)は
「欲しい人には渡さなければならない」わけですが
 手に入れた人が社外にばらまく事を禁止してはならない わけですかね?

(逆に言えば、社外にばらまいてもいいよ、と宣言すれば、GPLライセンスでMySQLを使っても
かまわないってことですかね?まぁそんな事するヤツはいないと信じてますがw)

737NAME IS NULL:2011/09/24(土) 21:27:12.19 ID:???
配布しなきゃいい。
あるいは、MySQLと一緒に配布せず純粋にPHPのコードのみなら
GPL以外のどんなライセンスにするのも自由だ。
738NAME IS NULL:2011/09/24(土) 22:31:54.04 ID:???
>その検索ソフトウェア(PHPで書くつもりです)は
>「欲しい人には渡さなければならない」わけですが

違うよ。
その検索ソフトを他者/他社に配布するかどうかは任意。
739NAME IS NULL:2011/09/24(土) 23:21:31.42 ID:???
>>738
しかし配布した相手にはソースコードを公開する義務があるわけだな
740NAME IS NULL:2011/09/25(日) 00:07:56.26 ID:???
どういう接続方法を採るかにもよる。
>>736のページは知っていてわざとなのか、ただ「使う」としか書いていない。
ライブラリとして接続する場合は、GPLに抵触する可能性があるから、CLが必要(であろう)。
が、ネットワーク接続のような使用方法であればGPLには抵触しないから、CLは必要ない。
741NAME IS NULL:2011/09/25(日) 00:10:29.27 ID:???
あ、ごめん。
後者は、CLを買う必要もないし、ソース公開する義務もない、ってことね。
742771:2011/09/25(日) 00:20:43.14 ID:???
さすがオラクル汚い
743NAME IS NULL:2011/09/25(日) 00:42:08.16 ID:???
>>740
すいません。ちょっと問題を変えます。

http://www.softagency.co.jp/products/mysql/license/
のフローチャートによれば
Webベースでデータベースの登録、クエリを行う場合は問題ないとして、
たとえばExcelVBAみたいなものでMySQLに接続するマクロをつくり、
日本のあちこちの事業所に「このマクロでうちのサーバーにアクセスしてね」
と、そのマクロを配布する場合は

あなたの開発したソフトウェアが動作するためにはMySQLが必要ですか
↓Y
そのソフトウェアを他の人に配布しますか?
↓Y
そのソフトウェアのソースコードを引き渡しますか?
↓Y
そのソフトウェアの改変と再配布を誰でも無制限に許可しますか?
↓Y
GPLでご利用になれます

となるので、
そのソフトウェアの改変と再配布を誰でも無制限に許可しますか?
に「はい」と答える為には、
「社外の人間に、『これ、うちの社で作ったマクロだけど、便利だからあげる』と言ってあげてもいいよ」
と言わないとダメなんですかね?

744NAME IS NULL:2011/09/25(日) 00:49:29.48 ID:???
>>743
そうです。受託開発ならまず間違いなく問題ありません。
745NAME IS NULL:2011/09/25(日) 01:21:44.65 ID:???
GPLを遵守してばら撒いてもいい、ということと
社員就業規則を遵守し会社の機密情報を漏らすな、っていうのを
両方伝えればいいんだよ
746NAME IS NULL:2011/09/25(日) 02:59:36.07 ID:???
うちの会社には機密情報は存在しません。
個人情報についても全て公開するのが会社の方針です。
747NAME IS NULL:2011/09/25(日) 03:00:15.68 ID:???
間違と問題って似てる
748NAME IS NULL:2011/09/25(日) 08:44:38.47 ID:???
だから、そのフローチャートは
>あなたの開発したソフトウェアが動作するためにはMySQLが必要ですか
初っ端のこの文章が曖昧過ぎて、フローが意味をなしてない。

GPLでは、もともとのプログラムに「改変」して二次配布する場合に、ソース公開の義務を伴うわけだから、
ただ単にGPLなソフトを使うプログラムについては、その義務はないし、ライセンスもGPLにする必要がない。

まあ、VBA経由ってことなら、ライブラリを直接リンクすることもないはずだから、問題ないでしょ。
749NAME IS NULL:2011/09/25(日) 09:01:11.70 ID:???
>>748
>GPLでは、もともとのプログラムに「改変」して二次配布する場合に、ソース公開の義務を伴うわけだから、
>ただ単にGPLなソフトを使うプログラムについては、その義務はないし、ライセンスもGPLにする必要がない。

全くもってそう思うのですが、ちゃんと問い合わせないとダメですかね?
なんかわざと曖昧にして、ミスリード誘っているような気もするw


750NAME IS NULL:2011/09/25(日) 09:03:35.90 ID:???
GPLを理解してないどころか日本語も理解できないのか…
751NAME IS NULL:2011/09/25(日) 09:37:24.33 ID:???
>>750
どの部分の日本語を指して言っているのか、詳しくプリーズ
752NAME IS NULL:2011/09/25(日) 10:15:49.36 ID:???
>>749
何度回答をもらっても信じないなら質問すんなよ。
753NAME IS NULL:2011/09/25(日) 12:19:47.34 ID:???
>>751
>>748が「動作するためにMySQLを必要としないソフトウェアである場合を弾く」ためのフローだと
理解してない事に対して言ったのよ

更にGPLを理解してないと言ったのは以下のように
> GPLでは、もともとのプログラムに「改変」して二次配布する場合に、ソース公開の義務を伴うわけだから、
「改変」と「ソースコードの要求」の二つの権利をごっちゃにしたような
ありもしない制約を説明していたからな
754NAME IS NULL:2011/09/25(日) 13:21:19.64 ID:???
a
755NAME IS NULL:2011/09/25(日) 13:54:25.65 ID:???
GPLとかそういう問題じゃないんじゃないの?

http://www-jp.mysql.com/about/legal/licensing/index.html
Web サイト、企業 IT、行政機関 IT での使用:
これらのお客様に対しては、包括的なサブスクリプションサービスの MySQL Enterprise を用意しています。

つまり、企業ITな人はMySQL Enterprise を使え ってはっきり書いてあるじゃん。

756NAME IS NULL:2011/09/25(日) 13:57:05.99 ID:???
http://d.hatena.ne.jp/kurosaka/20071214/p1
>、企業ユーザは100% MySQL AB社にライセンス費用を支払わなければならない感じ。

これが正しいんじゃないの?
757NAME IS NULL:2011/09/25(日) 14:03:14.90 ID:???
>>755
その文章は、「企業向けにMySQL Enterpriseを『用意して』いる」と書いてあるだけで、
「企業はMySQL Enterpriseの使用を義務付ける」とは書かれていない。
つまり企業でもMySQL Enterpriseを使用するかどうかは任意と読み取れる。
758NAME IS NULL:2011/09/25(日) 14:03:58.43 ID:???
>>755
書いてねーよ
759NAME IS NULL:2011/09/25(日) 14:04:56.21 ID:???
>>756
誰が書いたかもわからん個人のブログの記述を盲目的に信じるなって言ってんだろ
760NAME IS NULL:2011/09/25(日) 14:15:57.63 ID:???
>>759
横から失礼。
手元の本(誰が書いたかはわかっているw)にも
「企業内で使用するような場合はコマーシャルライセンスが必要となることがあります。」
と書いてある。どんな場合かはっきり書きたくはないらしいw
761NAME IS NULL:2011/09/25(日) 14:59:28.05 ID:???
>>760
この場合の「誰か」ってのは、名前とかそういうことじゃなくて、
MySQL(オラクル)の公式見解かどうかが重要ってこと。
それ以外の誰が何と発言しようと想像の域を出ないだろ。
762NAME IS NULL:2011/09/25(日) 16:10:40.55 ID:???
遅いクエリを、事前にキャッシュに入れておく方法ない?
データの更新は早朝の朝一のみなんで、出来ればバッチででもキャッシュに入れときたいんだが。
763771:2011/09/25(日) 16:48:56.36 ID:???
GPLスレと聞いて。
元のソフトウェアを改変する場合にのみソース公開は必要で、
使うだけならそんな事しなくて良いはずなんだが。
764NAME IS NULL:2011/09/25(日) 16:55:15.48 ID:???
それがどうした。そんなことみんなわかってるよ。
765NAME IS NULL:2011/09/25(日) 17:39:57.74 ID:???
766NAME IS NULL:2011/09/25(日) 17:40:24.71 ID:???
改変したかどうかは関係ない。
問題は(元のGPLソフトウェアと一体のものとして)配布するかどうか、だ。
767NAME IS NULL:2011/09/25(日) 17:42:27.78 ID:???
それがどうした。そんなことみんなわかってるよ。
768NAME IS NULL:2011/09/25(日) 17:50:41.11 ID:???
質問者が失踪したので終了しないか?
結局何を調べるのかわかんなくなったぞ。
769NAME IS NULL:2011/09/25(日) 17:52:59.74 ID:???
それがどうした。そんなことみんなわかってるよ。
770NAME IS NULL:2011/09/25(日) 18:04:56.26 ID:???
>>768
実は気になっていることなので、結論を知りたいのが正直なところ。
イントラネットで使う場合、どう転んでも商用ライセンスなんていらないだろ
と思っていたんだが、正直自信なくなってきたw

GPL汚染に関しての問題とは思うんだが
>そのソフトウェアを他の人に配布しますか?

この設問の書き方はズルイと思うんだよな。
771NAME IS NULL:2011/09/25(日) 18:12:36.46 ID:???
ずるいというか、そのくらい自分で判断できない奴は
おとなしくコマーシャルライセンス買っとけって話だな。
772NAME IS NULL:2011/09/25(日) 18:29:21.58 ID:???
わざと曖昧にしておくのもオラクルの商売のやり方
773NAME IS NULL:2011/09/25(日) 19:11:19.36 ID:???
ただのスタンドアローンサーバとして使うだけなら、何も心配することはない。
そもそも、ライブラリのリンクについても、「改変」に当たるかどうか微妙な問題だ。
これについて、GPL違反で裁判に訴えたところで勝てるかどうか怪しい。
もちろん、面倒除けにCLを買うというのは、使う側の勝手であるが。
774NAME IS NULL:2011/09/25(日) 19:39:46.21 ID:???
wikipediaに
「* MySQLを改造するわけではなく、プロセス間通信として、MySQLに接続し、利用する場合は、
そのソフトウェア自体はGPL以外のライセンスで配布して良い。」

という記述があると聞いて、おーと思ったが

http://ja.wikipedia.org/w/index.php?title=MySQL&diff=29314853&oldid=29223151

で削除されている。

お察し下さい。
775NAME IS NULL:2011/09/25(日) 20:02:49.27 ID:???
>>774
これはたぶん間違って消しちゃったんだな。
あとで戻しといてあげよう。
776NAME IS NULL:2011/09/25(日) 20:03:29.11 ID:???
-
* MySQLを改造するわけではなく、プロセス間通信として、MySQLに接続し、利用する場合は、そのソフトウェア自体はGPL以外のライセンスで配布して良い。

-
* 自社開発でMySQLを改造し、自社のWebサーバで利用する場合には、ソースコードの開示は行わなくて良い。GPLによるソースコードの開示を求める権利を有するのは、ソフトウエアを入手したものという解釈による。Webサービス利用者にはこれは当てはまらない。

これらがダメなら、Linux上のプロプラなソフトはみーんなアウトだ。
もちろん、Oracleもだw
777NAME IS NULL:2011/09/25(日) 20:21:23.31 ID:???
>>775
ライセンスに関する出典を必要とする箇所を記述。)

で消したので、出典を明記しないとダメよん
778NAME IS NULL:2011/09/25(日) 20:49:05.60 ID:???
>>777
出展はGPLにしとくよ。
779NAME IS NULL:2011/09/25(日) 21:02:31.40 ID:???
GPLの規定がどうなっているかが問題なんじゃなくて、
どのような場合にGPLが適用されるか、オラクルの説明が明確でないのが問題なんだろ
780NAME IS NULL:2011/09/25(日) 21:06:55.57 ID:???
デュアルライセンスだからGPLを選べばGPLが適用されるが?
781NAME IS NULL:2011/09/25(日) 21:59:30.01 ID:???
>>779
GPLの方を使えばGPLが適用されるので心配ゴム用
782NAME IS NULL:2011/09/25(日) 22:00:53.53 ID:???
そうなんだがGPLを選択するために満たすべき条件が曖昧なんだろ
783NAME IS NULL:2011/09/25(日) 22:34:10.02 ID:???
こいつは何を問題にしてるんだ?
GPLを選択するために満たすべき条件はGPLに従うことであって、
それ以上でもそれ以下でもないが?
784NAME IS NULL:2011/09/25(日) 23:15:50.79 ID:???
>>783
GPLのMySQLに接続するプログラム(VBでもPythonでもなんでもいいけど)は
GPLじゃなきゃダメ(配布するなら、そのソースの無制限の再配布を認める)
っていう意味に読めるような文言をMySQLのオフィシャル代理店が言っているので
もめている。

785NAME IS NULL:2011/09/25(日) 23:20:18.50 ID:???
そもそもMySQLに接続するプログラムの配布条件にまでMySQLが口を出すのがおかしな話だよな。
MySQLと同時配布しようがしまいが、MySQLとは独立したプログラムのライセンス形態は
MySQLには関係無いと思うけどな。
例えばOSのAPIを利用するアプリのライセンス形態までOS側が口を出すなんて聞いたことがない。
786NAME IS NULL:2011/09/26(月) 19:57:58.68 ID:???
>>784
もめているというより、GPLをよく理解せず、その代理店の書いたいいかげんな
文章を勝手に解釈してわめいている奴が一人いるだけだな。
787sage:2011/09/26(月) 20:41:24.72 ID:NnYmgY1c
>785
だがそれがMySQLのライセンスなのです。
http://dev.mysql.com/doc/refman/5.6/en/introduction.html
にはGPLって書いているけど、
http://www.mysql.com/about/legal/licensing/oem/
を読むと、商用ソフトとMySQLを組み合わせて配布(combine and distribute)するなら
商用ライセンスが必要とあります。
788NAME IS NULL:2011/09/26(月) 20:41:38.38 ID:???
>>786
そもそも代理店がいいじゃげんな文章を書いちゃダメでしょう(苦笑)
789NAME IS NULL:2011/09/26(月) 20:44:53.13 ID:???
>>787
MySQLは自分でダウンロードしてインストールしてね

って書いておけばOKなん?
790NAME IS NULL:2011/09/26(月) 20:49:22.25 ID:???
MySQLへのFOSSライセンスなPHPは
http://www-jp.mysql.com/about/legal/licensing/foss-exception/
PHP License 3.0/3.01 なんだ罠
791NAME IS NULL:2011/09/26(月) 21:52:28.59 ID:???
>>784
WindowsもGPLになるとかありえないでしょ。問題ないよ。
792787:2011/09/26(月) 22:11:12.78 ID:???
>789
私はOracleじゃないんで確実なことはわからないです。
が、そのページには商用ディストリビュータとOSSプロジェクトの両方のニーズを
満たすべくデュアルライセンスでMySQLを提供しているとあり、
OSSプロジェクトのほうはアプリをGPLで配布することが前提となっています。
そちらに該当しないなら商用ライセンスが必要だろうというのが私の見解です。
配布しなきゃOKなのかもしれないですが、ライセンス違反だと叩かれて評判落とす
リスクは避けたいし。
それにMySQLも今やOracleの所有物ということで有償じゃないと使えない拡張も出てきてます。
http://blogs.oracle.com/MySQL/entry/new_commercial_extensions_for_mysql
というわけで私が選ぶならMySQLではなくPostgreSQLにします。
793NAME IS NULL:2011/09/27(火) 00:15:47.12 ID:???
いやいまどきPostgreは無いだろ・・・
グローバル的にも性能的にも・・・
794NAME IS NULL:2011/09/27(火) 00:26:12.73 ID:???
>>793
MySQLのライセンスがアレだから、企業ではPostgreに流れているのは事実(当社比)
795NAME IS NULL:2011/09/27(火) 01:06:41.60 ID:???
まあいいんじゃない?
ばかがMySQLのライセンスが…と定期的に騒ぎ立てる頻度が減れば
796NAME IS NULL:2011/09/27(火) 01:38:04.55 ID:???
>>793
Postgreって性能低いの?
少し前まではMySQLより上かと思ってたけど・・・
797NAME IS NULL:2011/09/27(火) 01:52:49.28 ID:???
Postgreのが機能多くて速度遅かったでしょ
最近はほぼ同じってかMySQLがストレージエンジンごとに性格変わるから一概に評価出来ない
798NAME IS NULL:2011/09/27(火) 02:53:47.81 ID:???
てことは、最近のpostgresはMySQLと速度は同等で機能は上ってこと?
799NAME IS NULL:2011/09/27(火) 04:52:30.15 ID:lyJNJV9x
すみません、質問させてください
ubuntu10.10で、MySQLを使用しているのですが、
sudo /etc/init.d/mysql start としても、
start: Job is already running: mysql と出て起動しなくなりました。
ps auxw | grep "mysql" などしても、mysqldは起動していません。

・・・どうすれば、起動するようになるでしょうか・・・
800NAME IS NULL:2011/09/27(火) 07:45:08.41 ID:???
>>799
たぶん/etc/init.d/mysql内でロックファイル作っていてそれが残っているんじゃないの?
/etc/init.d/mysqlの中身を見てロックファイル名を調べて消してみたら?
801NAME IS NULL:2011/09/27(火) 09:50:04.42 ID:???
MySQL.comのWebサイトに不正なコード 闇市場でroot権限も販売か
http://www.itmedia.co.jp/enterprise/articles/1109/27/news027.html
802NAME IS NULL:2011/09/27(火) 09:56:14.32 ID:???
>>792
なんなんだ、こいつはw
だいたい、MySQLの場合は、GPL版とCL版でものが違うじゃないか。
803NAME IS NULL:2011/09/27(火) 12:01:01.70 ID:???
>>801
そういや昨日>>790のURLを開いたらなぜかJAVAが起動しておかしいと思った。
感染したのかな?
804NAME IS NULL:2011/09/27(火) 13:58:13.69 ID:???
昨日マニュアル見たけど
プラグインとJavaScriptは切ってた。
こういうとき何のアナウンスもないものなの?
805NAME IS NULL:2011/09/27(火) 15:14:28.42 ID:???
企業の体質によるだろ
806NAME IS NULL:2011/09/27(火) 21:29:39.35 ID:???
>>801
やべぇ、最近頻繁に訪れていたから感染してるかも・・・
Windowsの場合、MSEssensialしか入れてないけどやっぱ感染してるかな?
まぁLinuxで訪れてるんだけどやっぱ駄目ですかね?
特にウィルス対策ソフトは導入していませんが
807NAME IS NULL:2011/09/27(火) 22:08:14.63 ID:???
JavaとかFlashの慨知脆弱性だろ?多分
Windowsの各プラグインが最新版なら大丈夫じゃね?
808NAME IS NULL:2011/09/27(火) 22:29:59.70 ID:???
慨知ってなんだ・・・?
809NAME IS NULL:2011/09/27(火) 22:39:12.63 ID:???
おおざっぱに知ってんだろ。
810NAME IS NULL:2011/09/28(水) 00:23:42.00 ID:???
お前ら

一回問い合わせろ
で結果を晴れ

又聞きや妄想はイラン
実際のソースがないと信じない
811NAME IS NULL:2011/09/28(水) 00:37:35.11 ID:???
812NAME IS NULL:2011/09/28(水) 01:43:57.53 ID:???
>>808
「慨知」でググると真面目そうなサイトでも使われてるのが恐い。
2ch用語の「ガイシュツ」の悪影響でしょうか。

>>809
「慨」は「憎らしい」とか「いまいましい」という意味みたいです。
「おおざっぱ」なら「概知」ですかね。
813NAME IS NULL:2011/09/28(水) 19:16:49.91 ID:AOJXD0O8
プログラム板で聞こうか迷ったのですが質問させてください

mixiで新着のコメントがあった場合、
コメント(1) みたいな表示で新着コメント数が表示され、コメントを確認すると
その表示が消えています
これはどうやって実現するのが良いでしょうか
DBのコメント用のテーブルに checkedカラムを用意してデフォルトを0として、
閲覧時(select時)にchecked=1としてupdateするくらいしか思いつかないですが
他にどんなやり方があるでしょうか?

また、上記の方法だとするとクエリを2つ実行するってことですよね?
トランザクションさせることになるんでしょうか
まとめて一つのクエリでコメント一覧の引き出し+updateなんて出来ないですよね?

mysql5を使っています、ご意見お願いします
814NAME IS NULL:2011/09/28(水) 19:57:42.34 ID:???
読んだ最新コメントの日時を記録、かな?
次回は、その日時より新しいコメントがいくつあるか、と。

よくわからん。

でも、そういうのはMySQL特有のことではないから、
ム板とか、この板でもDB設計スレとかの方が適切じゃなかろか。
815NAME IS NULL:2011/09/28(水) 20:39:14.11 ID:???
>>813
そのコメントを見る可能性のある(例えば)100人のうち一人でも見たら
表示済みとしてしまっていいの?w

普通そういうクラ側でどう扱うか、というだけの問題ならクッキーとかでやればいいんじゃないの
816NAME IS NULL:2011/09/28(水) 20:39:38.16 ID:???
>>814
なるほど、そういう発想はなかったです!
勧めていただいたスレで質問し直してみます、ありがとうございました
817813:2011/09/28(水) 20:44:05.35 ID:???
>>815
あ、説明不足ですみません
mixiなどの会員機能前提で、その会員ユーザー向けのコメントなのでその人だけが確認すればOKなんです
しかし今>>814さんの仕様を考えたら、コメントが複数ある場合、全部確認してなくても
一つだけ確認しただけで未読フラグが落ちることになりそう…
難しい、やっぱり個別にフラグ持たせるしかないのかな。何個もクエリ実行させるのは嫌なんだけどなぁ
818NAME IS NULL:2011/09/29(木) 09:06:53.99 ID:???
table A (
  name_id autoincrement,  #key
  name   varchar(50)   #名前
);

table B (
  id   autoimcrement,  #key
  friend int,       #味方ID
  enemy  int       #敵ID
);


friendもenemyも同じAマスターを参照しています。
外部ジョインで
select 味方の名前, 敵の名前 from A left join B on ???? where B.id = ?
と書きたいのですがうまくいきません。
どうよに書けばいいでしょうか?



819NAME IS NULL:2011/09/29(木) 09:21:11.23 ID:???
SELECT friendtable.name, enemytable.name
FROM A AS friendtable, A AS enemytable, B
WHERE B.id = ? AND B.friend = friendtable.name_id AND B.enemy = enemytable.name_id

じゃあかんの?
820NAME IS NULL:2011/09/29(木) 09:46:56.59 ID:???
>>819
ありがとうございます。
join句がありませんが、これは外部結合となるのでしょうか?あるいは内部結合となるのでしょうか?

なぜこんな質問をするのかと言いますと、
別のテーブルを参照させる場合は常にjoin句を使用するものと思い込んでいて
join句を使わないでも表現できることは知っていたのですが、このように書くべきという考えに至りませんでした。



821NAME IS NULL:2011/09/29(木) 10:13:56.25 ID:???
WHEREんとこでjoinされてるよ。内部結合。

にしても、場合に拠るだろうけど、818だけしか見てない者としては、
friendとenemyは別テーブルに分けたい気持ちがむらむらと。
822NAME IS NULL:2011/09/29(木) 10:28:30.50 ID:???
>>821
ありがとうございました。
823NAME IS NULL:2011/09/29(木) 10:39:38.81 ID:???
>>820
内部結合になる
外部結合したいときは
WHERE B.id = ? AND B.friend = friendtable.name_id(+) AND B.enemy = enemytable.name_id(+)
と、私ならする(本当はJOIN句使ったほうがいいんだろうけど、こっちのが見やすいし慣れてる)

MySQLで動くかどうかは知らんw
動くの?
824NAME IS NULL:2011/09/29(木) 12:15:16.95 ID:???
(+)
↑これはオラクル方言だと思う。
825NAME IS NULL:2011/09/29(木) 15:10:10.65 ID:0dZz+iVY
phpmyadminがいろいろとめんどくさいんだけど、
phpmyadminに代わってオススメのもんってみなさんありますか?
826NAME IS NULL:2011/09/29(木) 16:37:46.37 ID:???
有料でよければnavicat
一応無料版もあるけど機能制限はされてる
でも無料版でも十分かもしれない
827NAME IS NULL:2011/09/29(木) 17:29:39.46 ID:???
家で無料版のnavicat使ってるよ
かなり便利
828NAME IS NULL:2011/09/29(木) 19:06:42.99 ID:???
自分はSequelPro.
829NAME IS NULL:2011/09/29(木) 20:18:22.04 ID:???
ソースコードからLinuxにインストールすると、デフォルトではmysql.sockは/tmp内に存在し、my.cnfもそうなっております
で、この場合は一般ユーザhogeでも端末にてコマンドラインで
$ mysql -u root -p
等とするとアクセスできていたのですが、わけあって
./configureにて--with-unix-socket-path=/var/lib/mysql/mysql.sockを付けmy.cnfも変えたらrootユーザ以外はアクセスできなくなりました
hogeユーザでアクセスすると、
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)
となります
srwxrwxrwx. 1 mysql mysql 0 mysql.sock
でパーミッションの問題だと思い、hogeをmysqlグループに入れたり、
setfacl -m u:hoge:rwx /var/lib/mysql/mysql.sock
等としたのですがダメでした
どのようにすればhogeユーザにてmysqlにアクセス出来るようになるのでしょうか?
830NAME IS NULL:2011/09/29(木) 20:21:21.12 ID:???
まずは/var/lib/mysql/*.errを見てみたほうがいい。
831NAME IS NULL:2011/09/29(木) 23:57:45.10 ID:???
navicatは金払ってでも買うべし。
コレなしでは仕事できん。
832NAME IS NULL:2011/09/30(金) 01:23:20.29 ID:???
じゃぁしなくていいよ
弘法筆を選ばず
833825:2011/09/30(金) 01:29:08.40 ID:QSvmWJiP
みんなありがとう
navicatが評判だけど、個人ではあっても一応駆け出しの商用だから
まだ今の段階ではフリーだと助かります
よろしかったらフリーのおすすめを語ってください
834NAME IS NULL:2011/09/30(金) 03:01:16.66 ID:???
フリーのソフトの情報をタダで手に入れようとは虫が良すぎる
835NAME IS NULL:2011/09/30(金) 08:09:15.16 ID:???
navicatみたけどsqlもちゃんと使えるのかな
Mysql workbench の方がよくないかな
836NAME IS NULL:2011/09/30(金) 10:40:38.84 ID:???
shellとmysqlコマンドがあれば何でも出来るよ
837NAME IS NULL:2011/09/30(金) 14:44:13.51 ID:???
>>835
無料版でも使える。有料版だとER図書くみたいな感じでSQL作れるのが便利。
838NAME IS NULL:2011/09/30(金) 19:56:54.30 ID:???
navicatくらい会社で買ってもらえるでしょ?
フリーがいいとかって、どんだけ貧乏な会社なの?
評価版があるんだし、評価してよかったら買えよ
839NAME IS NULL:2011/09/30(金) 20:32:46.17 ID:???
>個人ではあっても一応駆け出しの商用
つまりSOHOやら起業まもないって事だろ
840NAME IS NULL:2011/09/30(金) 20:55:57.39 ID:???
2chに書き込んで、真偽の定かで無い文字を追いかける起業…
841NAME IS NULL:2011/09/30(金) 20:58:44.31 ID:???
SOHOだろーと便利なものは買えといいたい。
嫌ならフリーのもあるんだからそれを使いな。
842NAME IS NULL:2011/09/30(金) 21:06:54.88 ID:???
金が無いし、フリーソフトを自分で試すのも面倒だからここで聞くとか
そんなヤツやphpMyAdmin使ってればいいじゃないか
843NAME IS NULL:2011/09/30(金) 22:07:03.75 ID:???
あれはあれで便利なんだが
ファイル1本で済むのがあれば便利だよな
844NAME IS NULL:2011/09/30(金) 22:29:27.99 ID:???
MySQL WorkBenchは、なぜ不人気なのか?
845NAME IS NULL:2011/09/30(金) 22:49:19.15 ID:???
>>844
ださい
インストールがめんどい
使い勝手が悪い
遅い
たまに固まる
846NAME IS NULL:2011/09/30(金) 22:49:34.47 ID:???
知らん
847NAME IS NULL:2011/09/30(金) 22:51:58.50 ID:???
MySQL Workbenchいいよ!
フリーだし
今のところ不満はない
848NAME IS NULL:2011/09/30(金) 23:18:20.48 ID:???
Workbenchはexeのあるディレクトリにいろいろ放り込みすぎ
あと画面描画がチラつくとか時々2回押さないと反応しないとか
849NAME IS NULL:2011/10/01(土) 00:10:22.67 ID:???
Workbench
使い方がわからん
850NAME IS NULL:2011/10/01(土) 07:58:57.20 ID:???
あっそ
851NAME IS NULL:2011/10/01(土) 08:44:04.42 ID:ltbhW3+b
別の場所にデータベースがある場合のマウント方法を教えてください

データベースはデフォルトの /var/lib/mysql/ にあるのですが、
データベース「mydata」を作成し、/var/lib/mysql/ から /home/hogehoge/ に移動。
/var/lib/mysql には、/home/hogehoge/mydata のシンボリックリンクを作ったのですが、
うまく読み込めませんでした・・・

デフォルトの/var/lib/mysql から変更せずに、別場所に移動したデータベースはどのようにすればうまく読み込めるでしょうか?
852NAME IS NULL:2011/10/01(土) 09:01:36.26 ID:???
OSのmysqlユーザが/home/hogehogeにアクセスできないんじゃないの
恒久対処にすると危ないのでいかんけど
$ chmod -R 777 /home/hogehoge
してみるとか
853851:2011/10/01(土) 09:27:12.79 ID:???
>>852
返信ありがとうございます

hogehoge自体は755で、
その下に、mydataディレクトリが保存されてる状態です。
mydataディレクトリは、所有者はmysqlで、パーミッション700
権限的には問題ないと思うのですが・・・
854NAME IS NULL:2011/10/01(土) 10:35:42.15 ID:???
MySQLって1秒間に100回更新されるような状況でも大丈夫なんでしょうか?
SQLiteとかでは不可能なのですが
855NAME IS NULL:2011/10/01(土) 10:38:39.45 ID:???
1000回だろうが1万回だろうがハードウェアの処理能力が追いつけば問題ないだろ
856NAME IS NULL:2011/10/01(土) 10:52:37.67 ID:???
処理中に他の処理が働いても大丈夫とかそういうことか?
857NAME IS NULL:2011/10/01(土) 11:34:18.08 ID:???
>>854
最短の更新間隔を設定できなかったっけ?
858851:2011/10/01(土) 17:36:28.11 ID:???
すみません!
自己解決できました
ありがとうございました
859NAME IS NULL:2011/10/01(土) 20:23:30.23 ID:???
どうやって解決したのか書いたら?
860NAME IS NULL:2011/10/01(土) 21:11:03.17 ID:???
いるよな、質問とか相談しに来たのに相手に一言もしゃべらせないで、
一歩的にマシンガントークして、そのうち満足して帰って行くやつ。
861851:2011/10/01(土) 21:49:30.60 ID:???
解決方法は、AppArmorの権限設定でした
全員の環境に当てはまるとは限らないと思いますけど、
ubuntuではデフォルトでAppArmorの設定をしないとアクセスできないようになってますね
862NAME IS NULL:2011/10/01(土) 21:49:34.00 ID:???
>>860
問題解決にはうってつけの方法なんだよな。
相手に質問するために状況を把握しまとめる過程で
原因を見つけることは多い。
本来はまずテディベアに語りかけるべきなんだけど
その点2chは淫乱テディベアなのでうってつけだ。
863NAME IS NULL:2011/10/01(土) 22:03:32.05 ID:???
AppArmorが原因だったのか。
参考になったけど参考にならんな
864NAME IS NULL:2011/10/01(土) 22:35:07.06 ID:???
>>862
何故そこでテディベア?
日本人なら別の物だと思うが?
865NAME IS NULL:2011/10/01(土) 23:18:10.70 ID:???
>>864
確かに。日本人ならグルーミーか赤カブトだね。
866NAME IS NULL:2011/10/03(月) 14:18:12.22 ID:???
CREATE TABLEのときの「KEY `hoge` (`hoge`)」とは何でしょうか?

PRIMARY KEY (`id`)
UNIQUE KEY `username` (`username`)
などはわかりますが「KEY」の意味がわかりません
867NAME IS NULL:2011/10/03(月) 14:46:03.79 ID:???
>>866
パーティショニングじゃなくて?
「KEY `hoge` (`hoge`)」だけでなく create table 文の全文を書き出してみなよ
868NAME IS NULL:2011/10/03(月) 14:50:54.90 ID:???
>>867
調べていたら「パーティショニング」という単語も出てきましたが
何か違うような気がします。以下CREATE TABLE文です

CREATE TABLE `tbl_users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` varchar(128) NOT NULL,
`email` varchar(128) NOT NULL,
`activkey` varchar(128) NOT NULL DEFAULT '',
`createtime` int(10) NOT NULL DEFAULT '0',
`lastvisit` int(10) NOT NULL DEFAULT '0',
`superuser` int(1) NOT NULL DEFAULT '0',
`status` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`),
KEY `status` (`status`),
KEY `superuser` (`superuser`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
869NAME IS NULL:2011/10/03(月) 14:56:54.05 ID:???
>>868
あぁ、そりゃただのINDEXだね。マヌアルにも書いてあるよ。
http://dev.mysql.com/doc/refman/5.1/ja/create-table.html
「KEY は通常 INDEX の同義語です。」
870NAME IS NULL:2011/10/03(月) 15:05:32.95 ID:???
理解しました。リンクまでありがとうございます。

KEY `varname` (`varname`,`widget`,`visible`)
では上記は、複合インデックスってことですか?
871NAME IS NULL:2011/10/03(月) 15:15:28.02 ID:???
そのとおり。
872NAME IS NULL:2011/10/03(月) 15:16:43.14 ID:???
助かりました。ありがとうございました!
873NAME IS NULL:2011/10/05(水) 09:41:25.03 ID:???
お安い御用です。
874NAME IS NULL:2011/10/05(水) 23:40:34.71 ID:???
すごい素人な質問をさせてください。

文字列を格納するのに、charとかvarcharがありますが、
個人的には文字列は全部text型でいいのではないかと思うんですが、
間違いでしょうか?
こういう場合はcharを使うとか、この場合はvarcharを使うべきとかいったような使いどころについて教えていただけますでしょうか。
875NAME IS NULL:2011/10/05(水) 23:48:22.67 ID:???
>>874
間違いではないよ。
サイズ指定するとその幅をあらかじめ確保したり
それ以上格納できなくなったりするから、計算しやすく
DBサイズ固定化したり動作を早くしたりできるだけ。
876>>874:2011/10/06(木) 00:39:46.79 ID:???
>>875
ありがとうございます、とても参考になりました。
877NAME IS NULL:2011/10/06(木) 04:21:20.44 ID:???
実際に挿入する文字数に最適化したほうがいいだろ。
varcharとtext、インデックスつけても同じように扱われる?
878NAME IS NULL:2011/10/06(木) 04:38:02.06 ID:???
ある種のフラグのような固定されたサイズのカラムにtext使うのは如何かと。
879NAME IS NULL:2011/10/06(木) 10:50:11.61 ID:???
10年以上前ならともかく、今のシステムで固定長って意味あるのかねぇ
880NAME IS NULL:2011/10/06(木) 10:57:34.23 ID:???
一応、あるんじゃね?
絶対固定長とわかっていて、わざわざ可変長を使うメリットはないだろ。
881NAME IS NULL:2011/10/06(木) 12:04:00.79 ID:???
顧客コードとか商品コードとか固定長のほうがプログラム側が楽になると思うけど
882NAME IS NULL:2011/10/06(木) 12:44:31.01 ID:???
>>881
DBがハックされたりバグったときのことを考えてプログラム側に自衛の対策をしとくのは基本中の基本。
データを固定長と決め付けてプログラム側が楽になるなんて考えるのは素人の発想。
883NAME IS NULL:2011/10/06(木) 13:29:56.86 ID:???
本当のプロは冗長な設計はしない
884NAME IS NULL:2011/10/06(木) 13:32:58.22 ID:???
>>882
>DBがハックされたりバグったときのことを考えてプログラム側に自衛の対策をしとくのは基本中の基本。
可変長だとどういう風に有効な対策になるの?
885NAME IS NULL:2011/10/06(木) 13:45:50.31 ID:???
最大長の変更がありそうな物以外だと無駄な事の方が多い気がするんだけど
886NAME IS NULL:2011/10/06(木) 13:58:46.78 ID:???
そりや可変長のが無駄なんだけど、
固定長でも頭をスペースとか0で埋めるのは変わらないし、
ヌルチェックは昨今の言語ならライブラリ用意されてるし
再利用性を鑑みて冗長な設計、作成が昨今のトレンド

固定長はCOBOL向け?
887NAME IS NULL:2011/10/06(木) 14:14:37.03 ID:???
>再利用性を鑑みて冗長な設計、作成が昨今のトレンド
こんなの幻想に過ぎないだろ
888NAME IS NULL:2011/10/06(木) 14:34:23.32 ID:???
>>883
セキュリティ対策を軽視するのはプロとは言えない
889NAME IS NULL:2011/10/06(木) 14:51:25.33 ID:???
セキュリティ対策と冗長な設計の関係を詳しく
890NAME IS NULL:2011/10/06(木) 15:22:48.50 ID:???
セキュリティ対策は冗長な設計とは言わないだろう
むしろ必然
891NAME IS NULL:2011/10/06(木) 16:52:00.97 ID:???
セキュリティは対策しても無駄・・・最後は人間のモラルに行き着く。
人間の教育や待遇にお金を使うのがもっとも効果的である。

と死んだじ〜ちゃんが言ってた。
892NAME IS NULL:2011/10/06(木) 17:01:37.90 ID:???
それは内部の人のうっかりミスや裏切りによる情報漏えいとかの話であって
外部からの攻撃には教育は関係ないんじゃなかろうか。
893NAME IS NULL:2011/10/06(木) 17:03:19.56 ID:???
東京電力みたいなやつだな
894NAME IS NULL:2011/10/06(木) 18:08:38.57 ID:???
東京電力を馬鹿にする奴は泣かす
895NAME IS NULL:2011/10/06(木) 18:11:00.82 ID:???
>>891
教育の改善で治安が保てるなら警察は不要。
人民は教育しても無駄だから社会秩序は実力行使で維持すべきである。

と死んだじ〜ちゃんが言ってた。
896NAME IS NULL:2011/10/06(木) 18:52:57.68 ID:???
教育のない警察官が多くいたら治安は思いっきり悪くなる。
警察官には教育と高給が必要である。

と死んだじ〜ちゃんが言ってた。
897NAME IS NULL:2011/10/06(木) 19:14:24.18 ID:???
規則を遵守しない警察官には見せしめに厳罰を与えれば抑止効果となる。
一般大衆に対しても同様であるから公開処刑を導入すべきである。

と死んだじ〜ちゃんが言ってた。
898NAME IS NULL:2011/10/06(木) 21:44:36.62 ID:???
とりあえず、全部varcharでおk

とは、死んだばーちゃんは言ってなかったな。
899NAME IS NULL:2011/10/08(土) 15:41:53.18 ID:???
ばーちゃんは嘘つきだから信用するな。
嘘つきは泥棒の始まりといいますから。
900NAME IS NULL:2011/10/08(土) 18:30:21.77 ID:???
おまえらったらどうでもいい部分に突っかかるよなwwww
901NAME IS NULL:2011/10/08(土) 18:58:16.63 ID:???
こういうことをどうでもいいと考えるのは悪いことです。
902NAME IS NULL:2011/10/09(日) 13:43:54.09 ID:KZLSnT9p
すいません質問です。

INSERT文がエラーもなくクエリOKになるんですが
データを見てみるとINSERTされていません。。

特定のテーブルだけこうなるんですが
なにが原因か分かる方いませんでしょうか
903NAME IS NULL:2011/10/09(日) 13:53:08.51 ID:???
Insert文が使用してるデータを疑ってみたら?
904NAME IS NULL:2011/10/09(日) 13:54:31.21 ID:???
コミットしてないとか。
905NAME IS NULL:2011/10/09(日) 14:00:02.29 ID:???
>>903
昨日の昼までは問題なくINSERTされていたのですが
昼以降INSERTされなくなっているんです。
テーブルは変更してないのでSQLは問題ないはずなんですが・・。

>>904
してますます
906NAME IS NULL:2011/10/09(日) 14:22:47.93 ID:???
昨日の昼までできたとか言われても知るかよ
907NAME IS NULL:2011/10/09(日) 14:28:18.89 ID:???
>>902
・DBが壊れた(HDD、メモリの故障)→ ハードをチェックして修理しDB再構築
・メモリ異常でロード中のMySQLが異常動作→ ハード修理、MySQL再起動
・プログラムのミス(SQL文生成ミス)→ デバッグして生成されたSQL文を確認、MySQLのエラーメッセージを確認
・勘違い
908902:2011/10/09(日) 14:39:32.92 ID:???
>>906
ですよねですよね。

>>907
ハードはテストしてみましたが問題なさそうです。
SQLはデバックして実行直前のSQLを直接実行しましたが
クエリおkだったので問題ないっぽいんですが・・。
クエリおkなのにデータはいってないってどゆこと・・。
909NAME IS NULL:2011/10/09(日) 14:58:31.08 ID:???
もうディスク一杯とか。
910NAME IS NULL:2011/10/09(日) 15:17:03.27 ID:???
ごちゃごちゃ言っとらんと、そのInsert文とデータをサンプルで良いから晒せっての
それとそのテーブルの定義、strict-modeの設定とか
911902:2011/10/09(日) 15:21:27.31 ID:???
定義です。
CREATE TABLE `t_A` (
`AID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`B` int(10) unsigned NOT NULL,
`C` tinyint(3) unsigned NOT NULL,
`D` smallint(5) unsigned NOT NULL,
`E` datetime NOT NULL,
`F` tinyint(3) unsigned NOT NULL,
`G` tinyint(3) unsigned DEFAULT '0',
`H` varchar(10) DEFAULT '',
`I` varchar(500) DEFAULT '',
`J` datetime DEFAULT '0000-00-00 00:00:00',
`K` datetime DEFAULT '0000-00-00 00:00:00',
`L` smallint(5) unsigned DEFAULT '0',
PRIMARY KEY (`AID`)
) ENGINE=InnoDB AUTO_INCREMENT=1102 DEFAULT CHARSET=utf8

912NAME IS NULL:2011/10/09(日) 15:29:36.87 ID:???
>>902
INSERT IGNORE INTO
      ↑
      これがついてるとエラー無視するよ
913902:2011/10/09(日) 15:43:50.50 ID:???
ああ。データベース再インスコしてるんでちょっと時間かかります・・。

>>912
ついてないですです。

今気づいたんですがAUTO_INCREMENT=1102って実データより進んでますね・・
なんでだろー・・
914NAME IS NULL:2011/10/09(日) 16:34:34.56 ID:???
なんの言語かわからないけど、まずsqlのまえにprintかなにかでinsertしてる変数を出力してみたら
915NAME IS NULL:2011/10/09(日) 17:15:47.00 ID:???
発行されるINSERT文は出力して別で実行してみてもうまくいかないんじゃないの?
916902:2011/10/09(日) 17:37:52.86 ID:???
INSERT文

insert into aionz.t_打電 (B,C,D,E,F,G,H,I,J,K,L) values(
00000920,
1,
1,
'2011-10-09 17:22:11',
10,
8,
'',
'\r\n',
now(),
now(),
1
)
917902:2011/10/09(日) 17:41:03.05 ID:???
TruncateしてからCSVにしといたデータを1件ずつInsert
ここまでは問題なくInsertできるのに
システムで1回でもInsertするとその後は同じ症状になる。

どっかで変なSQL発行してんのかなぁ・・
SQL発行してるとこ全部見直すかぁ・・
918NAME IS NULL:2011/10/09(日) 18:27:56.62 ID:???
わかった。
INSERT文を発行してない という驚愕のオチだこれ。
919902:2011/10/09(日) 18:29:57.09 ID:???
oh..新発見

truncateしてテーブル空っぽにして
システム動かしたらちゃんとInsertされてる・・

容量・・・?とか・・・?
MySqlって容量はOSとかストレージに依存でしたよね?

ちょっとずつデータ増やして実験してみます
920902:2011/10/09(日) 18:42:29.24 ID:???
わかっちゃいました・・・。
あの・・・WorkBench使ってるんですが・・・・その・・・
どうやらWorkBenchってデータ表示が1000件までっぽい・・・

Descで表示したらデータちゃんと入ってますやん・・・・・・・

ごめんなさいごめんなさいごめんなさい米絵七笹示唆さしあああああああああああああああああああああああ
ふざけんなあああああああああああおれの1日を返せええええええええええええええええええええええええええええええ
921NAME IS NULL:2011/10/09(日) 19:18:19.36 ID:???
WorkBenchでデータの確認をしているのですが
1000件目以降データが入ってないみたいなんです

って感じで最初に付け加えておくともっと早かっただろうに・・・
922NAME IS NULL:2011/10/09(日) 19:31:12.34 ID:???
     .∩_∩ ミ ギャーッハッハッハッ!
 o/⌒(. ;´∀`)つ 
  と_)__つノ  ☆ バンバン


923NAME IS NULL:2011/10/09(日) 20:42:11.60 ID:???
やった!当たったぜ
924NAME IS NULL:2011/10/09(日) 21:16:04.63 ID:???
まぁ大抵そういうもの
気にスンナ
925NAME IS NULL:2011/10/09(日) 22:04:08.23 ID:???
エスパーする前に
「意図した結果になっていないことをどのように確認したか?」
って聞けばいいのね。
勉強になるわー
926NAME IS NULL:2011/10/09(日) 22:05:12.81 ID:???
それではエスパー失格です
927NAME IS NULL:2011/10/09(日) 23:10:20.04 ID:???
>>925
そこをピンポイントで想像するのがエスパーだろ
928NAME IS NULL:2011/10/10(月) 00:55:57.23 ID:???
これ正解出来てたらもうジェダイレベルだろ。
929NAME IS NULL:2011/10/10(月) 00:59:33.67 ID:???
事実正解した人がいるじゃないか→>>923
930NAME IS NULL:2011/10/10(月) 01:21:17.24 ID:???
後からならどうとでも言える
931NAME IS NULL:2011/10/10(月) 01:30:12.55 ID:???
>>930
そのセリフこそ負け犬の遠吠えに聞こえる
932NAME IS NULL:2011/10/10(月) 03:06:17.27 ID:???
月曜日から日曜日
0時から24時までを
true falseのbooleanフィールドを用意するとしたら
1つのテーブルの中に
@7 x 24 = 合計168フィールド+リレーションキー
を用意したほうがいいですか?

それとも
A日ごとの24フィールド + 1(曜日) + 1(リレーションキー)の合計26フィールド

Bまたは時間ごとの
1(時間)フィールド+1(曜日)+1(リレーションキー)
の3フィールド

@は一つのテーブルで簡潔できるがフィールド数多すぎ

Bはレコードが増えすぎる


どれが一番現実的ですか?
933NAME IS NULL:2011/10/10(月) 03:31:47.73 ID:???
なにがしたいのかがわからんけどCharでいれてSubstringって手もある。

用途がわかればもうちょっと答えようもあるお
934NAME IS NULL:2011/10/10(月) 03:39:59.03 ID:???
>>933
ユーザー(パートさん)ごとの24時間体制スケジュールを作ろうと思ってます

出勤できる曜日の時間帯は1(true)
出来ない日は0(false)

月 火 水 木 金 土 日
0 0
1 1
...
23 23
24 24
※ここでの数字は時間帯で、それぞれにチェックボックスがある

みたいな表にアクセスしてもらって、
そこでチェックを入れてもらって
どの曜日のどの時間は1か
というものを管理したいです。
935NAME IS NULL:2011/10/10(月) 06:55:50.99 ID:???
DBのお作法としてはB
936NAME IS NULL:2011/10/10(月) 08:41:55.73 ID:???
DBにする必要がないだろ・・・パート職員は何人いるんだよ?
どうしてもって言うなら一番で十分だと思うが。
937NAME IS NULL:2011/10/10(月) 09:12:36.24 ID:???
>>932
Bかな。

保存日数 * 24 * 人数

多けりゃ履歴を消せばいい
938NAME IS NULL:2011/10/10(月) 11:31:22.62 ID:???
>>934
別にフィールド数もレコード数も多すぎはしないだろ
プログラミングが楽な方法にしろよ
939NAME IS NULL:2011/10/10(月) 22:54:49.06 ID:???
全角の英数字を半角になおしたいです。
replace関数で一文字一文字変換するしか思いつきませんが、
他に簡単な方法はないでしょうか?
940NAME IS NULL:2011/10/10(月) 23:18:04.05 ID:???
プログラム側でやっておけばいいと思うが
941NAME IS NULL:2011/10/10(月) 23:24:39.01 ID:???
>>932が真偽値でテーブルつくるってユーザーごとにテーブルつくる気なのかなと思ってオカンがはしった
942NAME IS NULL:2011/10/11(火) 01:17:05.35 ID:???
>>939
もし、条件として全角半角を区別せずに検索したということならutf8で
WHERE a COLLATE utf8_unicode_ci LIKE '%アイウエオ%';
フィールドがutf8ではない場合はCONVERTして
WHERE CONVERT(a USING utf8) COLLATE utf8_unicode_ci LIKE '%アイウエオ%';
こんな感じでいけると思うよ
条件だけじゃなかったら>>940
943NAME IS NULL:2011/10/11(火) 22:59:54.53 ID:GnT2+shh
質問です。

mysqlのトランザクションは、開始してから一分ぐらいでタイムアウトするかと思うんですが、
1分以上かかるようなSQLでトランザクションを使いたい、という場合、
どうするべきなんでしょうか?
944NAME IS NULL:2011/10/11(火) 23:49:27.22 ID:???
>>940 >>942
ご回答ありがとうございます。全角から半角にupdateで
変更できたらとおもっていましたが、mysql側ではできない
みたいですね。プログラム側で行ってみます。
ありがとうございました。
945NAME IS NULL:2011/10/12(水) 01:15:21.88 ID:???
>>943
トランザクションはタイムアウトしないぞ。
ロック待ちのことなら最初に設定すればよい

mysql> set innodb_lock_wait_timeout = 1000;
Query OK, 0 rows affected (0.00 sec)
946NAME IS NULL:2011/10/12(水) 15:51:29.65 ID:???
MySQL初心者です。
id time name score の4つのカラムがあるテーブルから
以下の条件のデータを取得したいのです。

1.スコアが低い順で並べる(スコア=クリアタイムのため)
2.同じスコアがあれば、rankの値が並ぶ(2位が2人とか)
3.同じ名前であれば、最新のスコアと最も良いスコアの以外を省く
4.現在から24時間以上古いものは省く

timeはunixtimeで、名前は文字列、スコアはただの数値です。
すべてMySQLでできることなのではないかなとおもって実践しているのですが
経験不足なため、そこはPHPでやったほうがいいなど、根本的な指摘などあったら
そちらも含めてご伝授いただきたいです。

よろしくお願いいたします。
947NAME IS NULL:2011/10/12(水) 16:02:26.02 ID:???
>>946
このへんを見て。(要登録)
http://codezine.jp/article/detail/3107?p=3
948NAME IS NULL:2011/10/12(水) 22:40:36.51 ID:???
>>947
MySqlで分析関数あるのかーと思ってみたけどやっぱないのか。
select の中でサブクエリってどうなの?っていつも思うんだけどどうなの処理速度的に。

イメージでは1件に対して1回SQL発行するからすごい処理時間かかりそうなんだけど・・
そのへんどうなの教えてエロい人
949NAME IS NULL:2011/10/12(水) 23:35:19.50 ID:???
質問です。

データベースを更新するときは、普通にトランザクションを使いますが、
参照する場合もトランザクションって使うものなのでしょうか?
時間のかかるデータ集計のSQLを実行しようと思っているのですが、
その間に更新されても影響がないようにしたいのです。

参照する場合もトランザクションを使う場合、終了する場合はコミットですか?ロールバックですか?
基本的な質問ですみませんが、よろしくご教示お願いいたします。m(_ _)m
950NAME IS NULL:2011/10/12(水) 23:49:51.63 ID:???
>>949
データ集計が1つのSQLならトランザクションいらない。
複数のSQLを駆使する必要があるなら最初に
START TRANSACTION WITH CONSISTENT SNAPSHOT;
する。
最後はコミット/ロールバックどちらでもよい。
951NAME IS NULL:2011/10/13(木) 03:04:12.54 ID:???
わからんー。たすけてくれー。

# mysql -u ユーザー名 -p -h ホスト名 DB名 < c:\mysql\data\insert.sql

すると

bash: c:mysqldatainsert.sql: そのようなファイルやディレクトリはありません

て言われるー

mysql> use DB名
Database changed

mysql> SOURCE c:\mysql\data\insert.sql

すると

ERROR:
Failed to open file 'c:\mysql\data\insert.sql', error: 2

て言われるー。でもcドライブのmysqlフォルダ無いのdataフォルダ内にinsert.sqlは確実にある。

.sqlファイルを読み込ませたいだけなんやー。なんがダメなんやー。
文字コードはutf8にして改行コードもLFで統一してるー。
後何を試せばよいですか皆さん助けてー。とりあえず風呂いって眠気冷まし的亜MS宇。
952NAME IS NULL:2011/10/13(木) 03:57:02.67 ID:???
>>951
>bash: c:mysqldatainsert.sql

ディレクトリ構成からするとWindowsで使ってるように見えるんだけど、DOSプロンプトじゃなくてbashということはCygwinかMSYSあたりで使ってる?

だとしたら、Cygwinなら

/cygdrive/c/mysql/data/insert.sql

のような形にすればいけるかも。
953NAME IS NULL:2011/10/13(木) 04:18:51.89 ID:???
>>952
基本情報ごっそり抜けて済みません。
自分はwinXPprofetnolで操作してまして、アップロード希望先のサーバは
DTIで借りてるserversman@vpsです。操作はteraterm様で行っています。
teratermの代わりにCygwinを使うの早速やってみます。ありがとうございます。
Cygwinて昔、何かで触って以来です。自信んっしん。
954952:2011/10/13(木) 04:45:20.33 ID:???
>>953

つまり
・SQLファイル = 自PCのデスクトップ
・DB = VPS
・VPSへの接続 = Teraterm
ですよね。

それだとCygwin使っても状況は変わらない。

mysql> SOURCE c:¥mysql¥data¥insert.sql
はTeraterm上の(つまりVPS上の)ファイルを見に行くわけだから当然該当ファイルは無いわけだし、

# mysql -u ユーザー名 -p -h ホスト名 DB名 < c:¥mysql¥data¥insert.sql
も先頭が#なところからしてTeraterm上(=VPS)で行ってるだろうから、これもだめ。
955NAME IS NULL:2011/10/13(木) 04:49:17.19 ID:???
ものすごい基礎の基礎を見逃していてお恥ずかしいというか
先ずsqlファイルをどうにかしてvpsサーバへ送り込まないとならんわけですね
そう。それがffftpで何故か送れなくて(重すぎる?)アレなのでした。
ちょっと寝て起きたら移送方法をちゃんと調べます。展開は間違ってない富田。
どうもありがとう。
956952:2011/10/13(木) 04:51:47.57 ID:???
>>953
というわけで、恐らく一番簡単な正解は
「SQLファイルをVPSにアップロード」ではないかと。

VPSに
/home/{953のユーザ名}/insert.sql
の形でアップロードして、

# mysql -u ユーザー名 -p -h ホスト名 DB名 < /home/{953のユーザ名}/insert.sql

でいけると思う。
要は、サーバ側で作業するならサーバ側にSQLファイル置こうねって事です。

WindowsにMySQLクライアントインストールしてるなら、「DOSプロンプト上から(つまり自端末から)」
mysql -u ユーザー名 -p -h ホスト名 DB名 < c:¥mysql¥data¥insert.sql
すれば行けると思うけど、自分はやったことない。

957952:2011/10/13(木) 05:00:25.41 ID:???
あーそうですね、955 の理解であってると思いますw

serversmanかFFFTPに固有の事情があるのかもしれないけど、自分はさくらVPSでマカーなのでその辺はよくわからないや。
軽いファイルや空ファイルでチェックするのが早そうだけど、この辺はMySQLの話題ではなくなるのでこの辺で。


958NAME IS NULL:2011/10/13(木) 16:43:18.88 ID:???
serversmanは自分で設定しないかぎりftpd動いてないだろ
scpしろ
959NAME IS NULL:2011/10/13(木) 19:46:17.43 ID:???
Datetime型のフィールドについて、現在より30分前のものという条件でセレクトしたいときはなにを使うべきでしょうか?
960NAME IS NULL:2011/10/13(木) 22:20:14.73 ID:???
> なにを使うべきでしょうか?

どういう意味?
961NAME IS NULL:2011/10/13(木) 23:29:49.52 ID:???
>>959
WHEREを使って30分前を指定してあげればいい。

>>960
こうやって回答してあげるのが楽しいんだ。
962>>949:2011/10/14(金) 00:38:48.89 ID:???
>>950
ありがとうございます!
963NAME IS NULL:2011/10/14(金) 00:58:18.63 ID:???
お安い御用です。
964NAME IS NULL:2011/10/14(金) 11:42:27.21 ID:???
次スレの季節
965NAME IS NULL:2011/10/14(金) 17:59:16.90 ID:???
>>959
ヒント:time_add(), between, now()
966NAME IS NULL:2011/10/14(金) 20:21:57.26 ID:???
>>959
30分前ってことは、現在時からジャスト30分0秒前、ってことだよね。
967NAME IS NULL:2011/10/14(金) 21:06:34.14 ID:bpCxU2Us
商品Aが複数カテゴリ(別テーブルにて定義、それをJOIN)に入ってる場合に
こんな感じで帰ってくるんだけどこれでいいの?初めての設計でよくわからない。

itemId ... categoryId
A ... 4
A ... 5
A ... 6

見た目上は商品名とかの ... が何度も繰り返しされてるようで気持ち悪い。
内部的に何らかの最適化が行われてるといいんだけど、他にいい方法があるのかな?

それと、PHPで利用する場合にこのレコードを順に走査していって、前回と同じIDなら
そのIDに対してカテゴリを追加って具合で大丈夫?
968NAME IS NULL:2011/10/14(金) 22:42:02.24 ID:???
>>967
DB設計としては合ってる
969NAME IS NULL:2011/10/15(土) 00:07:10.62 ID:???
あってない。
DB設計を勉強しましょう
970NAME IS NULL:2011/10/15(土) 00:09:19.70 ID:???
PHPで順に操作とかアホのやること
971NAME IS NULL:2011/10/15(土) 00:15:02.00 ID:???
PHPで順に捜査とか天才のやること
972NAME IS NULL:2011/10/15(土) 00:19:06.26 ID:???
多対多ならこの構成でいいんじゃないの?
973NAME IS NULL:2011/10/15(土) 00:49:52.46 ID:???
DB設計でならあってる
974NAME IS NULL:2011/10/15(土) 01:57:06.43 ID:???
見た感じ多対多じゃなくて1対多じゃね?
975NAME IS NULL:2011/10/15(土) 02:53:00.03 ID:???
用途がまったく想像できますん
976NAME IS NULL:2011/10/15(土) 04:08:26.76 ID:???
あんたに想像してもらいたくない
977NAME IS NULL:2011/10/15(土) 08:51:15.28 ID:???
>>967
とあるものが複数カテゴリに属してるなら、そうなって当たり前だろ。
978NAME IS NULL:2011/10/15(土) 11:29:45.03 ID:???
当たり前かどうかは当人の価値観に依存する
979NAME IS NULL:2011/10/15(土) 12:44:19.61 ID:???
じゃあ定石で
980NAME IS NULL:2011/10/15(土) 13:23:04.59 ID:???
>>978
エゴだよそれは!
981NAME IS NULL:2011/10/15(土) 13:23:57.55 ID:???
>>979
囲碁だよそれは!
982NAME IS NULL:2011/10/15(土) 17:13:01.24 ID:???
>>979
うちの上司、定石って名前
983NAME IS NULL:2011/10/15(土) 17:36:40.88 ID:???
うちのは力石
984NAME IS NULL:2011/10/16(日) 00:51:29.64 ID:???
SNSサイトを作っているのですが、DBに投稿した日記(Text)の冒頭部分のみを取り出すにはどうすればいいでしょうか
レコード登録時に冒頭部分のみのカラムを作るのも効率が悪い気がしてきて・・
985NAME IS NULL:2011/10/16(日) 01:08:39.27 ID:???
>>984
LEFTとか使えば
986NAME IS NULL:2011/10/16(日) 04:33:08.68 ID:???
>>985
LEFT関数中々便利ですね
Textを全文取り込んで文字列操作するよりもメモリが節約できそうです
ありがとうございます
987NAME IS NULL:2011/10/16(日) 10:23:50.69 ID:???
お安い御用です。
988NAME IS NULL:2011/10/16(日) 16:00:22.56 ID:???
>>983
エコだよそれは!
989NAME IS NULL:2011/10/17(月) 11:47:51.56 ID:???
id         int
category_id   int
post_date     datetime
comment     varchar(255)
count       int           5.1 MyISAM

100万件以上あるテーブルで、
数種類あるカテゴリ別に月単位でcountの多い順に20件集計したいのですが、
どこにインデックスをつけたらいいですか?

試してみたところcategory_idとcountの複合インデックスが一番早かったのですが、
もっと早くなるいい付け方はないでしょうか
990NAME IS NULL:2011/10/17(月) 12:31:52.03 ID:???
サマリ作る
991NAME IS NULL:2011/10/17(月) 13:55:34.01 ID:???
>>989
yyyymmってカラムを追加して
(category_id, yyyymm, count)というインデックスを作り、

SELECT ... FROM ttt
WHERE category_id = aaa AND yyyymm = bbb
ORDER BY count DESC LIMIT 20;

をcategory_id分繰り返すのが速い。
けど先月分まで確定してるならあらかじめサマリ作っておけばいい
992989:2011/10/17(月) 16:35:11.66 ID:???
ありがとうございます。試してみます。
993NAME IS NULL:2011/10/17(月) 19:37:54.55 ID:???
お安い御用です。
994NAME IS NULL:2011/10/17(月) 21:53:50.84 ID:???
次スレまだ?
995NAME IS NULL:2011/10/17(月) 22:34:26.88 ID:???
このスレで終了します。
996NAME IS NULL:2011/10/18(火) 13:37:28.52 ID:???
次はオラクルに統合だな
997NAME IS NULL:2011/10/18(火) 15:28:11.52 ID:???
お安い御用です。
998NAME IS NULL:2011/10/18(火) 18:45:05.84 ID:???
oracleのexpressedition入れたら、めちゃ重たくなったんで、それは嫌
999NAME IS NULL:2011/10/18(火) 19:55:18.22 ID:???
1000NAME IS NULL:2011/10/18(火) 19:55:56.15 ID:???
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。