PDSはライセンスあるの?
>>195 社内にITグループというのがあるのですが、windowsのライセンスは詳しいのですけど。
unixは触ったことがないそうです。
社内サーバーにファイルアップロードするPHPをおいて、ファイル名をMYSQLに登録するというものです。
業務なら2chで確認しました! って違法行為する前に金なり何なり掛けて調べろと
2chで確認するにも金掛かるんですが
>>200 「twitter1000円」にカネ払っちゃう情弱www
>>201 搾取される者がいるからこそ我々の生活は成り立つのだよ
MySQLが起動しません。 my.iniの[sqld]にsock=/tmp/mysql.sockと書いてるのに /var/mysql/mysql.sockがなんとかとか言って起動しない。 バカヤロ
MySQLの何が一番怖いのかっつーと 開発元のOracleが一番怖い、色々な意味で
ネットコミュはなんであんなにMySQLをもてはやすのだ?
使いやすさじゃね? 企業だとPostgreSQLのほうが人気だけど
もてはやすっていうかMySQL一択だからじゃね どこのレンタルサーバにも入ってるでしょう MySQL、SQLite>>PostgreSQL>>>>>その他 ぐらい
たとえば、「LAMP」という言葉。 LAMP(ランプ)とは、OSであるLinux、WebサーバであるApache HTTP Server、データベースであるMySQL、スクリプト言語であるPerl、PHP、Pythonを総称した頭文字から成る造語である。 いくつかのサーバー用Linuxディストリビューションにおいては、LAMPがセットになって配布される。LAMPを1つのセットにすることで、OSのインストール時にLAMPの多くの設定・関連付けを自動的に行うことができ、サーバー管理者の手間を軽減させることができる。
>>203 設定に関しちゃPC環境わかんないから助言できんわ
>>203 >/var/mysql/mysql.sockがなんとかとか言って起動しない。
コマンドラインのエラーメッセージ?
エラーログ(ファイル)の内容?
>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 で止まる。 頃すぞ。
おれのGPLの理解が間違ってるのか 1 個人で非商用のmysqlを利用したホームページを開設 wordpressとか 2 会社が商用のmysqlを利用したホームページを開設 wordpressとかdrupalとか 3 社内で利用するためのphp+mysql のシステムを開発 社内のみで利用 4 mysqlを利用できるphpプログラムを開発して無償で頒布 epgrecみたいな 5 mysqlを利用できるphpプログラムを開発して販売 sugarcrmみたいな 6 mysqlを同梱したシステムを販売 どこまで有償で?ソース公開?
>>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にしなきゃいけない理由。
Oracleがsunを買収した狙いはMySQL?
>>215 単純にハードウェア(サーバ)が目的じゃないか。
Oracleセット販売できるし。Solarisに入れちゃうのかもね。
ウェブサイトはサービスであって、製品では無い ので、GPLライセンスで十分 とか書いたら信じるの?
>>217 製品とかサービスとか関係ない。
MySQLは営利企業のソフトだぞ。
当然、そのソフトを使用した段階で、ライセンスフィーが発生する。
ただ、その除外規定として、作成したソフトがGPLである場合、
MySQLを無料で使用できる。
いやだから、何もソフト作って無いし WordPress設置をプロダクト製作とするの? 使うだけならGPLライセンスだから無料は同意してもらえたのかな 手な具合に非常にあやふやだから、金儲けするのに心配なら素直にオラクルに連絡しれ
>>214 PHPはFOSS除外規定があるって書いてあるがこれでPHPライセンスで配布できるってことじゃないか?
MySQL使ってても
そのPHPライセンスってどういう物?
MySQLとPHPのライセンスがどうたらってPHP3までの話じゃないのか
ブログとかでよく誤解されてるけど、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.
結局PHPでMySQL使う場合はPHPライセンスでおk?
>>214 GPLについて質問しているのにGPLの解釈は関係ないって、アタマ沸いてんのか?
「が」と「に」の違いか。
さるかに合戦会場と聞いて
>>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
「MySQLのGPL」が特別だとでも思ってるのか? GPLはGPL、それ以上でもそれ以下でもない。
ここの多数の理解は6以外、無料でソースを公開しなくてもGPLに抵触しないでおk?
有料でもいいんじゃないの? 公開するなら
配布しなければオープンライセンスはなんの制限もない。
MySQLは有料だといくらになるの?
>>233 書き方がまずかった
6以外、MySQLの有償ライセンスを購入する必要もないし、ソースを公開する義務もない、でOK?
GPLに従って、派生物のソースを公開するならOK
「あなたの開発したソフトウェアが動作するためにはMySQLが必要ですか?→NO→MySQLをお試しください」 必要ないのになんで試さなければいけないの?
オラクルだからさ
その規定はGPLを適用しなくてもよいということであって、認められているのは いくつかのオープンソースライセンス。 それ以前に、phpで書いたプログラムは普通ソースのまま配布するだろ。
phpがスクリプト言語でもソース公開の義務とは別だろ 少なくとも上の3の場合とかソースの公開の義務はないだろ 5でphp部分を改変して納品しても、相手先はソースを読めても世間に公開する義務はないと思うな
世間に公開する義務なんてもともとねーだろ
>>246 なんかここのところトンチンカンな主張する奴ががんばっていると思ったが、そんな
ライセンスの基本的なことすら理解してないんだ。
GPLについても「なんか伝染する怖いもの」程度の認識しか持っていないんじゃないのか。
GPLのプログラムにソケットで接続したプログラムは全部GPLだあ!なんてタワゴトを言っているのは、 ここの基地外くらいのもん。 んなこと言ったら、LinuxというOS上でプロプリエタリなプログラムなど一切作れないだろうが。
きちがいのあいてすんな
プロプリエタリってなに?
>>246 世間に公開する義務はないよ。権利だけ持ってる。
じゃぁ何の義務があるの?
何日間続いてるんだこの話
>>241 で十分だろ
MySQL使ってないのならMySQLを使え、必要なくてもMySQL使えウエッヘヘヘヘ
「MySQLはGPLだ!」って認識が間違ってるんだよ。 正確には 「MySQLは、一定の条件の下でGPLとして使用できる」 であって、 通常は 「MySQLはOracleの商用ソフトなので、ライセンス購入して下さい。」 になる。
MySQLを使う必要が無いって言ってるのに使えというのはどういうことか 必要ないって言ってんじゃん
理系ってちょっと違った表現するとすぐ突っ込んでくるから面白いよな
>>258 こうもしつこいと、意図的にデタラメを流布しようとしているとしか思えんな。
ちゅうこたー、 MixiやGoogleもMySQL使ってるし、彼らのコードはGPLなわけだ。 社員が外に流しても問題ないわけだ。 機密保持義務とGPLどっちが強いんだろ。 ちなみに、facebookやgreeはphpだから特例だ。twitterはrubyだっけ。 これだけの大プレイヤーが使っててMySQLも何も言わないんだし、配布なしの自社利用は制限なし、と思えばよかろう。
>>262 勘違いしてるみたいだけど、Google等は自社で開発したシステムをユーザーに利用させているだけであって、
システムそのものを販売・頒布しているわけではないからGPLかどうかという議論にすらならない。
>>263 どのへんもなにも、全部。
GPLとのデュアルライセンスであるのは周知のことだと思うが、
一旦GPLでライセンスされたソフトウェアであれば、それをGPLの
下で再配布するのに「一定の条件」など付けることはできない。
配布されるモノは同じでもライセンス的には両者はお互い別物だと
いうことが理解できてないんだろう。
>>264 いや、自分も同意見だけど、
いまここで言われてることを元にしたら
>>262 なことになるってこと。
267 :
NAME IS NULL :2011/07/24(日) 11:09:42.92 ID:2of7b51i
mysqlはdeleteが遅いという記述を見たことあるんですが、というかよく見るんですが ではdeleteしたい時はどうしたら良いのか気になります その行の利用可能/不可能を判定するカラムを追加して、deleteしたい時は利用不可にし、 サーバに余裕がある時間帯にクーロンでdelete実行する。…みたいなやり方で良いんでしょうか?
で、ついでにインデックスの更新をしておくと
パーティショニング機能を使って過去データを一気にDROPするのがいいんだけど 実際にやってる人はまだあまりいない。 フラグ立てて論理削除で済ませるのはアリだと思う。 ただなんにしろ自分のシステムで実際に遅いかどうかを確認してからの方がいい
270 :
267 :2011/07/24(日) 12:26:39.93 ID:2of7b51i
>>268 すみません、インデックスの更新ってどういうことですか?
今調べたら、 ANALYZE TABLE category; ってのが出てきました
267のdelete処理の後、このテーブルのインデックスがcategoryだとしたら
ANALYZE TABLE category;ってすればいいんでしょうか?
271 :
268 :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 ってのは、この場合 インデックスの名称ではなくテーブル名称になるんじゃ?
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だからって別に無料ってわけじゃないぐらい知っているよね?
>>272 オマエがわからんw。Web上の「解説」しか読まずに、しかもそれを
曲解してトンチンカンなことを主張しているのか。
ライセンス条項といったらEnd-User License Agreementのことだろ。
Windows版ならインストール時に必ず読まされるはずだぞ。
>>272 実際Googleでも使われてるんだがな。
InnoDB関係でコードを寄贈したこともある。
どっちが知識不足なんだろうねぇ。
>>272 > MySQLをrdbに使用しているとは思えない
妄想乙
277 :
267 :2011/07/24(日) 22:23:04.32 ID:???
>>269 ですね、ちゃんと速度を確認してみます
ありがとうございました
>>271 optimizeってのもあるんですね
自分のdbにあうのを見つけてやろうとおもいます
ありがとうございました
googleほどMySQLをたくさん使っていた企業はこれまでなかったし今後も出てこないだろうね。
googleは確かにMySQLよく使ってるけど 突出してるのはAjaxじゃね
290 | /l、 ??? | (゚_ 。 7 ツンツン し⊂、 ~ヽ しf_, )ノシ
Googleはほんの一部でしから使ってないだろう。 基本はBigTableとか独自のシステムだろう。 Ajaxかぁ。そうくるとは。返す言葉もない。
>>279 >>282 ゴミはレスすんな。
GoogleはMySQLを使って事業を始め、しばらくそれでやってきたんだよ。
ただし、SQLなどかませずに、MySQLのindexに直接アクセスを掛ける手法。
切り替えたのは5年ほど前だ。
>>260 なるほど、分かった。お前らにとっては「ちょっとの違い」なんだな。つまり量の問題。
しかし、俺達は、その「ちょっと」が致命的な場合は訂正したくなるんだよ。
些細な問題なら指摘しない。質の問題なんだ。
レポートも卒論も質は議論されず量のみで評価される教育を受けると、
そうなってしまうんだな。分かった気がするよ。
ちょっとの違いと些細な問題を区別するのはちょっとの違い。
ちょっと足し算と割り算を間違えたくらいでプログラム落ちるなよw みたいな感じのちょっとだよね、文系の人の「ちょっと」って。
足し算と割り算を間違えるってどういう頭の構造しているんだ?
まぁ7×3を無意識で23って書いちゃうような事は偶にある
7*7を47にすることならある
高校生の頃から肝心な数式はあってるのにそういうミスが多い奴って セミコロン付け忘れて「おいー、またセミコロン付け忘れてるぞお前ー」 って言われるタイプだよね
わかってんならつけといてくれよブツブツ とコンパイラに対して呟きながら修正する、とw
最後に一括してセミコロン付けるといいよ。 \n → ;\n みたいな置換で。
>>298 それ、すでについてる場合、
二重についちゃうだろ
正規表現で
置換前 (.+?[^;])$
置換後 $1;
でいけると思う。
つかない行だって多いんだし、どうせつけ忘れなんて2,3行だべ
まぁ、うっかりしてる奴は 改行するだけでセミコロン付いちゃうような時には 逆にうっかりしてセミコロン付けちゃうと思う
うっかりしている奴はロジックがうっかりしているケースが多いので 辞めた後デバッグするやつらが悶絶するw
>>299 セミコロンは2重になっても問題ないから
305 :
NAME 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でいいかな?
数千件程度の小規模なテーブルで、explain付けて試してみるよろし
>>305
explain付けて試したら気持ち良かった
>>307 どのへんがどんなふうに気持ちよかった?
309 :
NAME 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
こんなふうに出ました
これはどう見たらいいんでしょうか??
MySQLって企業で使うのにライセンス料いるの? 市況2のドル円スレで必要って言う奴がいて質問に来ました。
んなこと聞くようなやつは、金を払ってシステム組んでもらえよ。 そのほうが安上がり。
まぁライセンスについてはログ読め。 このスレでも少し前に語りまくってるだろ。
インデックスを作成したら速くなるということなのですが、 インデックスの名前は自由なんですか? インデックスを作ったあとはほっとけば速くなるのですか?
>>314 ライセンスについては自分の意見を主張しあってるだけで何も解決してないじゃないかw
「主張しあってる」w そう思ってるのは1人だけのような気がする
>>313 MySQLに限らず、多くの場合、その無能な担当者の人件費より安く上がる。
>>316 主張し合うも何も、ライセンス条項がすべてだよ。読めよ。
GPLで使うならタダ。GPLで使えないなら買え。企業とか個人とか関係ない。
>>315 名前は予約語じゃ無ければOK。日本語でも良いらしい(ここで聞いた話)。
インデックスはSQLの基本なので、MySQLのドキュメント2画面分ぐらい読んでおくと良いよ。
インデックス名なんて内部で使うただの識別子にすぎないからなんでもいいけど だいたいルール(命名規則)としてどういうものをつけるかというのは決まってる 人によってバラバラだけど
>>322 「決まってる」のに「人によってバラバラ」ってどういうこと?
>>323 カレーの作り方でも、目玉焼きに何をかけるかでも、
だいたいいつも決まってるけど、人によってばらばらだろ。
素人です。mysql で簡単な掲示板を作成したいのですが、一つ質問があります。 本文の入力でsql インジェクション対策はどのようにするのが一般的なのでしょうか? 現在はpost された値をそのままインサートしています。このとき、”を入力されると簡単にsql インジェクションされます。
それはプログラムの方の問題だな
>>326 どうせPHPだろうからPHPスレ行って聞いて来い
MySQL3系以来の素人です。 この度仕事でHAクラスタを組まなければならなくなり色々調べています。 Semi-Syncronus Replicationについて質問なのですが スレーブが落ちてしまった場合、マスタの更新はタイムアウトするようですが、こういう場合の備えはどうすればいいのでしょう? 例えば、スレーブが死んだらsemi-syncをasyncに切り替えるにはどうすればいいのでしょう? それともスレーブを2台以上にするのが常道でしょうか? その場合でもマスタのネットワークアダプタが死んでしまったらやっぱり待ちになるような気がするのですが、それは仕方がない事なのでしょうか?
レプリケーションが生きてるかどうかをHeartbeatやLifeKeeperで 監視して、壊れたらVirtual IPの張り替えとかするんだと思う。 Semi-Synchronous Replicationでクラスタ組んだ人まだ見たことない。 人柱頑張って!
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初心者ですがよろしくお願いいたします。
>>331 ありがとうございます。
semi-synchronus replicationのプロトコルは以下のようになってるみたいです。
1. トランザクションをコミットする
2. レプリカからのACK(トランザクションを受信したかどうか)を待つ。
ACKがない場合はここでタイムアウトが発生する。
3. クライアントにコミットが成功したことを知らせる。
・タイムアウトが発生したら、それ以降はsemi-syncronus replicationがdisabledになる。
・ネットワークのACKをWAITしている間、他のトランザクションはプロックされない。(ちょっと意味不明ですがクライアントに待ちが発生しないってことかな?)
すなわちタイムアウトはするけどトランザクションは成功するよん、
ってことかな。要するに
>>330 の懸念は織り込み済みみたいです。(多分…)
余談ですが、2phase commitみたいなイメージだったのでパフォーマンスを懸念していましたが、
ローカルのcommitが先行するみたいなのでそれも杞憂かもしれませんねぇ。
>>332 「SQL 外部結合」とか「SQL outer join」とか「SQL left join」とかでぐぐってみなはれ。
335 :
332 :2011/07/31(日) 13:19:04.14 ID:z65ORH9i
>>334 ありがとうございます。
ググってみたところ実装できそうです(^^
ORACLE
338 :
NAME IS NULL :2011/08/02(火) 06:44:49.63 ID:jJIdpw0B
初心者すぎてあほかと思われるだろうけど、 インデックスつけたら140msとか70ms(1ページ20クエリぐらいあった)かかってたクエリが全部0msになったwすげえw フレームワークのSQLクエリログのクエリにかかった時間を見ながら 適当に組み合わせて試行錯誤したけど、3つのインデックスつけるのが一番いい結果になった。 インデックスはたくさんつけてもデメリットないのかな? ファイルサイズがでかくなるとか聞いたけど、、、
>1ページ20クエリぐらいあった ここを1回でとれよ
>>338 >インデックスはたくさんつけてもデメリットないのかな?
>ファイルサイズがでかくなるとか聞いたけど、、、
そりゃでかくなるよ、インデックスがゼロbyteで済むわけないから。
それと、insertおよびインデックス対象カラムの内容が変わるようなupdateは
インデックスの更新も伴うから、それなりに遅くなる(はず)。
341 :
NAME IS NULL :2011/08/02(火) 15:32:38.82 ID:jJIdpw0B
>>340 なんか初心者からしたら、
全部にインデックスつけたらよくね?って結論になりそうです
全部つけた場合具体的にどのような障害?が起こりえますか?
>>341 INSERTするたびにインデックス再構築が起こるでしょ
無駄なインデックスは書き込みを遅くするだけ
343 :
NAME IS NULL :2011/08/02(火) 16:29:47.83 ID:jJIdpw0B
INSERTが重くなる、がデメリットですね ありがとうございます
正しくは更新処理だ
SSDで運用してる人いる? ランダムWriteが激しいので書き換え寿命が気になって仕方ないです。 データファイル、インデックスファイル、バイナリログの更新に対してTrimって意味あります?追記型だったら意味ないかな? ちなみにストレージはInnoDBです。 そもそもストレージエンジンがTrim発行できるの? RAWデバイス(ってかDIRECT IO)だったらできる?
>>338 全部0msになるはずなくね?
ディスクのシークタイムが数msあるだろ
>>345 基本trimが発行されるのはファイルを削除したとき。
古いバイナリログを削除するときにいまどきのOSならtrimが出せるはず。
データファイルは無理、っていうかそこにデータがあるんだからtrimしちゃだめ。
あと寿命が気になるなら業務用のSSDを買え
やっぱりファイル単位ですか。 ログの削除ぐらいですね。意味あるのは。 ログはシーケンシャル書込でいいんだろうから独立したHDDでもよくって、 ということはコンシューマSSDでRAID組んでもOKじゃん! ioDriveもバッテリー付いてないみたいだし?(買えないけど)
RevoDrive3が気になります(安いっす) SandForceコントローラってエラー訂正がしっかりしてるイメージがあるんだけど、 ioDriveと比べてどうなのかな?
InnoDBのアーキテクチャ見てみた MVCCだとかそうじゃないとかいろんな情報があったわけだが ポスグレとは根本的に違うのね。バキュームがないわけだ。 追加か更新がほとんどで削除なんてめったにないけど これだったら、データファイルの削除ブロックにTrimコマンド発行すればいいように思えるんだ… OSのAPIからなにから書き換えんと無理か?
352 :
NAME IS NULL :2011/08/03(水) 07:51:42.86 ID:FuNOWK6t
またセキュリティホール増やすのか
moongiftってRubyスレで暴れてた基地外じゃないか
354 :
NAME IS NULL :2011/08/03(水) 08:56:26.55 ID:ethrgDzv
知らん
>>355 ・Active-Stanby構成のHAクラスタがいらないところ。
・つまりサーバーリソースが無駄にならない。
・寝覚めが良くなる。
問題はR/W Splittingしている場合のフェイルオーバー時の挙動。
>>355 ・健康で文化的な最低限度の生活を営む権利を有する。
・納税の義務を負う。
・その能力に応じて、ひとしく教育を受ける権利を有する。
問題は施行後に獲得された領土についての場所的適用範囲。
359 :
NAME IS NULL :2011/08/05(金) 04:16:04.01 ID:j8SQmHpl
WorkBenchの表示フォント サイズが変更できん おっさんには酷過ぎる
メガネを換えるんだ
メガネは顔の一部です
遠近両用
InnoDBがクソすぎる
クソも食えば栄養になる
その栄養がまたクソになる
そのクソは、やがてinnoDBとなる
InnoDBがクソすぎる
クソも食えば栄養になる
http://www.youtube.com/watch?v=hj1B8OGgwYc 検証番組とかいらないと思うよ。
とりあえず謝らないと、それはそれで問題だから、まあ、謝ったの?は正しいと思うけど。
これってさ、間違えを犯してさ、今度から気をつけようってレベル?のことじゃあないから。
風評被害で自殺してる農家だっているんだぜ?
震災の時って、日テレとかフジでも中継の時に不謹慎なことを
やってる人がいたけど、その程度のメディアリテラシーの人間が番?組作ってるから、
その程度の人間しか見なくなって、見ると人がどんどん減ってるっ?てことに、
そろそろ気がついたほうがいいよ。
まあ、オレは見ないから関係ないけどね。?
MYSQL5 <-注目
質問 検証できる環境が手元に無いので聞きたいんだけど mysqldumpでスキーマ別でダンプデータとって、 それをそのまま同じスキーマにリストアしてしまった場合って データは二重に登録されてしまう? それともその後差分があったとしたらその差分が消されるとかでしょうか
試してから質問しろ
>>371 試したいんだけど、数日検証できない状況にいるからすぐ知りたくて
>>372 ありがとう
てことは、データが二重に登録されることはないんだね
374 :
NAME IS NULL :2011/08/06(土) 15:45:39.16 ID:lyPiye8U
sql初心者です。 簡単な掲示板を作成しているのですが、最新の書き込み100件を古い順に取得する方法がわかりません。 limitとorder byで先頭から100件なら簡単ですが、終わりの100件をどのように取得すればよいでしょうか?
どんなテーブル構成かわからんけど、 order by desc でどう?
テーブルは簡単で、less_no int, msg textです。 たとえば、書き込みが900件だと 801〜900番までを順に取得したいです。descだと逆転して900番から上に取得になります。 レスのサイズを先に取得して、limitで開始位置を指定すればできますが、もう少しスマートで簡単に取得できる方法があれば教えていただきたいですm(_ _)m
>レスのサイズを先に取得して レスのサイズって何?
378 :
376 :2011/08/06(土) 19:30:13.25 ID:???
>>377 テーブルの行数、掲示板のレスの数です。レスの数がわかれば -100でlimitの開始位置がわかります。
379 :
NAME 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の処理を実行する方法はないんでしょうか?
>>379 トリガを使うケースに見える。
ただ、DELETEしたら番号崩れるじゃないかとか
他に心配することがたくさんありそう
381 :
NAME IS NULL :2011/08/06(土) 20:48:19.81 ID:vIoRVp2z
>>380 トリガていうんですか、、調べてみます
取得したい値はオートインクリメントの主キーなんですが、deleteしたら崩れるんでしょうか?
不安になってきた、今のやり方のままで良いのかなぁ…
番号崩したくないならDELETEしなきゃいいじゃない
それだとDELETEの存在意義が無いように思えるのですが
>>381 取得する値(キー)じゃなくて設定したい値(「このデータは101行目だよ」)のことだろ。
なにをどうしたいのか、もうちょっとわかるように説明すれ。
初心者なので何をどう説明すればちゃんと理解してもらえるのかわかりません
オートインクリメントの主キーがDeleteしたら崩れるとか 何言いたいのかわからない
わからないのは私の説明不足ではなく、あなたの理解力が足りないせい?
連番にしたいのか?やめとけ
AがBです。 でも、AがBっておかしくない? 日本語以前の問題かもしれない。。
390 :
381 :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の時点で必要なんです
最初からこう書いた方がわかりやすかったかもですね、すみません
1) IDを決める 2) IDをもとにしたショートURLを求める これって2)を1)と同時にやる必要なくない? ショートURLあらかじめ10万個ぐらい作っておいて SHORT_URL(ID, URL)テーブルに入れておけばいいんじゃ
>>390 理解したと思ったら、他の奴のレスをもう一回読んで、
本当に必要な設計を再検討してみると良いよ。
単に auto increment 使うのが最適解に100万円。
mysqlにSEQUENCEはないからスマートな手段もないんじゃね。 goo.glのAPIのリターンを待つ必要があるのが最大のポイントじゃね。
395 :
381 :2011/08/07(日) 01:43:30.67 ID:???
>>391 確かにそうなんですけどね、apiがエラーした時が恐いし
>>393 もう一回読んでみます
>>394 goo.gl、恐くなってきたな〜
皆さん意見ありがとうございました
IDテーブルに1レコード作って自分で管理すれば?
>>374 SELECT * FROM (SELECT * FROM t ORDER BY less_no DESC LIMIT 100) AS recent ORDER BY less_no ASC;
398 :
381 :2011/08/07(日) 06:41:29.69 ID:???
>>396 自前でショートURL機能実装した方が良い気もするんですが。。どうなんですかねぇ
ハード更改したんだけど、あまりパフォーマンスが変わらないから、 topで見たらシングルのまま動いてるみたい。 まんべんなくCPUを使うための設定って何か必要なのですか? centos5でmysqlのバージョンは Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (i686) using readline 5.1 DBはMyISAM型です。
400 :
NAME 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)の部分がとても長くなり面倒だと思うのですが、多数の列を簡単に定義し、テーブルを作成する方法はあるのでしょうか? 文章がうまくなくて申し訳ございません、解答よろしくお願いします。
phpスレ向きじゃあるまいか
例示のためのドメインが用意されてるんだからそれ使えってことじゃない?
>>399 MyISAMは更新処理でテーブルロックするから、頻繁に更新を行うプログラムは
並列度1でしか動かない≒CPU1コアしか使えない
>>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]);
質問です。 PHP 5.2.17、MySQL 5.0.51a 文字コード utf-8 カラムにUNIQUEを設定したテーブルを作成し、 そのテーブルにレコード追加処理を試み、追加されたのち、 もう一度異なるレコードを追加する処理を試みると、 重複が一切ないにも関わらず、二度目の追加には失敗してしまいます。 テーブルを完全に空にすれば再度追加できるようになるんですが、 一度目の処理で追加されたレコードが1行でも残っていると失敗します。 長くなってしまいましたが、対処法を教えて下さい。
テーブル定義とレコードを追加するプログラムと エラーメッセージを見せてください
特にエラーメッセージだな。
特定のディレクトリにあるファイル(mp3, mp4 など)を、 MySQLを使って管理したいです。管理したいというのは、 「聞いた/聞いてない」「買った/借りた」などのチェックを、 ファイル単位で評価付けできるようにする、ということです。 どこからどう手を付けたらいいのか分かりません。 入り口を教えて下さい。
まずはタイトルを管理するものでも作ってみては そのタイトルの属性の一つとしてファイル名があるとか
>>410 オンラインで、複数人でやるなら考えようだけど、
自分だけならiTunesとか使った方が幸せになれるのでは?
ExcelかAccessでやってみて、それで何か不足があってから MySQLを使い始めればいいと思う
Wordで一覧表を作れば充分
416 :
407 :2011/08/08(月) 22:59:28.86 ID:???
どうか上手く行きそうです。報告申し上げておきます。
>>408-409 さん、レスありがとうございました。
遅れてしまい、申し訳ありませんでした。
それは、な・い・しょ(ハート)
419 :
NAME 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');
とするとエラーが出てしまいます。どのようにすればよいのでしょうか?
完全にPHPの話なのでそっちで聞いて下さい
>>419 そのサンプルコードから察するに、$sampleは数字じゃなくアルファベットなんじゃないかな?
422 :
NAME IS NULL :2011/08/09(火) 01:31:22.79 ID:mphQrePV
>>420 わかりました phpスレでも質問してみます
>>421 いえ、$sampleは数字尾で定義しています。それでもエラーがでます・・・
>>419 '(シングルクオーテーション)なので$sampleが展開されない。
"(ダブルクオーテーション)で囲むか、下記のように変える
$result = mysql_query('SELECT id,name FROM sample where id = '.$sample);
シングルクオートで変数展開はされねーだろ
>>419 直し方はみんなが書いているとおりだけど、MySQLスレなので調べ方。
MySQL 5.1以上で、my.cnfかmy.iniに
[mysqld]
general_log = 1
general_log_file = general.log
と書いて再起動。
出てきたログを見ればそのプログラムのどこが間違っているかが分かる
426 :
NAME IS NULL :2011/08/09(火) 11:51:32.07 ID:mphQrePV
>>423 >>424 なるほど・・・変数を展開する時には"で囲むある必要があるとは知りませんでした・・・ありがとうございます!
>>425 今も一応どこの行が間違えているなどは出ているのですが・・・ 一応やってみます。ありがとうございます。
とにかくSQL関係のエラーが出たら そのプログラムが出力してる通りのSQLをログ等で出して そのままコマンドラインででも実行してみるのが近道
クエリが弾かれたら、とりあえずクエリを見てみるって発想がなんで出てこないんだろう?
おまえじゃないから
Mysql使えると食っていけますか? oracleとどっちがいいのか知りたいです。(将来的に稼ぐために)
>>430 MySQLもOracleも、使えるだけなら三流
MySQLはソース読めるなら食っていけると思う サポートエンジニア募集してたし
>>430 究めれば、そして周囲にそうだと認められれば、稼げるのはオラクルの方でしょうね。
Oracleは使えるけどMySQL使えないなんて奴、使い物になるかよ
435 :
NAME IS NULL :2011/08/12(金) 19:48:53.80 ID:HW0R2j9V
先生質問です。 hoge int(1) unsigned zerofill と hoge tinyint(1) unsigned zerofill だとデータ量とか検索速度とか変わってきますか? また、どうするのがベターですか?
>>435 1桁でいいならなんでわざわざintにしようと思うんだ?
>>436 桁によって変えるのがめんどくさいから・・・かな・・・
やっぱり相応の型にしたほうがいいんですかね?
tinyint使ったことない intとbigintだけにしたほうが好きだなー
必要なデータ量が入る最適なデータ型が常識だと思うけど。 MySQLってintにしても桁数少なければtinyint扱いになるんだっけ? そうでなければ、1桁でも4バイト消費なんじゃ? tinyintは1バイト。
>>442 なるほど!ありがとうございます。
不精せずにちゃんと型指定することにします。。
444 :
NAME IS NULL :2011/08/12(金) 22:12:53.30 ID:Ma8BMp8A
>>445 MySQLは使えるけどOracle使えない技術者なんて山ほどいるぞ
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)
448 :
447 :2011/08/15(月) 22:01:01.11 ID:???
自己解決できました。
いずれにせよ すれ違いだ ""でくくって変数展開してみたら?
>>447 その株ツールで儲けた利益の5割をもらえるなら教えてあげるよ
損も5割持ってくれるかい?
MyISAMでトランザクション処理を実装するにはどうしたらいいんですか? どこか参考になるサイトはないでしょうか?
InnoDB使え
ALTER TABLE hoge ENGINE=InnoDB START TRANSACTION 〜〜〜〜〜 COMMIT ALTER TABLE hoge ENGINE=MyISAM
>>455 感心するわ。トランザクションと全文検索ができるテーブルなんて。
まぁ、もうすぐInnoDBでも全文検索できるようになるけど。
458 :
453 :2011/08/18(木) 02:41:40.52 ID:???
>>454 InnoDB使えないサーバなんです
世の中にはトランザクションに意図的に対応していないものも数多くあって
そういうものでもトランザクション処理風のことはできるらしいという情報は得たのですが
具体的にどうするかまではわからなくて
ここで聞くよりググったほうが早いよ
460 :
NAME 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の明記がなかったりもして何の意図でそうしてるのか、どれを信じたらいいのかわかりません
i386はyum eraseしちゃえば mysql クライアントだけ mysql-devel mysqlライブラリと開発環境 mysql-server サーバー本体mysqld mysqldが別のホストで動いているなら一個目のクライアントだけで十分かと
すみません なぜMySQLだと稼げなくて ORACLEだと稼げるのでしょうか? もしそれが本当なら MySQLやめてORACLEに乗り換えたいです
MySQLを使う客:あまりお金がない Oracleを使う客:お金持ち お金持ちにタカって稼ぐならOracleだ
464 :
460 :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自体の開発をする有志の人向けのものですか?
mysql-develはC/C++で書いたプログラムからMySQLにつなぐとか あとはperl-DBD-MySQLやphp-mysqlをビルドするときに使う
466 :
460 :2011/08/18(木) 16:58:14.80 ID:???
>>465 詳しい説明ありがとうございました!助かりました、ありがとう
>>458 本当にトランザクションが必要なら、そのサーバを使うのが間違い。
自前でトランザクションを組むことはできるが、結局それは ariadb もどきを作ることになるだけだぞ。
468 :
447 :2011/08/19(金) 03:33:23.13 ID:???
449は偽物さんです。 #{ }で、""をつけて数字や日付も扱えました。
すみません、皆さんは日本語全文検索対策はどのようにされていらっしゃいますでしょうか? やはり、SennaとかTritonnを使用しているのでしょうか?
今ならgroongaじゃない?
運用中のmysqlのバックアップをmysqlhotcopyで行おうと検討しているのですが バックアップ中にlockが行われるとのことで不安に思ってます バックアップ処理中、つまりロック中にデータが書き込まれて そのロックが長時間続いた場合 書き込みデータがロストするようなことはないのでしょうか また 書き込み→書き込んだデータの読み込み という処理をしたときにロック中出会った場合 書き込もうとしたデータの読み込みが行えないという認識であっているでしょうか
lockはそういうものだろ
MySQLのロックって、書き込みOKで読み込みをブロックするのかよ おそろしいDBだな
475 :
NAME 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が間違っているのであれば、どのような入れ方が正しいのでしょうか?? どなたかお教えください。お願いします。
>>476 普通のロックは、書き込みをブロックするんもんだと思ってたが
>>475 ユーザ名は、ホストとユーザ名の組で指定した?
どっからきたの? SQL鯖かい?それともDB2?
480 :
NAME IS NULL :2011/08/21(日) 21:18:36.69 ID:yF3YwHrz
>>478 いえ。ユーザー名だけで5.1では行けてたので'user_name@host'とか'user_name@*'ってのではなく、
'user_name'だけでしたが、それが原因ですか?
内部からもつなげたいし、外部からもつなげたいので、その場合'user_name@*'でいいのでしょうか?
>>480 user_name@'%'
あとguestユーザが残っているとそっちで認証されることがあるので
念のためmysql_secure_installationしておく。
5.1と5.5で認証まわりは特に変わってないはず
483 :
NAME IS NULL :2011/08/21(日) 22:43:04.72 ID:gS6Fu7TZ
サブクエリー、join などしてレコードを20件抽出するのですが0.14secかかっています。 これって遅い方でしょうか。
>>483 それだけじゃわからん。
CPU1コア使って1秒間に7回しか実行できないという点が
目的にかなうかどうかで判断するべし
>>482 問題は書き込みはブロックされないのかってことだが?
読み込み「も」ってことは書き込みもブロックされるという事を言ってるのか?
>>474 は書き込みOKでって言ってるんだが
>>485 「書込OKで」の意味がよくわからんが
select for updateでプロックすればいいんなじゃいのか?
違うのか?
>>487 書き込みがOKなんだから書き込みがブロックされないって意味だろ
>>472 は
>つまりロック中にデータが書き込まれて と、ロック中でもデータが書き込まれるという旨の発言をしてる
それに対して
>>473 がそういうものだろっていうんで、
>>474 は
>書き込みOKで読み込みをブロックするのかよ つまり書き込みはブロックされないのかよと言ってるわけだ
いや多分
>>472 はロック中のテーブルに書き込む話をしてるんだと思うが。
>書き込みデータがロストするようなことはないのでしょうか
って聞いてるわけだし。
491 :
NAME IS NULL :2011/08/22(月) 12:08:07.69 ID:cErCHUJg
492 :
474 :2011/08/22(月) 14:33:50.66 ID:???
で、結局ロック中のテーブルに書き込めるのか書き込めないのかどっちなんだ?
俺は共有ロックだろうが排他ロックだろうが書き込みなんぞ出来るわけないと思うんだが
>>473 ,476はそう思ってないみたいだが
>>492 逆に、どこをどう読んだらロック中のテーブルに書き込めると言っている
人がいると思ったのか訊いてみたい。
こうやってデマってのは広がっていくんだな
MySQL5.1と5.5は、InnoDBの性能がアップした、という以外にもどの程度進化しているのですか? 全体的に処理速度がかなり速くなったり、「これは使える」という機能など追加されたのですか? 5.5に移行しようかどうか、サードパーティ製ソフトの対応等も含めて迷っています CMAKEになって./configureオプションが変わるでしょうし、my.cnfの設定もある程度変わるのかなと思っています 逆に5.5の欠点などもあれば教えていただきたいと思います
プラグインのAPIが変わってるらしく、5.1様のソースがそのままじゃコンパイル出来ない
utf8mb4はけっこう重要だと思う
手元でやると、5.5はtemporary table作るのが遅すぎて移行できなかった。 5.1と比べてね。 10倍くらい時間かかった。 MacでもUbuntuでも同じ結果だった。
temporaryが遅いとな。 ストレージエンジンはMYISAM、MEMORY? テンポラリーテーブルに限った話ではないけれど InooDBPlugingが標準になったので 初期状態で立ち上げると確かに重くはなってる気がしますね。 (DEFAULT_STORAGE_ENGINEは相変わらずMISAM?だけど) 今のハードに併せてきたんじゃないかなと予想。
ほんとにTEMPORARY遅いなら調べるけど。 再現ケース欲しいな
結局皆MySQL5.5導入してるの? 俺は一応Linuxにcmakeでインストールして単純な動作確認だけはしたけど、まだ5.1使ってる マイナーだろうけどmMeasure使ったりしてるんで これ5.0、5.1、とインストール方法が変わるので、おそらく5.5では利用できないんだろうなと思って cacti、munin等は試していないけれど あと、バージョンの問題だったかもしれないけれど、ソースからインストール後起動時に何度かエラーが出て解決できなかった事もあった 5.1では一度も無かったけれど
504 :
500 :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 を出す。 これを店舗回繰り返す。
505 :
500 :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くらい割り当ててた。
5.5のテンポラリーテーブルが遅いってのは本当なのか? 何か回避策があるんじゃないのか?
OSとファイルシステムは同じ?
>>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。
my.cnfのdiffを晒してくれ
個人情報を晒すのは御勘弁ください。
key_buffer_size というのはMyIsam用にあるインデックスを保存しておくバッファ の大きさを指定するパラメータみたいですけど、Innodb用にはそれに該当する パラメータは無いのでしょうか?
>>512 innodb_buffer_pool_size
インデックスもテーブル本体もこれ
日付についての質問です。 year,month,dayで3つのIntegerフィールドを定義するのと、Dateフィールドを1つ定義するのとでは、 年+月または年+月+日でSelectする場合どちらが高速にできるのでしょうか? できるだけ高速にSelectしたのです
試した方が早くね?
Dateフィールドを1つ
year,month,dayの数字を各桁ごとに分解し、それぞれを2進数化してTextフィールドに納めるのが良い
time_t だろ常考
DATE型の内部表現は3バイトの整数なんでしょ 他の型で代用するとかえって遅くならね?
DATEだと、毎年2月とか、毎月5日とか飛び飛びのデータを集計するのがつらい。 Y/M/Dだと、2010/12/25〜2011/1/15といった、月またがり、年またがりの データを集計するのがつらい。 どういう集計をしたいのかによって考えるべき。両方つけてもよい
固定文字列8桁でいいじゃん
8桁の数値にしてるわ。スッゲー楽。
>>523 毎月5日とか10月とかは、文字列ならsubstrとかrightで抽出できそうだけど、数値のときはどうやるの?
>>521 > DATEだと、毎年2月とか、毎月5日とか飛び飛びのデータを集計するのがつらい。
5日締め毎に集計って事ですか?
何が辛いのか分からないので詳しく教えて下さい
2月29日の有無とか11月31日とか 3月3日の一週間前とか クライアントソフト側できっちり丸められれば良いねぇ
day of monthで検索するなら、フィールドを分けておけば(日,月,年)なんてindexを張れて便利。 DBMSによっては関数インデックスが使えるからその場合はdateでもいけるけど、 MySQLだとたしか使えない。
528 :
NAME IS NULL :2011/08/29(月) 11:55:18.78 ID:9NlgRHdO
質問お願いします。 MySQL5.1です。 負荷軽減するためにmemoryストレージを使いたいのですが システムダウンしたときにデータが消えてしまいます。 これを回避するために、バックアップ用のテーブルに同期することはできますでしょうか? insert updateを2つかくという方法以外で方法があればお願いします。
insert updateを3つかく
トリガーでも使えば
>>528 どんなデータいれるんだ?
KeyValueでいいならhandlersocketで幸せになるんじゃね?
insert updateを4つかく
トリガでできそうですね!勉強してみます。 ありがとうございます。
MySQLは100万件程度のレコードでの運用は問題ないでしょうか? ユーザは20名程度です。
とりあえず、 訪問者数、日に300人前後。 収録データ数は800万ちょい超え というショボ目のwebサイトは普通に動いてるよ。
innodbも定期的にoptimize tableやったほうがいいの?
>>536 大量DELETEした場合はやっておいてもいい。
やらんでも困ることはまずない
539 :
536 :2011/08/29(月) 21:57:45.10 ID:???
540 :
536 :2011/08/29(月) 21:58:57.84 ID:???
絶対に許さない
542 :
NAME IS NULL :2011/08/30(火) 07:42:34.29 ID:2jLDvlEm
お前らの中で管理をMSAccessでしてるやついないのか?
数千件レベルならMSAccessでもなんとか
ちなみにSQL Serverだとどんなもん?
542はMySQLの管理をAccessでっていう意味だと思ってたが違うのか
MySQLってなんだよ さっぱり解からん サルにも解かるように教えてくれ
サルには必要ねーよ
>>546 MySQLってのは、MySQLの作者の娘(まいちゃん)から取った名前だよ
MariaDBみたいなもんか MAISQLに改名しる
>>534 運用というか分析系には弱いね
そういう用途ならSQLServerのほうが向いているかと
予算がカツカツとかいう事情があるならPostgresでも入れるべし
>>528 文面からするとMySQL Clusterが最適解のように思えるが。
ストレージがメモリじゃなきゃだめって制約がなければSemi-Syncつかえば
俺もHinataSQL作ろうかなあ
じゃぁ俺はIinchoSQLにする
すでにMoSQLがあるわけだが
555 :
NAME 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書いたらめちゃくちゃ重くなりました・・・・。 なんとか軽くする方法ってないんでしょうか。
サブクエリの部分をINで書きなおしてみ。 それでもダメなら5.6使ってみ
あと最後のwhere句の部分はHAVINGの間違いでは?
サブクエリ使わんでも、ふつーにjoinでいけないか?これ。
559 :
555 :2011/09/02(金) 06:35:44.60 ID:???
サーセン自己解決 アホなことになぜかtable2.t1_idをテキスト型にしてた table1.idに合わせてINT型にしたら早くなりますた
560 :
NAME 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 としたのですが他にしておくべきことはあるでしょうか? すみません、復旧作業は初めてでビビっています。アドバイスお願いします
561 :
560 :2011/09/02(金) 11:02:57.73 ID:cqdHSpY6
書き忘れましたが、サーバを再起動したらソケットが生成されるかもという記述を見つけて試したものの 生成されませんでした ご意見よろしくお願いします
>>560 エラーログ探してちゃんと読め。見つからないなら
remi版アンインストールしてMySQL 5.0.77に戻したらいいよ
InnoDB使ってるならInnoDBログのサイズが違うというエラーが出てるだろう InnoDBログを一旦消してみれば
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)
ここって初質スレなの? こういう質問ありなの?
気が向いたら返答するかもねー
俺はスルーで
>>565 余裕でありだろ
質問する自由、回答する自由
ここよりSQL質問スレで聞いたほうがいいと思われ
どうせお前らわかんねえんだろ
煽って駄々こねても、だ〜め(はぁと
バカを育てることに意義がある そんなマヌケな方針のお方がいましたので、初心者が沸いているのです
自己解決 お前らたいした事ねーなハゲp left outer null=null union right ごにょごにょ で出来た
口だけ達者なおまえら役になすぎワロン
>>564 十分な難問なんだが
初心者とか言って煽ってるやつはくたばっとけ
難問というよりちょっと調べればわかることを調べずに聞いてるから これだけ自分でやってやってみたけどうまくいかないなら分かるけど
>>577 どこが?
普通にUNIONしてるだけにしか見えん
あとUNION ALLしろよな
581 :
sage :2011/09/03(土) 11:58:41.63 ID:+juhx5Y2
どーでもいいけどTYPE_ID が2つあるからどっちのテーブルから データを持ってきてるのか良くわからない
質問です。 今通販サイトを作っているんですが 何もいじってないのに突然データベースが表示されなくなりました。 昨日まではちゃんとではないですが表示されていました。 昨日までは表示されたりされなかったり不安定で、その時は更新を何回も押せば表示されました(表示されてもまた更新押すと消えたりする) XAMPP使っています。Mysqlは起動してあります。
モニターの電源入ってる?
メガネ掛け忘れてない?
更新を何回も押し忘れてない?
データベースって表示されるものなのか?
>>583 ですが釣りじゃないですw
ブラウザで表示する時データが反映されないんです。
昨日までは更新連打してれば反映されましたw
まぁこの時点で何かおかしいですが・・・
やり方間違ってるのかなぁ
連打が足りないんだと思う
591 :
NAME IS NULL :2011/09/03(土) 23:01:42.45 ID:zd/KEFO9
連打しなければ更新が反映されない www
592 :
583 :2011/09/03(土) 23:06:13.21 ID:???
全然ワロエナイwww もうやめたいわー でもやらないとダメだし、どうすればいいんだ全く・・ データベース使わないでやるしかないのか
連打するとレンダリングされる… ククッ
MySQLの問題なのかプログラムのせいなのか切り分けしろよ、カス。
595 :
583 :2011/09/03(土) 23:27:39.40 ID:???
>>595 すれ違いだけど
Apacheのエラーログみたり、myphpadminでphpのsql文を試してみたりすれば問題を切り分けられると思うよ
更新ボタンが壊れたんだろ キーボード交換しれ
それならむしろマウスの左ボタンではないかと
ふつうF5キーだろ
601 :
583 :2011/09/04(日) 03:56:48.39 ID:???
またF5連打頑張ってきますね いつか更新されるはず
602 :
NAME 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.
Please use mysql_upgrade to fix this error.
mysql_upgradeコマンド実行する時にフルコントロールできるアカウントのユーザー名パスワードわたしんしやい -hか--helpて付けりゃ何か説明出るでしょ
>>602 > Created with MySQL 50045, now running 50152.
MySQLが5.0.45から5.1.52にアップグレードされてるぞ。
誰かがいじったんじゃないの
606 :
583 :2011/09/04(日) 16:09:53.67 ID:???
解決したあああああああああきたああああああああああ SQLの書き方が間違ってたw 何もいじってないのですが・・・とかいってたけど弄ってたww みなさんありがとう!!
>>606 おめ。
ちゃんと報告してくれたのも好評価です。
こんだけ礼儀正しいのに厨扱いしてごめん。謝るわ。
しかし、そんな危うさで通販サイトを作ってて大丈夫なのか?
609 :
602 :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にアップグレードされてるぞ。
これ、確かにそうなんですがアップグレードした後も正常に動いてたんです
それが急に動かなくなって。原因は不明のままです、怖いなぁ
むしろアップグレードしたあと動いていたほうがおかしいだろう
611 :
583 :2011/09/04(日) 21:36:41.90 ID:???
練習なので問題ないです アップロードも販売もしませんw
躓いているのでどなたか助けて頂けないでしょうか。 cシェルで、特定の一つのレコードの特定のカラムを取得するselect文を発行して、変数の中に格納したいのですが、 この時に、値が空文字だと変数の領域をオーバーする旨のエラーになってしまいます。 (ここでいう空文字とは、insert時に値を""と指定したものです。) nullでもなく、スペースでもないこの値を取り扱うにはどうすれば良いでしょうか?
数字のカラムにヌルがある場合ってこと? で、変数がintとか
>>612 C ShellではなくSQLで頑張る方針でどうか
SELECT CASE WHEN col1 = '' THEN '<EMPTY STRING>' ELSE col1 END FROM test1;
615 :
612 :2011/09/05(月) 13:47:44.58 ID:???
>>614 ぶらぼー!
お陰さまでなんとかできました!
ありがとうございました!
616 :
NAME IS NULL :2011/09/06(火) 16:11:59.52 ID:vFZ6NMqY
全文検索について質問というか相談したいんですが、皆さんどうやって実装していますか? まったく初心者で、tritonとかgloongaとかが調べたらでてきたものの、 説明にかいてあることがよくわからず、その質問をここでしても良いのかもわかりません 良いのでしょうか? というか、みんな、全文検索はどうやっていますか? 単純な名前検索とかならともかく全文検索だと検索結果のリストの作り方などもどうすべきかわかりません どのように勉強したら良いんでしょうか
いまはApache Solrじゃない? MySQL関係ないけど
619 :
NAME IS NULL :2011/09/06(火) 19:32:40.23 ID:vFZ6NMqY
>>617 やっぱりそれが簡単ですよね
よっぽど更新性が高くてそれへの対応度を高めたい場合以外はgoogleで良いのかなぁ
>>618 こんなのあったんですね!
独立した検索用サーバーってのはいいなぁ
tritonnみてたらmysqlを専用のソースで再コンパイル+インスコしなきゃいけないそうで
面倒くさそうで参ってました
2人ともありがとうございました
bigramプラグインでなんとか ただ、5.1だけなんだよな
tritonnとかsennaとかいろいろあるけど、mysqlのバージョンが限られてて自由度低いですよね Apache Solrてのはそのへんの縛りないのかな期待して調べてみよう
更新が少ない用途だとgroongaよりTritonnの方がいいな マルチカラムで検索できたり、検索後にタグ付できたり、いろいろ気が利いてる
クエリーを入力すると、テーブルのどこにインデックス春香教えてくれる ソフトって、需要ある?
MySQLならある OracleはオプションのTuning Packでできる
>>624 MySQLでは無いだろ。無いから作ってんのに。
・・・うそだよね? 無いよね?
需要があるってことでは?
627 :
624 :2011/09/08(木) 19:59:03.68 ID:???
分かりづらくてすまん。 そういうツールはいま存在しない。需要はある。 スロークエリログを直接読み込めるようにするときっとみんな喜ぶ
628 :
NAME IS NULL :2011/09/09(金) 08:37:29.17 ID:KBWgcLx7
少し質問なのですがURLを主キーにすると速度は遅くなりますか? 主キーはオートインクリメントのintを使ってユニーク・インデックスで URLのカラムと別にするのとでは速度に違いはありますか?
速度の質問する奴多いけど、それくらい自分で試せばいいと思うけどな。 どうせここで聞いたってMysqlの中の人がいるわけじゃなし、経験か想像の答えしか得られないんだから。
InnoDBにINDEX長767バイトの制限があるので URLにPRIMARY/UNIQUE INDEXはそもそも張れない場合がある
それ以前にURLって変わったりなくなったりすることがあると思うけど、それを主キーにして良いの?
632 :
NAME IS NULL :2011/09/09(金) 12:10:51.61 ID:KBWgcLx7
>>631 基本的に問題ないです無くなっても変わってもいいので
重複さえしなければ
それよりアクセス1万/dayくらいのサイトなのですがプログラムを
サイトにアップしたらサクラ鯖ですがすぐにテンポってしまいます
テスト環境では正常に動作してます
サクラのDBがダメ?
それとも設計が悪い?
>テンポってしまいます ってどういう意味?
634 :
NAME IS NULL :2011/09/09(金) 12:46:57.05 ID:KBWgcLx7
>>633 英語でサービステンポラリー エラー?
というのがでます
サーバー10個くらい借りてるので違うDB使ってみたら動作しました
???ですね
いわゆるハズレサーバーだったということでしょうか
CentOS Linux でインストールして起動すると失敗になるけど、 MySQL の再インストールどうしたらいいですかね?
すれば?
すってもうまくいかない
638 :
NAME 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に変えても、同じように文字化けします。 文字化けを解消する方法を教えてください。
639 :
NAME 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' というんですが、 これの文字セットを調べるにはどうすればいいんですか?
>>639 SHOW CREATE DATABASE testdb\G
・my.cnfに character_set_server=utf8 を入れて再起動
・DROP DATABASE testdb;
・CREATE DATABASE testdb CHARACTER SET utf8;
して、もう一度prod.sql流してみて
641 :
638-639 :2011/09/09(金) 20:11:33.86 ID:dF3d8pnA
>>640 ありがとうございます!
やってみますので、しばらくお待ちくださいm(__)m
今更だと思われるでしょうが、Maatkitでいかがなんでしょうか? 検索しても日本語の情報がそれほど多く出てくるわけでもないですし あまり使ってる人多くないのかなと思ったもので もしMaatkitに変わる、今皆さんが使っているサードパーティ製のものが何かあれば教えて頂けないでしょうか?
643 :
638-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活用法');
どうしたらよいでしょうか?
データベースが入ってるフォルダのdb.optに書いてあるよ
645 :
638-639 :2011/09/09(金) 21:21:32.33 ID:dF3d8pnA
db.optには default-character-set=utf8 default-collation=utf8_general_ci と書かれていました。 これはとりあえず表示するのには正しそうですか?
>>643 うーんDB設定までは期待通りになってるんだけどな。
prod.sqlって自分で作ったのではなくて書籍の付録か何かなの?
End-to-EndでUTF-8に統一したいなあ
$ iconv -t UTF-8 prod.sql > prod_utf8.sql
とか
>>646 笑w
一昨日出たばかりなんですか?www
いいタイミングで質問しましたw
自分はDBAではないのですが、学習でMaatkitが色々と便利そうだなと思ったのですが、全然情報がなくて、日本では人気ないのかなと思っておりました
@ITとか、特集があるかと期待しましたが無いようですし
皆さんはあまりこういったものは使用しないのでしょうか?
GoogleCode(GooglePatch?)など
649 :
638-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読んでもちょっと分からないです・・・。
650 :
638-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で書かれているのだと思います、分からないですけど。
>>649 機密情報とかでなければprod.sqlをどこかにUPするんだ
>>651 そんなぁ、無茶言わないでくださいよぉ・・・(´・ω・`)
653 :
638-639 :2011/09/09(金) 22:33:45.90 ID:dF3d8pnA
文字セットにこんなに悩まされるとは思っていませんでした。 憂鬱です・・・英語で 目 欄 ・・・間違えた・・・メランコリーでしたっけ? もう全部の文字セットをUTF-8に統一すればいいじゃないですか・・・ 何故やらないのか不思議です・・・。
654 :
NAME IS NULL :2011/09/09(金) 22:49:48.70 ID:k/DlnFyj
バックアップについて教えて下さい。 いつもdumpをして、sqlを保存しているのですが、 mysqlサービスを停止させた後に、dataフォルダ毎バックアップする方法の方が速いので、 できれば毎日のバックアップはその方法にしたいのですが、 この方法で問題ありませんか? バックアップしたdataフォルダを全く別のPCにコピーさせてmysqlサービスを開始すれば、 問題が発生する場合があるかどうかが分からないため不安に思っています。 windows/mysql5.5環境です。どうぞ、宜しくお願いします。
>>654 問題ありません
mysqlサービスを止めるタイミングがあるなら物理バックアップが一番平和
656 :
638-639 :2011/09/09(金) 22:59:03.93 ID:dF3d8pnA
>>656 $ iconv -f EUC-JP -t UTF-8 prod.sql > prod_utf8.sql
でおk
658 :
638-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にしても同じ結果です。
多分、もう一歩です。どうすればよいのでしょうか?
659 :
638-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"; を引数として与えていますね。 これが動いていないということでしょうか?
660 :
638-639 :2011/09/09(金) 23:35:19.60 ID:dF3d8pnA
お陰様でデータベースの方にはもう何も落ち度が無いことが分かりましたので、やはりPHPスレで訊いてきます。 (cnv_enc()というのはよく見るとユーザー定義関数でした・・・分解して一つ一つ見てみることにします) 答えてくださった皆さん、ありがとうございました!良い週末を!
MySQLの話がひとつもない 荒らし認定
MySQLの話してるじゃん一応
663 :
NAME IS NULL :2011/09/10(土) 20:49:54.03 ID:LXtWlowA
すいません mysqlターミナルを使ってMySQLサーバーにアクセスしたいです どのようにするとよいでしょうか? 環境 mac XAMPPを、インストールして、MySQLの動作を確認しました。
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にするか悩んでいます。 後者にしたほうがプログラムの変更が楽なのですが、 速度的には差は出ないという認識でよいでしょうか?
>プログラム側で速度を計測しても差はわかりませんでした そしたら、それで充分だと思うけど。 下らんこと悩んでいる暇があったらさっさとプログラム完成させたほうがいいよ
>後者にしたほうがプログラムの変更が楽なのですが、 なんか馬鹿なことしてそう
順番変わる方が面倒だろ 何だ?馬鹿なことって
とりあえずSELECTのカラム順は性能に関係ないよ。 EXPLAINとってPLANが同じなら性能は同じとみなしてよし ただし 「SELECT * をせずに必要な列だけSELECT c1, …する」 という点は大前提
mysqlを入れて [mysqld]の中に innodb_log_file_size=64M innodb_buffer_pool_size=128M と追記したら mysqlが立ち上がらなくなりました。 どなたか分かる方いたら教えて下さい
>>670 どうやらバッファーサイズのほうはあっても問題ないようです。
ログファイルサイズのほうはmy.cnfの中に書かれているとmysqlが立ち上がりません。
672 :
665 :2011/09/11(日) 18:59:23.68 ID:???
レスどうもありがとうございます explainの見方がよくわからなくて困っていました カラム順は関係ないとのことなので安心しました どうもありがとうございます
>>670 「innodb_log_file_size 変更」
ぐぐれ
自分の場合、 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"); などで対応。
あと、自分でサーバーを立ち上げているのなら、 httpd.conf の修正も必要みたいだね。 #AddDefaultCharset ISO-8859-1 AddDefaultCharset off
文字化け解消のためのSET NAMESはやめろとあれほど
文字コード変換はSQL(SET NAMES)で行うのは危険なので API関数のmysql_set_charsetを使え、と読んだことがあるのですが。
MySQLの転送量について聞きたいことがあります a.DBが20M a tableが20Mだとしてそのうちの一つのレコードの 1 hoge fuge hage のhogeの部分を取り出した場合 転送量は20Mになるのでしょうか?それとも1 hoge fuge hageの分になるのでしょうか?それともhogeの分だけになるのでしょうか? 転送量だけだからhogeの分だけだと思うのですが
>>682 SET NAMES ではMySQLに対して文字コードの変更を指示できるけど、
PHPの内部関数 mysql_real_escape_string が解釈する文字コードは変更されない。
そのためSQLイジェクションの脆弱性が生じる。
詳しくはググって
画像とかを保存する場合、MySQLのDBに保存するのか もしくはファイルはどこかに置かれるようにして、そこへのリンクurlだけを保存 どちらがいい? 後者だと画像へ直接外部リンク張られるよね?
ファイルはどこかに置かれるようにして、そこへのリンクurlだけを保存
直リンを防ぎたいならDBに保存でもいいけど、直リンを防ぐ方法はいくらでもあるから どっちでもいい。
yry
ディレクトリ変更や一時ファイルで対応など手法はあるね。
どうでもいいよ。下らん。
間にcgiはさんでリファ見ればいいだけ
>>683 ありがとう
PDO使ってる分には関係ないってところか
xampp使ってるんですがどんなにがんばってもERROR 1045のAccess Deniedが出てきてmysqlにアクセスできません ぐぐって外国のフォーラムもみましたがよくわかりませんでした よくわからないなりにmysqladminでみたところuserもhostもNo defaul valueとなっています どうすればいいですか
なるほどありがとうございました
お安い御用です。
696 :
NAME IS NULL :2011/09/20(火) 00:49:38.33 ID:uKJl/+/o
indexの概念がイマイチわかりません。 遅くなる時、また再構築が必要なケースの認識があっているか教えてください。 遅くなる時 INSERT、DELETEを実行した時 再構築が必要 ALTER TABLEなどテーブルの構造に変更があった時
MySQLのINDEXはALTER TABLEのあと再構築とかしなくていいよ ていうかALTER TABLEのときにINDEXも再構築される
698 :
NAME IS NULL :2011/09/20(火) 02:06:52.44 ID:uKJl/+/o
>>697 なるほど、了解しました。
ありがとうございます。
お安い御用です。
>>697 これは知らなかった。
有益な情報ありがとうございます。
お安い御用です。
というか、テーブルの構造が変わったら INDEXも変えなきゃ意味がないでしょ
そうとも限らない
ここってoracleスレだっけか
Oracleが動いてるサーバーにMySQLを同居させることってできますか? サーバーっていってもWindowsXP機でどちらのDBも月間1万件くらいのデータを扱う程度の規模。
なぜできないと思うのかそれが聞きたい
できるできないってより悪影響あるのかな。 こんなバカなことやってる人って他にいるのかな? ってことです。
SELECTするときにGROUP BYでまとめて、HAVINGで条件付けをしています。 HAVINGしたものと、していないもののCOUNTが等しい場合のみ結果を返すようにしたいのですが、 HAVINGしたものと、してないものを2つ書いてCOUNTするしかないのでしょうか?
OracleとMySQLを同居させるくらい昔からよくあること。
>>709 つか、それが等しくならない場合ってあるか?
どんなクエリ書いたんだ?
>>708 そりゃ悪影響はあるよ、メモリを喰うとか。
>>709 HAVINGのところでHAVINGで書いてる条件とCOUNTの条件を比較すればいいんじゃね
714 :
708 :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を返すようにしたいです
また嘘SQLの犠牲者が…
>>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
みたいな感じで
まちがえた 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 みたいな感じで
percona-toolkit試した人いません? 自分には全然分かりませんでした どんな感じで、利用方法など聞いてみたいです
全然分からないんだから豚に真珠。 あきらめろ。
ひどい
外部キーを指定すると、カラムに格納できる値が親テーブルに格納されている 値に制限されると書いてあったのですが、実際にやってみるとどのような値でも 格納出来てしまいます。 指定方法がおかしいのか、何か別の理由があるのか教えて頂けないでしょうか。 よろしくお願いします。
お安い御用です。
全然分からないんだから豚に真珠。 あきらめろ。
ひどい
>>721 NOT NULLになってないんじゃないの?
>>721 そんな都合のいいことが出来るわけないだろ
そんなバカな
調べてご覧よ。
ひどい
これが自然の掟だ。
そんなバカな
そんなバナナ
丸ごとバナナ
まるでバナナ
736 :
NAME 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)
配布しなきゃいい。 あるいは、MySQLと一緒に配布せず純粋にPHPのコードのみなら GPL以外のどんなライセンスにするのも自由だ。
>その検索ソフトウェア(PHPで書くつもりです)は >「欲しい人には渡さなければならない」わけですが 違うよ。 その検索ソフトを他者/他社に配布するかどうかは任意。
>>738 しかし配布した相手にはソースコードを公開する義務があるわけだな
どういう接続方法を採るかにもよる。
>>736 のページは知っていてわざとなのか、ただ「使う」としか書いていない。
ライブラリとして接続する場合は、GPLに抵触する可能性があるから、CLが必要(であろう)。
が、ネットワーク接続のような使用方法であればGPLには抵触しないから、CLは必要ない。
あ、ごめん。 後者は、CLを買う必要もないし、ソース公開する義務もない、ってことね。
742 :
771 :2011/09/25(日) 00:20:43.14 ID:???
さすがオラクル汚い
>>740 すいません。ちょっと問題を変えます。
http://www.softagency.co.jp/products/mysql/license/ のフローチャートによれば
Webベースでデータベースの登録、クエリを行う場合は問題ないとして、
たとえばExcelVBAみたいなものでMySQLに接続するマクロをつくり、
日本のあちこちの事業所に「このマクロでうちのサーバーにアクセスしてね」
と、そのマクロを配布する場合は
あなたの開発したソフトウェアが動作するためにはMySQLが必要ですか
↓Y
そのソフトウェアを他の人に配布しますか?
↓Y
そのソフトウェアのソースコードを引き渡しますか?
↓Y
そのソフトウェアの改変と再配布を誰でも無制限に許可しますか?
↓Y
GPLでご利用になれます
となるので、
そのソフトウェアの改変と再配布を誰でも無制限に許可しますか?
に「はい」と答える為には、
「社外の人間に、『これ、うちの社で作ったマクロだけど、便利だからあげる』と言ってあげてもいいよ」
と言わないとダメなんですかね?
>>743 そうです。受託開発ならまず間違いなく問題ありません。
GPLを遵守してばら撒いてもいい、ということと 社員就業規則を遵守し会社の機密情報を漏らすな、っていうのを 両方伝えればいいんだよ
うちの会社には機密情報は存在しません。 個人情報についても全て公開するのが会社の方針です。
間違と問題って似てる
だから、そのフローチャートは >あなたの開発したソフトウェアが動作するためにはMySQLが必要ですか 初っ端のこの文章が曖昧過ぎて、フローが意味をなしてない。 GPLでは、もともとのプログラムに「改変」して二次配布する場合に、ソース公開の義務を伴うわけだから、 ただ単にGPLなソフトを使うプログラムについては、その義務はないし、ライセンスもGPLにする必要がない。 まあ、VBA経由ってことなら、ライブラリを直接リンクすることもないはずだから、問題ないでしょ。
>>748 >GPLでは、もともとのプログラムに「改変」して二次配布する場合に、ソース公開の義務を伴うわけだから、
>ただ単にGPLなソフトを使うプログラムについては、その義務はないし、ライセンスもGPLにする必要がない。
全くもってそう思うのですが、ちゃんと問い合わせないとダメですかね?
なんかわざと曖昧にして、ミスリード誘っているような気もするw
GPLを理解してないどころか日本語も理解できないのか…
>>750 どの部分の日本語を指して言っているのか、詳しくプリーズ
>>749 何度回答をもらっても信じないなら質問すんなよ。
>>751 >>748 が「動作するためにMySQLを必要としないソフトウェアである場合を弾く」ためのフローだと
理解してない事に対して言ったのよ
更にGPLを理解してないと言ったのは以下のように
> GPLでは、もともとのプログラムに「改変」して二次配布する場合に、ソース公開の義務を伴うわけだから、
「改変」と「ソースコードの要求」の二つの権利をごっちゃにしたような
ありもしない制約を説明していたからな
a
>>755 その文章は、「企業向けにMySQL Enterpriseを『用意して』いる」と書いてあるだけで、
「企業はMySQL Enterpriseの使用を義務付ける」とは書かれていない。
つまり企業でもMySQL Enterpriseを使用するかどうかは任意と読み取れる。
>>756 誰が書いたかもわからん個人のブログの記述を盲目的に信じるなって言ってんだろ
>>759 横から失礼。
手元の本(誰が書いたかはわかっているw)にも
「企業内で使用するような場合はコマーシャルライセンスが必要となることがあります。」
と書いてある。どんな場合かはっきり書きたくはないらしいw
>>760 この場合の「誰か」ってのは、名前とかそういうことじゃなくて、
MySQL(オラクル)の公式見解かどうかが重要ってこと。
それ以外の誰が何と発言しようと想像の域を出ないだろ。
遅いクエリを、事前にキャッシュに入れておく方法ない? データの更新は早朝の朝一のみなんで、出来ればバッチででもキャッシュに入れときたいんだが。
763 :
771 :2011/09/25(日) 16:48:56.36 ID:???
GPLスレと聞いて。 元のソフトウェアを改変する場合にのみソース公開は必要で、 使うだけならそんな事しなくて良いはずなんだが。
それがどうした。そんなことみんなわかってるよ。
改変したかどうかは関係ない。 問題は(元のGPLソフトウェアと一体のものとして)配布するかどうか、だ。
それがどうした。そんなことみんなわかってるよ。
質問者が失踪したので終了しないか? 結局何を調べるのかわかんなくなったぞ。
それがどうした。そんなことみんなわかってるよ。
>>768 実は気になっていることなので、結論を知りたいのが正直なところ。
イントラネットで使う場合、どう転んでも商用ライセンスなんていらないだろ
と思っていたんだが、正直自信なくなってきたw
GPL汚染に関しての問題とは思うんだが
>そのソフトウェアを他の人に配布しますか?
↑
この設問の書き方はズルイと思うんだよな。
ずるいというか、そのくらい自分で判断できない奴は おとなしくコマーシャルライセンス買っとけって話だな。
わざと曖昧にしておくのもオラクルの商売のやり方
ただのスタンドアローンサーバとして使うだけなら、何も心配することはない。 そもそも、ライブラリのリンクについても、「改変」に当たるかどうか微妙な問題だ。 これについて、GPL違反で裁判に訴えたところで勝てるかどうか怪しい。 もちろん、面倒除けにCLを買うというのは、使う側の勝手であるが。
>>774 これはたぶん間違って消しちゃったんだな。
あとで戻しといてあげよう。
- * MySQLを改造するわけではなく、プロセス間通信として、MySQLに接続し、利用する場合は、そのソフトウェア自体はGPL以外のライセンスで配布して良い。 - * 自社開発でMySQLを改造し、自社のWebサーバで利用する場合には、ソースコードの開示は行わなくて良い。GPLによるソースコードの開示を求める権利を有するのは、ソフトウエアを入手したものという解釈による。Webサービス利用者にはこれは当てはまらない。 これらがダメなら、Linux上のプロプラなソフトはみーんなアウトだ。 もちろん、Oracleもだw
>>775 ライセンスに関する出典を必要とする箇所を記述。)
で消したので、出典を明記しないとダメよん
GPLの規定がどうなっているかが問題なんじゃなくて、 どのような場合にGPLが適用されるか、オラクルの説明が明確でないのが問題なんだろ
デュアルライセンスだからGPLを選べばGPLが適用されるが?
>>779 GPLの方を使えばGPLが適用されるので心配ゴム用
そうなんだがGPLを選択するために満たすべき条件が曖昧なんだろ
こいつは何を問題にしてるんだ? GPLを選択するために満たすべき条件はGPLに従うことであって、 それ以上でもそれ以下でもないが?
>>783 GPLのMySQLに接続するプログラム(VBでもPythonでもなんでもいいけど)は
GPLじゃなきゃダメ(配布するなら、そのソースの無制限の再配布を認める)
っていう意味に読めるような文言をMySQLのオフィシャル代理店が言っているので
もめている。
そもそもMySQLに接続するプログラムの配布条件にまでMySQLが口を出すのがおかしな話だよな。 MySQLと同時配布しようがしまいが、MySQLとは独立したプログラムのライセンス形態は MySQLには関係無いと思うけどな。 例えばOSのAPIを利用するアプリのライセンス形態までOS側が口を出すなんて聞いたことがない。
>>784 もめているというより、GPLをよく理解せず、その代理店の書いたいいかげんな
文章を勝手に解釈してわめいている奴が一人いるだけだな。
787 :
sage :2011/09/26(月) 20:41:24.72 ID:NnYmgY1c
>>786 そもそも代理店がいいじゃげんな文章を書いちゃダメでしょう(苦笑)
>>787 MySQLは自分でダウンロードしてインストールしてね
って書いておけばOKなん?
>>784 WindowsもGPLになるとかありえないでしょ。問題ないよ。
792 :
787 :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にします。
いやいまどきPostgreは無いだろ・・・ グローバル的にも性能的にも・・・
>>793 MySQLのライセンスがアレだから、企業ではPostgreに流れているのは事実(当社比)
まあいいんじゃない? ばかがMySQLのライセンスが…と定期的に騒ぎ立てる頻度が減れば
>>793 Postgreって性能低いの?
少し前まではMySQLより上かと思ってたけど・・・
Postgreのが機能多くて速度遅かったでしょ 最近はほぼ同じってかMySQLがストレージエンジンごとに性格変わるから一概に評価出来ない
てことは、最近のpostgresはMySQLと速度は同等で機能は上ってこと?
799 :
NAME 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は起動していません。 ・・・どうすれば、起動するようになるでしょうか・・・
>>799 たぶん/etc/init.d/mysql内でロックファイル作っていてそれが残っているんじゃないの?
/etc/init.d/mysqlの中身を見てロックファイル名を調べて消してみたら?
>>792 なんなんだ、こいつはw
だいたい、MySQLの場合は、GPL版とCL版でものが違うじゃないか。
>>801 そういや昨日
>>790 のURLを開いたらなぜかJAVAが起動しておかしいと思った。
感染したのかな?
昨日マニュアル見たけど プラグインとJavaScriptは切ってた。 こういうとき何のアナウンスもないものなの?
企業の体質によるだろ
>>801 やべぇ、最近頻繁に訪れていたから感染してるかも・・・
Windowsの場合、MSEssensialしか入れてないけどやっぱ感染してるかな?
まぁLinuxで訪れてるんだけどやっぱ駄目ですかね?
特にウィルス対策ソフトは導入していませんが
JavaとかFlashの慨知脆弱性だろ?多分 Windowsの各プラグインが最新版なら大丈夫じゃね?
慨知ってなんだ・・・?
おおざっぱに知ってんだろ。
お前ら 一回問い合わせろ で結果を晴れ 又聞きや妄想はイラン 実際のソースがないと信じない
>>808 「慨知」でググると真面目そうなサイトでも使われてるのが恐い。
2ch用語の「ガイシュツ」の悪影響でしょうか。
>>809 「慨」は「憎らしい」とか「いまいましい」という意味みたいです。
「おおざっぱ」なら「概知」ですかね。
813 :
NAME IS NULL :2011/09/28(水) 19:16:49.91 ID:AOJXD0O8
プログラム板で聞こうか迷ったのですが質問させてください mixiで新着のコメントがあった場合、 コメント(1) みたいな表示で新着コメント数が表示され、コメントを確認すると その表示が消えています これはどうやって実現するのが良いでしょうか DBのコメント用のテーブルに checkedカラムを用意してデフォルトを0として、 閲覧時(select時)にchecked=1としてupdateするくらいしか思いつかないですが 他にどんなやり方があるでしょうか? また、上記の方法だとするとクエリを2つ実行するってことですよね? トランザクションさせることになるんでしょうか まとめて一つのクエリでコメント一覧の引き出し+updateなんて出来ないですよね? mysql5を使っています、ご意見お願いします
読んだ最新コメントの日時を記録、かな? 次回は、その日時より新しいコメントがいくつあるか、と。 よくわからん。 でも、そういうのはMySQL特有のことではないから、 ム板とか、この板でもDB設計スレとかの方が適切じゃなかろか。
>>813 そのコメントを見る可能性のある(例えば)100人のうち一人でも見たら
表示済みとしてしまっていいの?w
普通そういうクラ側でどう扱うか、というだけの問題ならクッキーとかでやればいいんじゃないの
>>814 なるほど、そういう発想はなかったです!
勧めていただいたスレで質問し直してみます、ありがとうございました
817 :
813 :2011/09/28(水) 20:44:05.35 ID:???
>>815 あ、説明不足ですみません
mixiなどの会員機能前提で、その会員ユーザー向けのコメントなのでその人だけが確認すればOKなんです
しかし今
>>814 さんの仕様を考えたら、コメントが複数ある場合、全部確認してなくても
一つだけ確認しただけで未読フラグが落ちることになりそう…
難しい、やっぱり個別にフラグ持たせるしかないのかな。何個もクエリ実行させるのは嫌なんだけどなぁ
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 = ? と書きたいのですがうまくいきません。 どうよに書けばいいでしょうか?
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 じゃあかんの?
>>819 ありがとうございます。
join句がありませんが、これは外部結合となるのでしょうか?あるいは内部結合となるのでしょうか?
なぜこんな質問をするのかと言いますと、
別のテーブルを参照させる場合は常にjoin句を使用するものと思い込んでいて
join句を使わないでも表現できることは知っていたのですが、このように書くべきという考えに至りませんでした。
WHEREんとこでjoinされてるよ。内部結合。 にしても、場合に拠るだろうけど、818だけしか見てない者としては、 friendとenemyは別テーブルに分けたい気持ちがむらむらと。
>>820 内部結合になる
外部結合したいときは
WHERE B.id = ? AND B.friend = friendtable.name_id(+) AND B.enemy = enemytable.name_id(+)
と、私ならする(本当はJOIN句使ったほうがいいんだろうけど、こっちのが見やすいし慣れてる)
MySQLで動くかどうかは知らんw
動くの?
(+) ↑これはオラクル方言だと思う。
825 :
NAME IS NULL :2011/09/29(木) 15:10:10.65 ID:0dZz+iVY
phpmyadminがいろいろとめんどくさいんだけど、 phpmyadminに代わってオススメのもんってみなさんありますか?
有料でよければnavicat 一応無料版もあるけど機能制限はされてる でも無料版でも十分かもしれない
家で無料版のnavicat使ってるよ かなり便利
自分はSequelPro.
ソースコードから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にアクセス出来るようになるのでしょうか?
まずは/var/lib/mysql/*.errを見てみたほうがいい。
navicatは金払ってでも買うべし。 コレなしでは仕事できん。
じゃぁしなくていいよ 弘法筆を選ばず
833 :
825 :2011/09/30(金) 01:29:08.40 ID:QSvmWJiP
みんなありがとう navicatが評判だけど、個人ではあっても一応駆け出しの商用だから まだ今の段階ではフリーだと助かります よろしかったらフリーのおすすめを語ってください
フリーのソフトの情報をタダで手に入れようとは虫が良すぎる
navicatみたけどsqlもちゃんと使えるのかな Mysql workbench の方がよくないかな
shellとmysqlコマンドがあれば何でも出来るよ
>>835 無料版でも使える。有料版だとER図書くみたいな感じでSQL作れるのが便利。
navicatくらい会社で買ってもらえるでしょ? フリーがいいとかって、どんだけ貧乏な会社なの? 評価版があるんだし、評価してよかったら買えよ
>個人ではあっても一応駆け出しの商用 つまりSOHOやら起業まもないって事だろ
2chに書き込んで、真偽の定かで無い文字を追いかける起業…
SOHOだろーと便利なものは買えといいたい。 嫌ならフリーのもあるんだからそれを使いな。
金が無いし、フリーソフトを自分で試すのも面倒だからここで聞くとか そんなヤツやphpMyAdmin使ってればいいじゃないか
あれはあれで便利なんだが ファイル1本で済むのがあれば便利だよな
MySQL WorkBenchは、なぜ不人気なのか?
>>844 ださい
インストールがめんどい
使い勝手が悪い
遅い
たまに固まる
知らん
MySQL Workbenchいいよ! フリーだし 今のところ不満はない
Workbenchはexeのあるディレクトリにいろいろ放り込みすぎ あと画面描画がチラつくとか時々2回押さないと反応しないとか
Workbench 使い方がわからん
あっそ
851 :
NAME 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 から変更せずに、別場所に移動したデータベースはどのようにすればうまく読み込めるでしょうか?
OSのmysqlユーザが/home/hogehogeにアクセスできないんじゃないの 恒久対処にすると危ないのでいかんけど $ chmod -R 777 /home/hogehoge してみるとか
853 :
851 :2011/10/01(土) 09:27:12.79 ID:???
>>852 返信ありがとうございます
hogehoge自体は755で、
その下に、mydataディレクトリが保存されてる状態です。
mydataディレクトリは、所有者はmysqlで、パーミッション700
権限的には問題ないと思うのですが・・・
MySQLって1秒間に100回更新されるような状況でも大丈夫なんでしょうか? SQLiteとかでは不可能なのですが
1000回だろうが1万回だろうがハードウェアの処理能力が追いつけば問題ないだろ
処理中に他の処理が働いても大丈夫とかそういうことか?
>>854 最短の更新間隔を設定できなかったっけ?
858 :
851 :2011/10/01(土) 17:36:28.11 ID:???
すみません! 自己解決できました ありがとうございました
どうやって解決したのか書いたら?
いるよな、質問とか相談しに来たのに相手に一言もしゃべらせないで、 一歩的にマシンガントークして、そのうち満足して帰って行くやつ。
861 :
851 :2011/10/01(土) 21:49:30.60 ID:???
解決方法は、AppArmorの権限設定でした 全員の環境に当てはまるとは限らないと思いますけど、 ubuntuではデフォルトでAppArmorの設定をしないとアクセスできないようになってますね
>>860 問題解決にはうってつけの方法なんだよな。
相手に質問するために状況を把握しまとめる過程で
原因を見つけることは多い。
本来はまずテディベアに語りかけるべきなんだけど
その点2chは淫乱テディベアなのでうってつけだ。
AppArmorが原因だったのか。 参考になったけど参考にならんな
>>862 何故そこでテディベア?
日本人なら別の物だと思うが?
>>864 確かに。日本人ならグルーミーか赤カブトだね。
CREATE TABLEのときの「KEY `hoge` (`hoge`)」とは何でしょうか? PRIMARY KEY (`id`) UNIQUE KEY `username` (`username`) などはわかりますが「KEY」の意味がわかりません
>>866 パーティショニングじゃなくて?
「KEY `hoge` (`hoge`)」だけでなく create table 文の全文を書き出してみなよ
>>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 ;
理解しました。リンクまでありがとうございます。 KEY `varname` (`varname`,`widget`,`visible`) では上記は、複合インデックスってことですか?
そのとおり。
助かりました。ありがとうございました!
お安い御用です。
すごい素人な質問をさせてください。 文字列を格納するのに、charとかvarcharがありますが、 個人的には文字列は全部text型でいいのではないかと思うんですが、 間違いでしょうか? こういう場合はcharを使うとか、この場合はvarcharを使うべきとかいったような使いどころについて教えていただけますでしょうか。
>>874 間違いではないよ。
サイズ指定するとその幅をあらかじめ確保したり
それ以上格納できなくなったりするから、計算しやすく
DBサイズ固定化したり動作を早くしたりできるだけ。
876 :
>>874 :2011/10/06(木) 00:39:46.79 ID:???
>>875 ありがとうございます、とても参考になりました。
実際に挿入する文字数に最適化したほうがいいだろ。 varcharとtext、インデックスつけても同じように扱われる?
ある種のフラグのような固定されたサイズのカラムにtext使うのは如何かと。
10年以上前ならともかく、今のシステムで固定長って意味あるのかねぇ
一応、あるんじゃね? 絶対固定長とわかっていて、わざわざ可変長を使うメリットはないだろ。
顧客コードとか商品コードとか固定長のほうがプログラム側が楽になると思うけど
>>881 DBがハックされたりバグったときのことを考えてプログラム側に自衛の対策をしとくのは基本中の基本。
データを固定長と決め付けてプログラム側が楽になるなんて考えるのは素人の発想。
本当のプロは冗長な設計はしない
>>882 >DBがハックされたりバグったときのことを考えてプログラム側に自衛の対策をしとくのは基本中の基本。
可変長だとどういう風に有効な対策になるの?
最大長の変更がありそうな物以外だと無駄な事の方が多い気がするんだけど
そりや可変長のが無駄なんだけど、 固定長でも頭をスペースとか0で埋めるのは変わらないし、 ヌルチェックは昨今の言語ならライブラリ用意されてるし 再利用性を鑑みて冗長な設計、作成が昨今のトレンド 固定長はCOBOL向け?
>再利用性を鑑みて冗長な設計、作成が昨今のトレンド こんなの幻想に過ぎないだろ
>>883 セキュリティ対策を軽視するのはプロとは言えない
セキュリティ対策と冗長な設計の関係を詳しく
セキュリティ対策は冗長な設計とは言わないだろう むしろ必然
セキュリティは対策しても無駄・・・最後は人間のモラルに行き着く。 人間の教育や待遇にお金を使うのがもっとも効果的である。 と死んだじ〜ちゃんが言ってた。
それは内部の人のうっかりミスや裏切りによる情報漏えいとかの話であって 外部からの攻撃には教育は関係ないんじゃなかろうか。
東京電力みたいなやつだな
東京電力を馬鹿にする奴は泣かす
>>891 教育の改善で治安が保てるなら警察は不要。
人民は教育しても無駄だから社会秩序は実力行使で維持すべきである。
と死んだじ〜ちゃんが言ってた。
教育のない警察官が多くいたら治安は思いっきり悪くなる。 警察官には教育と高給が必要である。 と死んだじ〜ちゃんが言ってた。
規則を遵守しない警察官には見せしめに厳罰を与えれば抑止効果となる。 一般大衆に対しても同様であるから公開処刑を導入すべきである。 と死んだじ〜ちゃんが言ってた。
とりあえず、全部varcharでおk とは、死んだばーちゃんは言ってなかったな。
ばーちゃんは嘘つきだから信用するな。 嘘つきは泥棒の始まりといいますから。
おまえらったらどうでもいい部分に突っかかるよなwwww
こういうことをどうでもいいと考えるのは悪いことです。
902 :
NAME IS NULL :2011/10/09(日) 13:43:54.09 ID:KZLSnT9p
すいません質問です。 INSERT文がエラーもなくクエリOKになるんですが データを見てみるとINSERTされていません。。 特定のテーブルだけこうなるんですが なにが原因か分かる方いませんでしょうか
Insert文が使用してるデータを疑ってみたら?
コミットしてないとか。
>>903 昨日の昼までは問題なくINSERTされていたのですが
昼以降INSERTされなくなっているんです。
テーブルは変更してないのでSQLは問題ないはずなんですが・・。
>>904 してますます
昨日の昼までできたとか言われても知るかよ
>>902 ・DBが壊れた(HDD、メモリの故障)→ ハードをチェックして修理しDB再構築
・メモリ異常でロード中のMySQLが異常動作→ ハード修理、MySQL再起動
・プログラムのミス(SQL文生成ミス)→ デバッグして生成されたSQL文を確認、MySQLのエラーメッセージを確認
・勘違い
908 :
902 :2011/10/09(日) 14:39:32.92 ID:???
>>906 ですよねですよね。
>>907 ハードはテストしてみましたが問題なさそうです。
SQLはデバックして実行直前のSQLを直接実行しましたが
クエリおkだったので問題ないっぽいんですが・・。
クエリおkなのにデータはいってないってどゆこと・・。
もうディスク一杯とか。
ごちゃごちゃ言っとらんと、そのInsert文とデータをサンプルで良いから晒せっての それとそのテーブルの定義、strict-modeの設定とか
911 :
902 :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
>>902 INSERT IGNORE INTO
↑
これがついてるとエラー無視するよ
913 :
902 :2011/10/09(日) 15:43:50.50 ID:???
ああ。データベース再インスコしてるんでちょっと時間かかります・・。
>>912 ついてないですです。
今気づいたんですがAUTO_INCREMENT=1102って実データより進んでますね・・
なんでだろー・・
なんの言語かわからないけど、まずsqlのまえにprintかなにかでinsertしてる変数を出力してみたら
発行されるINSERT文は出力して別で実行してみてもうまくいかないんじゃないの?
916 :
902 :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 )
917 :
902 :2011/10/09(日) 17:41:03.05 ID:???
TruncateしてからCSVにしといたデータを1件ずつInsert ここまでは問題なくInsertできるのに システムで1回でもInsertするとその後は同じ症状になる。 どっかで変なSQL発行してんのかなぁ・・ SQL発行してるとこ全部見直すかぁ・・
わかった。 INSERT文を発行してない という驚愕のオチだこれ。
919 :
902 :2011/10/09(日) 18:29:57.09 ID:???
oh..新発見 truncateしてテーブル空っぽにして システム動かしたらちゃんとInsertされてる・・ 容量・・・?とか・・・? MySqlって容量はOSとかストレージに依存でしたよね? ちょっとずつデータ増やして実験してみます
920 :
902 :2011/10/09(日) 18:42:29.24 ID:???
わかっちゃいました・・・。 あの・・・WorkBench使ってるんですが・・・・その・・・ どうやらWorkBenchってデータ表示が1000件までっぽい・・・ Descで表示したらデータちゃんと入ってますやん・・・・・・・ ごめんなさいごめんなさいごめんなさい米絵七笹示唆さしあああああああああああああああああああああああ ふざけんなあああああああああああおれの1日を返せええええええええええええええええええええええええええええええ
WorkBenchでデータの確認をしているのですが 1000件目以降データが入ってないみたいなんです って感じで最初に付け加えておくともっと早かっただろうに・・・
.∩_∩ ミ ギャーッハッハッハッ! o/⌒(. ;´∀`)つ と_)__つノ ☆ バンバン
やった!当たったぜ
まぁ大抵そういうもの 気にスンナ
エスパーする前に 「意図した結果になっていないことをどのように確認したか?」 って聞けばいいのね。 勉強になるわー
それではエスパー失格です
>>925 そこをピンポイントで想像するのがエスパーだろ
これ正解出来てたらもうジェダイレベルだろ。
後からならどうとでも言える
>>930 そのセリフこそ負け犬の遠吠えに聞こえる
月曜日から日曜日 0時から24時までを true falseのbooleanフィールドを用意するとしたら 1つのテーブルの中に @7 x 24 = 合計168フィールド+リレーションキー を用意したほうがいいですか? それとも A日ごとの24フィールド + 1(曜日) + 1(リレーションキー)の合計26フィールド Bまたは時間ごとの 1(時間)フィールド+1(曜日)+1(リレーションキー) の3フィールド @は一つのテーブルで簡潔できるがフィールド数多すぎ Bはレコードが増えすぎる どれが一番現実的ですか?
なにがしたいのかがわからんけどCharでいれてSubstringって手もある。 用途がわかればもうちょっと答えようもあるお
>>933 ユーザー(パートさん)ごとの24時間体制スケジュールを作ろうと思ってます
出勤できる曜日の時間帯は1(true)
出来ない日は0(false)
月 火 水 木 金 土 日
0 0
1 1
...
23 23
24 24
※ここでの数字は時間帯で、それぞれにチェックボックスがある
みたいな表にアクセスしてもらって、
そこでチェックを入れてもらって
どの曜日のどの時間は1か
というものを管理したいです。
DBのお作法としてはB
DBにする必要がないだろ・・・パート職員は何人いるんだよ? どうしてもって言うなら一番で十分だと思うが。
>>932 Bかな。
保存日数 * 24 * 人数
多けりゃ履歴を消せばいい
>>934 別にフィールド数もレコード数も多すぎはしないだろ
プログラミングが楽な方法にしろよ
全角の英数字を半角になおしたいです。 replace関数で一文字一文字変換するしか思いつきませんが、 他に簡単な方法はないでしょうか?
プログラム側でやっておけばいいと思うが
>>932 が真偽値でテーブルつくるってユーザーごとにテーブルつくる気なのかなと思ってオカンがはしった
>>939 もし、条件として全角半角を区別せずに検索したということならutf8で
WHERE a COLLATE utf8_unicode_ci LIKE '%アイウエオ%';
フィールドがutf8ではない場合はCONVERTして
WHERE CONVERT(a USING utf8) COLLATE utf8_unicode_ci LIKE '%アイウエオ%';
こんな感じでいけると思うよ
条件だけじゃなかったら
>>940
943 :
NAME IS NULL :2011/10/11(火) 22:59:54.53 ID:GnT2+shh
質問です。 mysqlのトランザクションは、開始してから一分ぐらいでタイムアウトするかと思うんですが、 1分以上かかるようなSQLでトランザクションを使いたい、という場合、 どうするべきなんでしょうか?
>>940 >>942 ご回答ありがとうございます。全角から半角にupdateで
変更できたらとおもっていましたが、mysql側ではできない
みたいですね。プログラム側で行ってみます。
ありがとうございました。
>>943 トランザクションはタイムアウトしないぞ。
ロック待ちのことなら最初に設定すればよい
mysql> set innodb_lock_wait_timeout = 1000;
Query OK, 0 rows affected (0.00 sec)
MySQL初心者です。 id time name score の4つのカラムがあるテーブルから 以下の条件のデータを取得したいのです。 1.スコアが低い順で並べる(スコア=クリアタイムのため) 2.同じスコアがあれば、rankの値が並ぶ(2位が2人とか) 3.同じ名前であれば、最新のスコアと最も良いスコアの以外を省く 4.現在から24時間以上古いものは省く timeはunixtimeで、名前は文字列、スコアはただの数値です。 すべてMySQLでできることなのではないかなとおもって実践しているのですが 経験不足なため、そこはPHPでやったほうがいいなど、根本的な指摘などあったら そちらも含めてご伝授いただきたいです。 よろしくお願いいたします。
>>947 MySqlで分析関数あるのかーと思ってみたけどやっぱないのか。
select の中でサブクエリってどうなの?っていつも思うんだけどどうなの処理速度的に。
イメージでは1件に対して1回SQL発行するからすごい処理時間かかりそうなんだけど・・
そのへんどうなの教えてエロい人
質問です。 データベースを更新するときは、普通にトランザクションを使いますが、 参照する場合もトランザクションって使うものなのでしょうか? 時間のかかるデータ集計のSQLを実行しようと思っているのですが、 その間に更新されても影響がないようにしたいのです。 参照する場合もトランザクションを使う場合、終了する場合はコミットですか?ロールバックですか? 基本的な質問ですみませんが、よろしくご教示お願いいたします。m(_ _)m
>>949 データ集計が1つのSQLならトランザクションいらない。
複数のSQLを駆使する必要があるなら最初に
START TRANSACTION WITH CONSISTENT SNAPSHOT;
する。
最後はコミット/ロールバックどちらでもよい。
わからんー。たすけてくれー。 # 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宇。
>>951 >bash: c:mysqldatainsert.sql
ディレクトリ構成からするとWindowsで使ってるように見えるんだけど、DOSプロンプトじゃなくてbashということはCygwinかMSYSあたりで使ってる?
だとしたら、Cygwinなら
/cygdrive/c/mysql/data/insert.sql
のような形にすればいけるかも。
>>952 基本情報ごっそり抜けて済みません。
自分はwinXPprofetnolで操作してまして、アップロード希望先のサーバは
DTIで借りてるserversman@vpsです。操作はteraterm様で行っています。
teratermの代わりにCygwinを使うの早速やってみます。ありがとうございます。
Cygwinて昔、何かで触って以来です。自信んっしん。
954 :
952 :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)で行ってるだろうから、これもだめ。
ものすごい基礎の基礎を見逃していてお恥ずかしいというか 先ずsqlファイルをどうにかしてvpsサーバへ送り込まないとならんわけですね そう。それがffftpで何故か送れなくて(重すぎる?)アレなのでした。 ちょっと寝て起きたら移送方法をちゃんと調べます。展開は間違ってない富田。 どうもありがとう。
956 :
952 :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
すれば行けると思うけど、自分はやったことない。
957 :
952 :2011/10/13(木) 05:00:25.41 ID:???
あーそうですね、955 の理解であってると思いますw serversmanかFFFTPに固有の事情があるのかもしれないけど、自分はさくらVPSでマカーなのでその辺はよくわからないや。 軽いファイルや空ファイルでチェックするのが早そうだけど、この辺はMySQLの話題ではなくなるのでこの辺で。
serversmanは自分で設定しないかぎりftpd動いてないだろ scpしろ
Datetime型のフィールドについて、現在より30分前のものという条件でセレクトしたいときはなにを使うべきでしょうか?
> なにを使うべきでしょうか? どういう意味?
>>959 WHEREを使って30分前を指定してあげればいい。
>>960 こうやって回答してあげるのが楽しいんだ。
962 :
>>949 :2011/10/14(金) 00:38:48.89 ID:???
お安い御用です。
次スレの季節
>>959 ヒント:time_add(), between, now()
>>959 30分前ってことは、現在時からジャスト30分0秒前、ってことだよね。
967 :
NAME IS NULL :2011/10/14(金) 21:06:34.14 ID:bpCxU2Us
商品Aが複数カテゴリ(別テーブルにて定義、それをJOIN)に入ってる場合に こんな感じで帰ってくるんだけどこれでいいの?初めての設計でよくわからない。 itemId ... categoryId A ... 4 A ... 5 A ... 6 見た目上は商品名とかの ... が何度も繰り返しされてるようで気持ち悪い。 内部的に何らかの最適化が行われてるといいんだけど、他にいい方法があるのかな? それと、PHPで利用する場合にこのレコードを順に走査していって、前回と同じIDなら そのIDに対してカテゴリを追加って具合で大丈夫?
あってない。 DB設計を勉強しましょう
PHPで順に操作とかアホのやること
PHPで順に捜査とか天才のやること
多対多ならこの構成でいいんじゃないの?
DB設計でならあってる
見た感じ多対多じゃなくて1対多じゃね?
用途がまったく想像できますん
あんたに想像してもらいたくない
>>967 とあるものが複数カテゴリに属してるなら、そうなって当たり前だろ。
当たり前かどうかは当人の価値観に依存する
じゃあ定石で
うちのは力石
SNSサイトを作っているのですが、DBに投稿した日記(Text)の冒頭部分のみを取り出すにはどうすればいいでしょうか レコード登録時に冒頭部分のみのカラムを作るのも効率が悪い気がしてきて・・
>>985 LEFT関数中々便利ですね
Textを全文取り込んで文字列操作するよりもメモリが節約できそうです
ありがとうございます
お安い御用です。
id int category_id int post_date datetime comment varchar(255) count int 5.1 MyISAM 100万件以上あるテーブルで、 数種類あるカテゴリ別に月単位でcountの多い順に20件集計したいのですが、 どこにインデックスをつけたらいいですか? 試してみたところcategory_idとcountの複合インデックスが一番早かったのですが、 もっと早くなるいい付け方はないでしょうか
サマリ作る
>>989 yyyymmってカラムを追加して
(category_id, yyyymm, count)というインデックスを作り、
SELECT ... FROM ttt
WHERE category_id = aaa AND yyyymm = bbb
ORDER BY count DESC LIMIT 20;
をcategory_id分繰り返すのが速い。
けど先月分まで確定してるならあらかじめサマリ作っておけばいい
992 :
989 :2011/10/17(月) 16:35:11.66 ID:???
ありがとうございます。試してみます。
お安い御用です。
次スレまだ?
このスレで終了します。
次はオラクルに統合だな
お安い御用です。
oracleのexpressedition入れたら、めちゃ重たくなったんで、それは嫌
梅
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。