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

    私的良スレ書庫

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

    元スレMySQL 総合 Part20

    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
    901 : NAME IS - 2011/10/08(土) 18:58:16.63 ID:??? (+55,+29,-1)
    こういうことをどうでもいいと考えるのは悪いことです。
    902 : NAME IS - 2011/10/09(日) 13:43:54.09 ID:KZLSnT9p (+5,-29,-28)
    すいません質問です。

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

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

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

    >>907
    ハードはテストしてみましたが問題なさそうです。
    SQLはデバックして実行直前のSQLを直接実行しましたが
    クエリおkだったので問題ないっぽいんですが・・。
    クエリおkなのにデータはいってないってどゆこと・・。
    909 : NAME IS - 2011/10/09(日) 14:58:31.08 ID:??? (+50,+27,-1)
    もうディスク一杯とか。
    910 : NAME IS - 2011/10/09(日) 15:17:03.27 ID:??? (-1,-29,-65)
    ごちゃごちゃ言っとらんと、そのInsert文とデータをサンプルで良いから晒せっての
    それとそのテーブルの定義、strict-modeの設定とか
    911 : 902 - 2011/10/09(日) 15:21:27.31 ID:??? (+3,-30,-286)
    定義です。
    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

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

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

    今気づいたんですがAUTO_INCREMENT=1102って実データより進んでますね・・
    なんでだろー・・
    914 : NAME IS - 2011/10/09(日) 16:34:34.56 ID:??? (+2,-25,-11)
    なんの言語かわからないけど、まずsqlのまえにprintかなにかでinsertしてる変数を出力してみたら
    915 : NAME IS - 2011/10/09(日) 17:15:47.00 ID:??? (+11,-16,-22)
    発行されるINSERT文は出力して別で実行してみてもうまくいかないんじゃないの?
    916 : 902 - 2011/10/09(日) 17:37:52.86 ID:??? (+3,-30,-30)
    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:??? (+3,-29,-75)
    TruncateしてからCSVにしといたデータを1件ずつInsert
    ここまでは問題なくInsertできるのに
    システムで1回でもInsertするとその後は同じ症状になる。

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

    保存日数 * 24 * 人数

    多けりゃ履歴を消せばいい
    938 : NAME IS - 2011/10/10(月) 11:31:22.62 ID:??? (+64,+29,-38)
    >>934
    別にフィールド数もレコード数も多すぎはしないだろ
    プログラミングが楽な方法にしろよ
    939 : NAME IS - 2011/10/10(月) 22:54:49.06 ID:??? (+8,-25,-29)
    全角の英数字を半角になおしたいです。
    replace関数で一文字一文字変換するしか思いつきませんが、
    他に簡単な方法はないでしょうか?
    940 : NAME IS - 2011/10/10(月) 23:18:04.05 ID:??? (+73,+28,-2)
    プログラム側でやっておけばいいと思うが
    941 : NAME IS - 2011/10/10(月) 23:24:39.01 ID:??? (+63,+29,-12)
    >>932が真偽値でテーブルつくるってユーザーごとにテーブルつくる気なのかなと思ってオカンがはしった
    942 : NAME IS - 2011/10/11(火) 01:17:05.35 ID:??? (+21,-30,-131)
    >>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 - 2011/10/11(火) 22:59:54.53 ID:GnT2+shh (+36,+29,-49)
    質問です。

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

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

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

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

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

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

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

    参照する場合もトランザクションを使う場合、終了する場合はコミットですか?ロールバックですか?
    基本的な質問ですみませんが、よろしくご教示お願いいたします。m(_ _)m
    950 : NAME IS - 2011/10/12(水) 23:49:51.63 ID:??? (+25,-30,-61)
    >>949
    データ集計が1つのSQLならトランザクションいらない。
    複数のSQLを駆使する必要があるなら最初に
    START TRANSACTION WITH CONSISTENT SNAPSHOT;
    する。
    最後はコミット/ロールバックどちらでもよい。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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