のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,604,921人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ【MySQL】下らねぇ質問はID出して書き込みやがれ 2

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    601 : NAME IS - 2012/06/06(水) 16:53:18.10 ID:V1og8Iw1 (-27,-29,-21)
    主キーであるidカラムに、デフォルトで
    CURRENT_TIMESTAMPをint型で入れたいのですがうまくいきません
    どうしたらいいんでしょうか
    nullに関するエラーが出たのでオンオフしてみましたが、結果は同じでした
    603 : NAME IS - 2012/06/06(水) 20:00:44.61 ID:??? (-5,-3,-6)
    わけわからんなw
    エスパーするとunixタイムスタンプにしたいとか?
    605 : NAME IS - 2012/06/06(水) 20:49:31.48 ID:??? (-27,-29,-160)
    まず、current_timestampが返す型はtimestamp型だ
    この関数はデフォルト値には使えるが当然カラムがなかなか無茶苦茶な発想に見えるのだが
    timestamp型じゃないとダメ。
    なのでここでまず無理
    逆に言えば通常の関数はデフォルト値には使えない。

    デフォルト値はあきらめたとしてさらにintにしたいんだろ?
    unixタイムスタンプというのは一秒単位なわけで、
    current_timestampよりはかなり精度が落ちる
    ということは情報を切り捨てなけりばならないか、datetimeのnow関数を元の値にして unix_timestamp関数で更新時に埋め込んだとする。

    しか主キーと言うことは当然ユニークでなければならないが、一秒単位でかぶらないという保証はあるの?
    ていうか、かぶったらエラーにしたいってこと?
    なかなか無茶苦茶な発想に見えるのだが、
    なぜシーケンスじゃダメ?
    なぜ主キーじゃないとダメ?
    なぜunixタイムスタンプ?
    607 : NAME IS - 2012/06/06(水) 22:52:30.85 ID:V1og8Iw1 (-18,+30,-107)
    >>605
    ありがとうございます。
    想像以上にややこしいようで、すいませんでした

    まずは、慣れ親しんだ2chモドキを作ってみたいというのが大元でした
    大昔に2chブラウザも作ったことがあるので、ちょっとぐらいは理解しているというのもあり、
    またゴールがみえているのでとりあえず真似して作ってみたいと思いました。

    >なぜシーケンスじゃダメ?
    これもすいません、質問の意味があまりわかっていないです。
    しかし、主キーにせざるを得ない状況、というの物はありません。
    >なぜ主キーじゃないとダメ?
    >なぜunixタイムスタンプ?
    時間は必ず加算され続けるので、一意にならない
    仮になったとしても、それはそれで得るものがあるかなと思いました

    スレ番号がunix時間とのことだったので調べたところ、
    intにすればそこそこ

    真似してみようと思ったのですが、
    もしかして主キーはunix時間じゃないのでしょうか
    608 : NAME IS - 2012/06/06(水) 22:58:24.18 ID:V1og8Iw1 (-9,+29,-83)
    すいません、かきこんでしまいました・・・

    >なぜunixタイムスタンプ?
    時間は必ず加算され続けるので、一意にならない
    仮になったとしても、それはそれで得るものがあるかなと思いました
    後は書き込み時間と主キーが同じなら、
    書き込み時間をカラムとして保存するよりもデータ圧縮にもなるかな?と思ったのです

    スレ番号がunix時間とのことだったので調べたところ、
    intにすればそこそこ早いというので試してみたかったというのもあります

    後は2chを全体的に真似してみようと思ったのですが、
    もしかして主キーはunix時間じゃないのでしょうか

    やはり主キーは普通に1から順にして、auto_incrementにすべきでしょうか
    610 : 609 - 2012/06/07(木) 00:44:06.79 ID:??? (+20,+22,-2)
    ごめんなさい、自己解決しました
    PHPの問題でした
    611 : NAME IS - 2012/06/07(木) 08:41:17.02 ID:??? (+26,+29,-11)
    >>608
    普通主キーは安定したものにする
    レコードが特定出来るように
    2chはファイルで管理してるからキーも何も
    612 : NAME IS - 2012/06/07(木) 13:52:07.12 ID:??? (-21,-29,-85)
    CSVを定期的にMySQLへインポートしているのですが、次のようにしています。

    作業用テーブル作成 → 作業用テーブルにガリガリINSERT → 運用中のテーブルをリネームor削除 → 作業用テーブルを本運用テーブル名にリネーム

    この際、当然ながら 0.001秒くらいテーブルが存在しなくなる時間が存在しており、ごく稀にこの空白時間にひっかかる事があります。

    シームレスにテーブルを入れ替えることってできるでしょうか?
    614 : NAME IS - 2012/06/07(木) 15:28:28.12 ID:??? (-24,-22,-6)
    なんでcsvを直接本運用テーブルに入れないの?
    615 : NAME IS - 2012/06/07(木) 20:52:30.00 ID:??? (-21,-30,-67)
    >612
    CSVファイルとインポート先テーブルの列構造が同じなら、
    -----
    1.空のテーブルをCSVエンジンで作成
    2.インポートしたいCSVファイルを出来たhoge.CSVに上書き
    3.FLASH TABLE;
    4.ALTER DATABASE hoge ENGINE=InnoDB;
    5.RENAME TABLE target_db TO sute_db, hoge TO target_db;
    6.DROP TABLE sute_db;
    -----
    みたくすると、多分一番速くてリソースも使わない
    617 : NAME IS - 2012/06/08(金) 11:19:01.25 ID:??? (-27,-30,-33)
    インポートしたいCSVファイルをCSVエンジンでいきなりテーブルAとする。
    挿入先テーブルをMとして、

    INSERT INTO M (中略) SELECT (中略) FROM A (後略)

    で、なんかマズい?
    618 : NAME IS - 2012/06/08(金) 19:25:46.83 ID:v3PjVOwl (+29,+29,-64)
    あるでデータがCSVで落とせるのですが、
    時間がないので、
    本来リレーションさせる系のデータも
    そのまま生でvarchar型等で挿入してしまっても
    大丈夫ですよね??
    いちおー落ち着いたら、前データを数字に置換し
    リレーション型にしようかと思ってます。
    619 : NAME IS - 2012/06/08(金) 19:38:41.51 ID:??? (+27,+29,-30)
    後からマイグレーションするの?
    自分でケツ拭くつもりなら、まぁいいんじゃない
    時間がなくてもER図くらいは描いといたほうがいいと思うけどね
    620 : NAME IS - 2012/06/09(土) 06:12:23.48 ID:??? (-21,-30,-281)
    PHP Error(USER): [DB Error] : message="DB Error: unknown error" info="INSERT INTO
    `M_user`(`regist_datetime`,`update_datetime`,`user_mailaddress`,`user_type`,`user_password`,`user_status`,`user_ua`,`user_device`)
    VALUES(NOW(),NOW(),'k7decdd2a735yf7@softbank.ne.jp','NO','1234',1,'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.5 (KHTML, like Gecko)
    Chrome/19.0.1084.52 Safari/536.5','PC'); [nativecode=1213 ** Deadlock found when trying to get lock; try restarting transaction]" in
    /home/prj/101/contents/private/lib/magicwork/DBO.php on line 227

    ユニクロのDBエラーw
    http://www.uniqlo-cool.com/
    621 : NAME IS - 2012/06/09(土) 07:54:56.29 ID:??? (+25,+29,-39)
    >620
    メアドぐらいマスクしろよ…

    INSERTでデッドロックってどうやったらかかるんだ?
    トリガで何かやってんのかね?
    623 : NAME IS - 2012/06/09(土) 15:28:03.44 ID:??? (+22,+29,-3)
    一番ベターって何?
    627 : NAME IS - 2012/06/10(日) 18:15:07.19 ID:??? (+21,+28,+0)
    Godじゃあしゃーなしだ。
    632 : NAME IS - 2012/06/11(月) 12:04:35.44 ID:??? (+19,+26,-1)
    さんきゅ!
    いろいろためしてみるー
    633 : NAME IS - 2012/06/11(月) 19:14:49.39 ID:LWqiz9+D (+24,+29,-53)
    基本的なことですいません、教えてください
    社員のデータベースを作り、色々なことに使おうと思うのですが
    東京だけselectで抜き出し、社員番号を1から順に振り直す、というようなことはできますか?

    社員番号 支店 名前
    1 東京 山田
    2 大阪 田中
    3 東京 山本
    4 東京 佐々木
    5 大阪 神埼
    634 : NAME IS - 2012/06/11(月) 19:16:30.74 ID:LWqiz9+D (+19,+29,-22)
    用途は社員旅行等、他愛のないものなのですが
    歯抜けだと不便なので補完したいのです。
    それとも表計算ソフトなどで加工したほうが早いでしょうか
    635 : NAME IS - 2012/06/11(月) 19:18:22.07 ID:??? (-22,-20,-17)
    1 東京 山田
    2 東京 山本
    3 東京 佐々木
    4 大阪 田中
    5 大阪 神埼

    こうしたいこと?
    637 : NAME IS - 2012/06/11(月) 21:21:24.96 ID:??? (-24,-30,-118)
    テーブルの中身を更新したいのか、表示のときだけ連番を振りたいかによって異なる。
    表示のときだけ連番を振るのはこんな感じ。

    mysql> set @id = 0;
    mysql> select @id := @id + 1, job, ename from emp where job = 'salesman' order by ename;
    +----------------+----------+--------+
    | @id := @id + 1 | job | ename |
    +----------------+----------+--------+
    | 1 | salesman | allen |
    | 2 | salesman | martin |
    | 3 | salesman | turner |
    | 4 | salesman | ward |
    +----------------+----------+--------+
    638 : NAME IS - 2012/06/11(月) 21:33:56.93 ID:??? (+35,+29,-64)
    クエリ一本でお望みの結果いけるぜ
    window関数案件だが、mysqlはwindow関数無いからどうしてもループが多くなって、たくさんの行の解析には向かないけどな。

    お家帰ったら書き込むから待っとれ
    639 : NAME IS - 2012/06/11(月) 21:36:25.98 ID:LWqiz9+D (+18,+28,+0)
    >>637
    ありがとうございます!
    >>638
    ワクワクテカテカであります
    640 : NAME IS - 2012/06/11(月) 22:12:22.76 ID:??? (-27,-30,-126)
    帰ったぜ。
    empid | br_name | name
    -------+---------+--------
    0 | 東京 | 山田
    1 | 東京 | 山本
    2 | 東京 | 佐々木
    3 | 大阪 | 田中
    4 | 大阪 | 神崎
    とする。
    で、求めたい支店毎の社員idをbr_empidとする。
    select
    empid
    ,br_name
    ,name
    ,(
    select
    count(*)
    from
    emp b
    where
    b.br_name = a.br_name
    and b.empid <= a.empid
    ) as br_empid
    from
    emp a
    order by
    br_name
    ,br_empid
    ,empid
    な感じで、相関クエリにしちゃえばOK。
    意外と簡単。
    order byとかは好きにしてくれ。
    642 : NAME IS - 2012/06/13(水) 23:23:01.19 ID:??? (+18,+29,-15)
    >>641
    「安全なSQLの呼び出し方」を読もう。
    http://www.ipa.go.jp/security/vuln/websecurity.html
    643 : NAME IS - 2012/06/17(日) 09:34:18.86 ID:??? (+2,-30,-195)
    よろしくお願いします。 centOS6、mysql5.5.25です

    現在初めてレプリケーションを実装して動かしているんですが
    スレーブに対して実行してるselectが凄く遅くて困っています
    マスタ(=アプリケーションサーバ)に同じことをする場合に比べて4倍くらい時間がかかっています

    両方とも同じローカルネットワークにあり(マスタ:192.168.0.11、スレーブ:192.168.0.12)、
    物理的な距離の問題?などないはずですが、マスタサーバで
    ping 192.168.0.11 と ping 192.168.0.12 したとき、後者は前者の4,5倍の時間がかかっています

    これはどうしようもないんでしょうか? 解決方法などあればご意見お願いします
    また、実際にどこかのレンタルサーバを借りて同じことをした場合、もっと時間がかかるんでしょうか
    644 : 643 - 2012/06/17(日) 09:35:18.95 ID:MPnMohdg (+22,+29,-2)
    ごめんなさい、あげさせてください
    645 : NAME IS - 2012/06/17(日) 10:22:19.10 ID:??? (+30,+26,-8)
    pingで違うって自分で書いてるんだから、MySQLと全然関係ないやん。
    646 : NAME IS - 2012/06/17(日) 10:32:48.87 ID:??? (+22,+29,+0)
    そうだね、あってんじゃん
    648 : 643 - 2012/06/17(日) 11:57:18.75 ID:MPnMohdg (+37,+30,-223)
    >>645
    どうもありがとうございます、すみませんがもう少し聞かせてください
    きっとここにいる人は今回の例のように「レプリケーションを組んでselect系の処理はスレーブに任せる」
    という作業はしたことある人が多いと思うんですが、
    その時、別端末のスレーブへの問い合わせがマスタ(兼アプリケーション)への問い合わせより
    全然遅いというのはざらにあることなんでしょうか?

    僕のネットワークやサーバの設定が特別に酷くてこんなに差が出てるのか、
    端末をまたぐ以上不可避の問題なのか知りたいです

    mysqlに直接関係なくて申し訳ありません
    レプリケーションの設定マニュアルやクエリ振り分けのハウツー解説サイトは見たものの
    実装後のこういう問題については見つけられず、スレーブ対象で
    たった10行のテーブルから1行selectする処理で5秒かかっていて困っています
    649 : NAME IS - 2012/06/17(日) 12:50:45.62 ID:??? (-29,-29,-4)
    エスパーするとskip-name-resolve
    650 : 643 - 2012/06/17(日) 13:57:47.92 ID:??? (+8,+13,+0)
    >>649
    ありがとうございます! 解決しました!
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について