1 名前:だよもん!!! [2007/05/03(木) 10:06:30 ID:/jT2voSZ] 快速 RDBMS、MySQL の総合スレです。 前スレ[MySQL 総合 Part10] pc11.2ch.net/test/read.cgi/db/1164490501/ [関連スレと過去ログ] find.2ch.net/index.php?STR=MySQL makimo.to/cgi-bin/search/search.cgi?D=db&q=MySQL&sf=0&link2ch=on [MySQL Developer Zone] dev.mysql.com/ [MySQL 日本語リファレンスマニュアル] dev.mysql.com/doc/mysql/ja/ [MySQL Internals Manual] dev.mysql.com/doc/internals/en/ [MyNA] www.mysql.gr.jp/ [MLja] lists.mysql.com/mysql-ja ここで質問をする前に、MyNAでのFAQを最初に確認しましょう。 www.mysql.gr.jp/frame/modules/bwiki/?FAQ ・関連ツール及びユーティリティ ・関連書籍 >>2
2 名前:NAME IS NULL mailto:sage [2007/05/03(木) 10:09:53 ID:???] 【関連ツール及びユーティリティ】 [phpMyAdmin] www.phpmyadmin.net/ [phpMyBackupPro] www.phpmybackuppro.net/ [MySQLCC] www.mysql.com/products/mysqlcc/ [MySQL-Front] www.mysqlfront.de/ [mytop] jeremy.zawodny.com/mysql/mytop/ MySQL ABでの各種GUIツールは MySQL GUI Toolsとして統合されています (WorkbenchはGUI Toolsから独立しました。) dev.mysql.com/downloads/gui-tools/5.0.html ・MySQL Administrator ・MySQL Query Browser ・MySQL Migration Toolkit dev.mysql.com/downloads/gui-tools/5.0.html#Workbench ・MySQL Workbench 【関連書籍】 [MySQL Books] dev.mysql.com/books/ www.amazon.co.jp/exec/obidos/search-handle-url/ix=books-jp&fqp=keywords%01MySQL www.amazon.co.jp/exec/obidos/search-handle-url/ix=books-us&fqp=keywords%01MySQL
3 名前:NAME IS NULL mailto:sage [2007/05/03(木) 10:12:54 ID:???] ■テンプレ補足 MyNAでの「心得の条」は最初によく読みましょう。 www.mysql.gr.jp/frame/modules/bwiki/index.php?%BB%A8%B3%D8%2F%BF%B4%C6%C0 【関連ツール及びユーティリティ】 *次は他項目と一緒にします。(ごめんなさい) [Common SQL Environment] www.hi-ho.ne.jp/tsumiki/cse_1.html 2ch風偉人伝 AA はこちら www.aadayo.com/aa/02_13.html
4 名前:NAME IS NULL mailto:sage [2007/05/04(金) 09:55:32 ID:???] 刀、 , ヘ /´ ̄`ヽ /: : : \_____/: : : : ヽ、 ,. -‐┴─‐- <^ヽ、: : : : : : : : : : : : : : : : : : : : : : } /: : : : : : : : : : : : : :`.ヽl____: : : : : : : : : : : : : : : : : : / ,. -──「`: : : : : : : : : :ヽ: : : : : : : : :\ `ヽ ̄ ̄ ̄ フ: : : : :/ /: :.,.-ァ: : : |: : : : : : : : : :\: : : : :: : : :ヽ \ /: : : :/  ̄ ̄/: : : : ヽ: : : . . . . . . . . . . .、 \=--: : : :.i / /: : : : :/ /: : ∧: \: : : : : : : : : : ヽ: :\: : : 〃}/ /: : : : :/ 、 . /: : / . : : :! ヽ: : l\_\/: : : : :\: ヽ彡: : | /: : : : :/ |\ /: : ィ: : : : :.i: : | \!___/ ヽ:: : : : : : :\|:.:.:.:/:! ,': : : : / |: : \ / / !: : : : :.ト‐|- ヽ \: : : : : l::::__:' :/ i: : : : :{ |: : : :.ヽ l/ |: : :!: : .l: :| \: : : l´r. Y {: : : : :丶_______.ノ: : : : : :} l: : :l: : :ト、| 、___,ィ ヽ: :| ゝ ノ '.: : : : : : : : : : : : : : : : : : : : : : / |: : :ト、: |: :ヽ ___,彡 ´ ̄´ ヽl-‐' \: : : : : : : : : : : : : : : : : : イ !: :从ヽ!ヽ.ハ=≠' , ///// ///u /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ V ヽ| }/// r‐'⌒ヽ イ〉、 ヽ、______ー‐‐' ィ´ /:/:7rt‐---、 こ、これは>>1 乙じゃなくて ィ幵ノ ./:/:./:.! !: : : : :!`ヽ ポニーテールなんだから r‐'T¨「 |: | !:.∨:/:./: :| |: : : : .l: : : :\ 変な勘違いしないでよね! /: : .|: :| !:.!ィ¨¨ヾ、:.:/ !: : : : l: : : : : :.\
5 名前:前スレ990 mailto:sage [2007/05/04(金) 12:08:10 ID:???] 前スレ990です。 SELECT COUNT(*) FROM テーブル名 なんて便利な構文があったとは…。 感激です。 ありがとうございました。
6 名前:NAME IS NULL mailto:sage [2007/05/04(金) 12:48:20 ID:???] 質問です。 "SELECT * from table" の 11行目〜20行目 を取得したい場合には、どのようなSQL文を発行すれば良いでしょうか? 目的はWebアプリケーションの「次のページ」に該当するものを作ることです。 よろしくお願い致します。
7 名前:NAME IS NULL mailto:sage [2007/05/04(金) 13:07:37 ID:???] >>6 リミット
8 名前:6 mailto:sage [2007/05/04(金) 17:32:42 ID:???] >>7 リミットでぐぐったら解説ありました。 感激です。 ありがとうございます。 homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_10.htm
9 名前:NAME IS NULL [2007/05/04(金) 17:44:53 ID:qFF22gV4] >>9 ならMYSQL公式サイトに5.0の日本語マニュアルうpされる
10 名前:NAME IS NULL [2007/05/04(金) 23:47:48 ID:L3HBUz2X] source sql.txt で520件程度のload_fileを使ったクエリを読み込ませて warningが4件ずつでながらもquery OK で成功してるはず なのですが、実際にセレクトしてみるとload_fileでインサートしたはずの 画像が入っていません。 手動で1件ずつ入れる分には問題ないのですが、 なんとかする方法はないでしょうか?
11 名前:NAME IS NULL mailto:sage [2007/05/04(金) 23:51:15 ID:???] ↑もう一回テストしてみたら入ってました。前回は念のためbeginってしたのが悪かったのかな。
12 名前:NAME IS NULL mailto:sage [2007/05/05(土) 10:40:57 ID:???] 5.1日本語マニュアルがうP dev.mysql.com/doc/refman/5.1/ja/index.html
13 名前:NAME IS NULL mailto:sage [2007/05/05(土) 13:53:06 ID:???] beginしている事自体、駄目だろw
14 名前:NAME IS NULL [2007/05/05(土) 16:26:28 ID:58Z5NhTT] はじめまして。 phpmyadminを使用してテーブルの作成をしたいのですが、VARCHARやTXETなどの可変長文字列を使用するとエラーがでます。 #1163 - The used table type doesn't support BLOB/TEXT columns 可変長文字列が使えないようになっているのはわかるのですが、どこで変更していいかわかりません。 どなたかご教授願います。
15 名前:NAME IS NULL [2007/05/06(日) 02:00:51 ID:VOimcpaB] >>14 もう少し詳細な情報がないとなんとも。 「お腹痛いんですけど」だけでは原因はわかりません。
16 名前:NAME IS NULL mailto:sage [2007/05/06(日) 03:08:09 ID:???] >>15 TYPEがHEAPじゃなくて?
17 名前:NAME IS NULL [2007/05/06(日) 03:37:23 ID:DkpI5Nmx] mysqlからデータ取り出して、PHPで表示させる時、皆何つかってる? 俺はWHILEばっかなんだけど。
18 名前:NAME IS NULL mailto:sage [2007/05/06(日) 05:52:01 ID:???] >>17 csvファイルに落としてあとでのんびり参照。いやマジで。
19 名前:NAME IS NULL mailto:sage [2007/05/06(日) 08:33:40 ID:???] 質問です。 レンタルサーバでPHP+Mysqlを利用してます。 掲示板で、使用してるテーブルが 40万行 60MB なのですが、 これは一般的に大きすぎますか?
20 名前:NAME IS NULL mailto:sage [2007/05/06(日) 08:54:22 ID:???] 質問の意図が分かりません。 40万行なんてたいしたことではありません。
21 名前:NAME IS NULL mailto:sage [2007/05/06(日) 09:07:51 ID:???] >>20 ありがとうございます。 レンタルサーバ側から、 『サーバに異常な負荷が起きている、Mysqlを利用できなくした。原因のPHPを削除しろ。』 とメールで連絡がきて。しかも海外の会社だから、英文で… 今、困惑中のオレ...orz
22 名前:NAME IS NULL mailto:sage [2007/05/06(日) 10:02:48 ID:???] >>21 データ量じゃなくてクエリーの不出来が原因だな。 たった100行1メガのテーブルでも やり方しだいで負荷100%は楽々達成できる
23 名前:NAME IS NULL [2007/05/06(日) 13:25:21 ID:I2do9hQG] コマンドラインのmysqlクライアントでテーブル名やカラム名の補完ができるのを見かけたんですが、 使えるバージョンやconfigureオプションを教えてください。
24 名前:NAME IS NULL mailto:sage [2007/05/06(日) 15:34:13 ID:???] inner join と left join + where 結合テーブル.任意のカラム is not null っていうのは同じ結果が返ってくると思うのですが、やっぱり速度的は前者の方が速いんでしょうか?
25 名前:NAME IS NULL [2007/05/06(日) 16:52:06 ID:ixhAcene] 質問です 誕生日などの記念日を日付型のフィールドに格納しています そこで、今日から指定日数以内に記念日が含まれる人を抽出する場合の条件は どのようにすればいいでしょうか?
26 名前:NAME IS NULL mailto:sage [2007/05/06(日) 22:43:56 ID:???] >>25 BETWEEN に、今日の日付関数と、日数計算関数を書く。
27 名前:NAME IS NULL mailto:sage [2007/05/07(月) 13:44:13 ID:???] >>23 ALTER TABLE
28 名前:NAME IS NULL mailto:sage [2007/05/07(月) 15:47:57 ID:???] Windows で skip-character-set-client-handshake を指定しても効かないのですが わかる方おります?
29 名前:NAME IS NULL mailto:sage [2007/05/07(月) 20:03:57 ID:???] >>28 MySQLのバージョンがわからんとコメントしようがない。
30 名前:NAME IS NULL mailto:sage [2007/05/07(月) 20:31:05 ID:???] >>29 ここ(ftp.iij.ad.jp/pub/db/mysql/Downloads/ )で これ(mysql-5.0.37-win32.zip)落としました。
31 名前:NAME IS NULL mailto:sage [2007/05/08(火) 06:13:38 ID:???] >>30 そのオプションが4.1以降なのでと思っていたけど、5.0系ですね、、、 my.cnfの記述が気になる所ですが、 効く、効かないの確認はどのようにしていますか? mysqlクライアントから、SHOW VARIABLES LIKE 'char%';の出力結果を確認してみましたか?
32 名前:NAME IS NULL mailto:sage [2007/05/08(火) 13:30:44 ID:???] >>31 skip-character-set-client-handshake の仕様ついて、かなり勘違いしてるかもです。 すべて ujis に設定したいと考え character_set_server は ujis としています。 コマンドラインで SHOW VARIABLES LIKE 'char%'; を確認すると、 character_set_client の値は ujis になっているのですが、 phpMyAdmin から SHOW VARIABLES LIKE 'char%'; を確認すると、 haracter_set_client の値が utf8 になっているので効いてないじゃないか!と考えました。 phpMyAdmin がどんな悪さしようとも必ず character_set_server と同じになるものと考えていましたが やっぱり違うんでしょうかね?
33 名前:NAME IS NULL mailto:sage [2007/05/08(火) 13:39:38 ID:???] >>28 です。 実際そのように動作するからそういう仕様なんでしょうね。 phpMyAdmin にお仕置きすることにします。
34 名前:NAME IS NULL mailto:sage [2007/05/08(火) 15:04:49 ID:???] MySQLのBOOL型はtrue/falseじゃなくて1/0ですよね?
35 名前:NAME IS NULL mailto:sage [2007/05/08(火) 16:17:10 ID:???] >>34 int(1)とか、そんなの。
36 名前:NAME IS NULL mailto:sage [2007/05/08(火) 16:49:23 ID:???] FOX★公認!今世紀最大の祭り!!! 俺たちのクリックで日本を一位にしようぜ!! “30年は日本に手は出せないな”という勝ち方をしたい wwwww.2ch.net/test/read.cgi/news4vip/1178602852/ 1. チリ 136,836,018 2. ポーランド 135,173,390 3. イスラエル 80,308,719 4. ★日本 71,029,997★ 5. スロベニア 56,818,986 6. フィンランド 40,275,252 石を投げる戦争から人は進化・進歩を遂げ、剣や槍などの武器をもって戦うようになった 人間はさらに発展し兵器を使う戦争を始めた そして今、指先一つを武器とした電脳戦争が勃発したのであった・・・ 皇国を勝利へと導くには貴様らの参戦が不可欠である ・戦場 www.clickclickclick.com/default.asp ・まとめサイト www33.atwiki.jp/clickvip/ ・mixi mixi.jp/view_community.pl?id=2141035
37 名前:NAME IS NULL mailto:sage [2007/05/09(水) 17:33:34 ID:???] MySQLを勉強中だが、遊びながら覚えるには 権限関係やmysqlコマンドラインクライアントの環境を把握するのが 大変で、本来のデーターベースいじる前にくたばった 寝る
38 名前:NAME IS NULL mailto:sage [2007/05/09(水) 21:38:09 ID:???] >>37 おやすみ。MSの世界へどうぞ。
39 名前:NAME IS NULL mailto:sage [2007/05/10(木) 00:48:31 ID:???] >>37 おらくるがいんじゃね?
40 名前:NAME IS NULL mailto:sage [2007/05/10(木) 02:02:18 ID:???] おはよ。さて勉強再開しよ。いま参考にしているサイト。 ttp://wagby.com/install/howtoinstall_mysql3.html ttp://homepage1.nifty.com/gak/webdb/mysql.html ttp://www.geocities.co.jp/SiliconValley-Bay/1428/perl/perl_DBI.html …なんか突っ込みくらいそう。
41 名前:NAME IS NULL mailto:sage [2007/05/10(木) 02:07:57 ID:???] GUIで弄れるSQL鯖とからくだよ。
42 名前:NAME IS NULL mailto:sage [2007/05/10(木) 02:35:51 ID:???] …とあるサービスにMySQLの空間をとってて 前に自分で勉強がてらphpMyAdminをぶちこんでいたことが発覚したが 設定全部忘れてる。最初からやり直し。
43 名前:NAME IS NULL mailto:sage [2007/05/10(木) 03:12:27 ID:???] …やっと -u root -p という呪文を覚えた。 すんげぇ疲れた
44 名前:NAME IS NULL mailto:sage [2007/05/10(木) 05:38:34 ID:???] チラシの裏に書くべき事をここに延々と書くな
45 名前:NAME IS NULL mailto:sage [2007/05/10(木) 17:34:55 ID:???] 当たり前かもしれないのですが、レプリケーションって同じテーブルタイプじゃないとできないんでしょうか? 例えばDDLはまったく同じなInnoDBなテーブルからMyISAMなテーブルへはレプリケーションできないんですかね?
46 名前:NAME IS NULL mailto:sage [2007/05/10(木) 22:07:31 ID:???] >>45 違ってもok もちろん、MasterとSalveでそれぞれcreate tableしてからレプカを走らせてね
47 名前:NAME IS NULL mailto:sage [2007/05/11(金) 00:10:43 ID:???] 質問させてください mysql4のときはmy.cnfにdatadir=/home/mysqlを追加するだけでよかったのですが mysql5でdatadirを/home/mysqlにするにはどうしたらいいでしょうか?
48 名前:NAME IS NULL mailto:sage [2007/05/11(金) 11:53:50 ID:???] >>47 変わってないかと。 [mysqld] セッションの中に datadir=xxxx を入れて mysqldをリスタートしる
49 名前:NAME IS NULL mailto:sage [2007/05/11(金) 14:31:15 ID:???] 検索用にMyISAMなDBを用意しておいて、データ保管用にInnoなDBを用意しておいてレプリケーションさせるのが最強?
50 名前:NAME IS NULL mailto:sage [2007/05/11(金) 15:05:26 ID:???] レプリカの原理上、そんなことしてもあまり意味はない
51 名前:NAME IS NULL [2007/05/11(金) 15:20:41 ID:OiGIVY/k] ↓のWarnings: 6768ってどうゆう意味なんでしょう? 6768目のレコードが変ってことなのか、合計6768のレコードがおかしかったってことなのか・・・ mysql> load data infile 'new.txt' into table spict; Query OK, 31422 rows affected, 6768 warnings (2.21 sec) Records: 31422 Deleted: 0 Skipped: 0 Warnings: 6768
52 名前:47 mailto:sage [2007/05/11(金) 16:03:05 ID:???] >>48 レスありがとうございます。 [mysqld] のすぐ下にdatadir = /home/mysqlと記入すると起動できません。 なぜでしょうか?・・・・
53 名前:NAME IS NULL mailto:sage [2007/05/11(金) 17:48:26 ID:???] >>46 おお、そうなのですか。 当たり前すぎる事なのか、書籍にも書いてなかったので困ってました。 ありがとうございます!
54 名前:NAME IS NULL [2007/05/11(金) 17:54:42 ID:NevP4AlU] interBaseのデータをMysqlにコンバートできますでしょうか?
55 名前:NAME IS NULL mailto:sage [2007/05/11(金) 18:19:57 ID:???] つまりレプリケーションの時点で、Myisamの高速性は無効?
56 名前:NAME IS NULL mailto:sage [2007/05/12(土) 01:56:52 ID:???] >>51 warning が6768個あったってこと。 show warnings すれば warning の内容が見れる。
57 名前:NAME IS NULL [2007/05/12(土) 12:47:54 ID:HqCZ1kB3] フィールドにidとnameを作って、webサイトからnameを追加したらidが1づつ増やしていくようにしたいのですが、 idにint、nameにvarchar(50)を指定しました。 intの長さはどれくらいにしたらいいでしょうか? あと設定するところがあればご教授お願いいたします
58 名前:NAME IS NULL mailto:sage [2007/05/12(土) 16:16:30 ID:???] >>57 そのidに何件格納するつもりなのかと、、、、その質問は難件だな。
59 名前:NAME IS NULL [2007/05/12(土) 17:28:24 ID:5dWtySei] >>56 ありがとうございます。 show warningsの結果をファイル出力するにはどうしたらいいんでしょう?INTO OUTFILEとか>とか使ってみたんですけど何かエラーでます。 mysql> show warnings into outfile 'warnings.txt'; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'into outfile 'warnings.txt'' at line 1
60 名前:NAME IS NULL mailto:sage [2007/05/12(土) 21:43:27 ID:???] intのバイトサイズは不変です
61 名前:NAME IS NULL mailto:sage [2007/05/13(日) 03:28:09 ID:???] データベースっておもしろいな、ハマりそう
62 名前:NAME IS NULL mailto:sage [2007/05/13(日) 15:06:24 ID:???] EUC-JP UTF-8 SHIFT-JIS どれで作るのがおすすめですか?
63 名前:NAME IS NULL mailto:sage [2007/05/13(日) 15:56:41 ID:???] UTF-8
64 名前:NAME IS NULL mailto:sage [2007/05/13(日) 16:07:18 ID:???] 文字化けの恐怖が・・・
65 名前:NAME IS NULL mailto:sage [2007/05/13(日) 18:42:27 ID:???] JISにしておくとメールの文字化け無いけどね。
66 名前:NAME IS NULL mailto:sage [2007/05/13(日) 20:29:37 ID:???] PHPとの連携でいちいち変換しないと
67 名前:NAME IS NULL mailto:sage [2007/05/13(日) 22:33:52 ID:???] >>62 クライアントに合わせれば良いんだけど。
68 名前:NAME IS NULL [2007/05/14(月) 04:13:51 ID:6ju7MXtu] Webアプリケーションで使う、MySQLのテーブル設計を勉強したいのですが、 勉強に最適なサイトはありませんか? 掲示板の時はこういうテーブル構成にするとか、 そういった設計から、設計の考え方などを勉強したいのですが、 何か最適なサイトがあれば紹介していただけると嬉しいです。
69 名前:NAME IS NULL mailto:sage [2007/05/14(月) 05:28:49 ID:???] >>68 phpを使ったサイトとして参考になる。 www.nvnetwork.com/home.php
70 名前:NAME IS NULL mailto:sage [2007/05/14(月) 11:43:10 ID:???] >>52 亀レスだが、/home/mysql に システム管理用のデータベース mysql ディレクトリ が無いとか、パーミッションがおかしいとかじゃないかい。 わからなければエラーログを見るが基本。
71 名前:NAME IS NULL mailto:sage [2007/05/14(月) 18:28:32 ID:???] >>69 色々なところに通報しました
72 名前:NAME IS NULL mailto:sage [2007/05/14(月) 18:28:46 ID:???] >>70 レスありがとうございます。 もうレスがないかと思ってあきらめてました。 70さんを参考にいろいろ試して見ます。 ところでみなさんMySQLのバージョンは4ですか?5ですか? あとdatadirはどこにしてますか?
73 名前:NAME IS NULL [2007/05/14(月) 23:39:02 ID:LAW+Ghic] phpとmysqlでどの程度のことができれば職場で苦労しない? たとえばショッピングカートが作れれば無問題とか。
74 名前:NAME IS NULL mailto:sage [2007/05/14(月) 23:44:38 ID:???] >>73 そんなあいまいな質問をするようじゃ、職場で苦労する。 仕事は技術も必要だが、一般常識、人間関係のほうがもっと大事。
75 名前:NAME IS NULL [2007/05/14(月) 23:59:56 ID:Ho+ISCuc] mysqlのdbは最大64文字までですが テーブル名は何文字までOKですか?
76 名前:NAME IS NULL mailto:sage [2007/05/15(火) 00:35:04 ID:???] ポータルやるなら決済系だし、業務系なら簿記も知らないと意味が無い。
77 名前:NAME IS NULL mailto:sage [2007/05/15(火) 06:08:34 ID:???] >>76 も十分あいまいだと思うが・・w
78 名前:NAME IS NULL [2007/05/16(水) 06:03:26 ID:wVK6G4pR] リモートホストにmysqlコマンドで接続しようとしたらエラーが出るのですが、 原因として考えられることはありますでしょうか? $ mysql -u user1 -h hoge.localhost ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 54
79 名前:NAME IS NULL mailto:sage [2007/05/16(水) 09:29:06 ID:???] >>78 原因として考えられることは、たっくさんあるな。
80 名前:NAME IS NULL mailto:sage [2007/05/16(水) 14:44:43 ID:???] >>57 社員名簿でも作るの?俺ならとりあえず4桁にする
81 名前:NAME IS NULL mailto:sage [2007/05/16(水) 17:19:21 ID:???] sql5.0.27 PHP5.2.1で連携しています。 すべてUTF-8で設定していますが 「−」全角のマイナスだけがなぜか?に化けてしまいます。 みなさんはいかがでしょうか? 対策等ご存知であればよろしくお願いいたします。 その他は今のところ問題ないようです。 よろしくお願いいたします。
82 名前:NAME IS NULL mailto:sage [2007/05/16(水) 17:50:01 ID:???] >>81 〜 もだろ?
83 名前:NAME IS NULL mailto:sage [2007/05/16(水) 18:34:53 ID:???] >>82 〜 もでした。 どうしようもないんでしょか?
84 名前:NAME IS NULL mailto:sage [2007/05/16(水) 19:41:32 ID:???] ujisにすれば?当面不都合はないかと。
85 名前:NAME IS NULL mailto:sage [2007/05/16(水) 22:53:09 ID:???] cp932とeucjpmsを使えば解決しそうな予感。
86 名前:NAME IS NULL mailto:sage [2007/05/17(木) 20:14:52 ID:???] WindowsのMySQL Command Line CLientで操作してるんですが、Shift-Jis以外の文字表示は無理なんですか?
87 名前:NAME IS NULL mailto:sage [2007/05/17(木) 21:23:52 ID:???] mysqlをインストールしていたのですが、 /usr/local/mysql/bin/mysql test と入力すると ERROR 1045 (28000): Access denied for user 'ユーザ名'@'localhost' (using password: NO) と言われたので、 /usr/local/mysql/bin/mysql test -p でパスワードを入力してEnterを押したら ERROR 1045 (28000): Access denied for user 'ユーザ名'@'localhost' (using password: YES) と言われてしまいました。 解決法をいろいろと調べてみたのですが相変わらずわかりません。。。 だれかわかる人いましたらよろしくお願いします。
88 名前:87 mailto:sage [2007/05/17(木) 21:42:45 ID:???] ちなみに OS]使用で /usr/local/mysql/bin/mysql -u root -p 上記では使用することができました。 よろしくお願いします。
89 名前:NAME IS NULL mailto:sage [2007/05/17(木) 21:50:42 ID:???] >>86 character_set_results
90 名前:NAME IS NULL mailto:sage [2007/05/17(木) 21:52:21 ID:???] >>88 grant
91 名前:87 mailto:sage [2007/05/17(木) 21:55:49 ID:???] >>90 ありがとうございます。 最初はrootのみでしか使えないということなのでしょうか?
92 名前:NAME IS NULL mailto:sage [2007/05/17(木) 22:02:09 ID:???] >>91 ドキュメント嫁 ttp://dev.mysql.com/doc/refman/4.1/ja/post-installation.html
93 名前:NAME IS NULL [2007/05/17(木) 23:59:56 ID:+ucqrGEe] マックosxにインストールしたんですが、 C―APIの動的ライブラリの場所、名前を教えて頂けないでしょうか。
94 名前:NAME IS NULL mailto:sage [2007/05/18(金) 00:10:32 ID:???] >>93 マニュアル嫁 dev.mysql.com/doc/refman/4.1/ja/c.html
95 名前:NAME IS NULL [2007/05/18(金) 03:25:37 ID:96NrWpJ/] selectの後ろに\Gつけると ERROR: No query specified ってなるんですけど、これどうゆう意味ですか?
96 名前:NAME IS NULL mailto:sage [2007/05/18(金) 12:27:11 ID:???] >>95 クエリが無いって言ってるジャン エイゴワーカリマスカ? \G の前に ; をつけてるだろ。
97 名前:NAME IS NULL [2007/05/18(金) 19:01:48 ID:2q7j7eIB] どちらのテーブル構造にするかでまよってます。 (1)目的 たくさんのPCのD:ドライブについて、ファイル名とそのファイルのサイズを格納する。 PC1 /a/b/c/d 100等 で、これをがんがん検索する。PC1の一覧とかPC2の/a配下の一覧とか PC 10000台くらいまで、ファイル/PC 1000ファイルくらいまで。 (2)テーブル構造案1 PC名、ファイルパス、サイズ 例:PC1, /a/b/c/d/e, 100 (3)テーブル構造案2 PC名、セグメント1.セグメント2、…、セグメント10、サイズ セグメント:ファイルパス中のセグメント 例:PC1, a, b, c, d, e, , , , , 100 質問: システム構造案2の方が検索は早いのでしょうか? #一見そんな気もするのですがよくわかりません。 格納するときも、検索するときも面倒くさいので、構造案1 にしたいのです。
98 名前:NAME IS NULL mailto:sage [2007/05/18(金) 19:23:26 ID:???] >>97 ???日本の方??? "データベース 正規化" でググって勉強しる。
99 名前:NAME IS NULL mailto:sage [2007/05/18(金) 19:55:20 ID:???] >>97 とりあえず 案1で、文字列index効かせればいんでないの。 ただ、フルパス限定。 c を含む物を探すとなると途端に 使い物にならんだろね。
100 名前:NAME IS NULL [2007/05/19(土) 00:57:38 ID:dKYDsDbp] osx でプログラムをコンパイルしようとすると、 /usr/bin/ld: truncated or malformed archive: /usr/local/mysql-max-5.0.27-osx10.4-powerpc-64bit/lib/libmysqlclient.a (ranlib structures in table of contents extends past the end of the table of contents, can't load from it) 何ていわれて先に進みません。対処法をご存知のかたご教授願います。
101 名前:NAME IS NULL [2007/05/19(土) 02:15:32 ID:g2N/Bu9q] >>99 検索は以下の形だけです。 「PC1の/a/b/配下の一覧表示」 案1でPC名とファイルパスでインデックスを作成する。 like '/a/b/c/%'で検索 案2でPC名とセグメント1,2,3,4,5,…,10でインデックスを作成する seg1=a and seg2=b and seg3=c で検索 どっちが早いのでしょうか? インデックスの作られ方をちょっと勉強してみましたが、案1も案2も同じようなインデックスが 出来上がるように思いました。
102 名前:NAME IS NULL mailto:sage [2007/05/19(土) 03:51:49 ID:???] >>100 これの話かな? bugs.mysql.com/bug.php?id=27318
103 名前:NAME IS NULL [2007/05/19(土) 06:00:51 ID:eFxrLNmp] explainてselectにしかつけれないの? 他の命令でインデックス使ってるか確認する時は selectに直すしかない?
104 名前:NAME IS NULL mailto:sage [2007/05/19(土) 07:10:09 ID:???] selectにすればいいんでねーの。 なんでダメなん?
105 名前:NAME IS NULL [2007/05/19(土) 08:35:46 ID:dKYDsDbp] >>102 英語判らんけど、ppc-g5だとコンパイルできないって事かな。
106 名前:NAME IS NULL mailto:sage [2007/05/19(土) 15:09:36 ID:???] mysql3.23.58でどうあがいても文字化けしちゃうのってあります? 文字化けというより検索で他のがヒットしちゃう。 バイナリーで回避できるけど、textだと指定できないことに気づき再度悩み中。 他のサイトではバグというか日本語対応してなくて、それを回避する場合、 4.1以上にと書いてあったのですがこのとおりでしょうか? もしその場合、3.23.58からだとやっぱり今は5に切り替えるのがベストでしょうか?
107 名前:NAME IS NULL mailto:sage [2007/05/19(土) 16:01:19 ID:???] >>106 mysqld 起動時の charset と格納されているデータの charset が異なるとか
108 名前:NAME IS NULL mailto:sage [2007/05/19(土) 16:45:44 ID:???] >107 4以下は日本語は日本語として扱われず、完全には無理っぽくて a-zA-Z に一致するバイト列があれば強制的に変換........ という感じの記述を検索で見つけたので、 質問してみたのですが、設定がパーフェクトなら、 アップしなくてもすべてうまくいくと考えてよいということで 根本的な問題は、設定間違いと考えていいということでしょうか。
109 名前:NAME IS NULL mailto:sage [2007/05/19(土) 19:03:36 ID:???] >107 すんません。 ご指摘の対応で解決できました。バージョンアップしなくてすみました。 どもでした。
110 名前:NAME IS NULL [2007/05/20(日) 05:30:07 ID:2GXp1HU+] 下記のテーブル名AAAがあります。担当者番号は重複しているレコードが大量にあります レコード番号(int primary key)+++ 担当者番号(int)+++取引金額(int)+++ このようなテーブルがあった場合、担当者番号ごとに取引金額が最も多いレコード番号をselectするためにはどういうSQL文になりますか?
111 名前:NAME IS NULL mailto:sage [2007/05/20(日) 08:29:35 ID:???] MySQL Connector/ODBC 3.51.15 ttp://dev.mysql.com/downloads/connector/odbc/3.51.html うちでは3.51.14は問題多くて使いものにならなかったけど 今のところ問題なし
112 名前:NAME IS NULL [2007/05/20(日) 11:00:07 ID:WPBssusO] >>110 SQLの前に日本語しっかりな。
113 名前:NAME IS NULL mailto:sage [2007/05/20(日) 13:36:48 ID:???] チョン?
114 名前:NAME IS NULL mailto:sage [2007/05/20(日) 15:00:26 ID:???] >>110 MAX() と GROUP BY を使って、2秒で出来る初歩的SQLです。 あとは努力しましょう。
115 名前:NAME IS NULL mailto:sage [2007/05/20(日) 23:32:21 ID:???] 表の作成をしようと思いCREATEを使用したのですが、 ERROR 1046 (3D000): No database selected と表示されてしまいます。 原因がわからないのですが誰か教えていただけないでしょうか。
116 名前:NAME IS NULL mailto:sage [2007/05/20(日) 23:33:37 ID:???] >>115 表の前にまずDBを作れ。
117 名前:NAME IS NULL mailto:sage [2007/05/20(日) 23:35:14 ID:???] データベースを選択する時には、 use データベース名; というコマンドでいけますが、データベースの選択を解除するにはどうしたら良いでしょうか? use none; とか use; とか色々試してみましたが、無理でした。
118 名前:NAME IS NULL mailto:sage [2007/05/20(日) 23:39:09 ID:???] 何もデータベースを選択してない、という状態が必要なの?
119 名前:NAME IS NULL mailto:sage [2007/05/20(日) 23:40:40 ID:???] quitしてもう一回接続すれば?
120 名前:117 mailto:sage [2007/05/20(日) 23:42:05 ID:???] >>118 なんとなくです >>119 やっぱそれしかないですかね('A`)
121 名前:NAME IS NULL mailto:sage [2007/05/20(日) 23:42:59 ID:???] >>116 わかりました!ありがとうございます。
122 名前:NAME IS NULL mailto:sage [2007/05/21(月) 03:03:05 ID:???] コマンドプロントでeditでエディタが起動するけど これってどう閉じるの?&使用用途を教えてくだされ
123 名前:NAME IS NULL mailto:sage [2007/05/21(月) 07:25:52 ID:???] >>122 環境変数 $EDITOR に指定したテキストエディタが起動する \! echo $EDITOR か system echo $EDITOR で確認 標準は vi かな? エディタでSQLを編集して保存終了してから デリミタ(普通はセミコロン)で実行 環境変数の指定方法とか、エディタの使い方はググる
124 名前:NAME IS NULL mailto:sage [2007/05/21(月) 12:47:48 ID:???] >>123 ちょっとわかりました。 使い方ググってみます
125 名前:NAME IS NULL mailto:sage [2007/05/21(月) 14:53:52 ID:???] 表の作成時の指定で 011.44.134.42 や .2 などを入力するにはどの型を指定すればよいのでしょうか。
126 名前:NAME IS NULL mailto:sage [2007/05/21(月) 15:10:26 ID:???] >>125 IPすか?
127 名前:NAME IS NULL mailto:sage [2007/05/21(月) 16:56:03 ID:???] >>125 自分なら、VARCHAR(最大文字数) にするね。
128 名前:NAME IS NULL mailto:sage [2007/05/21(月) 18:50:19 ID:???] 俺もvarchar(15)でやってる ipをintにする関数があった気するけど視認性下がるから
129 名前:NAME IS NULL mailto:sage [2007/05/21(月) 20:18:41 ID:???] みなさんありがとうございます。 こちらの勘違いで011と挿入すると表示では11になって困っていたのですが、 シングルクォーテーションで囲んでいなかっただけでした。 ご迷惑をおかけして申し訳ありませんでした。
130 名前:NAME IS NULL [2007/05/22(火) 11:52:18 ID:8/PhpwlH] ストアドプロシジャのことで質問させてください。 プロシジャの中で、まず最初にselectします。結果は複数レコードになります。 この複数のレコードをプロシジャ内の変数に一度代入して、その結果セットをさらにそのプロシジャ内で条件分岐とかしたいのですが、 結果セットを代入する変数の型っていうのは何になるのでしょうか?
131 名前:NAME IS NULL mailto:age [2007/05/22(火) 21:53:17 ID:???] MySQL4.1をPHP4.3から利用してます。両方UTF-8で利用していて、ORDER BYで 並べ替えしたいのですが、日本語(ひらがな)の並びが間違って出て来ます。 降順と昇順を入れ替えると間違った並びのまま逆さになります。 同じ環境で英文字の並べ替えは問題なく動作しています。 対処法などご存知の方お願いします。
132 名前:131 mailto:sage [2007/05/23(水) 09:54:22 ID:???] >>131 自己解決。COLUMN COLLATEをutf8_unicode_ciとしたら正常に動作しました。
133 名前:NAME IS NULL mailto:sage [2007/05/23(水) 11:21:47 ID:???] >>130 CURSOR以外でってこと?
134 名前:NAME IS NULL [2007/05/24(木) 15:36:16 ID:rlJddH2x] 二つのテーブルに共通のフィールドがあるとして、 その共通のフィールドを手がかりに、 一方しか持っていないデータを違うテーブルからセレクトして取得するにはどうすればいいんでしょうか。
135 名前:NAME IS NULL mailto:sage [2007/05/24(木) 16:55:19 ID:???] >>134 join して nullを探せばどうよ。
136 名前:NAME IS NULL [2007/05/25(金) 03:20:04 ID:2/gsg6oI] >>135 調べてやってみます!!ありがとう!
137 名前:NAME IS NULL mailto:sage [2007/05/25(金) 15:24:22 ID:???] MySQL5.0を使っています。 区分 日付 内容 1 2007/03/01 その1 2 2007/04/05 その2 1 2007/04/06 その3 3 2007/04/26 その4 2 2007/05/09 その5 このように区分と日付をキーにしたデータの入っているテーブルから、 1 2007/04/06 その3 2 2007/05/09 その5 3 2007/04/26 その4 のように、区分ごとに最新のレコードを取得したいのですが、 どのようなクエリを書けばいいのかが分かりません。 そもそも、1回のクエリでできるものなのでしょうか? それとも、区分の回数だけループを回して、1つずつ取得しなければいけないでしょうか? どなたか教えてください・・・
138 名前:NAME IS NULL mailto:sage [2007/05/25(金) 17:55:57 ID:???] >>137 SELECT * FROM data WHERE (kubun, hiduke) in (SELECT MIN(kubun), MAX(hiduke) FROM data GROUP BY kubun) order by kubun; 実行パフォーマンスは最悪なので データ量が多い場合は、分けてループした方がいいかも。
139 名前:NAME IS NULL mailto:sage [2007/05/25(金) 19:55:44 ID:???] /' ! ━━┓┃┃ -‐'―ニ二二二二ニ>ヽ、 ┃ ━━━━━━━━ ァ /,,ィ=-;;,,, , ,,_ ト-、 ) ┃ ┃┃┃ ' Y ー==j 〈,,二,゙ ! ) 。 ┛ ゝ. {、 - ,. ヾ "^ } } ゚ 。 ) ,. ‘-,,' ≦ 三 ゞ, ∧ヾ ゝ'゚ グ ≦ 三 ゚。 ゚ '=-/ ヽ゚ 。≧ ッ 三 ==- / |ヽ \-ァ, ド ≧=- 。 ! \ イレ,、 コ >三 。゚ ・ ゚ | >≦`Vヾ | ヾ ≧ 〉 ,く 。゚ /。・イハ 、、 ヒ `ミ 。 ゚ 。 ・
140 名前:WebProg板から誘導されてきますた [2007/05/26(土) 12:01:44 ID:WWQOXdm+] ■環境情報 海外DreamHostレンタルサーバー PHP 5.2.1 & MySQL 5 ■データベース情報 データベース名: test フィールド名: date (datetime型) という環境を使用しています。 海外サーバーのため、時差設定に苦戦しています。 SET time_zone = '+09:00'; INSERT INTO `test` ( `date` ) VALUES (NOW( )); をSQLから実行してみたところ、とりあえずSQLからは 無事日本時間がデータベースに格納されました。 しかし、これをPHPからSQL文を送って実行しようとすると、 $sql = <<<EOS SET time_zone = '+09:00'; INSERT INTO `test` ( `date` ) VALUES (NOW( )); EOS; うまく動いてくれません。。。 初心者すぎてスミマセン・・・orz
141 名前:NAME IS NULL mailto:sage [2007/05/26(土) 14:25:46 ID:???] >>140 その$sql変数に、代わりに select * from test を入れてちゃうと動くんだろうね?
142 名前:NAME IS NULL mailto:sage [2007/05/26(土) 14:42:58 ID:???] >>140 mysqliのmysqli_multi_query()関数を使えば動くようになる、てオチじゃないだろうね?
143 名前:140 [2007/05/26(土) 15:26:11 ID:WWQOXdm+] $sql = "SET time_zone = '+09:00'"; mysql_query( $sql ); $sql = "INSERT INTO `test` ( `date` ) VALUES (NOW( ))"; mysql_query( $sql ); で動くようになりますた。 お騒がせしますたm(_ _")m
144 名前:NAME IS NULL mailto:sage [2007/05/27(日) 02:47:19 ID:???] なんか効率無視だな(w
145 名前:NAME IS NULL mailto:sage [2007/05/27(日) 06:12:31 ID:???] 効率良いのを教えてください ><
146 名前:NAME IS NULL mailto:sage [2007/05/28(月) 03:14:08 ID:???] レコードの件数を調べるのにselect count(*)を使うというのが分かったのですが、 以下のようにしたら「Resource id #3」と表示されてしまいます。 $sql="select count(*) from faq"; $result=mysql_query($sql); echo $result; どのようにすればカウント数が表示されますか?
147 名前:NAME IS NULL mailto:sage [2007/05/28(月) 06:40:04 ID:???] >>146 PHPのmysql_query()の説明をよく読め
148 名前:NAME IS NULL mailto:sage [2007/05/29(火) 00:03:08 ID:???] そこでperlですよ
149 名前:NAME IS NULL mailto:sage [2007/05/29(火) 01:05:43 ID:???] >>146 あんた、いい芸人になれるわ
150 名前:NAME IS NULL [2007/05/29(火) 01:08:32 ID:pWsap/AA] レプリケーションのマスタが落ちた場合、スレーブをマスタに切り替えて 運用するには RESET SLAVE でスレーブ解除すれば良いの?
151 名前:NAME IS NULL mailto:sage [2007/05/29(火) 21:36:12 ID:???] 有料で提供するASP(アプリケーション・サービス・プロバイダ)のバッグエンドにMySQLを利用する場合、 エンタープライズで無くても大丈夫でしょうか?
152 名前:NAME IS NULL mailto:sage [2007/05/29(火) 22:07:27 ID:???] そんな事を2chで聞いてるお前に問題があるな、少なくとも。
153 名前:くきくき [2007/05/29(火) 23:10:32 ID:tiIImBH4] エラー内容は、error nr.1045というものです。 環境は、XP でノートンいれてあります。だけど スクリプト遮断は、はずしております。あと、ルータも かましています。特に、ポートを空けるとかしていないです。 空けなくてはいけないのかな?
154 名前:NAME IS NULL mailto:sage [2007/05/30(水) 01:48:50 ID:???] TEXT型のカラムにunique制約を追加することは可能でしょうか? 以下のエラーが表示されます。 長さを固定してやらなければならないのでしょうかね? #1170 - BLOB/TEXT column 'col1' used in key specification without a key length 可能であればその方法を教えてくださいませ。
155 名前:NAME IS NULL mailto:sage [2007/05/30(水) 08:25:59 ID:???] >>154 まずマニュアルを読むこと ttp://dev.mysql.com/doc/refman/4.1/ja/indexes.html
156 名前:154 mailto:sage [2007/05/30(水) 22:24:35 ID:???] >155 ありがとうございます。 長さを指定すると作成することが可能ということが分かりました。 しかし、255バイトまでしか指定できず、 256文字以降は重複チェックがされないようです。 これは、格納されている値すべてを比較の対象にすることは不可能ということでしょうか? もし可能なのであれば、ご教授頂ければ幸いです。
157 名前:NAME IS NULL mailto:sage [2007/05/30(水) 23:17:54 ID:???] >>156 はい、無理です。 その代わり、カラムをSHA1()関数にかけた値を保存し、 これをUNIQUEにするのはどうでしょうか? バッティングは非常に少ないと思います。
158 名前:154 mailto:sage [2007/05/31(木) 18:07:20 ID:???] >157 なるほど大変勉強になりました。 また同時にmd5はイケてない事も分かりました。 ありがとうございました! どこかで出会う事があればお酒でもご馳走したい気持ちでいっぱいです。
159 名前:157 mailto:sage [2007/05/31(木) 18:42:04 ID:???] >>158 私が勤務する会社でSennaというソフトの開発をやっているので、 そちらを使っていただけると大変うれしいです。 TritonnというソフトでMySQLと橋渡しができます。
160 名前:NAME IS NULL mailto:sage [2007/05/31(木) 20:03:01 ID:???] 特定しました
161 名前:NAME IS NULL mailto:sage [2007/05/31(木) 20:17:33 ID:???] Sennaってレコード数が増えると途端にパフォーマンスが落ちるよね。 キーワードによってはエンジンブローしたかと思うほど時間がかかる場合があり 井出有治にも負けそうな気配。 2nd入れても変わらず・・・で、検証で捨てた経験あり。
162 名前:NAME IS NULL mailto:sage [2007/05/31(木) 20:20:50 ID:???] md5バッティングするってマジですか? md5でつこうてるんだけど どのくらいの確率でバッティングするの?
163 名前:157 mailto:sage [2007/05/31(木) 21:38:48 ID:???] >>161 激しくスレ違いだが、たぶんメモリ不足だと思う。 あとは大きなデータベースだとパラメータ設定しないと遅い。 ま、パラメータ設定するとさらにメモリを食うわけだが… MD5でも実用上問題ないと思う、個人的には。
164 名前:NAME IS NULL mailto:sage [2007/05/31(木) 23:40:19 ID:???] >>162 バントしたらホームランになっちゃった くらいの確率
165 名前:NAME IS NULL mailto:sage [2007/06/01(金) 06:30:54 ID:???] でも業務だと、常にホームランが求められるけどな。 バッティングしたから、おまいの口座データ壊れたじゃシャレに成らん。 メモリ増やせるくらいなら、mysqlじゃなくてオラクル使ってる余裕あると思うよ。 金無いから、mysqlってのはよくあるパターン。
166 名前:NAME IS NULL mailto:sage [2007/06/01(金) 10:46:49 ID:???] >>162 固定長を吐き出すダイジェスト関数でバッティングしないのを作れたら 大金持ちになれそうだ。
167 名前:NAME IS NULL [2007/06/01(金) 11:08:08 ID:/eOI7xda] syaryoテーブル syaryo,tantosya,seibisya tantoテーブル tantoID,name tantosya seibisya はいづれも tantoID を見てnameを出させたいです。 よろしくお願いいたします。
168 名前:167 [2007/06/01(金) 11:10:31 ID:/eOI7xda] 結果を syaryo | name | name ←整備者名 ↑ 担当者名 です。よろしくお願いいたします。
169 名前:NAME IS NULL mailto:sage [2007/06/01(金) 11:40:57 ID:???] MySQLのみで、フィールド中の「AAA」という文字列のみを削除する…ってことはできるのでしょうか?
170 名前:NAME IS NULL mailto:sage [2007/06/01(金) 12:38:24 ID:???] >>169 MySQLの文字列関数使えば余裕で出来るよ
171 名前:NAME IS NULL mailto:sage [2007/06/01(金) 15:26:06 ID:???] >>168 ニホンゴワカリマスカ? リカイニクルシミマシタガ、コンナカンジデース。 select * from syaryo s left join tanto n1 on n1.tantoID=s.tantosya left join tanto n2 on n2.tantoID=s.seibisya;
172 名前:167 [2007/06/01(金) 16:22:32 ID:/eOI7xda] SELECT s1.syaryo,t1.name,t2.name FROM syaryo as s1,tanto as t1,tanto as t2 where s1.tantousya = t1.tID and s1.seibisya = t2.tID でいけました。 ありがとうございました。
173 名前:169 mailto:sage [2007/06/01(金) 17:32:56 ID:???] >>170 ありがとうございます。 今までPerlとかスクリプト側で処理していたので、MySQLの関数は活用してませんでした。 REPLACEでできそうです(まんまの関数だった…)。
174 名前:NAME IS NULL mailto:sage [2007/06/02(土) 01:46:08 ID:???] phpのセッションも指定しないかぎりmd5じゃん。 そんな不確かなものの上にセッションは成り立っていたのか・・・
175 名前:NAME IS NULL mailto:sage [2007/06/02(土) 15:46:23 ID:???] >>174 PHPのセッションはカゲロウ山のようなものです
176 名前:NAME IS NULL mailto:sage [2007/06/02(土) 16:39:28 ID:???] 質問です! Fedora Core3に MySQL-server-5.0.41-0.glibc23.i386.rpm および関係パッケージ一式をインストールして、 無事に動作したのですが、何故か終了が出来ません。 /usr/bin/mysqladmin shutdown を実行すると反応が返ってこなくなり、 /usr/bin/mysqladmin status も帰ってこなくなります。 ネットで調べても類例が全くなかったのですが、 どなたか原因に心当たりがありませんでしょうか。
177 名前:NAME IS NULL mailto:sage [2007/06/03(日) 00:42:13 ID:???] mysqladmin pingすら帰ってこない悪寒。
178 名前:NAME IS NULL mailto:sage [2007/06/04(月) 09:38:07 ID:???] rpmで入れたのなら/etc/rc.d/init.d/ のスクリプトで起動・終了した方がいいんでない?
179 名前:NAME IS NULL mailto:sage [2007/06/04(月) 15:12:08 ID:???] 質問です。 レセプションの設定をし、slave startをしているのですが、どうもmasterの方で弾いてるらしく、 ちょっと詰まっています。 一応、レセプションの設定は間違いないと思うのですが、何か引っかかるところなんぞあるんでし ょうか? 一応、/etc/serviceでポート開放し、ファイヤーウォールの設定でもポート開放をしています。 エラーメッセージは、 Slave I/O thread: error connecting to master 'repl@XXX.XXX.XXX.XXX:3306': Error: 'Host 'XXX.XXX.XXX.XXX' is not allowed to connect to this MySQL server' errno: 1130 retry-time: 60 retries: 86400 と出ていて、masterのMySQLの方の問題だと思うのですが。
180 名前:NAME IS NULL mailto:sage [2007/06/04(月) 15:19:14 ID:???] レプリケーションだった orz
181 名前:NAME IS NULL mailto:sage [2007/06/04(月) 16:37:50 ID:???] >>179 スレーブ側のmysqlクライアントでユーザreplを指定して マスタ側のMySQLサーバにログイン出来てる?
182 名前:NAME IS NULL mailto:sage [2007/06/04(月) 16:52:26 ID:???] RESありがとうございます。 まだやってませんでした。 GRANTで一度リモートログインの設定をした方が良いですよね? 今の権限はレプリケーションのみなので。
183 名前:NAME IS NULL mailto:sage [2007/06/04(月) 18:03:45 ID:???] 自己解決しました。 結局、GRANTで管理者権限を渡し、コネクト出来るようになりました。 ただ、これだとLocal上で使うものとは言え、ちょっとザルっぽいので、GRANTで権限をある程度 絞ろうかと思います。 ではでは
184 名前:NAME IS NULL mailto:sage [2007/06/05(火) 03:48:22 ID:???] INSERT時にある値があればそれを、無ければauto_incrementされたNoと 同じ値を入れたいカラムがあるんですが、INSERTと同時にauto_incrementされた数値を指定するような定数等ってあるのでしょうか? 今のところ、INSERTした後にUPDATEして書き換えています。 col1|col2 1|値 又は 1
185 名前:NAME IS NULL mailto:sage [2007/06/05(火) 13:03:24 ID:???] >>184 > 次の AUTO_INCREMENT 値は、オートキーに使用された最高値に 1 を加えた値になる。 とい特性を信じてサブクエリで更新することは出来そうだが、サブクエリを使うぐらい なら、updateした方が良いかも。
186 名前:NAME IS NULL mailto:sage [2007/06/05(火) 13:22:11 ID:???] >>184 LAST_INSERT_ID()
187 名前:NAME IS NULL mailto:sage [2007/06/05(火) 16:20:12 ID:???] >>186 よく嫁
188 名前:NAME IS NULL mailto:sage [2007/06/05(火) 22:03:14 ID:???] >>184 たぶんテーブル構造を見直した方がいいと思われるけど、 いまのままならアップデートしかないんでないの。
189 名前:184 mailto:sage [2007/06/06(水) 12:04:56 ID:???] 有難う御座います。 やり方を変えれば、SELECTする際にIFでNoかこのカラムを取ってくるようにする事は出来るのですが 基本的に更新は殆ど無く、参照が大量のためこのような感じにしました。 今のUPDATEで進めて見ます。
190 名前:NAME IS NULL [2007/06/06(水) 14:22:13 ID:IsGwhVyT] 質問です。 ソートした母集団にナンバリングするためには どうしたら良いでしょうか? 100件中、自分が何番目なのかを確認したいです。 set @temp := 0; SELECT @temp := @temp + 1 from ... ではなく、1SQLで完結できる方法を検討したいです。 できればテーブルにインサートする方法も使いたくありません。 同着10位が3人居ても、全員10位にする方法であれば 実装できましたが 同着10位には、それぞれ10、11、12とナンバリングしたいです。
191 名前:NAME IS NULL mailto:sage [2007/06/06(水) 15:24:47 ID:???] >>190 変数使ってもいいなら、こういう方法があるらしいよ。 select @rank:=@rank+1 rank, t1.* from (select * from table1 order by col1) t1, (select @rank:=0) t2;
192 名前:191 mailto:sage [2007/06/06(水) 15:49:09 ID:???] あ、where句で抜き出すならもう少しだけ工夫が要るか
193 名前:NAME IS NULL mailto:sage [2007/06/06(水) 17:09:49 ID:???] MySQL Custerの事で聞きたいんですが、基本的にClusterの利点は負荷分散とリカバリー時の即効性 と言うことでしょうか? 例えば、DB自体の容量肥大化に関する利点というものはClusterではまかなえないのでしょうか?
194 名前:190 [2007/06/06(水) 20:25:01 ID:IsGwhVyT] >191 ありがとございます。
195 名前:NAME IS NULL mailto:sage [2007/06/06(水) 21:58:45 ID:???] >>193 メモリが……
196 名前:NAME IS NULL mailto:sage [2007/06/07(木) 01:53:25 ID:???] 64bitにすれば理論値は十分でしょ。 あとはメモリ積めるハードを選べばおk。
197 名前:NAME IS NULL [2007/06/07(木) 23:41:41 ID:7GQ86/Vg] 板違いでしたらご指摘下さい。 VS2003を使って接続しようとすると Host 'PC-hoge' is not allowed to connect to this MySQL server とエラーが出ます。 MySQLは別PCですが、単に接続しようとしたPCが拒否されたと思っていますが、なぜ拒否されたのか判りません。 サーバーへの接続はIPアドレスで指定し、ユーザーは「root」パスワードはコマンドラインに最初に入力するパスワードを入れています。 根本から間違えているのでしょうか?
198 名前:NAME IS NULL mailto:sage [2007/06/08(金) 11:14:09 ID:???] >>197 grant って知ってる?
199 名前:NAME IS NULL [2007/06/08(金) 14:07:27 ID:BCjwMJBL] こんにちは。おそらく度素人の質問だと思うのですがお許しください。 検索してもどこにも見当たらないので・・・・・ フィールドにつくフラグでnotnullはnullを許さない。autoincは自動で数字を増やしてく、ってことはわかったのですが、それ以外のunsignedとzerofillの意味がわかりません。ご教授いただけないでしょうか?
200 名前:NAME IS NULL mailto:sage [2007/06/08(金) 15:14:55 ID:???] 符号を保存せずに値の範囲を変えたり隙間をゼロで埋めたりっつー話じゃないの?
201 名前:NAME IS NULL [2007/06/08(金) 15:25:45 ID:BCjwMJBL] >>200 すみません、それの意味することを教えていただけないでしょうか
202 名前:NAME IS NULL mailto:sage [2007/06/08(金) 15:32:11 ID:???] >>201 unsignedは符号ビットが必要なくなり、数値に1ビット多く使える。 ビット表現の勉強の必要がありますね。
203 名前:NAME IS NULL [2007/06/08(金) 23:05:19 ID:BCjwMJBL] >>202 signedにすると-まで使えちゃうってことですかね?
204 名前:NAME IS NULL [2007/06/08(金) 23:06:43 ID:BCjwMJBL] わかりました^^ ゼロでまえをうめちゃうって事ですね!!! すっきり!!!! ありがとうございました!!!!
205 名前:NAME IS NULL mailto:sage [2007/06/09(土) 15:19:20 ID:???] null値を置き換えたいのですが、どのようにすれば出来るでしょうか? データベースの中身はnullのままでいいのですが、 出力するときに別のものに置き換えたいのです。例えばハイフンなどに。 どなたかご教授お願いします。
206 名前:NAME IS NULL [2007/06/09(土) 15:42:04 ID:cEEGpgqw] >>205 ifnullやisnull関数使え
207 名前:NAME IS NULL mailto:sage [2007/06/09(土) 18:21:21 ID:???] >>205 ifnull, isnull, coalesce たんまり判定法はある。 そんなことより、興味があるのは、こういう人の行動パターン。 googleで「mysql null」で検索結果。 検索1件目から、ページ検索(ctrl-F)で「null」を実施。 5件目でズバリが出てきた。 今回のこの人は、最大の努力で、4件目から先は調べなかったことになる。 とりあえず、ググッたかどうか教えておくれ。
208 名前:205 mailto:sage [2007/06/09(土) 19:12:11 ID:???] >>206 , 207 昨日からグーグルで検索しまくっていますが、全然わからないのです。 nullを判定するのに isnull を使うことはわかっていたのですが、 それをどうやって置き換えるのかわからなかったのです。 質問の仕方がちょっと間違っていたようでした。 select * is null = '-' from table こんな感じでしょうか・・・わからないので助けてください。
209 名前:NAME IS NULL mailto:sage [2007/06/09(土) 19:15:30 ID:???] >>208 SQLのお勉強をもうちょっとちゃんとやりましょう。 そのSQL、文法的に間違ってるでしょうが。
210 名前:205 mailto:sage [2007/06/09(土) 19:18:44 ID:???] >>209 手元にmaysqlの本が一冊あります。 しかしどうしてもわからないのです。 勉強するにも期限は明日、仕事で必要なためどうしても解法が欲しいのです。 助けるとおもってお情けをお願いします。
211 名前:NAME IS NULL mailto:sage [2007/06/09(土) 19:25:23 ID:???] >>210 自分の仕事を他人に丸投げですか・・・ あきれて物が言えない
212 名前:NAME IS NULL mailto:sage [2007/06/09(土) 19:55:48 ID:???] select * is null = '-' うむ。これを見たら気の毒になってきた。 ひょっとして、ネタか。 つーか、ifnull使えと答えを書いてくれている。 isnullより、ifnull、coalesceを使え。
213 名前:NAME IS NULL mailto:sage [2007/06/09(土) 22:01:02 ID:???] 「SELECT datetime FROM test_;」 のようなSQL文を発行すると、「2007-06-09 21:59:20」 のようなデータが返って来ます。 これを、「2007/06/09 21:59:20」 のような形式にしたいのですが、良い方法は無いでしょうか? 教えていただけると幸いです。
214 名前:NAME IS NULL mailto:sage [2007/06/09(土) 22:14:49 ID:???] >>213 DATE_FORMAT()
215 名前:NAME IS NULL mailto:sage [2007/06/09(土) 22:20:25 ID:???] 初歩的な質問で申し訳ありません。 氏名_c | 体重_c | ------+-------+ 山田 | 50 | 田中 | 30 | 鈴木 | 45 | こんな表 (体重_t) があったとします。 一番重い体重を探したい時には、 SELECT MAX(体重_c) FROM 体重_t; でいけますが、 一番体重が重い人の氏名 (この場合 "山田") を求めたい場合には、 どういうSQL文を発行すればいいんでしょうか?
216 名前:NAME IS NULL mailto:sage [2007/06/09(土) 22:28:41 ID:???] >>215 サブクエリ
217 名前:213 mailto:sage [2007/06/09(土) 22:38:10 ID:???] >>214 ありがとうございます。 SELECT DATE_FORMAT(datetime_c, '%Y/%m/%d %H:%i:%S') as datetime FROM table_t; でいけました。
218 名前:NAME IS NULL [2007/06/09(土) 23:06:02 ID:vL4ozbLP] MySQL + PHP で掲示板を作っているのですが、分からないことがあります。 MySQLのSQL文中にPHPの変数を入れたいです。 こんなカンジ↓ $sql = "select count(*) from post2 where tid=".$row["id"]; これで実行してみるとResource id #4 Resource id #5 Resource id #6... といった結果が得られて思うような結果(掲示板のレス数)が得られません。 どのようにすればいいか教えてください。お願いします。
219 名前:NAME IS NULL mailto:sage [2007/06/10(日) 00:14:07 ID:???] >>218 ttp://pc11.2ch.net/test/read.cgi/php/1178955768/
220 名前:218 mailto:sage [2007/06/10(日) 00:22:42 ID:???] >>219 ありがとう・・・そっちに逝って来ます
221 名前:NAME IS NULL mailto:sage [2007/06/10(日) 00:25:47 ID:???] 次のようなSQL文があるとします。 SELECT ( SELECT COUNT(name_c) FROM foo_t; ) as name_c, ( SELECT COUNT(message_c) FROM foo_t; ) as message_c FROM hoge_t 【質問1】 このようにカラム名の部分に SELECT 文をいれる方法のことを何と呼ぶのでしょうか? (副問い合わせ?) 【質問2】 SELECT 文の中の SELECT 文の部分が2つありますが、両方とも同じテーブル foo_t を参照しています。 これだと効率悪いので、これをまとめて書くことはできないでしょうか? 例えば、 SELECT ( SELECT COUNT(name_c), COUNT(message_c) FROM foo_t; ) as name_c, as message_c FROM hoge_t みたいに書きたいのですが、エラーになってしまいます。
222 名前:NAME IS NULL mailto:sage [2007/06/10(日) 03:14:26 ID:???] >215 体重でorder byして1件目とかどう?
223 名前:NAME IS NULL mailto:sage [2007/06/10(日) 13:57:23 ID:???] >>221 SELECT COUNT(name_c), COUNT(message_c) FROM foo_t; じゃ、だめなの? 221のSQLは、hoge_tのレコード数 × 2つの数字を出力させるだけの意味なしSQL。 というか、へんなところにセミコロンがあるんでSQLですらない。 本での勉強や掲示板への質問も良いけど、自分でコマンド打たんと。
224 名前:221 mailto:sage [2007/06/10(日) 15:27:27 ID:???] >>223 回答ありがとうございます。 実際に使う時には、hoge_t の 5〜6個からデータを抜き出したいので、 "FROM hoge_t" の部分が必要だったんです。 もうちょっと色々試して勉強してみます。 ありがとうございました。
225 名前:NAME IS NULL mailto:sage [2007/06/10(日) 18:49:31 ID:???] すみません、nullを別なモノに置き換えて出力したいのですが、 次のようにやってもうまくいきません。 select coalesce(*, 0) from table; *が、ひとつの列ならうまくいくのですが、すべてを対象とした*だとエラーになります。 どうやればうまくいくのでしょうか?
226 名前:NAME IS NULL mailto:sage [2007/06/10(日) 19:18:22 ID:???] MySql初めていじったんだが insert文で複数レコード挿入できんのかよ? 気持ちわるい・・ insert into table values(), (), ()・・・
227 名前:NAME IS NULL mailto:sage [2007/06/10(日) 19:18:56 ID:???] >>225 都合よく考えないで、coalesceとは何か?というのを調べて。 調べてMySQLの仕組みに沿ったSQLを作ってください。
228 名前:NAME IS NULL mailto:sage [2007/06/10(日) 19:27:25 ID:???] なぜここの連中は解法をひとつ教えれば済むことに 一々難癖をつけて答えないのか? 一度答えを教えてくれさえすればすぐに質問者は消えるし、みんなにとって有意義であることは間違いない。 文句だけ言って何も答えない輩は立ち去って欲しい。
229 名前:NAME IS NULL mailto:sage [2007/06/10(日) 19:27:55 ID:???] >>226 気持ちよくなる前に抜けた方がよい。 漏れは既に抜け出せん。 insert & selectを union allして繋げるなんて嫌だ。
230 名前:NAME IS NULL mailto:sage [2007/06/10(日) 19:37:13 ID:???] >>226 バルクインサート、サポートされてなかった?
231 名前:NAME IS NULL mailto:sage [2007/06/10(日) 20:01:24 ID:???] >>228 なんで人の仕事の解法を手取り足取り丁寧に教えてやらなきゃならないんだ。 上のレスをちゃんと見返せば解法のヒントが書いてあるというのに。 それを読もうともせずに、「とっとと答えだけ教えろよ」的な ことを無遠慮に言う奴こそ立ち去って欲しい。
232 名前:NAME IS NULL mailto:sage [2007/06/10(日) 20:17:05 ID:???] 結局、辞書代わりなのさ。俺らは。訊かれたら答えてりゃ良いんだよ。 どうせ、質問に答えて虚栄心を満たしたいだけなんだろう。 神!とか言われたいんだろう。俺らは。 Oracleは知らないんだろ? ちゃいまっせ。 せっせ。
233 名前:NAME IS NULL mailto:sage [2007/06/11(月) 00:08:11 ID:???] >>228 教えてるジャン。親切に。 つーか、質問するときは あらかじめ自分で答えを考えておいて YesかNoで 答えられるようにするか、 ヒントだけもらえるように 工夫するか のどっちかなんだよ。
234 名前:NAME IS NULL mailto:sage [2007/06/11(月) 00:39:44 ID:???] 答えがわかっていればそのままズバリ言えば済む問題 わかっていても言わないのは色々なものが小さい 1.人間的に小さい 2.器量が小さい 3.声が小さい 4.ティムポが小さい 5.視野も小さい ほかなんかある?
235 名前:NAME IS NULL mailto:sage [2007/06/11(月) 02:47:20 ID:???] >>234 簡単に答えだけを教えてあげるような人は 相手を思いやる心、成長を願う心 が小さいかな。 ちょっとしたきっかけを与えるに留めるのが 人間的に一番大きい人
236 名前:NAME IS NULL mailto:sage [2007/06/11(月) 02:48:56 ID:???] googleで最初の数ページに答が出てくるような それでいて それだけでは決して全ての解答にはならない そんなレスが一番もらって嬉しいし楽しい
237 名前:NAME IS NULL mailto:sage [2007/06/11(月) 03:43:43 ID:???] 俺の場合、その日の気分で ヒントを教える時とぐぐれかすを使い分けてる。
238 名前:NAME IS NULL mailto:sage [2007/06/11(月) 03:56:40 ID:???] 俺の場合、聞かれてもないのに教えまくる
239 名前:NAME IS NULL mailto:sage [2007/06/11(月) 05:22:08 ID:???] 小銭をくれよ、という見知らぬ人に会った気分。 で、断ったら捨て台詞を言われたときの気分。>>234
240 名前:NAME IS NULL mailto:sage [2007/06/11(月) 06:11:39 ID:???] >>239 わかる気がする。 小銭を持っていればそのままズバリ渡せば済む問題 持っていても渡さないのは色々なものが小さい 1.人間的に小さい 2.器量が小さい 3.声が小さい 4.ティムポが小さい 5.視野も小さい ほかなんかある? きっと>>234 は街中で寄付しまくりなんだろうな。
241 名前:NAME IS NULL mailto:sage [2007/06/11(月) 06:55:07 ID:???] 盛り上がってる、 と思ったら、これかい。
242 名前:NAME IS NULL mailto:sage [2007/06/11(月) 08:53:31 ID:???] 「よお、おっさんちょっと小銭恵んでくんね?」 「いや、ちょっと持ち合わせが無い。金ならそこでバイトを募集している。働けば小銭くらいにはなるぞ。」 「そんなタリーことやってられるかよ。なんだよ。このケチ、貧乏人。死んじまえ!」 まあ、こんなところか?
243 名前:NAME IS NULL mailto:sage [2007/06/11(月) 09:04:38 ID:???] >>242 おっさんの最初の台詞はいらないよ。
244 名前:NAME IS NULL mailto:sage [2007/06/11(月) 09:53:19 ID:???] そのおっさんが、この後オヤジ狩りに合おうとは!
245 名前:NAME IS NULL mailto:sage [2007/06/11(月) 10:27:52 ID:???] >>244 そのおっさんが空手の有段者だったとは!・・・・ってつまらん。 ところであるところにMySQLは5000万件でも大丈夫って書いてあったけど、 そんな実績あるのかいな?
246 名前:NAME IS NULL mailto:sage [2007/06/11(月) 14:54:51 ID:???] >>245 んなもんいくらでもあるだろ
247 名前:NAME IS NULL mailto:sage [2007/06/11(月) 18:35:01 ID:???] >>225 coalesceでnullになり得るカラムを1つずつ設定するのが正解だが、coalesceは スペルが難しいし(関係ない)カラムの初期値を設定して既存のnullを更新しちゃうとか、 caseを使うとかはどうか?
248 名前:NAME IS NULL mailto:sage [2007/06/11(月) 19:11:21 ID:???] > update config set value='aa' where key='XXXXXXXXXX'; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key='XXXXXXXXXX'' at line 1 これってMySQLのバグですか? mysql> desc config; +-------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+-------+ | key | varchar(255) | NO | PRI | | | | value | text | NO | | | | | description | varchar(255) | NO | | | | +-------------+--------------+------+-----+---------+-------+ OS: Fedora Core MySQL: 5.0.37-log Source distribution Java: 1.5.0_11 Tomcat: 5.5.23
249 名前:248 mailto:sage [2007/06/11(月) 19:36:00 ID:???] ひとまず代替案できりぬけました。 key= を CONVERT( `config`.`key` USING utf8 ) = とすれば大丈夫でした。 なぜだかわかりませんが、hibernateを使っているのでどうにもならないんでSQLで実行するようにしました。 ありがとうございました。
250 名前:NAME IS NULL mailto:sage [2007/06/11(月) 23:55:25 ID:???] 単に key を `key` と書けば良くね?
251 名前:NAME IS NULL mailto:sage [2007/06/11(月) 23:56:47 ID:???] >>250 俺も思った 単にkeyが予約語なだけじゃないのかね?
252 名前:NAME IS NULL [2007/06/12(火) 21:20:58 ID:gRZ6KvS4] 質問スレが見当たらないので、こちらに書かせて頂きます。 間違えて、テーブルをdropしてしまったのですが、 ib_logfile0、ib_logfile1、ibdata1等から、 テーブルを復旧する方法があれば、ご教授頂けないでしょうか? 宜しくお願いします。
253 名前:NAME IS NULL mailto:sage [2007/06/13(水) 01:48:06 ID:???] MySQL 5.0.41 Tomcat5.5.23 Connector/J 3.0.6 上記の環境なのですが、TomcatでInitialContextからlookupすると下記のエラーが発生します。 Server connection failure during transaction. Attemtped reconnect 3 times. Giving up. 別のマシンに同環境・同設定で問題無く接続とDB操作ができるのですが、 サーバマシンでは何故か上記のエラーが出てしまいます。 どなたか回避策をご存知ではないでしょうか?
254 名前:NAME IS NULL mailto:sage [2007/06/13(水) 02:54:49 ID:???] _-─_- 、 // ___vヘ / i' '´ i i i V' ヘ-‐勹 `ヽ | i/i l l l v小 ̄ `ヽ ' | i! l l _L -≦ i! |_ハ 'ようわからんのぅ 仁二| l斗‐< == j从 }}__ わからぬことだらけじゃ !| lヘ z≠ ムィ'7⌒丶、 . j从乂ヽ _ /| | | `丶、 / r<  ̄|\__'´_ ィ | | |_ 〉 / l/ \| | ー_ 二「`|只  ̄〉 / / / , 「`| ̄ | ト、 ヽ. / , ′ . / / /-| ト、 | |'^ヽ ∨ / __ / / /丶| l \_,ニ-‐'j乂 V 'ー¬二 ̄ / ̄ . / / / 从ハ、 \ / / / _ 二7 / / / /\ \ / 〈 \/ ̄ _/
255 名前:NAME IS NULL mailto:sage [2007/06/13(水) 06:46:02 ID:???] >>252 mysqlbinlog
256 名前:252 mailto:sage [2007/06/13(水) 09:22:32 ID:???] >>255 ありがとうございます。 「〜-bin.xxxxx」と言う形のバイナリログは作っておらず、 mysqlbinlogでは不可能でした…
257 名前:NAME IS NULL mailto:sage [2007/06/13(水) 11:26:41 ID:???] >>252 データディレクトリにあった "テーブル名.*" を削除ファイルを復活させるソフト とかで救い出すしかないな。 削除後、ファイルに書き込みが続くと削除領域が食いつぶされて復活できない ケースが多いが。
258 名前:NAME IS NULL mailto:sage [2007/06/13(水) 11:30:02 ID:???] >>253 iptablesかな・・
259 名前:257 mailto:sage [2007/06/13(水) 12:08:26 ID:???] >>257 ありがとうございます。 復元ソフトの体験版を使用して試してみようと思います。
260 名前:252 mailto:sage [2007/06/13(水) 12:16:21 ID:???] すみません、名前間違いました。 252です。
261 名前:252 mailto:sage [2007/06/13(水) 13:08:25 ID:???] 試しに、InnoDBでテーブルを作成、 テーブル名.frmをコピーし、テーブルをdrop、 その後コピーしたfrmファイルを戻し、 select文を実行したところ、 ibdファイルが開けないと言われました。 frmのコピーを行った際には、 ibdファイルは存在しなかったのですが… どうすれば正常に元に戻るのでしょうか?
262 名前:NAME IS NULL mailto:sage [2007/06/13(水) 15:44:49 ID:???] >>261 そりゃ、innodb_file_per_tableがOFFになってるから。
263 名前:NAME IS NULL mailto:sage [2007/06/13(水) 16:10:51 ID:???] >>261 つか、frmとibdだけじゃ、むりだろ。大元のibdataのバックアップ戻しが必要。
264 名前:248 mailto:sage [2007/06/13(水) 16:33:31 ID:???] >>250 >>251 確かにその通りでした。 設定ファイルにカラム名を`key`として偽装すれば対応できました。 <id name="key" column="`key`" type="string" > ありがとうございました。
265 名前:NAME IS NULL mailto:age [2007/06/13(水) 19:45:17 ID:???] select `hoge` FROM `hoge_tbl`; この時、`hoge`の値が 「あ」 じゃないときは 「ほげ」を返して欲しいのですがどのようにすればいいでしょうか?
266 名前:NAME IS NULL mailto:sage [2007/06/13(水) 20:04:41 ID:???] >>265 select `hoge` FROM `hoge_tbl` where ○○○○; ○○○○のところは自分で考えてね。
267 名前:NAME IS NULL mailto:sage [2007/06/14(木) 00:01:00 ID:???] 2次元のテーブルの要素を1セルずつ持っているテーブルがあります。 構造は、id int, col int, value int; の3つのカラムを持っています。 idは行番号、colは列番号で、valueには、その行・列の値が入っています。 このテーブルから、 id, value0, value1, value2, ... , valueN (Nはcolの最大値) というように、 2次元のテーブルを素早く得たいときの定石があれば、教えていただけませんか? Nの値を類推して、多重に join をするぐらいしか思いつきませんので、 えらい人おしえてください。
268 名前:253 mailto:sage [2007/06/14(木) 01:06:47 ID:???] FW関係を見ても問題無さそうだったので、Connectorのバージョンを上げさせてもらいました。 Connector/J 3.0.17にしたら問題無く接続できました。 同環境別PCだと駄目な理由が分かりませんが、とりあえず回避できたのでこれで良しとします。 スレ汚し申し訳ありませんでした。
269 名前:NAME IS NULL mailto:sage [2007/06/14(木) 05:36:53 ID:???] >>267 >2次元のテーブルを素早く得たいと 1,A,B,C 2,E,F,G 3,H,I,J つー並びで表示したいってこと? 手法によってはバージョン縛りあり。
270 名前:NAME IS NULL mailto:sage [2007/06/14(木) 07:40:22 ID:???] >>265 select if(hoge='あ',hoge,'ほげ') from hoge_tbl;
271 名前:NAME IS NULL mailto:sage [2007/06/14(木) 08:21:54 ID:???] >>269 はい、 id, col, value 1, 1, 10 1, 2, 20 1, 4, 30 2, 2, 40 というデータから id, value1, value2, value3, value4 1, 10, 20, null, 30 2, null, 40, null, null というテーブルを得たいんです。 ( 歯抜けの部分は null でも 0 でも良いです。 ) バージョンは、MySQL 5.0.22 を使っていますが、 もっと新しい物に良い手法があるなら、変えても良いです。
272 名前:NAME IS NULL mailto:sage [2007/06/14(木) 09:01:29 ID:???] >>271 nullありなら、言う通りで結合しなきゃむり。 無いものはselectできない。 存在するデータだけでよいならgroup_concatで括る。 >歯抜けの部分は null でも 0 でも良いです。 なら、自分でデータを補完する仕組みを作る。 もしくは呼び出しアプリ側で補完。
273 名前:NAME IS NULL mailto:sage [2007/06/14(木) 12:02:11 ID:???] >>272 かなり希望に近いです。 なんとか歯抜けを処理できないかな。 昨日5.1の英語マニュアルを読んでいたら、 5.1の日本語マニュアルがまだ完全ではないものの公開されていました。 これまで 4.1 しか日本語になってなかったので、これはうれしいですね。
274 名前:NAME IS NULL [2007/06/14(木) 12:05:02 ID:SdR9kA2a] >>272 select id,GROUP_CONCAT(CONCAT(col,':',value) ORDER BY col) from table group by id; こんなかんじでデータを取得した後、クライアントで分解すれば、なんとかなりますね。 ありがとうございました。
275 名前:NAME IS NULL mailto:sage [2007/06/14(木) 13:22:24 ID:???] >>274 一応解決っぽいんですけど、GROUP_CONCAT でなく、 create table <name> as select 〜〜〜 って形で2次元tableを作る方法があれば、引き続きお願いします。
276 名前:NAME IS NULL mailto:sage [2007/06/14(木) 14:02:58 ID:???] で、2次元テーブルにしないといけないわけ? どうせアプリで取り込んでから、その様な処理や 表示するわけでしょ? 別に1次元縦並びで、idでソートしてすりゃいいじゃん。
277 名前:NAME IS NULL [2007/06/14(木) 14:12:35 ID:SdR9kA2a] >>276 もちろんそれでもいいのですが、SQL内で view を定義できたりすると、 より便利なので、できるとうれしいです。 そういう技があれば知っておきたいですし。 もちろん、group_concat でも表示などには困らないし、とても感謝しています。
278 名前:NAME IS NULL mailto:sage [2007/06/14(木) 14:25:41 ID:???] >>275 結局、selectするんだから、nullを入れなければならんしょ。 select id,max(c1),max(c2),max(c3),max(c4) from (select id,if(col=1,val,null)c1,if(col=2,val,null)c2,if(col=3,val,null)c3,if(col=4,val,null)c4 from t)t group by id; けどさ。 むりくり、SQLでやるより、アプリ側でやったほうが絶対的にはやい。 上記のSQL(ひどいけど)をexplainしてみたら、ひっくりかえる。 所詮DBは入れ物なんだから、出し入れが速ければよいと思う。
279 名前:NAME IS NULL mailto:sage [2007/06/14(木) 14:28:07 ID:???] >>278 >でもさ 他の人が指摘してたね。 知識と実践は異なるから、理解できる。 スマソ。
280 名前:269 mailto:sage [2007/06/14(木) 15:51:57 ID:???] >>278 はい、今の実装では必要はないのですが、 こういう要求は結構多いので、なにか定石的な技があれば知りたいな、とおもったわけです。 あと、何度が sageるの忘れてました。すみません。
281 名前:NAME IS NULL mailto:sage [2007/06/14(木) 22:11:08 ID:???] >>280 アプリ側で対応が定石じゃね?
282 名前:NAME IS NULL mailto:sage [2007/06/15(金) 06:42:28 ID:???] 答えだけ求める香具師は有料サポートでも使えばいいじゃん。 無料で訊いてるくせに、答える内容の文句言うな。
283 名前:NAME IS NULL mailto:sage [2007/06/15(金) 10:10:13 ID:???] >>280 技とかそんなのからいきなり入ったって…。 これはそもそもが、そんな表を念頭に置いてないテーブルを 無理矢理そうした所で、スピードも遅いし技術的に意味もない。 やりたいのであれば、テーブル設計から全て変更して、 SQL時点で負荷をかけない様にするべき。
284 名前:NAME IS NULL mailto:sage [2007/06/15(金) 11:35:31 ID:???] 結構上司が帳票を出せ、とか言ってくるんじゃないの? 不得手な人はデータベース≒エクセルのセルみたく考えているから、こういう要求も実は多い。 そういう職場に居る不幸な人をあんまり責めるんぢゃないよw 特に280は、マニュアルも読んでいるみたいだし、頭空っぽ宿題おせーて君とは違うっぽ。
285 名前:NAME IS NULL mailto:sage [2007/06/16(土) 00:21:10 ID:???] むしろ、そういう要求をうまく処理するのがDBで飯食ってるプロの腕の見せ所だと思うが。 出来ませんって言うだけなら、素人でも出来るよ。 表作りながら、こういう要求来そうだなとイメージできないとプロとは言えないよ。 mysqlはオープンソースだから、力技でソースに機能追加も出来る訳だし。
286 名前:NAME IS NULL mailto:sage [2007/06/16(土) 02:05:04 ID:???] API側で最適化するような奴にDB屋さんを自称して欲くないね。
287 名前:NAME IS NULL mailto:sage [2007/06/16(土) 07:50:14 ID:???] 俺は272,278,279のヒドイSQLを書いた者ですけど。 285,286なら、今回の271,275の疑問をどのようなSQLを書いて解消しますか?
288 名前:NAME IS NULL mailto:sage [2007/06/16(土) 10:26:04 ID:???] 見せてもらおうか、プロな腕の表作りとやらを
289 名前:NAME IS NULL mailto:sage [2007/06/16(土) 11:18:58 ID:???] APIというより、mysqld内部な。ヲレSQLにして組み込んでもいい訳だし。 create2dとかつくればよろし。
290 名前:NAME IS NULL mailto:sage [2007/06/16(土) 11:28:56 ID:???] で、「API側で最適化するような奴」って何?
291 名前:NAME IS NULL [2007/06/17(日) 11:25:00 ID:7X42UV05] いろいろとググってみたのですが、見つからなかったので質問します。 WHERE節で「@(アットマーク)」を使用したいのですが、どのようにしたらいいのでしょうか? 具体的には、テーブルからメールアドレスが該当するデータを抽出したいのです。 SELECT * FROM テーブル名 WHERE email = 'test@test.com' のようなSQL文で試したのですが、どうも「@」が入っていると上手く抽出できないようです。 基本的なことなのかも知れませんが、「@」や「アットマーク」で検索しても、求める情報にめぐり合えませんでした。orz よろしくお願いします。
292 名前:NAME IS NULL mailto:sage [2007/06/17(日) 11:38:48 ID:???] >>291 当方普通に結果を選択できますが WindowsXP + MySQL5.0.37 select * from テーブル名 を行った結果、本当にemailフィールドに文字列 「test@test.com」が入ってる?
293 名前:NAME IS NULL mailto:sage [2007/06/17(日) 13:41:37 ID:???] >>292 お返事ありがとうございます。 きちんと入っているのですが、抽出できませんでした。 XSASを使ってローカルで試したのですが、環境は WindowsXP Apache updated to 2.0.54; MySQL updated to 4.0.26; PHP updated to 4.3.11; です。 使用するサーバで試したところ、無事に抽出できましたので、とりあえずは解決というか、何と言うか。
294 名前:NAME IS NULL mailto:sage [2007/06/17(日) 16:33:04 ID:???] phpmyadminでrootユーザーでのログインを禁止したいのですが そのような設定は可能でしょうか?
295 名前:NAME IS NULL mailto:sage [2007/06/17(日) 18:05:16 ID:???] >>294 君の質問文よか、検索ワードの方が短い。 「phpmyadmin rootユーザー ログイン 禁止」 さあ、ググレ。
296 名前:NAME IS NULL mailto:sage [2007/06/17(日) 18:29:57 ID:???] mysqlヴァージョン5でストアードプロシージャ一覧を見る方法 を教えてください
297 名前:NAME IS NULL mailto:sage [2007/06/17(日) 18:47:24 ID:???] >>296 そういうのはmysqlデータベースの表に格納されている。 select type,name from mysql.proc;
298 名前:NAME IS NULL mailto:sage [2007/06/17(日) 19:01:53 ID:???] ありがとうごさいます↑
299 名前:NAME IS NULL mailto:sage [2007/06/17(日) 23:05:02 ID:???] >>298 SHOW PROCEDURE STATUS; SHOW FUNCTION STATUS; こちらの方が一般的らしい。
300 名前:NAME IS NULL mailto:sage [2007/06/18(月) 23:10:47 ID:???] >>287 私の何気ない書き込みが波紋を広げてしまいました。 m(_ _)m 2chらしい精神論もいいのですが、私も具体的なテクニックが聞きたかったです。 (emacsスレみたいな雰囲気になるとイイですね。) 仕事でさわり始めたSQLですが、少し慣れてくるととても奥が深いですね。 プロのみなさんには当たり前のことかもしれませんが、 クエリやキーなどのちょっとした工夫で性能が劇的に上がったり、 フロントエンドの大幅な省力化が出来たりと、感動の連続です。
301 名前:NAME IS NULL mailto:sage [2007/06/19(火) 11:45:08 ID:???] >>300 で、結局どうやった?
302 名前:NAME IS NULL mailto:sage [2007/06/19(火) 16:25:09 ID:???] >>301 group_concat 作戦を使いました。 仕事の合間にいろいろ調べてますが、今のところこれ以上のTIPSは見つかりませんねー。 全然関係ないけど、MySQL 5.1 の partitioning がなかなかおもしろそう。 はやく5.1の安定リリースがでないかな。
303 名前:NAME IS NULL mailto:sage [2007/06/19(火) 17:05:36 ID:???] >>302 278だが、俺の書いたNULLを入れられるSQLの方はどう? まとめたやつ。 select id, max(if(col=1,val,null))c1, max(if(col=2,val,null))c2, max(if(col=3,val,null))c3, max(if(col=4,val,null))c4 from t group by id; こいつをcreate and select mysql> create temporary table temp_t -> as -> select id, -> max(if(col=1,val,null))c1, -> max(if(col=2,val,null))c2, -> max(if(col=3,val,null))c3, -> max(if(col=4,val,null))c4 -> from t group by id; Query OK, 2 rows affected (0.16 sec) レコード数: 2 重複数: 0 Warnings: 0 mysql> select * from temp_t; +------+------+------+------+------+ | id | c1 | c2 | c3 | c4 | +------+------+------+------+------+ | 1 | 10 | 20 | NULL | 30 | | 2 | NULL | 40 | NULL | NULL | +------+------+------+------+------+ 2 rows in set (0.00 sec)
304 名前:NAME IS NULL mailto:sage [2007/06/19(火) 19:42:23 ID:???] でた!テンポラリ攻撃!
305 名前:NAME IS NULL mailto:sage [2007/06/19(火) 20:03:30 ID:???] >>304 めんどくせぇな。 275の質問があって、303があるんだよ。 temporaryにしたのは、俺がdropコマンド打たなくてもすむだろ。 drop table temp_t; ココで書いちまったじゃねぇか。
306 名前:NAME IS NULL mailto:sage [2007/06/19(火) 22:20:21 ID:???] bind-address 設定するのって常識か?
307 名前:302 mailto:sage [2007/06/20(水) 00:48:36 ID:???] >>303 colの最大値を知った上でクエリを作らないといけないけど、 出力形式は理想の形です! 数十万しかデータがないので、呼び出しもそれほどかかりませんし。 次の設計の時は提案してみようかな。 ( えらい同僚に怒られるかもしれないけど、そんなの平気! )
308 名前:NAME IS NULL mailto:sage [2007/06/20(水) 03:03:47 ID:???] 見える、見えるぞ! 1ヶ月後、その同僚がここでそのやりかたを質問しているレスが!
309 名前:NAME IS NULL mailto:sage [2007/06/20(水) 06:47:08 ID:???] 偉いのに同僚? 同僚が変な表を作って困っています。どうやって辞めさせればいいでしょうか? 負荷がかかるから辞めろと採算逝っても訊いてくれません。orz って感じ?
310 名前:NAME IS NULL mailto:sage [2007/06/20(水) 07:07:23 ID:???] >>303 sum(if(col=0,value,0)) にすると、null じゃなく 0 で埋められますね。 なかなかイイ!
311 名前:NAME IS NULL mailto:sage [2007/06/20(水) 08:52:06 ID:???] >>310 最初の用件>>271 がNULLを埋めたい、つーことだった。でnull。 俺の考えじゃないよ。
312 名前:NAME IS NULL mailto:sage [2007/06/20(水) 22:33:01 ID:???] MySQLのコマンドラインクライアントからなら問題無くUPDATEできるのですが、 TOMCAT5.5とコネクタ5を使ってUPDATEしようとしてもUPDATEされません。 SELECTは出来ているのですが、、、 何か設定とか必要でしょうか?
313 名前:312 mailto:sage [2007/06/20(水) 22:35:34 ID:???] すいません、解決しましたorz 誰かがcontext.xmlにdefaultAutoCommitをfalseにしてました。。。 スレ汚し失礼しました。
314 名前:NAME IS NULL mailto:sage [2007/06/21(木) 12:00:03 ID:???] 使わなくなったカラムは削除するべきですか? それとも使わなくなったものは削除フラグだけたてとくべきですか? データ削除した時に番号に穴があくのが気になります。
315 名前:NAME IS NULL mailto:sage [2007/06/21(木) 12:23:34 ID:???] 復元する必要が無ければ削除
316 名前:NAME IS NULL mailto:sage [2007/06/21(木) 13:45:01 ID:???] >>314 質問1: カラムとロウ、列と行を言い(書き)間違えてない? 質問2: 番号に穴があくとなんか不都合でもあるの?
317 名前:NAME IS NULL [2007/06/21(木) 13:58:28 ID:/r3UPCk3] レプリケーションに関して質問です。 1. データディレクトリごとバックアップ 2. マスタから特定のテーブルをtruncate 3. バックアップからリストア(データディレクトリにバックアップを上書き) この状態だとマスタは正常にリストアされますが、スレーブ側で truncateしたテーブルがないとエラーが出ます マスタ側でtruncateしたテーブルをdropして再作成すると直るんですが、 良いリストア方法はないでしょうか? データ量が多いので、hotcopyやmysqldumpは使えないです。
318 名前:NAME IS NULL mailto:sage [2007/06/21(木) 15:11:54 ID:???] >>317 reset slave
319 名前:NAME IS NULL mailto:sage [2007/06/21(木) 16:06:15 ID:???] reset slaveだと全体のリカバリになってしまいますよね。 他にやるとしたらやはりbinlogから手動復旧しかないのでしょうか。
320 名前:NAME IS NULL mailto:sage [2007/06/21(木) 16:34:50 ID:???] >>317 3の後、スレーブ側でのリストアを行わないのは何故でしょうか? ちなみにバージョンと下記パラメータ設定値を教えてください。 innodb_support_xa sync_binlog innodb_safe_binlog
321 名前:NAME IS NULL [2007/06/21(木) 17:10:06 ID:yai2bY76] 質問です。 商品のマスタテーブル id name 1 大根 2 人参 3 豆腐 と 商品に関するキーワードテーブル(それぞれのレコード数は非固定) id keyword 1 野菜 1 国産 2 外国産 3 特価 3 国産大豆使用 3 健康 があり、ユーザがWEBサイトにて半角スペース区切りで入力した複数のキーワードに and検索で完全一致した結果を表示したいのですが、上手いSQLが思いつかず悩んでいます。 皆さんならどうされますか?
322 名前:NAME IS NULL mailto:sage [2007/06/21(木) 17:17:25 ID:???] >>321 条件数分のサブクエリでも連鎖させときなさい
323 名前:NAME IS NULL mailto:sage [2007/06/21(木) 17:30:46 ID:???] ヒット数と入力キーワードの総数を比較するとかどうかしら?
324 名前:NAME IS NULL [2007/06/21(木) 17:45:44 ID:yai2bY76] >>322 絞り込んで、絞り込んで、という感じですね。 参考になります。 >>323 なるほど、or検索でヒットしたレコードをgroup by idにしてcount(id)すると。 SQLがシンプルでよさげです。 さっそく試してみます。ありがとうございました。
325 名前:317 mailto:sage [2007/06/21(木) 18:09:59 ID:???] >320 すいません抜けてましたが、3の後にスレーブで「テーブルがないよ」的な エラーがでるので、skip_counter+1してます。 バージョンは4.1(myisam)なので下記パラメータのみ設定してます。 sync_binlog = 0 #速度優先なので やりたいことは、1テーブルのみデータ更新に失敗した場合、迅速に リストアする方法が知りたいです。(スレーブ側も同期を取りたい)
326 名前:NAME IS NULL mailto:sage [2007/06/21(木) 22:19:07 ID:???] slave側にもマスタの全データを入れて CHANGE MASTER TO から設定して やんないと出来なくないか。
327 名前:NAME IS NULL mailto:sage [2007/06/22(金) 01:42:53 ID:???] >>325 知っているかもしれんが、www.mysql.gr.jp/ 場末の掲示板でするような質問でないかもしれん。 由緒正しいMySQL掲示板へ行って質問しなおしたほうがよいかも。 ちゃんと名乗るんだでw
328 名前:NAME IS NULL mailto:sage [2007/06/22(金) 02:01:24 ID:???] そして何よりも 速さが足りない
329 名前:NAME IS NULL mailto:sage [2007/06/24(日) 08:57:16 ID:???] 萌えすきゅーえる
330 名前:NAME IS NULL mailto:sage [2007/06/24(日) 16:05:52 ID:???] phpMyAdmin と GUI Tools両方ともインスコしてみたんだけどさ、 MyAdminの方がいいとこってなに? ブラウザで使えるってことだけ?
331 名前:NAME IS NULL mailto:sage [2007/06/24(日) 16:37:35 ID:???] GUI ToolsはWin限定じゃん。
332 名前:NAME IS NULL mailto:sage [2007/06/24(日) 18:01:45 ID:???] >>330 phpMyAdminとQueryBrowser(以下QB)の比較ってこと? phpMyAdminの方が表定義など変更がちょっとだけ楽だな。 例えば、フィールドタイプなどを変更するときに、Typeのリストが出るので選ぶことができる。 一方、QBの方はリストは出ない。 QBは、日本語表示に弱い。 SQLに日本語は表示することはできるけど、なんか見づらい。 経験則だけど、日本語あり(カラム名でない)のSQLを書いていると突然落ちたりする。 それは、一回や二回でない。 phpの方があまり日本語で困ったことはないかな。
333 名前:NAME IS NULL mailto:sage [2007/06/24(日) 18:52:52 ID:???] セマフォって何ですか?
334 名前:NAME IS NULL mailto:sage [2007/06/24(日) 19:08:00 ID:???] おまえのかぁちゃんセーマーフォー
335 名前:NAME IS NULL mailto:sage [2007/06/25(月) 03:43:03 ID:???] PerlかPythonかRubyか、PHP以外で書かれたphpMyAdminみたいなのありますか?
336 名前:NAME IS NULL mailto:sage [2007/06/25(月) 04:40:57 ID:???] クライアントが Windows でサーバが Debian だと コネクション貼るだけだったりクエリを叩くだけで数秒かかります (クエリの実行時間は数ミリ秒で完了) サーバを Windows にすると即応答が返ってきます Debian で動作している SSH 等の接続の応答は問題なしです 同じ現象の方っています? Windows - Query Browser 1.2.12 Debian - MySqlServer 5.0.32 Windows - MySqlServer 5.0.41
337 名前:NAME IS NULL [2007/06/25(月) 09:34:03 ID:Zjd7F7GG] 質問です。 1件の得意先情報を抽出するために得意先テーブルと 9つのテーブルと結合する必要があります。 PHPでプログラムを書いています。 1、left join等を使用し9つのテーブルを結合し一つのsql文で結果を得る方法 2、まず、得意先テーブルの値を抽出し、その結果を元に他の9つのsql文にて他テーブルの値を得る方法 のどちらがパフォーマンス的にいいでしょうか? よろしくお願いいたします。
338 名前:NAME IS NULL [2007/06/25(月) 12:25:45 ID:+ngh1xNX] 再起動の方法について教えてください。 Redhat使っているんですが。 /etc/rc.d/init.d/ にmysqlがないんです。 こういう場合はどこから再起動かけるんでしょうか?あとなぜ無いんでしょうか? お分かりできるかたお願いいたします。
339 名前:NAME IS NULL [2007/06/25(月) 12:53:22 ID:+ngh1xNX] >>338 自己解決しました
340 名前:NAME IS NULL mailto:sage [2007/06/25(月) 13:36:58 ID:???] XAMPP Liteを使ってみたところ、innoDBがデフォルトでは使用できないようになっているのですが、 これにはどういう理由が考えられるのでしょうか? また、innoDBでテーブルを作成したところ、 その後、テーブルにカラムを追加等の処理に数十秒時間がかかったりするのですが、 それはフラッシュメモリへのアクセス速度等が理由となるのでしょうか? どなたかご存知の方教えてください。
341 名前:NAME IS NULL mailto:sage [2007/06/25(月) 14:29:38 ID:???] 質問ばっかだけど。 回答うけとって、どうだったとか、 自己解決でも解決したら、自分はこう解決したみたいなやつ、書いてくれよ。 こんなスレで、回答する気にならんよな。
342 名前:NAME IS NULL [2007/06/25(月) 15:47:04 ID:DgJUlJQr] MySQL、4.1以降日本語の自動変換処理による文字化け問題あり、それを日本国内向け にソース手入れしたMoSQL(萌えSQLと呼ぶ)を発表、ダウンロード開始。 MoSQL.jp/
343 名前:NAME IS NULL mailto:sage [2007/06/25(月) 16:36:28 ID:???] >>335 MySQL GUI管理ツール でググレ。
344 名前:NAME IS NULL mailto:sage [2007/06/25(月) 16:38:36 ID:???] >>336 F/Wかも iptablesを止めてみたら。
345 名前:NAME IS NULL mailto:sage [2007/06/25(月) 16:53:21 ID:???] MoSQL スレまだー?
346 名前:NAME IS NULL mailto:sage [2007/06/25(月) 22:47:37 ID:???] >>336 DNSかも。mysqld に --skip-name-resolve つけてみては?
347 名前:336 mailto:sage [2007/06/25(月) 22:57:58 ID:???] >>346 ビンゴでした。 IPアドレス直で接続してるのに/(^o^)\ 解決しました。ありがとうございました。 >>344 さんもありがとうございました。
348 名前:NAME IS NULL mailto:sage [2007/06/25(月) 23:23:06 ID:???] >>347 ___ / ̄ /\ / - /,- | |( (■) ll (◎ ) (6 、_,/ , ヽ | | /ヽ(__(_ノ)、ノ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |, ( 'ー─一ノ|< 逆引きしたんだよ ホスト名を・・・ \λ_ ⌒ ,ノ \______________
349 名前:NAME IS NULL mailto:sage [2007/06/26(火) 04:02:51 ID:???] 「MySQL,PostgreSQLとFirebirdの性能をユーザー会メンバーが徹底比較,判明した"意外な結果”」---OSC2007.DBより itpro.nikkeibp.co.jp/article/NEWS/20070624/275673/?ST=middleware
350 名前:NAME IS NULL mailto:age [2007/06/26(火) 15:58:44 ID:???] INSERTの際、(`number`値のMAX+1)を入れたいのですが一クエリで実行可能でしょうか? `number`はユーザー毎のユニーク数字のためauto_incrementにはできません。 一応、テーブルも書いておきます。 CREATE TABLE `hoge_tbl` ( `auto_seq` int(11) unsigned NOT NULL auto_increment, `user_seq` int(11) unsigned NOT NULL, `msg` text, `number` tinyint(4) unsigned NOT NULL, PRIMARY KEY (`auto_seq`), INDEX (`user_seq`), INDEX (`number`) ) TYPE=MyISAM DEFAULT CHARSET=ujis;
351 名前:NAME IS NULL mailto:sage [2007/06/26(火) 16:41:07 ID:???] サブクエリを使えば可能です。
352 名前:NAME IS NULL mailto:sage [2007/06/26(火) 20:16:16 ID:???] > `number`はユーザー毎のユニーク数字のためauto_incrementにはできません。 ?どうして auto_increment を使えないの?
353 名前:NAME IS NULL mailto:sage [2007/06/26(火) 21:14:47 ID:???] >>350 `auto_seq`と`number`の違いが激しく謎。
354 名前:NAME IS NULL mailto:sage [2007/06/26(火) 21:17:15 ID:???] >>352 そうだよな。auto_increment使えばいいじゃん。 unique indexでも問題ないよ。 なんか問題があるなら、おせーて。
355 名前:NAME IS NULL mailto:sage [2007/06/26(火) 22:12:53 ID:???] エスパーするとuser_seq毎にnumberを振りたいんジャマイカ? つかuser_seqをPRIMARYにできるんじゃね?
356 名前:NAME IS NULL mailto:age [2007/06/26(火) 22:39:04 ID:???] 萌えSQL(苦笑) news23.2ch.net/test/read.cgi/news/1182860193/l50
357 名前:NAME IS NULL mailto:sage [2007/06/27(水) 09:40:27 ID:???] すみません、質問です mixiみたいな会員数不特定のブログサービスがあったとして、 ああいうサービスの日記のログ管理DBってどうなってるんですか トラックバックのないコメント機能だけの日記だと、 全会員のログを一つのnikkiTABLEで管理してるんでしょうか? nikkiTABLEのフィールドの内訳は以下のみたいな感じでしょうか? userID kijiID p_kijiID(コメント用) title content(text) date 書いてみてこれじゃ返信機能つき掲示板と変わらないって思いましたが、 自分にはこれくらいしか思いつきません(初心者です) 他にどんな機能がいりますか? それとも、全ユーザの日記を同じテーブルで 管理なんてしないんでしょうか? 上のはありえない馬鹿仕様ですか?
358 名前:NAME IS NULL mailto:sage [2007/06/27(水) 13:01:48 ID:???] >>357 ネットに腐るほど情報あるが今回だけはバグとったばかりで気分が良いので教えてあげよう。 ttp://itpro.nikkeibp.co.jp/article/NEWS/20060330/233820/
359 名前:NAME IS NULL mailto:sage [2007/06/27(水) 14:31:05 ID:???] うまく探せばMySQLのユーザー会かなにかの発表で使ったぱわぽんのデータもあるよ。 結構な事をやってるから、357の段階で引っかかってるならやらない方がいいと思う。
360 名前:NAME IS NULL mailto:age [2007/06/27(水) 19:16:04 ID:???] 他のサーバーに移管したいので、 DB内のデータをSQL文でとりたいのですがどうすればいいでしょうか? ほかに簡単に移管する手がありましたら教えてください。 自鯖から専用鯖への移管です
361 名前:350 mailto:age [2007/06/27(水) 19:20:20 ID:???] `user_seq`ごとに `number`が存在するからプライマリにはできません(多分) `user_seq`=1の人の`number`が1,2,3,4,5 見たいな感じです。 引き続きお願いします
362 名前:360 mailto:age [2007/06/27(水) 19:27:50 ID:???] 訂正します。 自鯖からxreaへの移管です。
363 名前:NAME IS NULL mailto:sage [2007/06/27(水) 19:35:15 ID:???] >>360 大型ダンプでいいんじゃね?
364 名前:360 mailto:age [2007/06/27(水) 19:49:07 ID:???] >>362 さん レスありがとうございます。 度々で申し訳ないのですが、正式名称を教えてください。 検索してもでてきませんでした。。 www.google.com/search?hl=ja&client=opera&rls=ja&hs=CsU&q=%E5%A4%A7%E5%9E%8B%E3%83%80%E3%83%B3%E3%83%97%E3%80%80MySQL&btnG=%E6%A4%9C%E7%B4%A2&lr=
365 名前:NAME IS NULL mailto:sage [2007/06/27(水) 20:49:52 ID:???] >>363-364 ワロタ
366 名前:NAME IS NULL mailto:sage [2007/06/27(水) 20:53:41 ID:???] >>360 大型ダンプじゃなくても双方近しいバージョンならDBファイルをまんまコピー でも大丈夫。(まれにバージョンによっていけない場合もある)
367 名前:NAME IS NULL mailto:sage [2007/06/27(水) 20:57:01 ID:???] >>350 良くわからんが 351が答えてる。
368 名前:NAME IS NULL mailto:sage [2007/06/27(水) 22:14:07 ID:???] >>361 多分とか、言っててビビるんだが。 質問者がわからんテーブル構成を漏れが判断できるわきゃねーだが。 複合インデックスにすりゃーいいだが。 その前にサブクエリーを使えって誰か言っているわけだが、なぜ黙殺するのか、答えろ。
369 名前:360 mailto:age [2007/06/28(木) 12:10:20 ID:???] >>363 さん 364はアンカーミスです。 すみません。 >>366 さん XREA(共有サーバ)なのでDBファイルの置き場所にアクセスできません。 mysqldumpでSQL文として吐き出してもらうのが、一番手っ取り早いとは思うのですが マニュアル見てもどこに書いてあるのか分かりません。(mysqldumpの項) くれくれですみませんが、詳しく解説しているサイトなどありましたら教えていただけませんでしょうか?
370 名前:NAME IS NULL mailto:sage [2007/06/28(木) 13:01:51 ID:???] >>369 どこ見てんだか… [Mysql ダンプ]でググれば一発
371 名前:NAME IS NULL mailto:sage [2007/06/28(木) 13:16:27 ID:???] >>369 mysqldump でググレばトップじゃねーの。これは久々に偉人が出るな。
372 名前:360 mailto:age [2007/06/28(木) 13:47:26 ID:???] >>370-371 さん レスありがとうございます。 マニュアルのmysqldumpは既に見ています。 ただ、コマンドを書いてもうまくいかないのです。 mysqldump --c database > backup.sql; これでやってみましたがエラーになります。。 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqldump -c datebase > backup.sql' at line 1
373 名前:NAME IS NULL mailto:sage [2007/06/28(木) 14:58:17 ID:???] 今後の展開に期待
374 名前:NAME IS NULL mailto:sage [2007/06/28(木) 15:11:58 ID:???] >>372 自分で「コマンド」って書いてるのになんでSQLクエリとして実行するかね。
375 名前:NAME IS NULL mailto:sage [2007/06/28(木) 16:06:47 ID:???] 笑った。
376 名前:NAME IS NULL mailto:sage [2007/06/28(木) 16:25:01 ID:???] >>372 mysql内でなくて、コマンドプロンプト等で以下コマンド発行でつ。 mysqldump --user=ユーザー名 --password=パスワード データベース名 > backup.sql これが基本だが、ホントはもう少しパラメータが必要。 ソケットや、キャラクターセットなどのパラメータ。 innodbだけをしている場合とそうでない場合など。 blobのデータがある場合。 色々なケースによりパラメータが違うのでつ。 >>373-374 中学生がホームレス襲撃して遊んでいる構図と一緒でつ。 傍目からみていると醜いでつ。
377 名前:NAME IS NULL mailto:sage [2007/06/28(木) 17:54:35 ID:???] >>358-359 ありがとうございました! テーブル分割という概念を知らなかったので勉強になりました
378 名前:NAME IS NULL mailto:sage [2007/06/28(木) 18:19:17 ID:???] >>376 コマンドをクエリとして打っちゃうような人に対して その説明で足りると思ってるの? 所詮自己満足、>>374 と50歩百歩だよ
379 名前:NAME IS NULL mailto:sage [2007/06/28(木) 22:57:41 ID:???] start transaction; SQL文1; SQL文2; SQL文3; IF エラーが無ければ THEN COMMIT; ELSE ROLLBACK; END IF; こう言うSQL文を書きたいのですが エラーが無ければの部分が分りません 教えてください
380 名前:NAME IS NULL mailto:sage [2007/06/28(木) 22:59:53 ID:???] >>379 アプリ側でやれ
381 名前:NAME IS NULL mailto:sage [2007/06/28(木) 23:03:36 ID:???] >>380 アプリは無いのでsql側でお願いします
382 名前:NAME IS NULL mailto:sage [2007/06/28(木) 23:24:02 ID:???] どんなときエラーになるのさ?
383 名前:NAME IS NULL mailto:sage [2007/06/28(木) 23:30:06 ID:???] create table aaa( bbb int ); start transaction; insert into aaa(bbb) values(0); insert into aaa(bbb) values(3); insert into aaa(bbb) values(bbb); <<ここです。 IF エラーが無ければ THEN COMMIT; ELSE ROLLBACK; END IF;
384 名前:NAME IS NULL mailto:sage [2007/06/29(金) 00:18:16 ID:???] >>379 それってさ。 ttp://forums.mysql.com/read.php?98,139540,139582 このサイト見て自分も同様にやりたかったが、ストプロ使えないバージョンだった。 で、代案をココで訊いてみた。 つーこと? バージョンくらい書いてくれよ。 ファイルにそのsql文を書いて実行すれば代用できる。 start transaction; うまく通りinsert文1; うまく通りinsert文2; うまく通らないinsert文3; commit; mysql -uユーザ名 -pパスワード -Dデータベース名 < 上記sql文.sql 「うまく通らないinsert文3」があるから、ロールバックされとるやろ?
385 名前:360 mailto:age [2007/06/29(金) 11:44:33 ID:???] >>376 さん ありがとうございます! 無事SQL文として取り出せました。 ご親切にありがとうございます。 ただ、深刻な問題があります。 取り出したSQL文の日本語が文字化けしてしまうのです。 こちらは376さんのアドバイスを参考に自力でやってみます。
386 名前:NAME IS NULL mailto:sage [2007/06/29(金) 12:43:51 ID:???] >>384 やりたかったのはそのサイトに書いてあるやつです。 start transaction; うまく通りinsert文1; うまく通りinsert文2; うまく通らないinsert文3; commit; としてもロールバックされなかったのでそのサイトのように できたらいいかなと versionはmysql5です
387 名前:NAME IS NULL mailto:sage [2007/06/29(金) 12:51:51 ID:???] start transaction; うまく通りinsert文1; うまく通りinsert文2; うまく通らないinsert文3; rollback; <<明示的にロールバックするとロールバックされます。
388 名前:NAME IS NULL mailto:sage [2007/06/29(金) 13:38:54 ID:???] >>386 なぬぅ? つーことはさ。 MyISAMでテーブルを作ってないか? InnoDBで作ったやつで再度やり直してみてくだつぁい。 と書いたところ、 >>387 が更新されていた。 つーことは、InnoDBで作っているみたいだねぇ。 >>384 このstart 〜 commit;までをファイルに書いてリダイレクトすんだよ? mysql -uユーザ名 -pパスワード -Dデータベース名 < 上記sql文.sql これはmysqlの中で打つコマンドじゃないよ。 mysql> exit c:\> mysql -uユーザ名 -pパスワード -Dデータベース名 < 上記sql文.sql まあ、バージョンが5.xxらしいのでストプロも研究してみてくだつぁい。
389 名前:NAME IS NULL mailto:age [2007/06/29(金) 14:24:05 ID:???] 入っている文字(日本語)が奇妙な形で文字化けします。 以下のような感じなのですが、どなたか同じ経験ありますでしょうか? サーバから見たときやPHPMyAdminから見た時は日本語が文字化け PHPで取り出して表示すると普通に見れる(この際、EUC-JPからSJISに変換している) 入れる際の文字コードの問題か、とも思いましたがきちんと(SJIS->EUC-JPに)変換していた。 データベースによってこの現象が起きるDBとおきないDBが存在(testというDBでは正常に入っているのにtest2だと文字化け)→DB内部文字が原因? こんな感じなのですが、もし何かご存知の方、宜しくお願いします。 私も引き続き調べてみますが私の知識レベルではなかなか原因の究明が出来ません。。
390 名前:NAME IS NULL mailto:sage [2007/06/29(金) 14:50:35 ID:???] >>389 こちらの環境ではまったく問題がないです。 バージョン5.027 WindowsXP version mysqlサーバのos、あるいはクライアントのos show variable like 'char%'; create database時のcharacter set create table時のdefault charset これらを聞かされていないのに調査のしようがありません。 基本的にサーバとクライアントのキャラクターセット不一致が原因ですから、 その辺りから調査されてはいかがでしょうか。
391 名前:NAME IS NULL mailto:sage [2007/06/29(金) 14:57:58 ID:???] >>390 あと、 insert時のキャラクターセット phpスクリプトによるinsert文発行なら、phpスクリプト・ファイル自体のキャラクターセット。 コマンドプロンプトなら、set namesもしくは、charcter_set_client。
392 名前:389 mailto:age [2007/06/29(金) 16:28:02 ID:???] >>390-391 ありがとうございます。 mysqlサーバのOSはFedoraCore5です。 クライアントはWindowsXP(これは関係ないと思います) 以下がshow variable like 'char%';の結果です。 +--------------------------+----------------------------+ | 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 | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 各テーブルをstatusで調べてみると以下が違うことが分かりました。 ■文字化けするほう Db characterset: utf8 ■文字化けしないほう Db characterset: latin1 これが原因っぽい… Db charactersetをlatin1にしてみます
393 名前:NAME IS NULL mailto:sage [2007/06/29(金) 16:40:04 ID:???] >>392 utf8なら、insert時に set names utf8; でインサートすればよい肝。 latin1だと日本語で困りそうですが、その辺りは問題ないですか? むしろcharcter_set_database、charcter_set_serverをutf8にする検討をしたほうがよさそう。 あ。 >入れる際の文字コードの問題か、とも思いましたがきちんと(SJIS->EUC-JPに)変換していた insert時にeuc変換?、utf8のサーバに? ちょっとこの辺が意味不明ですねぇ。
394 名前:NAME IS NULL mailto:sage [2007/06/29(金) 16:44:13 ID:???] データが "渋谷駅:5分" という形で格納されています。 この5という数字に対して比較演算子を使いたいのですが、どのような方法があるでしょうか? 正規表現を使っても後方参照が無いので意味ないですし・・・ テーブルの設計を間違えたのは重々承知ですが、何かいい方法があればアドバイスお願いします。
395 名前:389 mailto:age [2007/06/29(金) 16:48:28 ID:???] >>393 何度もご解答いただきましてありがとうございます。 普通にUTF-8じゃなくEUC-JPでいれてました。。 でも文字化けしてないし、きちんと見れる。。 なんかやばいですね^^;(既に稼働中) latin1ですが、文字化け等していないです。 度々の質問で申し訳ないのですが、 既にデータが入っているんですがcharcter_setを変えちゃって大丈夫でしょうか?
396 名前:NAME IS NULL mailto:sage [2007/06/29(金) 17:09:23 ID:???] >>395 いやぁ、それはヤバイっしょ。 文字コード毎に固有の文字がありますんで。 sjis -> cp932とかなら、良いかもですが。 >>394 やもえないということなので、文字列をこねくり回す方法があります。 「mysql 関数」でググッた方が速いです。 mysql> create table test (c varchar(20)); Query OK, 0 rows affected (0.64 sec) mysql> insert into test values -> ('渋谷:10分'),('渋谷:5分'),('新宿:5分'); Query OK, 3 rows affected (0.17 sec) レコード数: 3 重複数: 0 Warnings: 0 mysql> select * from test where replace(substring(c,locate(':',c)+1),'分','')='5'; +------------+ | c | +------------+ | 渋谷:5分 | | 新宿:5分 | +------------+ 2 rows in set (0.00 sec)
397 名前:NAME IS NULL mailto:sage [2007/06/29(金) 17:13:37 ID:???] >>394 文字操作関数はかなり充実しているので、INSTR CHAR_LENGTH MID なんかを使えばいっと 数字だけ取り出せるであろう。 ttp://dev.mysql.com/doc/refman/4.1/ja/string-functions.html
398 名前:NAME IS NULL mailto:sage [2007/06/29(金) 18:22:17 ID:???] >>388 なるほどクエリでやってました。 コマンドからバッチを流すと出来ました。 しかしクエリで処理する方法は無いのでしょうか? ストアドプロシージャはストアドプロシージャを 呼び出せないためリンク先の方法は難しいようなきがします
399 名前:NAME IS NULL mailto:sage [2007/06/29(金) 19:14:44 ID:???] >>398 そのストプロからストプロを呼び出す云々は聞いていない用件だし、 詳細不明なので割愛させてもらいます。 俺はふつーにやってるけどな。 バッチもストプロもダメなら、ない。
400 名前:400 mailto:sage [2007/06/30(土) 05:19:00 ID:???] 400get
401 名前:NAME IS NULL mailto:age [2007/06/30(土) 16:11:31 ID:???] MySQL 3.23なのですが、レコードの複製で効率的なものはないのでしょうか? 同じテーブルでのINSERT ... SELECTは、このバージョンでは無理とのこと。 一度SELECTしたものをINSERT ... VALUEするしかありませんでしょうか?
402 名前:NAME IS NULL mailto:sage [2007/07/01(日) 01:05:45 ID:???] >>401 temporaryテーブルを介すればいいんじゃまいか
403 名前:NAME IS NULL mailto:sage [2007/07/01(日) 05:06:59 ID:???] >>395 小さいDBなら、DB側はこんな感じでちょこちょこっと弄ればよい(ujis→utf8への変換例) 1)ダンプを吐き出し mysqldump -uユーザ名 -pパスワード --default-character-set=binary DB名 > dump 2)dump.sql内のcharset置換 sed 's/DEFAULT CHARSET=ujis/DEFAULT CHARSET=utf-8/g' dump > dump_tmp 3)nkfで文字コード変換 nkf --utf8 -Lu dump_tmp > dump_utf8 4) DBの作り直し mysqladmin -uユーザ名 -pパスワード drop DB名 mysqladmin -uユーザ名 -pパスワード create DB名 5)ダンプデータを流し込む mysql -uユーザ名 -pパスワード DB名 < dump_utf8 以上 mysql> SHOW VARIABLES LIKE 'character\_set\_%'; 尚、当然ながら、自己責任でおながいします。いきなり本稼働中環境にやらないように。
404 名前:NAME IS NULL [2007/07/01(日) 10:57:43 ID:9kR/4Q9k] myspl5で int unsigned のカラムにマイナスの値をいれると0が挿入されたり 値がマイナスになるように引き算をしアップデートすると 最大値近くの値になるのは仕様でしょうか?
405 名前:NAME IS NULL mailto:sage [2007/07/01(日) 14:42:37 ID:???] >>404 create table からinsertまで画面ログを見せてくだつぁい。 漏れの環境では再現できなかったでつ。 5.0.27。 詳しいバージョンもよろ。
406 名前:NAME IS NULL mailto:sage [2007/07/01(日) 21:56:24 ID:???] mysql 5.0.26 create table testtable( testcol int unsigned ); insert into testtable(testcol) values(-6) これで入ってしまいます。一応警告はでるのですが
407 名前:405 mailto:sage [2007/07/01(日) 22:49:58 ID:???] >>406 降参。 一応漏れのshow create tableと結果を書いておきます。 mysql> show create table testtable; mysql> show create table testtable; +-----------+------------------------------------------------------------------- ----------------------------------------+ | Table | Create Table | +-----------+------------------------------------------------------------------- ----------------------------------------+ | testtable | CREATE TABLE `testtable` ( `testcol` int(10) unsigned default NULL ) ENGINE=InnoDB DEFAULT CHARSET=sjis | +-----------+------------------------------------------------------------------- ----------------------------------------+ 1 row in set (0.00 sec) mysql> insert into testtable(testcol) values(-6); ERROR 1264 (22003): Out of range value adjusted for column 'testcol' at row 1 mysql> select * from testtable; Empty set (0.00 sec)
408 名前:406 [2007/07/02(月) 00:24:28 ID:Jq59+b9l] 別のVersionでためしたら405さんのように跳ねられました。 バグか設定がへんな用です。
409 名前:NAME IS NULL mailto:sage [2007/07/02(月) 00:33:12 ID:???] 不正な値の扱いなら、SQL_MODEで指定するんじゃないの? MySQLの配布元によって初期値が異なる可能性はある。 www.mysql.org/doc/refman/5.1/ja/server-sql-mode.html
410 名前:405 mailto:sage [2007/07/02(月) 00:48:42 ID:???] >>409 おービバビバ。409、ありがとん。再現できた。 mysql> SELECT @@global.sql_mode; +----------------------------------------------------------------+ | @@global.sql_mode | +----------------------------------------------------------------+ | STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | +----------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT @@session.sql_mode; +----------------------------------------------------------------+ | @@session.sql_mode | +----------------------------------------------------------------+ | STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | +----------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> insert into testtable values (-1); ERROR 1264 (22003): Out of range value adjusted for column 'testcol' at row 1 mysql> set sql_mode=''; Query OK, 0 rows affected (0.00 sec) mysql> insert into testtable values (-1); Query OK, 1 row affected, 1 warning (0.01 sec) mysql> select * from testtable; +---------+ | testcol | +---------+ | 0 | +---------+ 1 rows in set (0.00 sec)
411 名前:406 [2007/07/02(月) 17:55:26 ID:Jq59+b9l] なるほどこんな設定があるとは ありがとうございます しかしこんな設定を使うシステムもあるんですかね
412 名前:406 mailto:sage [2007/07/02(月) 21:02:52 ID:???] CREATE TABLE `testtable` ( `testcol` int(10) unsigned default NULL ) ENGINE=InnoDB insert into testtable(testcol) values(300); update testtable testcol = testcol - 400; -->NG update testtable testcol = testcol -(100*4); -->OK こんな結果が出ました。 ちょっと不安になってきました。
413 名前:NAME IS NULL mailto:sage [2007/07/03(火) 00:44:12 ID:???] MySQLって商用として使えるの?
414 名前:NAME IS NULL mailto:sage [2007/07/03(火) 00:48:40 ID:???] >>413 使えるでござる。 ただしクライアント部でリンクしている部分は バイナリ保有者にソース公開の義務があるゆえ 徹底した機能分割にて非GPL部分との隔離を 図る必要があるでござる
415 名前:NAME IS NULL mailto:sage [2007/07/03(火) 08:46:11 ID:???] >>413 ライセンス購入で無問題
416 名前:NAME IS NULL mailto:sage [2007/07/04(水) 00:38:47 ID:???] お金出すなら、無料でダウンロードできるという採用価値の意味は無くなるけどな。 GPL除去がめんどいのでオラクルを使ってる。 ライセンス量はお客負担だし。
417 名前:NAME IS NULL mailto:sage [2007/07/04(水) 01:27:03 ID:???] >>416 >GPL除去 詳しく。 接続してSQL投げて結果を取得するだけのプログラムの場合、 SQL投げるところは、非公開でOK。 SQLを受け取ってDBに接続、SQL結果取得する部分は、公開の義務。 ちゅーこと?
418 名前:NAME IS NULL mailto:sage [2007/07/04(水) 10:10:58 ID:???] つか、MySQLはBSDライセンスじゃんか。 GPLがどうして出てくるんだろうか・・・・
419 名前:NAME IS NULL mailto:sage [2007/07/04(水) 11:00:56 ID:???] >>418 オレはてっきりPostgreSQLの方がBSDライセンスで MySQLはGPLと商用のデュアルライセンス形態だと ばかり思っていた。 反省しなくてはいけないな。 教えてくれてありがとう。
420 名前:NAME IS NULL mailto:sage [2007/07/04(水) 12:06:41 ID:???] 整理しよう。(笑) MYSQLはLGPLライセンス・・だっけか? PostgreSQLはBSDライセンス・・・かな? もう何が何だか全然分からなくなってきたな。(笑)
421 名前:NAME IS NULL mailto:sage [2007/07/04(水) 16:09:51 ID:???] すみません 質問させてください 出会い系でもミクシでもいいんですが、「友達リストに登録」機能って、 ユーザプロフィール用のテーブルとは別に、友達一覧専用のテーブルを持ってると 考えるのが自然でしょうか? ユーザプロフィール用のテーブルと一緒だと、friendsフィールド中にカンマセパレーションで 流し込むことになるのかなと思いますが…
422 名前:NAME IS NULL mailto:sage [2007/07/04(水) 18:35:11 ID:???] >>421 friends テーブルとか作って、会員テーブルの主キーを自分と相手でマップする感じに作るのが理想。
423 名前:336 mailto:sage [2007/07/04(水) 20:16:15 ID:???] >>418 ソースをみせてくれ GPLでしょ dev.mysql.com/doc/refman/5.1/ja/what-is-mysql.html Postgres がBSD
424 名前:NAME IS NULL mailto:sage [2007/07/04(水) 20:19:07 ID:???] MySQL のコードを利用しないアプリに関しては BSD ライセンスってこと? 俺も分からなくなってきましたよw
425 名前:NAME IS NULL mailto:sage [2007/07/04(水) 22:41:08 ID:???] >>424 今オレが書いてるこのソースもMySQLのコードは使ってないから 自動的にBSDライセンスになるってことか。BSD強いなぁ。うん。
426 名前:NAME IS NULL [2007/07/05(木) 11:02:35 ID:3+rCMbiR] 3.23です。 自動インクリメントする整数型フィールド id を持つ、テーブル hoge があります。 まず、新規レコードをINSERTし、その後コネクションを切断します。 次に、別途MySQLに接続し、UPDATEでこのレコードを更新しました。 この時、MySQLの関数などを用いて、このレコードの id を取得することは可能でしょうか? LAST_INSERT_ID() はちょっと違いますし……。 現在、アプリ側でSELECTする方法を考えています。
427 名前:426 mailto:sage [2007/07/05(木) 11:05:11 ID:???] hoge には、id 以外にも幾つかのフィールドを持ちます。 その中にはユニークなものもあり、SELECT〜WHEREで id を取得することは可能です。
428 名前:NAME IS NULL mailto:sage [2007/07/05(木) 11:23:43 ID:???] >>426 文面通りなら、max()使えばよろし。 ただし、3.23は、使ったこと梨。
429 名前:NAME IS NULL mailto:sage [2007/07/05(木) 12:55:06 ID:???] ネタにマジレス ttp://www.mysql-partners-jp.biz/license.html
430 名前:NAME IS NULL mailto:sage [2007/07/05(木) 13:02:58 ID:???] 申し訳ありませんが質問させてください。 UPDATE `table` SET `name` = '名前1' WHERE `id` = 1; UPDATE `table` SET `name` = '名前2' WHERE `id` = 2; このような複数のUPDATE文を一つのSQL文にまとめたいと思います。 どのように書けば良いでしょうか。
431 名前:NAME IS NULL mailto:sage [2007/07/05(木) 13:15:13 ID:???] >>430 UPDATE `table` SET `name` = '名前'+id; '名前'+idのとこは文字列化して文字列連結 あとは冴子先生に聞け
432 名前:NAME IS NULL mailto:sage [2007/07/05(木) 13:22:32 ID:???] >>431 ありがとうございます。お陰様で解決致しました。 今までSQLは一文ずつしか送れないのだと勘違いしていました・・
433 名前:NAME IS NULL mailto:age [2007/07/05(木) 13:53:44 ID:???] hoge_tblのhogeが空の場合(NULLのものと空白のもの)のみを取り出したいのですが以下ではうまく動作しません。 どうすれば意図した動きをしてくれるでしょう? SELECT * FROM hoge_tbl WHERE (`hoge`=NULL || `hoge`='');
434 名前:NAME IS NULL mailto:sage [2007/07/05(木) 14:19:11 ID:???] >>433 IS NULL あとは冴子先生に聞け
435 名前:NAME IS NULL mailto:sage [2007/07/05(木) 14:55:51 ID:???] >>424 >>429 に補足。特定のオープンソースのライセンスの場合は例外条項があります。 FLOSS ライセンス除外規定 www-jp.mysql.com/company/legal/licensing/foss-exception.html en.wikipedia.org/wiki/List_of_content_management_systems
436 名前:426 mailto:sage [2007/07/05(木) 17:38:19 ID:???] >428 ありがとうございました。 UPDATEを行う前に他のコネクションからINSERTされる可能性を考えると、MAX()は使えなさそうです。 素直にSELECTすることにします。
437 名前:NAME IS NULL mailto:sage [2007/07/07(土) 10:28:11 ID:???] GPLは汚染されるからねえ。
438 名前:NAME IS NULL mailto:sage [2007/07/07(土) 12:36:16 ID:???] MySQLをCygwinか、若しくはコマンドプロンプト以外のターミナルで 実行することはできますか? コマンドプロンプトでは全角/半角の切り換えに いちいちAltを押さないといけないので、その手間が煩わしいのです。 なお、当方の環境(WinXP Pro)では、Cygwinでmysqlコマンドを打つと、 何も表示されず、実行されている気配も無いです。
439 名前:NAME IS NULL mailto:sage [2007/07/07(土) 14:29:42 ID:???] >>438 サービスに登録すれば?
440 名前:NAME IS NULL mailto:sage [2007/07/07(土) 14:42:23 ID:???] >>439 438はクライアントの話をしているんじゃ?
441 名前:NAME IS NULL mailto:sage [2007/07/07(土) 16:38:26 ID:???] >>438 teratermでcygterm あとは冴子先生に聞け
442 名前:NAME IS NULL mailto:sage [2007/07/07(土) 20:57:15 ID:???] すみません、ちょっとここで聞くことなのか悩んだんですが質問です あるサーバで、サイトをA B Cの三つ作るとして、SSLを導入することに なったときに、全サイトに入れると経費かかるから、そのうち一つに入れて 他からの代用にするって出来ますか? B・Cのサイトから、 https://www.A.com/ のフォームを開き、そこからB・C用のsqlDBに 登録するっていう流れになると思うんですが、それでセキュリティは問題なく保持されるでしょうか?
443 名前:NAME IS NULL mailto:sage [2007/07/07(土) 21:37:28 ID:???] >>442 SSLじゃなくてSQLだえお つーかフォームを開くのかよやめろよそういうのは裏でやれよ クロスサイトすんなお
444 名前:NAME IS NULL [2007/07/07(土) 22:04:26 ID:wxVu8uZj] kkk
445 名前:442 mailto:sage [2007/07/08(日) 02:12:47 ID:???] >>443 回答ありがとうございます >SSLじゃなくてSQLだえお どういうことでしょう? あのー、ベリサインとかのあのSSLを導入したいって 意味なんですが… すみません知識不足でご指摘の部分が理解できてないかもしれません 板違いだろーという意味でしたら、ごめんなさい >フォームを開くのかよやめろよそういうのは裏でやれよ つまり、www.B.comからwww.A.comのフォームを開くの自体がまずいってことでしょうか? それがクロスサイトスクリプティングにつながると…? B.comのフォームを開いて、そこからA.comのSSLを利用するなんて出来ないですよね
446 名前:NAME IS NULL mailto:sage [2007/07/08(日) 02:31:08 ID:???] 違うホストの証明書が利用出来たらSSLの意味ない 板違いを自認してるならサッサとお帰りください
447 名前:NAME IS NULL mailto:sage [2007/07/08(日) 03:03:29 ID:???] たしかに! そりゃそうですね ごめんなさい ありがとうございました
448 名前:NAME IS NULL [2007/07/08(日) 10:09:07 ID:/xzmDBMK] MysqlAdministratorについて質問です。 DBサーバが別サーバになっていてローカルIPを振られているような 環境でも設定次第では接続可能でしょうか? クライアントがローカルネットワーク上であれば単にHOSTを ローカルIPにすれば大丈夫だと思うのですが、そうではなく ローカルネットワーク外から上記環境に接続したいと思っています。 よろしくお願いいたします。
449 名前:NAME IS NULL mailto:sage [2007/07/08(日) 14:44:23 ID:???] 目的を書いたら? 社内LANとかで他のMySQL鯖に繋ぎたいってこと? ローカルネットワーク外からローカルネットワークに通信できるのか?って疑問がある。
450 名前:NAME IS NULL mailto:sage [2007/07/08(日) 21:35:53 ID:???] トンネル掘れば(port forwarding)一応何でも出来る けどね。
451 名前:NAME IS NULL mailto:sage [2007/07/09(月) 15:58:00 ID:???] >>448 できるよ。 ウォール他、ネットワークの話しになりますね。
452 名前:NAME IS NULL mailto:sage [2007/07/10(火) 01:30:40 ID:???] ポート転送は邪道だけどな。動けばいいならそういう解決法もあるが。
453 名前:NAME IS NULL [2007/07/10(火) 17:47:02 ID:NqzHTtFx] mysqldumpで--add-drop-databaseのオプションが機能しないのですが、何か他に必要なことがあるのでしょうか? コマンドラインにてmysqldump --add-drop-database --user=hoge -phoge HOGE_DB > c:\hoge_db.sql を実行したところ、ファイルは作成されたのですが、 中をのぞいてもdrop database HOGE_DBの文あるいは該当する記述が見当たりません。 このオプションは使用できないのでしょうか? xamppliteのmyxql4.1.14を使用しています。 どなたかご存知の方教えてください。
454 名前:NAME IS NULL mailto:sage [2007/07/10(火) 22:04:34 ID:???] >>453 いや、そのDBもうDROPされてるよ。 確認した?
455 名前:NAME IS NULL mailto:sage [2007/07/10(火) 23:20:40 ID:???] つまらない釣りだ。orz
456 名前:NAME IS NULL [2007/07/11(水) 15:44:43 ID:0py3B+oq] 質問です DB一つの中に10個テーブルつくるのと、DB2つの中に5個づつつくるのとで どう違うんでしょう 一つにまとめると負荷が大きくなって危険とかあるんでしょうか? 両パターンでのバックアップとるときの短所や長所などがあれば教えてください 切り分けルールをどう定めていいのか分かりません よろしくお願いします
457 名前:NAME IS NULL mailto:sage [2007/07/11(水) 16:25:27 ID:???] >>456 切り分ける必要が無いなら切り分けない。絶対に。
458 名前:NAME IS NULL mailto:sage [2007/07/12(木) 02:08:23 ID:???] アクセスするとき、テーブル違いを意識するかしないか程度。 テーブル単位でバックアップ?なんて変な事するなら多少のご利益はあるだろうけど。 普通はデータベース単位でバックアップ取るから関係ない。 負荷が集中したら、テーブル分けるだけじゃ駄目で、鯖を分散化しないと意味が無い。 テーブル単位でロックするなら、テーブル分ければロックの競合頻度が下がって処理時間が短くなる可能性はあるだろうけど、その次元に逝ったらオラクルとか自動的にロック回避のメカニズムを持ってパフォーマンスが出せるデータベース製品に乗り換えを考えるべき。
459 名前:453 mailto:sage [2007/07/12(木) 13:23:42 ID:???] >>454 2つの異なるDBを同期するのに試してみたのですが、 同期元で削除したテーブルが、mysqldumpで作成したファイルから復元した同期先のDBから削除されませんでした。 また、作成したファイル内にて全てのテーブルについてdrop tableが付加されているので やはりDBがdropされていないと思うのですが、 何か必要な手順が他にあるのでしょうか?
460 名前:NAME IS NULL [2007/07/12(木) 22:19:16 ID:U0XvRs/R] 郵政公社の郵便番号CSVから住所データをMySQLに取り込みました。 構成は area_id int 11 not null auto_increment primary zip_code int 7 not null pref_id tinyint not null middle_area varchar(255) not null INDEX middle_area_kana varchar(255) not null small_area varchar(255) not null INDEX small_area_kana varchar(255) not null という構成でデータは119000件くらい入っています。 select * from area order by area_id limit 10 とやると一瞬で結果がかえってきます。 select * from area order by rand() limit 10 とやると、タイムアウトになってしまいます。 order by rand() ではレコード数が増えると扱えなくなるのでしょうか? バージョンは5.0.41です。
461 名前:NAME IS NULL mailto:sage [2007/07/13(金) 01:06:02 ID:???] >>460 EXPLAIN してみ。すぐわかる。
462 名前:NAME IS NULL mailto:sage [2007/07/13(金) 01:47:25 ID:???] 実際どうすればいいんだろうね
463 名前:NAME IS NULL [2007/07/13(金) 04:33:09 ID:9zDJRs1G] 1対多の関係のレコードを1発でinsert/updateする方法はありますか?
464 名前:NAME IS NULL mailto:sage [2007/07/13(金) 07:34:58 ID:??? BE:575928364-2BP(0)] 散々、既出だと思いますが質問させてください。 ttp://www.geocities.jp/kimura804/rdb/InterBase/ip_ib_strings_j.htm ttp://dev.mysql.com/doc/refman/4.1/ja/blob.html ここらへんを100回ぐらい読んだのですが、text型とblob型の使い分け方が分かりません。 みなさんはどういった使い分けをしていますか? (例えば掲示板の書き込みは?とか商品紹介は?とか検索対象になるかどうかとか)
465 名前:NAME IS NULL mailto:sage [2007/07/13(金) 10:47:07 ID:???] >>464 どんなプログラム言語からMySQL使ってるのかしらないけど、 文字列型の変数にバイナリデータを入れるっていう概念が理解できないと わからないと思う。 文字として扱う限りはtext型でいいでしょ。
466 名前:NAME IS NULL mailto:sage [2007/07/13(金) 12:48:52 ID:???] >>460 これ前に悩んだけど潰せなかった。 rand 用のインデックスなんて作れそうも無いし。 アプリで主キーの乱数を取って欲しい分回すしかないのかな。
467 名前:NAME IS NULL mailto:sage [2007/07/13(金) 12:49:35 ID:???] >>463 ない
468 名前:NAME IS NULL mailto:sage [2007/07/13(金) 13:50:22 ID:???] >>460 >>466 select * from area where area_id in ( select area_id from area order by rand() ) limit 10; とかどうよ?
469 名前:NAME IS NULL mailto:sage [2007/07/13(金) 14:58:45 ID:???] >>468 あれ?登録順に出てくるぞ。
470 名前:NAME IS NULL mailto:sage [2007/07/13(金) 15:25:25 ID:???] >>469 ごめん select * from area where area_id in (select * from (select area_id from area order by rand() limit 10) as a ); でやってみてちょ 、 ちなみに 2行目を取っ払うと This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' と言われてしまうっす mysql (5.0.27)
471 名前:469 mailto:sage [2007/07/13(金) 15:36:01 ID:???] >>470 補足 select * from itemregsub where area_id in (select area_id from (select area_id from area order by rand() limit 10) as a) order by rand(); 最後にorder by rand() が必要だった。 一応ランダム抽出でかつ初めに area_id のインデックスが効くから速くなると思うけど、、
472 名前:464 mailto:sage [2007/07/13(金) 15:54:42 ID:???] >>465 返信ども。主にPHPから使ってます。 >文字列型の変数にバイナリデータを入れるっていう概念が理解できないと >わからないと思う。 概念というか理由がイマイチ理解できないのですよ。 作る人のクセかも知れないけど、1000文字ぐらいの文字列なんかも blob型で保存してたりして「なんでだろー」と。
473 名前:460 [2007/07/13(金) 15:57:09 ID:ujex21Rt] 答えてくれたみなさんありがとうございます。 なんだか複雑ですね。 >>470 , >>471 のSQLでやってみたらできました、がやっぱりちょっとレスポンスが悪いですがしかたないですよね。 サブクエリの入れ子とは難しいですね。 とりあえず、教えていただいたものでやってみます。 ありがとうございました。
474 名前:NAME IS NULL mailto:sage [2007/07/13(金) 16:02:57 ID:???] >>473 area_id に対して create index してる? explain さっきのSQL で、 Using index て出てこないなら、してみたら?
475 名前:470 471 [2007/07/13(金) 16:18:02 ID:9Bt5Ot0u] 何度もスレ汚しごめん、しかもコテハン番号間違えてるし、、 select v1.* from area as v1, (select area_id from (select area_id from area order by rand() limit 10) as a) as v2 where v1.area_id=v2.area_id order by rand(); がたぶん最速 もっといい方法あったら教えて、エロい人。
476 名前:NAME IS NULL [2007/07/15(日) 18:37:44 ID:OG/QKv5e] 初めまして。一つ質問させてください。 group_concat等で「4,1,4,1,1」と言う値が取れたとします。 この値から「1が連続している回数の最大値」をSQLで取るにはどうすれば いいのでしょうか? 事情ありましてSQL限定での処理をしなくてはなりません。 恥ずかしい質問ですが、お助けください。 以下現在のソース SELECT group_concat(c) as c_t FROM c_table WHERE name = 197029
477 名前:NAME IS NULL mailto:sage [2007/07/15(日) 18:46:23 ID:???] >>476 group_concat()を使わなければならない理由は? cでgroup byしたもののcount()で最大値とればいいんじゃないの?
478 名前:476 [2007/07/15(日) 22:06:24 ID:OG/QKv5e] >>477 そうすると結果が「3」になってしまいます。 上記のケースで取りたい値は「2」なのです。(末尾の『1,1』の部分) group_concatを使ったのは複数レコードをまとめられたのでこのままイケるかな? と思いまして>< php使えれば一発なのに・・・
479 名前:NAME IS NULL mailto:sage [2007/07/16(月) 00:07:29 ID:???] はじめまして。質問なのですが現在タグでデータを管理するシステム (youtubeやニコニコに似た感じです)を開発しています。 テーブル構成ですが、 Tags には TagId, Caption Items には ItemId, Caption, Data ItemsInTags には TagId, ItemId というフィールドがあります。 アイテムとタグを関連付けるために、ItemsInTagsというテーブルを使用しています。 こうすることで、アイテムに関連付けられたタグ一覧と、ひとつのタグに関連付け られたアイテム一覧を取得できるようになりました。 しかし、二つ以上のタグに関連付けられたアイテム (たとえば、「TagId=10に関連付けられており、かつ、TagId=8に関連付けら れている」という条件です)を一覧するSQL文を考えようとして分からなく なってしまいました。 こういう場合、どういうふうにSQL文を記述すればよいのでしょうか? サブクエリを何重にもネストしたりするのでしょうか? ご教授いただけると助かります。 ちなみに、現在一つのタグに関連付けられたアイテムを取得するために SELECT i.* FROM ItemsInTags it INNER JOIN Items i ON (i.TagId = it.TagId) WHERE i.TagId = 10 という風にしています。
480 名前:NAME IS NULL [2007/07/16(月) 00:32:20 ID:q17Bppan] >>478 ファンクション使っていいなら こんな感じ? 一応動くが大量レコードへの実行は遅そう。変数名わかりにくいのはすまん drop function if exists get_cnt; delimiter // create function get_cnt(in_c int,in_num int) returns int begin declare maxc ,tmpc,lastval,nowval,eod int; declare cur1 cursor for select c from c_t where name = in_num ; declare continue handler for not found set eod=1; set maxc = 0; set tmpc = 0; set lastval = 0; set eod = 0; open cur1; fetch cur1 into nowval ; while eod=0 do if lastval <> nowval then set tmpc = 1 ; else set tmpc = tmpc + 1; end if; if nowval = in_c then if maxc < tmpc then set maxc = tmpc ; end if; end if; set lastval = nowval; fetch cur1 into nowval ; end while; close cur1; return maxc; end; // delimiter ; こんな感じで作っておいて select get_cnt(1,197029); ←1の数の場合 select get_cnt(4,197029); ←4の数の場合 みたいに呼んでカウントをとる。
481 名前:480 mailto:sage [2007/07/16(月) 00:39:49 ID:???] >>480 set lastval = 0; は必要なかった。 あったら0のときカウントがずれる。
482 名前:NAME IS NULL [2007/07/16(月) 10:17:53 ID:J+xm2Lgb] >>479 自己連結を勉強しる
483 名前:476 mailto:sage [2007/07/16(月) 12:13:36 ID:???] >>480 >>481 レス有難う御座います。 一見見ただけではまだ理解出来ていないphpとSQLとHTMLとJAVASCRIPTしか 触っていないプログラム一年生な自分でありますが、解読して役立たせて 頂きます。 上手くいきましたら報告させていただきますね
484 名前:NAME IS NULL mailto:sage [2007/07/16(月) 12:37:58 ID:???] DBにDateTimeで予定を入れてるんですが、 問い合わせする時って、時間ごとにSQL文作ってていいんでしょうか。 1回のビューで24回DBに問い合わせる事になるんですが、 スマートな方法って何かありますか?
485 名前:NAME IS NULL [2007/07/16(月) 15:44:02 ID:4NQxSNLF] CREATE TABLE `t1` ( `a` char(2) default NULL, `b` char(2) default NULL, `c` char(2) default NULL ) TYPE=MyISAM; INSERT INTO `t1` (`a`, `b`, `c`) VALUES ('01', '02', '22'); INSERT INTO `t1` (`a`, `b`, `c`) VALUES ('01', '03', '23'); INSERT INTO `t1` (`a`, `b`, `c`) VALUES ('01', '04', '24'); CREATE TABLE `t2` ( `a` char(2) default NULL, `b` char(2) default NULL, `d` char(2) default NULL, `e` char(3) default NULL ) TYPE=MyISAM; INSERT INTO `t2` (`a`, `b`, `d`, `e`) VALUES ('01', '02', '01', 'aaa'); INSERT INTO `t2` (`a`, `b`, `d`, `e`) VALUES ('01', '02', '02', 'bbb'); INSERT INTO `t2` (`a`, `b`, `d`, `e`) VALUES ('01', '02', '03', 'ccc'); INSERT INTO `t2` (`a`, `b`, `d`, `e`) VALUES ('01', '03', '01', 'ddd'); INSERT INTO `t2` (`a`, `b`, `d`, `e`) VALUES ('01', '03', '02', 'eee'); INSERT INTO `t2` (`a`, `b`, `d`, `e`) VALUES ('01', '04', '01', 'fff'); INSERT INTO `t2` (`a`, `b`, `d`, `e`) VALUES ('01', '04', '02', 'ggg'); INSERT INTO `t2` (`a`, `b`, `d`, `e`) VALUES ('01', '04', '03', 'hhh'); こんな感じに二つテーブルをつくっていて、 SELECT t1.a, t1.b, t1.c, t2.d, t2.e FROM t1, t2 GROUP BY t2.a, t2.b, t2.d これで問い合わせると8件でてきます。 これを項目a,bの3グループ中の先頭2グループ分だけ表示したいとき 1度のSQLで問い合わせできるでしょうか? いまはこれで件数を出し、3+2=5件をとってきてから select count(*) from t2 group by t2.a , t2.b limit 0 ,2 SELECT t1.a, t1.b, t1.c, t2.d, t2.e FROM t1, t2 GROUP BY t2.a, t2.b, t2.d limit 0 , 5 と、2回問い合わせています。 わかりにくい質問の仕方ですいません。
486 名前:NAME IS NULL mailto:sage [2007/07/16(月) 18:48:16 ID:???] >>485 途中にsqlを抜けるのがいやなだけで、 実質的な問い合わせ回数は2回のままでもいいのなら 480みたいにファンクション作ってやってみれば?
487 名前:NAME IS NULL mailto:sage [2007/07/16(月) 19:05:54 ID:???] すみません。質問です。 MySQLで初めてViewを使ってみようと思ったのですが CREATE VIEW test_view AS SELECT * FROM table_name; すると ERROR 1044 (42000): Access denied for user 'user_name'@'localhost' to database 'db_name' と出てしまいViewが作成できません。 SELECT * FROM table_name; だけなら問題なく、ちゃんとQueryが通り、普通に結果が表示されます。 GRANT ALL してあるので、権限的には問題ないかと思うのですが これはどのあたりが問題なのでしょうか…??皆目わからず困っております。。 何かお気づきの点などありましたらアドバイス下さい。 使用しているMySQLのバージョンは mysql-5.0.27-1で、DBはInnoDBです。 どうぞよろしくお願い致します。
488 名前:NAME IS NULL mailto:sage [2007/07/16(月) 19:25:06 ID:???] >>487 もう一回、 [root@localhost]# mysql -uroot mysql> use mysql mysql> select Host,User, Create_view_priv,Show_view_priv from user ; して | Host | User | Create_view_priv | Show_view_priv | | localhost | ユーザー | Y | Y | ってなってるか確認汁
489 名前:NAME IS NULL mailto:sage [2007/07/16(月) 19:40:06 ID:???] >>484 いまいち曖昧な質問だけど、between とかで時間帯絞り込んで、1日分を一回で取得してくれば良いだけじゃないの?
490 名前:NAME IS NULL [2007/07/16(月) 20:27:02 ID:4NQxSNLF] >>486 いえ、PHP+mysqlなのでSQL抜けることには 全然問題ありません。 SQLの文法を詳しく知らないので簡単な方法があるなら 問い合わせ回数を減らした方が良いかと思い質問しました。 ありがとうございました。
491 名前:NAME IS NULL mailto:sage [2007/07/16(月) 23:59:41 ID:???] ここでいいのかわかりませんが、初心者質問です。 EasyPHP1.8にてPhpMydminからMysqlを見たいのですが、/loachost/mysql/にアクセスすると以下のようなエラーが出て表示できません。 何が悪いのでしょう。 EasyPHP上のMysqlはStartしてます。 環境はWindowsXPでローカルでのみテスト用に運用するだけです。 new1314.freespace.jp/log/up/log/210.jpg
492 名前:487 mailto:sage [2007/07/17(火) 15:21:14 ID:???] >>488 さん ご回答ありがとうございます。指定されたコマンドを打ちましたら mysql> select Host,User, Create_view_priv,Show_view_priv from user; ERROR 1054 (42S22): Unknown column 'Create_view_priv' in 'field list' m と出ました。という事はこれは、Viewが使えないという事でしょうか。。。 MySQLのバージョンの問題でしょうか??
493 名前:NAME IS NULL mailto:sage [2007/07/17(火) 16:12:48 ID:???] >>492 じゃぁとりあえず、 select * from user; で良いじゃん、中を見てみ。 (rootでmysqlに接続することをお忘れ無く)
494 名前:479 mailto:sage [2007/07/17(火) 19:00:03 ID:???] >>482 自己結合のことですか? AがBを参照し、BもAと同じテーブルに存在するという場合(社員テーブルの社員と上司など) に使えると記憶していますが、どういうふうにこの問題に応用できるんでしょうか? 最近使うようになったばかりでまだ知らない部分が大いにあるので教えて いただけるとありがたいです。 色々調べていて他のSQLサーバーでは以下のようにすればいけることが分かりました。 (SELECT i.* FROM ItemsInTags it INNER JOIN Items i ON (i.TagId = it.TagId) WHERE i.TagId = 10) INTERSECT (SELECT i.* FROM ItemsInTags it INNER JOIN Items i ON (i.TagId = it.TagId) WHERE i.TagId = 8) これをMySQLサーバー用に書き換えるにはどうすれば良いでしょうか?
495 名前:NAME IS NULL [2007/07/17(火) 21:58:15 ID:jLoUe55A] orderby で質問があります。 MySQLはVer5です。 www.geocities.jp/livrersdream/1.html 上にある表が現在のデータです。 それをORDER BY句で下の表の並びで取得したいのですが、1回のクエリでできますでしょうか? 試したのは SELECT * FROM `bg_category` ORDER BY IF(category_parent_id > 0, category_parent_id * 1000 ,sort_order) ですが、当然期待通りにはなりません。 PHPと絡めて複数回のクエリを送ればできるのですが…… よろしくおねがいします。
496 名前:NAME IS NULL [2007/07/17(火) 22:12:57 ID:Nmyq7DKR] MySQL4.1.2 を使用しています。 重複行の削除をしようとしているのですが、 オラクルのように rowid がないので悩んでいます。 やはり一度 distinct したデータで一時テーブルつくって、drop したらまた元に戻してという方法しかないんでしょうか?
497 名前:NAME IS NULL mailto:sage [2007/07/18(水) 00:16:27 ID:???] Windows2000 + mysqld-5.0.45 + ODBC 3.51 Driver + ADO.NET2.0 上記のような環境で、ADO.NETからUTF-8の日本語文字をINSERTしようとしているのですが、 QueryBrowserで見ると文字化けしてしまいます。以下のような設定にしているのですが、 何か間違いありますでしょうか。他に設定すべき項目はありますでしょうか。 (VisualStudio上のウォッチでSQL文にはUTF-8で設定されていることを確認済) character_set_client | utf8 character_set_connection | utf8 character_set_database | utf8 character_set_filesystem | binary character_set_results | utf8 character_set_server | utf8 character_set_system | utf8 ※「my.ini」で「skip-character-set-client-handshake」指定 ちなみに、MySQLをsjisで設定して、ADO.NETからMS932(Shift-JIS)でSQL文を 発行すると文字化けせずに表示されます。ただし、ODBC3.51にバグがあり、 ダメ文字(ソ、十とか)が文字列の最後に来ると例外が発生して更新できません。 よろしくお願いします。
498 名前:NAME IS NULL mailto:sage [2007/07/18(水) 01:02:47 ID:???] >>497 mysql> SHOW VARIABLES LIKE 'character\_set\_%';でどうなってる?
499 名前:NAME IS NULL mailto:sage [2007/07/18(水) 01:06:09 ID:???] >>497 追補 my.cnfはこんな感じか? [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock old_passwords=1 default-character-set=utf8 init-connect=SET NAMES utf8 character-set-server = utf8 [client] default-character-set=utf8 [mysqldump] default-character-set=utf8 [mysql] default-character-set=utf8 [client] default-character-set=utf8 [mysql.server] user=mysql basedir=/var/lib [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
500 名前:NAME IS NULL mailto:sage [2007/07/18(水) 01:13:43 ID:???] >>496 mysqlには無いのでなんとか工夫しましょう。
501 名前:497 mailto:sage [2007/07/18(水) 01:37:46 ID:???] >>498 以下のような感じです。 mysql> SHOW VARIABLES LIKE 'character\_set\_%'; +--------------------------+--------+ | Variable_name | Value | +--------------------------+--------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | +--------------------------+--------+ >>499 mysql5.0を使用しているので、my.iniで良いですよね? [client] port=3306 [mysql] default-character-set=utf8 [mysqld] port=3306 basedir="C:/Program Files/MySQL/MySQL Server 5.0/" datadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/" default-character-set=utf8 skip-character-set-client-handshake 「mysqldump」の領域はありませんでした。
502 名前:NAME IS NULL mailto:sage [2007/07/18(水) 02:14:38 ID:???] >>501 [client] default-character-set=utf8 って必要なかったっけ?ぱっと見コレが無いんだが、 あとは ODBC側の Initial Statement→ SET NAMES cp932 が必要だったっけなぁ、 あんまり使わないんで、うろ覚えでスマン 知っている人つっこんでください。
503 名前:NAME IS NULL mailto:sage [2007/07/18(水) 02:26:59 ID:???] >>495 一発でとろう30分考えたけど挫折した。 こんな時はいつもファンクションに逃げる。phpで複数回クエリ投げるよりは速いと思う。スマン
504 名前:NAME IS NULL mailto:sage [2007/07/18(水) 03:31:37 ID:???] >>494 select B.* from Items as B where exists ( select * from ItemsInTags as A where exists ( select * from ItemsInTags as it where it.TagId = 8 and A.ItemId=it.ItemId) and A.TagId=10 and B.ItemId=A.ItemId ); とか、 もっと美しくできんかなぁ
505 名前:504 mailto:sage [2007/07/18(水) 03:42:54 ID:???] >>494 select it.* from Items as it , ItemsInTags as a1, ItemsInTags as a2 where a1.TagId=8 and a2.TagId=10 and a1.ItemId=it.ItemId and a2.ItemId=it.ItemId でいいね、>>504 は忘れてください
506 名前:475 mailto:sage [2007/07/18(水) 04:01:30 ID:???] >>460 >>473 あとで見返してみたら select v1.* from area as v1, (select area_id from area order by rand() limit 10) as v2 where v1.area_id=v2.area_id order by rand(); でいけるね。
507 名前:NAME IS NULL mailto:sage [2007/07/18(水) 19:47:09 ID:???] >>497 ODBCってあまり経験ないが、Initial Statement に"SET NAMES SJIS" とか入れんじゃねぇ。
508 名前:479 mailto:sage [2007/07/19(木) 06:28:49 ID:???] >>505 あぁなるほど! そういうふうに使えるわけですね。目からうろこです。 すっかり上司と部下のイメージに取り付かれてそういう発想ができません でした。まだまだ勉強不足です。 とても助かりました。心から感謝します。
509 名前:NAME IS NULL mailto:sage [2007/07/19(木) 07:17:54 ID:???] >>508 気分的には select it.* from Items as it , ItemsInTags as a1, ItemsInTags as a2 where a1.TagId=8 and a2.TagId=10 and a1.ItemId=it.ItemId and a2.ItemId=it.ItemId and a1.ItemId = a2.ItemId ってした方がなんか落ち着くね。
510 名前:NAME IS NULL [2007/07/19(木) 17:02:01 ID:+h4+/7J/] mysqldumpの出力するテーブル作成SQLで CREATE TABLE IF NOT EXISTS `table` ・・・ と 「IF NOT EXISTS」を付けるオプションってありますでしょうか? mysqldump --help で調べた範囲ではそれらしいものがなかったので すいませんがご存知の方、お助けください。
511 名前:NAME IS NULL mailto:sage [2007/07/19(木) 17:52:39 ID:???] -n, --no-create-db 'CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name;' will not be put in the output. The above line will be added otherwise, if --databases or --all-databases option was given.}. だから↑をつけなきゃいいじゃねぇ?
512 名前:NAME IS NULL [2007/07/19(木) 21:05:45 ID:RSThEGcc] CREATE DATABASE IF NOT EXISTS ではなく CREATE TABLE IF NOT EXISTS となるようにしたいのですが・・・
513 名前:NAME IS NULL mailto:sage [2007/07/19(木) 21:30:36 ID:???] >>512 mysql> create table if not exists hoge ( fuga int); Query OK, 0 rows affected, 1 warning (0.00 sec) 出来たけど?(5.0.27)
514 名前:NAME IS NULL [2007/07/19(木) 22:02:41 ID:RSThEGcc] >>513 ありがとう。 申し遅れましたが、私512は510でもありまして 事の発端は>>510 のmysqldumpでCREATE TABLE IF NOT EXISTSの付いた 出力ができないかと・・・という問題を抱えております。
515 名前:NAME IS NULL mailto:sage [2007/07/19(木) 22:31:50 ID:???] >>513 dump結果を直でいじれば。 または、create table をdumpさせないとか。
516 名前:NAME IS NULL mailto:sage [2007/07/20(金) 02:49:32 ID:???] >>514 sedで一括置換なら mysqldump -uroot --default-character-set=binary hoge_db > dump sed 's/^CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' dump > dump_tmp sed 's/^DROP TABLE IF EXISTS/--DROP TABLE IF EXISTS/g' dump_tmp > dump_conv dump_convを使ってDB再構築 みたいなこんな感じ?(未テストだけど、たぶんうまくいく気がするけど、テスト環境つくってやってみてね)
517 名前:NAME IS NULL [2007/07/20(金) 04:29:05 ID:X7gTU+GY] >>516 やっぱりそうゆうオプションには無いみたいですね。 ちなみにDROPは--skip-add-drop-tableで出力しないようにできました。 ありがとう。
518 名前:NAME IS NULL mailto:sage [2007/07/20(金) 21:22:03 ID:???] GRANTコマンドでSYNTAXエラー続発で嘆いております。 GRANT ALL PRIVILEGES ON pp.* TO pp@'192.168.1.%' IDENTIFIELD BY 'pp' WITH GRANT OPTION; 自分で何が悪いのかさっぱりわかりません。 間違い個所を指摘してください。お願いします。
519 名前:NAME IS NULL mailto:sage [2007/07/20(金) 21:25:39 ID:???] × IDENTIFIELD ○ IDENTIFIED
520 名前:518 mailto:sage [2007/07/20(金) 21:28:44 ID:???] >>519 ありがとうございます。2時間ぐらい気付きませんでした。
521 名前:NAME IS NULL mailto:sage [2007/07/21(土) 13:48:06 ID:???] select * from table where column1 = *** order by column2 これにcolumn3にある単語を含む情報を上位に持ってくるようにしたいんですけど なにかいい方法はありますか? column2 でソートした上で column3でソートしたいです。 where column3 = ('%abc%')とかにしてしまうと含まないものは出てこないし…。 わかる方どうかお願いします。
522 名前:NAME IS NULL [2007/07/21(土) 16:24:14 ID:RWw8kA+l] 質問です winXP php5.2.3 mysql5 apache2 で開発してます phpで書いたフォームからdbに日本語のデータを登録できない状況です SQL文は $sql = "insert into dbtest values(0,'$name')"; mysql_query($sql); アルファベットでなら登録できます。なにが原因に考えられるでしょう? phpの文字コードはutf-8 mysqlの文字コードもutf-8です 今、以下のコマンドをcmdから実行しました。 insert into dbtest values(0,'bakamono'); insert into dbtest values(0,'ばか者'); 上のほうは反映されますが、下の方は以下のようなエラーが出ます。 mysql> insert into dbtest values(0,'ばか者'); ERROR 1366 (HY000): Incorrect string value: '\x82\xCE\x82\xA9\x8E\xD2' for colum n 'name' at row 1 ご意見よろしくおねがいします。
523 名前:NAME IS NULL mailto:sage [2007/07/21(土) 20:17:25 ID:???] 5.0.45来た。
524 名前:NAME IS NULL mailto:sage [2007/07/21(土) 21:03:45 ID:???] ALTER DATABASE pp DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; COMMIT; 上述のようなSQL文を実行したのですが、実行した事実をいつでも確認できるようにしたいです。 ppの今現在のCHARACTER SETやCOLLATEを見るにはどうしたらいいでしょうか? よろしくお願いします。
525 名前:NAME IS NULL mailto:sage [2007/07/21(土) 21:35:22 ID:???] phpMyAdminで「character set」を変更したいのですが、どうすれば良いでしょうか?
526 名前:524 mailto:sage [2007/07/21(土) 21:53:27 ID:???] CHARACTER SETはSHOW CREATE DATABASE pp;で見ることができました。 COLLATEの方は見ることができないようです。
527 名前:NAME IS NULL mailto:sage [2007/07/22(日) 02:47:09 ID:???] >>522 俺のときは set names utf-8 を先に実行してからinsertしたら出来た。
528 名前:NAME IS NULL [2007/07/22(日) 08:38:38 ID:ihfm4iWJ] >>527 ありがとうございます しかし解決しません。 調べたところ Mysql4.Xまでは my.cnf で set names utf-8 と同じ処理を デフォルト定義できたみたいですが、 自分のMysqlフォルダの中を探しても my.cnfが見つかりません。 これが関係してるんでしょうか。。 Mysql 5 以降では my.cnf は存在しないものなんですか? もう2日もここで止まってる…はぁ〜〜
529 名前:NAME IS NULL mailto:sage [2007/07/22(日) 10:39:49 ID:???] >>528 php側で $name = "ほげ”; $name = "'" . mysql_escape_string($str) . "'"; $sql = "insert into dbtest values(0,$name)"; @mysql_query("SET NAMES utf8"); @mysql_query($sql); してもだめ?
530 名前:NAME IS NULL mailto:sage [2007/07/22(日) 11:00:51 ID:???] >>521 order by column2, column3 とかすればいいんじゃなかったけ。
531 名前:530 mailto:sage [2007/07/22(日) 11:05:11 ID:???] あ、ごめん。そういうことじゃないのか。
532 名前:NAME IS NULL [2007/07/22(日) 15:51:36 ID:ihfm4iWJ] >>529 ありがとうございます ただ、もうどうしてもダメだったのでmysql5から4にバージョンダウンしました そしたら一応入力はできるようになりました。 今度はphpでブラウザに表示すると文字化けしてますが… mysql4に比べてmysql5の長所ってどんなとこだったんでしょうか?
533 名前:NAME IS NULL mailto:sage [2007/07/23(月) 00:23:59 ID:???] すみませんが、間違い個所を指摘してください。お願いいたします。 create table USER_TBL ( USER_NAME VERCHAR(10) CHARACTER SET 'latin1' NOT NULL PRIMARY KEY, PASSWORD VERCHAR(10) CHARACTER SET 'latin1' NOT NULL, USER_ID INT NOT NULL UNIQUE KEY, Created timestamp, Last_Modified timestamp, Last_Accessed timestamp );
534 名前:533 mailto:sage [2007/07/23(月) 01:11:20 ID:???] 実行ユーザーに権限が無いのかも・・・と、今考えています。 ユーザーの権限の調べるのも時間かかるなあ・・・
535 名前:534 mailto:sage [2007/07/23(月) 01:28:27 ID:???] 権限の問題かと思いましたが、エラーメッセージを見るとどう考えても権限ではありませんでした。 エラーコード 1064, SQL 状態 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VERCHAR(10) CHARACTER SET 'latin1' NOT NULL PRIMARY KEY, PASSWORD VERCHAR(10' at line 3 1 行目 1 文字目
536 名前:NAME IS NULL mailto:sage [2007/07/23(月) 02:52:21 ID:???] 原因がわかりました。 VERCHAR ==> VARCHAR NetBeans5.5.1で編集していたのですが、VERCHARでも色が変わるんです。まったく疑いもしませんでした。
537 名前:NAME IS NULL mailto:sage [2007/07/23(月) 03:42:45 ID:???] また質問なのですが、INT型の列(甲とする)に1,2,3,4,5,6・・・・・・nとあるとき、その幾つかがデリートされたとします。 このとき、1,,3,,5,6・・・・・・・nとなったとします。削除された2と4に新しくINSERTするのに効率的な手段はありますでしょうか? 私が考えた手法は、 1. 新たに1,2,3,4,5,6・・・・・・nという内容の列(乙とする)のあるテーブルを作り、WHERE 甲 != 乙 で存在しない2と4を見つける。 2.
538 名前:537 mailto:sage [2007/07/23(月) 03:47:16 ID:???] 途中でエンター押しちゃった。orz 2. 他のプログラミング言語からループでSELECT i++ FROM 〜 WHERE 甲 != i++; で存在しない2と4を見つける。
539 名前:537 mailto:sage [2007/07/23(月) 03:55:40 ID:???] 続き・・・ 3. 1,,3,,5,6・・・・・・・nを定期的に1,2,3,4,5,6・・・・・・nとなるように詰め直す。(普段は最後にINSERTした数字を記録しておき、 INSERTが必要になったら、+1してINSERTする。) 自分が考えたのは以上、三つです。いっそのこと、ハッシュコードみたいなの生成して、デュプリケートがめったに起こらないようにする方がいいのかもしれないとも思います。 でもそうすると、メモリー食いそうな気もするし・・・難しいです。
540 名前:538 mailto:sage [2007/07/23(月) 03:59:09 ID:???] ミステイクに気付きました。i++を二回も呼んだら同じ数字にならないですね。毎日徹夜で頭がおかしくなっているのかも・・・。orz SELECT i++ FROM 〜 WHERE 甲 != i++;
541 名前:537 mailto:sage [2007/07/23(月) 04:04:58 ID:???] また間違ってた・・・。 WHERE 甲 != 乙 ===> WHERE 乙 != 甲 もう寝た方がよさそうだ・・・・orz
542 名前:NAME IS NULL mailto:sage [2007/07/23(月) 04:19:18 ID:???] 詰めないとならない、という仕様にする無駄。
543 名前:537 mailto:sage [2007/07/23(月) 08:56:04 ID:???] >>542 レスありがとうございます。 なるほど、3.はDELETEした数字をすべて記録しておいた方が効率よさそうですね。
544 名前:NAME IS NULL mailto:sage [2007/07/23(月) 09:26:07 ID:???] >>528 Windowsにおいてmy.cnfは短縮ファイルとして表示されてしまうので 右クリックから「送る」からテキストエディタを指定するか、 テキストエディタの「ファイル」→「開く」から編集します。 コマンドプロンプト上で日本語を取り扱う場合、 [mysqld] default-character-SET=utf8 skip-character-set-client-handshake とskip-character-set-client-handshakeを追記しておかないと 一つ目は接続とクライアントのデフォルトのキャラクタセットがlatin1で 固定されてしまいます。(statusで確認できます)
545 名前:NAME IS NULL mailto:sage [2007/07/23(月) 09:59:01 ID:???] >>537 とりあえずお茶でも飲んで落ち着け。書き込むのはそれからだ
546 名前:537 mailto:sage [2007/07/23(月) 10:09:51 ID:???] >>545 文章だけで焦りが伝わってしまっているようで申し訳ないです。
547 名前:NAME IS NULL [2007/07/23(月) 10:23:38 ID:lWbeE31F] >>544 ありがとうございます。 僕のmysqlは4.1.7なんですが、これだと C:\Program Files\MySQL\MySQL Server 4.1 にも C:\Program Files\MySQL\MySQL Server 4.1\bin にもmy.cnfがありません C:\Program Files\MySQL\MySQL Server 4.1 以下のどこにもないのです。 これって普通ですか? その場合はc\my.ini を修正するしかないの考えてOK? また、文字化けする原因はクライアントとサーバの文字コードが違うからだとあるサイトに 書いてありましたが、現状は以下の通りです Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 これに加えて[mysqld]skip-character-set-client-handshake としてるんですが まだ化けます。。 どうしたらいいんでしょう? 4.0にダウンした方がいいんでしょうか…
548 名前:NAME IS NULL mailto:sage [2007/07/23(月) 10:27:31 ID:???] >>537 まさか、AUTO_INC 項目の数字を詰めようとしているのか…?
549 名前:537 mailto:sage [2007/07/23(月) 10:33:10 ID:???] >>548 いや、AUTO_INCREMENT 属性などという便利なものを知らずに無駄な質問をしてしまったようです。 すみませんでした。
550 名前:NAME IS NULL mailto:sage [2007/07/23(月) 10:46:12 ID:???] >>547 4.1系はc:\my.cnf または c:\Windows\my.iniでおこなうようです。 書き忘れましたが私の環境では5.0系です。 www.y2sunlight.com/ground/?MySQL4.1%2F3.MySQL%A5%B5%A1%BC%A5%D0%20Windows%C8%C7%A4%CE%C0%DF%C4%EA それで文字化けするのはphpスクリプトもしくはコマンドプロンプト上のどちらですか?
551 名前:500 mailto:sage [2007/07/23(月) 10:54:09 ID:???] たいした量じゃないので両方書いておきます。 PHPの場合の対策は下記のblogにまとめられています。 www.asial.co.jp/blog/206 コマンドプロンプト上ではコードページ932(Shift-JIS)しか扱えないのと いわゆるダメ文字によって挙動がおかしくなるので、私の場合は毎回 mysql -u root -p --default-character-set=cp932 set names cp932 をしています。
552 名前:NAME IS NULL mailto:sage [2007/07/23(月) 11:03:54 ID:???] >>547 Windows なら、%WinDir%\my.ini Linux なら /etc/my.cnf
553 名前:NAME IS NULL [2007/07/23(月) 11:13:35 ID:lWbeE31F] >>550 ありがとうございます 文字化けするのはphpスクリプトとcmdの両方です 以下のphpスクリプトで文字登録して <html><head><meta http-equiv="content-type" content="text/html;charset=UTF-8"></meta> <title>登録</title><body> <?php extract($_POST); $db=mysql_connect('localhost','root','oraora'); mysql_select_db('peartest'); if($name != ""){ $sql = "insert into dbtest values(0,'$name')"; mysql_query($sql); } ?> <form action="adodb_write.php" method="post"> 名前:<input type="text" row=1 name="name"> <input type="submit"></input></form></body></html> 続きます
554 名前:NAME IS NULL [2007/07/23(月) 11:17:56 ID:lWbeE31F] 以下のスクリプトでMysqlから読み込んでいます <html><head> <meta http-equiv="content-type" content="text/html;charset=UTF-8"></meta> <title>表示</title> <body> <?php require'adodb/adodb.inc.php'; $sqltype = "mysql"; $server = "localhost"; $user = "root"; $password = "oraora"; $dbname ="peartest"; $DB = NewADOConnection($sqltype); $DB -> pconnect($server, $user, $password, $dbname); if(!$DB)die("接続に失敗しました"); $DB->Execute("SET CHARACTER SET EUC-JP;"); $result = $DB->PageExecute("select * from dbtest",100,1); if(!result){ echo "エラー:".$DB->ErrorMsg()."\n"; } echo "<pre>"; while($array = $result->FetchRow()){ print_r($array[1]."<br>"); }echo "</pre>"; ?> </body></html> また、phpから登録したデータをcmdで確認しても、cmdからinsert文で直接登録しても select * で化けています あと、良ければ教えて欲しいのですが、mysql5以上にバージョンアップした理由はなぜですか? 決定的な優位性があるんでしょうか? >>552 ありがとうございます。安心しました、myiniを編集しています。
555 名前:NAME IS NULL mailto:sage [2007/07/23(月) 12:25:04 ID:???] >>553 データベースとhtmlはutf8としている一方で $DB->Execute("SET CHARACTER SET EUC-JP;"); とクライアントのキャラクタセットはeuc-jpにして下さいと 命令しているのはおかしいと思いませんか? それとあれもこれもやるのは混乱の元なので、 まずはmysql関数のみで動作をしてから(変数分離の原則) 次にadodbを確認をお願いします。
556 名前:NAME IS NULL mailto:sage [2007/07/23(月) 14:07:52 ID:???] >>555 ありがとうございます $DB->Execute("SET CHARACTER SET EUC-JP;"); に関しては、 これなしでやっても上手く行かなかったので、試しにやってみたものです。 でも、PEARを一旦やめてテストするのは有効そうですね 試してみます
557 名前:556 mailto:sage [2007/07/23(月) 17:54:26 ID:???] だめだ… 下のスクリプトでもまともに日本語表示しないです mysql_connect($server, $user, $password); mysql_select_db($dbname); $sql ="select * from dbtest"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)){ print($row["name"]."<br>"); } もう4.0にバージョン落とすか… 4.1以降の方が優秀なんですかね…
558 名前:NAME IS NULL mailto:sage [2007/07/24(火) 00:03:04 ID:???] [MySQL Server] -> [MySQL Client] -> [PHP] -> (HTTP Header) -> [表示アプリケーション] この5箇所でどの時点でおかしくなったかわからないとどうしようもない。
559 名前:NAME IS NULL mailto:sage [2007/07/24(火) 06:58:14 ID:???] >>557 select文を発行する前にmysql_query("SET NAMES 'sjis'"); を追加する、もしくはprintの行を print mb_convert_encoding($row["part"],"SJIS")."\n"; と置き換えることでコマンドプロンプト上からも日本語が表示できました。 私の環境は以下の通りです。 XAMPP1.6.2(Apache HTTPD 2.2.4 PHP 5.2.3 MySQL 5.0.43) php.ini extension=php_mbstring.dll [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 my.cnf [client] default-character-set=utf8 [mysqld] default-character-set = utf8 skip-character-set-client-handshake
560 名前:556 [2007/07/24(火) 09:28:34 ID:lv4xBGF9] >>559 ありがとうございます PHPでDBに接続後 SET NAMES UTF8 とすることで、 DBからの日本語引き出しを化けることなく成功できました。 cmdでSELECT * すると全部化けてるんですよね これはしょうがないのかなぁ LINUXで作れば化けないんですかねー
561 名前:NAME IS NULL mailto:sage [2007/07/24(火) 09:48:44 ID:???] >>560 どう考えても表示する側の問題
562 名前:NAME IS NULL mailto:sage [2007/07/24(火) 12:02:44 ID:???] どう考えても作り手の問題、っていうか同じ話題でスレ汚し杉
563 名前:NAME IS NULL mailto:age [2007/07/24(火) 12:26:16 ID:???] コマンドライン(BASH)からコマンドを実行するにはどうすればいいでしょうか? 以下のようにやっているのですが出来ません。 mysql --user=hoge --password=hogehoge prof -e 'SELECT * FROM `user_data` WHERE `reg_time`>='2007-06- 01' and `reg_time`<='2007-06-30'
564 名前:NAME IS NULL mailto:sage [2007/07/24(火) 13:17:33 ID:???] >>563 おお外のクォーテーションはダブルクォーテーションで囲み、 中のクォーテーションはシングルクォーテーションを使ってみ。 また、カラム名は予約語っぽくないのでざわざわ囲む必要なし。
565 名前:NAME IS NULL [2007/07/24(火) 17:08:39 ID:NeXV1fCV] すみません。下のphpコードがうまく動きません… $db = DB::connect("mysql://".DB_USERNAME.":".DB_PASSWORD."@".DB_HOST."/".DB_NAME); ここで止まる if (DB::isError( $db )) { die($db->getMessage()); } 試しに1行目を $db = DB::connect("postgresql://".DB_USERNAME.":".DB_PASSWORD."@".DB_HOST."/".DB_NAME); に変えるとなぜか動きます… どこに原因があるかすらわかりませんのでどなたか教えてください。
566 名前:565 [2007/07/24(火) 17:09:30 ID:NeXV1fCV] 565です。 ちなみにエラーはでなく画面は真っ白になります。
567 名前:NAME IS NULL mailto:sage [2007/07/25(水) 02:21:17 ID:???] >>565 $db = DB::connect("mysql://".DB_USERNAME.":".DB_PASSWORD."@".DB_HOST."/".DB_NAME); じゃなくて $db = DB::connect("mysqli://".DB_USERNAME.":".DB_PASSWORD."@".DB_HOST."/".DB_NAME); じゃなかったっけ?mysqlじゃなくてmysql「i」。
568 名前:NAME IS NULL mailto:sage [2007/07/25(水) 04:06:36 ID:???] >>565 情報少なすぎ まずWEBサーバかPHPのエラーログを確認するのが先決
569 名前:565 [2007/07/25(水) 11:41:51 ID:ANMV9j4t] >>567 $db = DB::connect("mysqli://".DB_USERNAME.":".DB_PASSWORD."@".DB_HOST."/".DB_NAME); でやると DB Error: not found が表示されます。 でも $db = DB::connect("mysql://".DB_USERNAME.":".DB_PASSWORD."@".DB_HOST."/".DB_NAME); でやると 真っ白で何も表示されません。 ちなみにこの行の前に echo "hoge"; とやると表示するのですが、 行の後に書くとやはり何も表示されません。 んで、 $db = mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD); if (!$db) { die(); } else { echo "OK"; } こうするといけるんです; >>586 申し訳ありません。 環境としては、 OS:CentOS 3.6 PHP Version 4.3.2 MYSQL Version 2.6.3-pl1 PEAR.php,v 1.50.2.4 になります。 WEBサーバとPHPのエラーログを見てみたんですが特にエラーは出てないんです。 どうもDB::connect()のどこかでdieみたいな感じで止まってるような気が… 申し訳ありませんが引き続きお願いします。
570 名前:565 [2007/07/25(水) 12:07:28 ID:ANMV9j4t] 訂正です。 MYSQL Version 3.23.58 です。 phpMyAdminのバージョンを書いてしまいました;
571 名前:NAME IS NULL [2007/07/25(水) 12:10:24 ID:vso8Zt4w] >>565 構成が古いみたいだけど 既存システムのメンテナンスかなんかの作業? だとしてら今まで動いてたとおもうんだけど 動いてたときと動かなくなったときの違いを 示してみたら?
572 名前:565 [2007/07/25(水) 12:26:16 ID:ANMV9j4t] >>571 実は今年の5月に借りた専用サーバなんです。 (ちなみにマイティサーバのスタンダード) んで今回開発用のローカルサーバ(Win)で作成して、 そのファイルを本サーバでテストしようとしたら今回の問題に遭遇してしまいました。 最悪PEARを使わない手もあるんですが、そうなるとDBまわりのソースを全部書き換えないといけないんで 出来ればそれは回避したいです。 引き続きお付き合いお願いします。
573 名前:NAME IS NULL [2007/07/25(水) 12:35:36 ID:vso8Zt4w] 実機と開発環境のツール類の違いは?
574 名前:565 [2007/07/25(水) 12:52:03 ID:ANMV9j4t] >>573 | 実機 | ローカル OS | CentOS 3.6 | Windows Vista Ultimate PHP | 4.3.2 | 4.4.6 MYSQL | 3.23.58 | 3.23.49 PEAR | 1.50.2.4 | 1.98 こんな感じになります。 Windows…と思われるかもしれませんが、テスト用のlinuxが社内になく、 致し方なくwinでテストしています;
575 名前:NAME IS NULL mailto:sage [2007/07/25(水) 12:59:47 ID:???] 今年借りたサーバでMySQL3ってなんか嘘くさいっつーか。
576 名前:NAME IS NULL [2007/07/25(水) 14:06:03 ID:vso8Zt4w] 今皿おそいがWindowsを実機と同等のツールで環境を張った方がよかったね >テスト用のlinuxが社内になく っていうのは共感するけどw linuxのインストールと設定ができるのであればWindowsにVMWare とかで構築するといいよ。オレはそうしてるから。
577 名前:565 [2007/07/25(水) 15:48:54 ID:ANMV9j4t] 今プライベートのテストサーバ(さくらの共有サーバ) でさっきのを動かしてみたんですが、問題なく動きました; どうもPEARのインストールあたりでつまづいてる感じがします… (レンタルサーバなんでデフォルトでインストールされてる物なんですが…) 一度PEARを再インストールしてみてもう一度試してみようと思います。 >>576 >linuxのインストールと設定ができるのであればWindowsにVMWare >とかで構築するといいよ。 ありがとうございます。早速試してみます。 社内にテストサーバが無いのは自分とこだけだと思ってましたが、 結構あるんですねw
578 名前:565 [2007/07/25(水) 16:21:10 ID:ANMV9j4t] 追加情報 $db = DB::connect("mysql://".DB_USERNAME.":".DB_PASSWORD."@".DB_HOST."/".DB_NAME); の"mysql://"の所に"mysql"とか"pgsql"とか本来使えるDBの種類を指定するとだめみたいです。 その代わり"aaaaa"とかありえない文字列にすると$dbにエラーが返ってくるので、 まったくDB.phpが動いてないってわけじゃないみたいです。 ん〜〜Pear自体にバグがあるんですかねぇ?
579 名前:NAME IS NULL [2007/07/25(水) 16:34:55 ID:vso8Zt4w] ん〜〜 借りてる専用サーバにどこまで手を入れられる自由度が あるのか知らないけど 環境更新ができるんだったらyumしてみたら。 これまでの流れで一番疑わしいのはPEARだし。
580 名前:NAME IS NULL mailto:sage [2007/07/25(水) 17:39:37 ID:???] >>578 エラーメッセージじゃなくて、PHPとMySQLの 「エラーログ」を見せてよ。 MySQLに繋がったなら、接続ログ残ってるはずだし それに続いて何か記録されてるでしょ。
581 名前:565 [2007/07/25(水) 18:49:36 ID:ANMV9j4t] >>580 phpのエラーは出てないみたいでログは無いです。 MYSQLのログはなぜか見つからなくて… (保存設定の場所に何故か無い) 現在そっちで格闘中ですw
582 名前:NAME IS NULL [2007/07/25(水) 20:55:16 ID:dIip1FAH] とみーたのメーリングリストはきもーい
583 名前:NAME IS NULL [2007/07/26(木) 00:38:49 ID:pBQax6Oq] データインポート後に、後から各レコードにユニーク番号を振ろうとしてるんですが いくら修正しても、255以降のレコードが全部勝手に255になってしまう、という現象に悩まされてます。 何が原因なんでしょう?
584 名前:NAME IS NULL mailto:sage [2007/07/26(木) 01:33:04 ID:???] >>583 データ型の問題
585 名前:NAME IS NULL mailto:sage [2007/07/26(木) 01:42:35 ID:???] >>581 phpのエラーがでないのは display_errorsがoffになってるからじゃないだろか
586 名前:565 [2007/07/26(木) 10:17:08 ID:l0TK3yeO] >>585 いえ、他のエラーはちゃんとログに残っているんでそれはないです。
587 名前:NAME IS NULL [2007/07/26(木) 10:45:44 ID:ZNlBUxEh] 何故に、Using temporary; Using filesort が行われてしまうのか、 エロい人お答えください。 (MySQL 5.1.9にて) DROP TABLE IF EXISTS TABLE1; CREATE TABLE TABLE1 ( FIELD1 INT(11) NOT NULL DEFAULT 0, PRIMARY KEY (FIELD1) ); DROP TABLE IF EXISTS TABLE2; CREATE TABLE TABLE2 ( FIELD1 INT(11) NOT NULL DEFAULT 0, FIELD2 INT(11), KEY INDEX1 (FIELD1,FIELD2) ); INSERT INTO TABLE1 VALUES(1); INSERT INTO TABLE1 VALUES(2); INSERT INTO TABLE2 VALUES(1, 1); INSERT INTO TABLE2 VALUES(1, 2); EXPLAIN SELECT * FROM TABLE1,TABLE2 WHERE TABLE1.FIELD1=TABLE2.FIELD1 ORDER BY TABLE1.FIELD1;
588 名前:NAME IS NULL mailto:age [2007/07/26(木) 12:21:22 ID:???] ORDER BYで2つのカラムから並び順を指定したい場合、どのようになるでしょうか? 例えば hogeテーブルのseqの降順で並べて同じseqのものはtimeの昇順で並べるといった感じです。 SELECT * FROM `hoge` ORDER BY `seq` DESC `time` ASC これだとエラーになりました。
589 名前:NAME IS NULL mailto:sage [2007/07/26(木) 12:38:52 ID:???] >>588 カンマが抜けてるだけとか >ORDER BY `seq` DESC `time` ASC ORDER BY `seq` DESC , `time` ASC
590 名前:565 [2007/07/26(木) 12:42:22 ID:l0TK3yeO] 565です やっと解決しました!! PEARが問題あると思ってヴァージョンアップしたんですが… 結果は×… そこで 上のソースには書いてなかった部分ですが、 インクルードパスの部分で ini_set('include_path','.:/usr/share'); require_once('pear/DB.php'); を ini_set('include_path','.:/usr/share:.:/usr/share/pear'); require_once('DB.php'); に変えたら… いけました! 元々shareにはsmartyやらなんやら入れていたんで、 そのパスにしていたんですが、DB.phpがrequireしている PEAR.phpの中の諸々のパスが通ってなかったみたいでした… でもなんでエラーログに残ってなかったんだろう… とりあえず原因もわかったのでスッキリです! 571さんをはじめレス頂いた皆さんどうもありがとうございました!!
591 名前:565 [2007/07/26(木) 13:00:36 ID:l0TK3yeO] 今思ったんですが激しく板違いな質問でしたね… 本当にお騒がせしました;
592 名前:NAME IS NULL mailto:age [2007/07/26(木) 14:50:37 ID:???] >>589 さん ありがとうございます。 自分の視野の狭さにびっくりです。。。
593 名前:NAME IS NULL mailto:sage [2007/07/26(木) 23:46:03 ID:???] phpMyAdminをインストールしたのですが データベース一覧に「information_schema」というデータベースが表示されます。 これをユーザーが見えないようにしたいのですがどうしたらいいでしょうか? 参考:ttp://www.blockgroup.jp/phpmyadmin/tableadd.html よろしくお願いします。
594 名前:NAME IS NULL mailto:sage [2007/07/26(木) 23:57:40 ID:???] えー加減、phpの問題はそっち関連の板でやれや
595 名前:NAME IS NULL [2007/07/27(金) 00:03:57 ID:gg0JCmU1] Windows Vista に MySQL を入れたら異様に接続に時間がかかるんだけど(3秒くらい) そういった症状ありますか?ver.4.1でも5.0でも変わらず。 ファイアーウォールとかアンチウィルスなんかを切っても変わりません。 接続した後はなんら問題ないんですけども。
596 名前:593 mailto:sage [2007/07/27(金) 00:28:34 ID:???] 解決しますた。
597 名前:595 mailto:sage [2007/07/27(金) 02:18:11 ID:???] なぜか今やってみたら正常ですた・・・。 なんだったんだろうか。
598 名前:NAME IS NULL [2007/07/27(金) 14:33:57 ID:Xo6cJhj9] DATE型のフィールドに誕生日を保存しているのですが、 そこから20歳未満のデータを取得したいのですが何かいい方法はありませんか? 年齢で別に保存しておかなくてはいけないのでしょうか?
599 名前:NAME IS NULL mailto:sage [2007/07/27(金) 17:03:26 ID:???] >>598 where 誕生日 > date_sub(curdate(), interval 20 year)
600 名前:NAME IS NULL [2007/07/28(土) 14:53:20 ID:X4hyAVEd] 自作PHPスクリプトからだとMySQLに接続できるのですが phpMyAdminを使って接続しようとすると、 Access denied for user 'username'@'localhost' (using password: YES) とエラーが出てしまいます。 どうすれば良いのでしょうか…?
601 名前:NAME IS NULL [2007/07/28(土) 15:18:38 ID:eFtPhvG6] テーブルをまたいでsum値をとりたいのですが、SQLで可能でしょうか? select sum(data) from table1; これで、table1のdataの積算が取れますが、同じテーブル構造の table1,table2,table3 があり、三つのdataの合計値を求めたいんです。
602 名前:NAME IS NULL mailto:sage [2007/07/28(土) 16:17:42 ID:???] >>600 phpMyAdminに設定されてるパスワードを確認しる
603 名前:NAME IS NULL mailto:sage [2007/07/28(土) 17:08:03 ID:???] >>601 sum(table1.data)+sum(table2.data)+sum(table3.data) ブルブルブル
604 名前:NAME IS NULL mailto:sage [2007/07/30(月) 00:46:38 ID:???] fedoraでmysqlに接続出来るCのサンプルプログラムないですか ttp://www.mysql.gr.jp/mysqlml/mysql/msg/2834 ここのプログラム参考にしたんですが,undefined reference to `mysql_init' 上記のエラーが出るんですが・・・
605 名前:NAME IS NULL mailto:sage [2007/07/30(月) 01:12:51 ID:???] >>604 その質問の仕方だと、Cの初心者? 言語そのものをもう少し勉強するか、使いやすいスクリプトにかえたほうがいいんじゃない?
606 名前:NAME IS NULL mailto:sage [2007/07/31(火) 00:03:55 ID:???] mysqlコマンドのソースぐらい解析してパクればいいのに。
607 名前:604 mailto:sage [2007/07/31(火) 00:49:52 ID:???] クライアントライブラリにリンクしていないだけなのか? プログラムの問題より開発環境を整えなければ・・・
608 名前:NAME IS NULL mailto:sage [2007/07/31(火) 01:16:05 ID:???] WHERE INで検索する値は最大何個なんでしょう。 公式ドキュメント見ても書いてない…。
609 名前:NAME IS NULL mailto:sage [2007/07/31(火) 02:03:27 ID:???] ざっと400
610 名前:NAME IS NULL [2007/07/31(火) 13:59:13 ID:WUqKUQvr] tbl1 [id][name][point] [1] [山田][25] [2] [大川][69] [3] [東野][78] [4] [品川][11] というデータがあり、 tbl2 [id][test][date] [1] [30] [2007-07-31] [3] [43] [2007-07-28] [4] [88] [2007-06-30] [2] [29] [2007-06-27] [1] [21] [2007-06-14] [3] [57] [2007-05-27] というデータを結合させたいのですが、 tbl2のデータはそのidごとの最新の1件のみ結合させたいのです。 つまり、これをLEFT JOINしてみると SELECT * FROM tbl1 LEFT JOIN tbl2 ON tbl1.id = tbl2.id [1] [山田][25] [30] [2007-07-31] [1] [山田][25] [21] [2007-06-14] [2] [大川][69] [29] [2007-06-27] [3] [東野][78] [43] [2007-07-28] [3] [東野][78] [57] [2007-05-27] [4] [品川][11] [88] [2007-06-30] と、同じIDでも複数行になってしまいます。 これを [1] [山田][25] [30] [2007-07-31] [2] [大川][69] [29] [2007-06-27] [3] [東野][78] [43] [2007-07-28] [4] [品川][11] [88] [2007-06-30] のように、dateが一番最新の1件のみずつ結合させたいのですが可能でしょうか?
611 名前:NAME IS NULL [2007/07/31(火) 14:49:21 ID:HtfeXAjK] >>551 質問する前にログ呼んでいたら俺にとって神っぽいのがあったyo!
612 名前:NAME IS NULL mailto:sage [2007/07/31(火) 16:38:23 ID:???] >>610 山田君が心配でなりません
613 名前:NAME IS NULL [2007/07/31(火) 16:41:36 ID:WUqKUQvr] >>612 たまたま苦手な科目だったので大丈夫です。 彼は結構努力家なので頑張ればできる子だと思います。
614 名前:NAME IS NULL mailto:sage [2007/07/31(火) 19:37:47 ID:???] >>610 グループ化中の最大小値の行抽出は サブクエリ使うしかなかった様な(?)
615 名前:NAME IS NULL mailto:sage [2007/07/31(火) 23:07:36 ID:???] viewってどのタイミングでデータ取得してるんですか? 参照してるテーブルがちょっとでも変わるとコロコロデータ変わるの? それともviewを参照した時点で変わるんですか?
616 名前:NAME IS NULL mailto:sage [2007/08/01(水) 03:27:49 ID:???] >>612 品川君の心配もしてあげてください。
617 名前:NAME IS NULL mailto:sage [2007/08/01(水) 11:59:19 ID:???] test
618 名前:NAME IS NULL mailto:sage [2007/08/01(水) 12:14:05 ID:???] >>610 tbl2 を id で group by した結果を join する訳だが、group byで チョイスされるレコードを制御できれば解決だよね? group by は最初に見つかったレコードをチョイスする特性があるので、 まずサブクエリで並べたい順番に order by した結果を group by する。
619 名前:NAME IS NULL mailto:sage [2007/08/01(水) 12:19:08 ID:???] DISTINCTしたテーブルの行をCOUNTで返すことは可能でしょうか? 以下のようなsql文で行の数を返した見たのですが、 重複したすべての行の数も返されてしまいます。 SELECT DISTINCT host, COUNT( host ) AS `行` , `url` FROM access GROUP BY `host` ORDER BY `行` DESC LIMIT 0 , 30
620 名前:NAME IS NULL [2007/08/01(水) 15:57:17 ID:UEnuxYzb] 質問、、というかおねがいです。 今、「mysql入門以前」という本を使っていて、ユーザはroot でのみ作業しています。 それで、PHPとの連携とかは多少できるようになったんですが、DBのバックアップなど運用系については 知識皆無です rootユーザで全部やるとまずいんだろうと思いますが、どのヘンがまずいかなども よくわかっていません。 なので、その辺について詳しく書いている本を教えてもらえないですか? 単純にcmdからの操作やコードについてでなく、mysqlの運用・保護・セキュリティまで 概念の面でもさっくり解説している解説書を希望してます。 皆さんの経験上これは良かったぞというものがあったらお願いします。 また、ついででいいですが、LINUX+APACHEでのwebサーバ運用のセキュリティ本 (初級〜中級レベル)でオススメの物があったらそれもおねがいします。 済みませんが、よろしくおねがいします。
621 名前:620 [2007/08/01(水) 16:00:01 ID:UEnuxYzb] すみません 書き忘れてました。 mysqlのバージョンは5です 今の開発はwinXP+apache2ですが、将来は centOS4 + apache2 で運用したいと思います どなたかお暇な方おねがいします。
622 名前:NAME IS NULL mailto:sage [2007/08/01(水) 16:59:55 ID:???] >>621 ttp://www.atmarkit.co.jp/flinux/index.html でも、興味のある物から片っ端から読んでみれば
623 名前:NAME IS NULL mailto:sage [2007/08/01(水) 20:01:20 ID:???] それぞれのCollationが どういう順序で照合していくのかは どうやれば分かりますか?
624 名前:NAME IS NULL mailto:sage [2007/08/01(水) 20:37:31 ID:???] show collation
625 名前:NAME IS NULL mailto:sage [2007/08/01(水) 21:35:21 ID:???] >>624 それぞれのcollationの詳細が知りたいんです たとえばutf8_general_ciとutf8_unicode_ciがどう違うのかとか…
626 名前:NAME IS NULL mailto:sage [2007/08/01(水) 23:00:11 ID:???] mysqlにおける データベース名、テーブル名、カラム名の 最大長はいくつでしょうか?
627 名前:NAME IS NULL mailto:sage [2007/08/02(木) 01:13:20 ID:???] >>619 count(distinct host) で、どない?
628 名前:620 mailto:sage [2007/08/02(木) 06:39:25 ID:???] >>622 ありがとうございます 読んでみます
629 名前:NAME IS NULL mailto:sage [2007/08/02(木) 18:39:48 ID:???] UPDATE文の中でINNER JOINを使うには どう書いたらよいでしょうか?
630 名前:NAME IS NULL mailto:sage [2007/08/02(木) 18:40:31 ID:???] >>629 UPDATE tbl1 INNER JOIN 〜 ON 〜 SET でいけるんじゃない?
631 名前:629 mailto:sage [2007/08/02(木) 19:15:24 ID:???] >>630 できました!構文の順序を間違ってたみたいです。ありがとうございます。
632 名前:NAME IS NULL mailto:sage [2007/08/02(木) 20:48:47 ID:???] テーブルではなく、テーブル内の特定行を誤って削除してしまいました。 操作ログはどうやらないようなのですが、これを復旧する方法はあるのでしょうか? もしあれば、教えていただけないでしょうか……。
633 名前:NAME IS NULL mailto:sage [2007/08/02(木) 22:23:02 ID:???] mysql 4.1.20 です。 以下のように、varchar(100) のカラムを作りました。 create table foo ( hoge varchar(100) NOT NULL ) PHP で、101 文字以上の文字列をこのカラムに insert しても、 桁あふれエラーにならず、100文字で切り捨てられて格納されます。 ↓をみても、このような動きは正しいようなのですが、 dev.mysql.com/doc/refman/4.1/ja/char.html > CHAR 型または VARCHAR 型のカラムに、そのカラムの最大長を超える値を割り当てると、 > カラムのサイズに合わせて値が切り捨てられます。 MySQL ってこういうものなのでしょうか?? Oracle とかだと桁あふれで ORA-ほにゃらら が発生するので、 いつもアプリ側で桁チェックしていたのですが・・・
634 名前:NAME IS NULL [2007/08/03(金) 08:52:42 ID:zkXqSFX2] MySQL Version 5 UTF-8 という作りのレンタルサーバーを利用しています。 このサーバーに、SJISからEUC-JPにエンコードしたデータを格納し、 EUC-JPからSJISにエンコードして参照している状況なのですが、 「ひらがなによるソート」を試みたときに並びが滅茶苦茶になってしまいます。 「あ→か→さ→た」となるべきところが「た→あ→か→さ」となる感じです。 サーバーのサポートが当てにならないのでここにきました。どこに問題があるのか分かる方がいましたら教えてください。
635 名前:NAME IS NULL mailto:sage [2007/08/03(金) 10:46:42 ID:???] >>633 5.0以降ならsql_modeを指定すればOracleのようにできます。 4.1でもsql_modeを指定すればできるかもしれないけど調べてません。
636 名前:NAME IS NULL mailto:sage [2007/08/03(金) 10:49:55 ID:???] >>633 create table時にcharsetにujisかeucjpmsを指定すればいいでしょう。 あるいはtextじゃなくてblobにすればソートされる気がするけど、お勧めはしない。
637 名前:634 [2007/08/03(金) 10:57:30 ID:zkXqSFX2] >>636 このレスは>>634 宛とみてよいでしょうか? ありがとうございます。 早速試してみて、また経過を報告させていただきます。
638 名前:NAME IS NULL mailto:sage [2007/08/03(金) 11:09:31 ID:???] >>632 バイナリログか定期的なdumpをしていないのならば諦めるほかあるまい。
639 名前:NAME IS NULL mailto:sage [2007/08/03(金) 12:28:57 ID:???] mysql 5.0.x MyISAM だけれども、 ・あるはずのデータがqueryされないことがある ・count(*) では正しい件数が出てくる ・原因不明なので、テーブル repairすると特にエラーがあった訳ではないがその後正しくqueryされる という怪現象に遭遇中、同じ経験をし克服したヤツいますか?
640 名前:NAME IS NULL mailto:sage [2007/08/03(金) 12:50:28 ID:???] >>639 indexが壊れてる気がする myisamchkとかしてみそ
641 名前:NAME IS NULL mailto:sage [2007/08/03(金) 15:00:20 ID:???] >>640 ありがとう。 check table すると壊れてないって言ってくるけど、repairすると直る。やはりエラーはなし。 "myisamchk -r xxx" = "repair table xxx" だと理解しているが今度出たらやってみる。 クエリキャッシュがなぜかリフレッシュされないことがあるのか? と思ってきたので、RESET QUERY CACHE をしてみる。
642 名前:634 mailto:sage [2007/08/03(金) 19:59:18 ID:???] 色々といじってみましたが、解決しないのでもう一度お願いします。 試行したことは以下の通りです。 MySQL の文字セットは UTF-8 Unicode (utf8) ブラウザはShift_JIS ・接続照合順序、テーブルの照合順序をujis_japanese_ciにしてSJISで格納しSJISで出力→ソートが上手くいかず、「か」等の文字で文字化け ・接続照合順序、テーブルの照合順序をujis_japanese_ciにしてSJISで格納しEUC-JPで出力→文字化け ・接続照合順序、テーブルの照合順序をujis_japanese_ciにしてEUC-JPで格納しSJISで出力→「か」やさ行の文字で文字化け ・接続照合順序、テーブルの照合順序をujis_japanese_ciにしてEUC-JPで格納しEUC-JPで出力→文字化け ・接続照合順序、テーブルの照合順序をeucjpms_japanese_ciにしてSJISで格納しSJISで出力→文字化け ・接続照合順序、テーブルの照合順序をeucjpms_japanese_ciにしてSJISで格納しEUC-JPで出力→文字化け ・接続照合順序、テーブルの照合順序をeucjpms_japanese_ciにしてEUC-JPで格納しSJISで出力→文字化け ・接続照合順序、テーブルの照合順序をeucjpms_japanese_ciにしてEUC-JPで格納しEUC-JPで出力→文字化け ・接続照合順序、テーブルの照合順序をutf8_general_ciにしてSJISで格納しSJISで出力→文字化け ・接続照合順序、テーブルの照合順序をutf8_general_ciにしてSJISで格納しEUC-jPで出力→文字化け ・接続照合順序、テーブルの照合順序をutf8_general_ciにしてEUC-JPで格納しSJISで出力→文字化けはないがソートに失敗 ・接続照合順序、テーブルの照合順序をutf8_general_ciにしてEUC-JPで格納しEUC-JPで出力→文字化け ・接続照合順序、テーブルの照合順序をutf8_general_ciにしてUTF-8で格納しUTF-8で出力→文字化けはないがソートに失敗 phpmyadminで格納されたデータをみると、どの場合でも「??????」あるいは他の意味不明な文字列になっていました。 localhostではソートも上手くいっていたのですが・・・なぜ上手くいっていたのかもわかりません。 どなたかご指摘お願いします。
643 名前:NAME IS NULL mailto:sage [2007/08/03(金) 20:14:59 ID:???] >>642 その調子だと、格納がちゃんとされているのかも怪しいけど
644 名前:634 mailto:sage [2007/08/03(金) 20:34:38 ID:???] >>643 insertしたい文字列を $str = mb_convert_encoding($str, "EUC-JP", "SJIS"); としたあとにinsertしていますが、こことは違う問題でしょうか?
645 名前:NAME IS NULL mailto:sage [2007/08/03(金) 21:33:44 ID:???] >>642 クライアントの文字セットが何になってるか確かめてちょ。 とりあえずeucjpでつっこむなら、一番最初のSQLで set names eucjpms か set names ujis を実行すること。 (上がダメなら set names binary って手もあるけど、オススメはしない)
646 名前:634 mailto:sage [2007/08/03(金) 21:46:49 ID:???] >>645 643さんとあわせてありがとうございます。 クライアントのほうは| character_set | sjis となってます。 インストールしたままの状態で利用しています。 set namesについては今から試してきます。
647 名前:634 mailto:sage [2007/08/03(金) 22:23:15 ID:???] >>645 set names UJISを実行したうえで 接続照合順序、テーブルの照合順序をeucjpms_japanese_ciにしてEUC-JPで格納したところ phpmyadmin上では綺麗にひらがなで表示されていました。うれしいです。 しかしこれをSJISに出力しようとするとやはり文字化けしまうようです。
648 名前:NAME IS NULL mailto:sage [2007/08/03(金) 22:49:21 ID:???] >>647 データベースに格納している文字セットに関わらずクライアントで指定している文字セットで取得するので、 (よーするに格納している文字セットとクライアントの文字セットが違う場合は変換してくれるワケ) クライアントの文字セットが ujisやeucjpmsになってるなら出力する前にsjisに変換する必要があるし、 sjisやcp932なら変換する必要はないです。 これ以上はたぶんスレ違いなのでPHPスレでどーぞ。
649 名前:634 mailto:sage [2007/08/03(金) 23:03:18 ID:???] >>648 すみません、言葉足らずだった部分があったのでここだけ訂正します。 PHPの話題になってしまうのですが、 $str = mb_convert_encoding($str, "SJIS", "XXX") を実行して変換は行ったうえで、なお文字化けしてしまうということをお伝えしたかったのです。 アドバイスを元にまた試行錯誤してきます。丁寧に対応してくれてありがとうございました。
650 名前:NAME IS NULL [2007/08/04(土) 13:59:02 ID:HPcoDndd] すみません、質問させてください。 今まで2台のサーバでPHPで作ったウェブサイトのデータベースを運用していました。 それぞれ、my.cnfにて文字コードをutf8とujisに設定してました。 が、このたび、それを1台にまとめて、utf8とujisのデータベースを共存させたいのですが、 うまくできません。 ためしに、my.cnfでdefault-character-setを設定せずに、従来のデータベースをmysqldumpからエクスポートしたものを そのまま新しいサーバに入れてみましたが、ブラウザからみると見事に文字化け。 その後いろいろと試してみましたが、うまく行きません。 PHPを全くいじらずに、mysqlサーバの設定だけで全てがうまく行く方法はないものでしょうか?
651 名前:NAME IS NULL mailto:sage [2007/08/04(土) 14:12:28 ID:???] >>650 運用中である2台のサーバのMySQLバージョンは? そして1台にまとめたあとのバージョンは?
652 名前:650 [2007/08/04(土) 15:06:54 ID:HPcoDndd] レスありがとうございます。 元のサーバのバージョンが4.1.20 移行先のサーバのバージョンが5.0.22です。
653 名前:NAME IS NULL mailto:sage [2007/08/04(土) 15:34:19 ID:???] >>652 運用中の2台をそれぞれA,Bと、以降先のをCとします。 まず、AとBのダンプをmysqldumpで、オプションに --default-character-set=utf8を指定して出力する。 そのダンプをCに突っ込めばうまくいくんじゃないのかな?
654 名前:NAME IS NULL mailto:sage [2007/08/04(土) 16:17:50 ID:???] 質問です。 WHERE句で `age' = 10 OR `age` = 20 OR `age` = 30 と `age` IN (10, 20, 30) とやるのでは、効率などに違いはないのでしょうか? 動作的には同じ結果が出たのですが、負荷に違いがでるのか気になります。
655 名前:NAME IS NULL mailto:sage [2007/08/05(日) 10:37:40 ID:???] INのほうが速い
656 名前:NAME IS NULL [2007/08/05(日) 12:21:47 ID:ihsPXEFs] 5.1は永遠のベータ版ダナ〜
657 名前:NAME IS NULL mailto:sage [2007/08/05(日) 15:13:27 ID:???] utf8に統一すれば、問題回避できるのにアフォな香具師が多いな。
658 名前:NAME IS NULL mailto:sage [2007/08/05(日) 15:38:56 ID:???] UTF-8に統一できない政治的問題が多いからな クライアントの指示が絶対だったりサーバに手を入れることが 不可能だったり
659 名前:NAME IS NULL mailto:sage [2007/08/05(日) 16:54:43 ID:???] MyISAM VARCHAR(100)のフィールドに数値2.2(引用符囲まず))をINSERTすると 2.1900000000〜〜 と近似値小数点以下数桁で格納されてしまいます、 仕様でしょうか?
660 名前:NAME IS NULL mailto:sage [2007/08/05(日) 21:59:35 ID:???] 4.1.18で上記現象を確認しました、 5.0.27では「2.2」そのままで格納されました・・・4.1系特有の現象(バグ?)でしょうか・・。
661 名前:NAME IS NULL mailto:sage [2007/08/05(日) 23:25:27 ID:???] >>660 そうだよ。仕様だけどな。 公式にもあったよ。桁数がたんねーから丸まるってさ。
662 名前:NAME IS NULL [2007/08/06(月) 16:37:01 ID:/MGn34vw] MySQLで独自の関数みたいなものを作る方法はあるのでしょうか?
663 名前:NAME IS NULL mailto:sage [2007/08/06(月) 18:23:32 ID:???] >>662 udf
664 名前:NAME IS NULL mailto:sage [2007/08/06(月) 21:09:02 ID:???] MySQL 4.1.20 です。 InnoDB でテーブルを作成しました。 (正確には MyISAM でテーブルを作って、InnoDB に変更しました) 質問が2点あります。 ○1: mysql コマンドで DB に接続し、 > set autocommit=0; を実行すればオートコミットは off になりますが、 たまにやりわすれてしまい、さらにそのあとの更新系の SQL を間違えて データを余計に消したりしてしまいます。 set autocommit=0; をデフォルトの挙動にすることはできますか? my.conf に書けないかなとぐぐったのですが、見つかりませんでした。 ○2: set autocommit=0; や begin; や rollback: は、 コマンドドラインの mysql コマンドで SQL を投げているときは有効ですが、 MySQL Administrator の Edit Table Data で開く MySQL Query Browser では トランザクション管理が効きません。 begin; [alt + enter]して、画面下部に Query returned no resultset. と表示された後、 更新系の SQL を投げて、 rollback; [alt + enter] しても、 ロールバックされずにコミットされているようです。 MySQL Query Browser でトランザクション管理するには どうしたらいいでしょうか?
665 名前:NAME IS NULL [2007/08/06(月) 21:35:47 ID:FNS0/TEW] 運用中のサイトとのかねあいで mysql4.0をダウンロードしたいのですが mysqlのサイトで該当ページを見つけることができません。 どこでダウンロードできるのでしょうか?
666 名前:NAME IS NULL mailto:sage [2007/08/06(月) 21:41:27 ID:???] >>665 MySQL入門以前って本に 4.0のバージョンが付いている。どこぞでダウンロードできるかどうかは知らね。
667 名前:NAME IS NULL mailto:sage [2007/08/06(月) 21:44:12 ID:???] downloads.mysql.com/archives.php
668 名前:NAME IS NULL mailto:sage [2007/08/06(月) 22:00:58 ID:???] ODBC関数のodbc_fetch_rowと同じものってMYSQL関数にある?
669 名前:NAME IS NULL mailto:age [2007/08/07(火) 16:45:54 ID:???] 毎週x日リセットのレンタルランキングシステムを作ってるんですが、DB構造で悩んでます。 以下のどちらがいいでしょうか? 1)[site_tbl]サイト情報(`site_seq`,`id`,`pass`,`title`等)にリセット日を入れてcronでチェック 2)別にテーブル[reset_tbl]を作る(`site_seq`,`reset_day`) どちらが一般的でしょうか? また、作成したことがある方いらっしゃいましたらテーブル構成を見せていただけないでしょうか?
670 名前:NAME IS NULL mailto:sage [2007/08/07(火) 18:27:20 ID:???] >>669 説明が下手だね。 良くわかんないけど、テーブル的に期間は気にせずにdailyとか溜めていってクエリで特定の期間内を条件にランキングを出せば。
671 名前:NAME IS NULL [2007/08/07(火) 19:46:33 ID:idn6dm6M] 2つのテーブルに入ってるデータの重複カウントを取りたいのですが、 どうやるのが一番軽いでしょうか? select count(*) from a,b where a.data = b.data では応答がなくなってしまいました。 テーブルaには15万行のデータがあります。 またテーブルbには2万行のデータがあります。 実行環境はwindowsのヘボマシンです。 無理でしょうか?
672 名前:NAME IS NULL [2007/08/08(水) 02:09:47 ID:lZHQNHvN] phpMyAdminでテーブルのチェックをやると、 table 〜 is marked as crashed and shuld be repaired と表示されるようになりました。 マークをされたのは分かりましたが、 このマークはいつの段階で利用されるのですか? 再起動時でしょうか?
673 名前:NAME IS NULL [2007/08/08(水) 02:18:10 ID:lZHQNHvN] myisamchkでrapairしたら出なくなりました 自動で行われるのではなく、 こんなふうに自分でやらないといけないのでしょうか・・・
674 名前:NAME IS NULL mailto:sage [2007/08/08(水) 23:15:38 ID:???] >>673 ttp://dev.mysql.com/doc/refman/5.1/ja/maintenance-schedule.html
675 名前:NAME IS NULL mailto:sage [2007/08/09(木) 04:13:09 ID:???] mysqlで、サーバのメモリが4GBとして、 1GBぐらいのデータベース(書き換えはあっても増えないデータベース) をメモリ上に常駐して高速化する方法ってあるんでしょうか? (更新データは随時ディスクに書き込み)
676 名前:NAME IS NULL [2007/08/09(木) 04:36:15 ID:svmYyWXz] dev.mysql.com/doc/refman/4.1/ja/using-mysqlcheck.html ここに、 myisamchk が、サーバが実行していないときに使用するのに対し、 mysqlcheck は mysqld サーバが実行しているときに使用します。 と書かれていますが、 稼働中にmysqlcheckを実行した時、 テーブルは普通にアクセスできるのでしょうか? それともロックされて、アクセス不可能な状態になるのでしょうか?
677 名前:NAME IS NULL [2007/08/09(木) 07:06:23 ID:cTeGMyVr] 質問です 以下のテーブルを作成し mysql> create table m_member( -> id mediumint not null auto_increment,username varchar(50), -> password varchar(50),last_name varchar(50), -> first_name varchar(50),birthday char(8), -> ken smallint,reg_date date, -> cancel date,PRIMARY KEY(id)); 以下のinsertをしたところエラーがでました なぜでしょう? よろしくお願いします mysql> insert into m_member(username,password,last_name,first_name,birthday,ken, reg_date,cancel) values('user','1a1dc91c907325c69271ddf0c944bc72','苗字','名前', '20050101','1',now(),NULL); ERROR 1406 (22001): Data too long for column 'last_name' at row 1
678 名前:NAME IS NULL mailto:sage [2007/08/09(木) 08:59:55 ID:???] >>675 ttp://dev.mysql.com/doc/refman/5.1/ja/memory-storage-engine.html
679 名前:NAME IS NULL mailto:sage [2007/08/09(木) 12:29:27 ID:???] >>677 文字コードっぽいね
680 名前:NAME IS NULL mailto:sage [2007/08/09(木) 13:29:48 ID:???] >>675 他にメモリを食うプロセスが走ってなければ、 そのくらいならOSがメモリにキャッシュするんじゃないかと期待。 変なOS使ってなければの話だけど。
681 名前:NAME IS NULL mailto:sage [2007/08/09(木) 20:40:56 ID:???] MySQLで遊んでみたいのですが、ライセンス料金がかかると言われました。 個人で触ってみたいのですが、ライセンスキーを購入しないと行けないでしょうか? 商用でMySQLを使っているサイトは、すべてお金を払って使っているのでしょうか?
682 名前:NAME IS NULL mailto:sage [2007/08/09(木) 21:31:54 ID:???] FC6でMySQLServerが動作しており,そのマシン上でQuery Browserをインストールして データベースへアクセスすることはできますが,Cのプログラムを用いて, mysql_real_connectで接続することができません. サーバ側に何か設定等が必要ですか.
683 名前:676 mailto:sage [2007/08/09(木) 23:11:09 ID:???] やっぱりロックされますね checkしている対象テーブルだけじゃなく 関係ないdbにすらアクセスできなくなる。 稼働中にほいほい気軽に実行できるモンじゃないんですね
684 名前:NAME IS NULL [2007/08/10(金) 11:42:33 ID:qyxNqw9Z] ID毎に設定された連番の最大値 + 1をINSERTしたい場合って どうやるのが一番スマート?例えば ID NUM 1 1 1 2 1 3 2 1 2 2 3 1 3 2 みたいなテーブルがあって、IDが1の場合にはNUMに4を入れたいって場合、 いちいち SELECT MAX(NUM) FROM TABLE WHERE ID = 1 やんなきゃ ならんのかね? KEY毎にAUTO_INCREMENT設定みたいのはないよね?
685 名前:684 [2007/08/10(金) 11:54:41 ID:qyxNqw9Z] ごめん、>>684 はID、NUM以外にPRIMARYな列があり、 そこに既にAUTO_INCREMENTがされている状態って前提
686 名前:NAME IS NULL [2007/08/10(金) 12:18:28 ID:k2YUxwj6] 初歩的な質問ですみませんが 例えば select * from a left outer join b〜 left outer join c〜 みたいに書くと テーブルAに対してそれぞれBとCのテーブルがleft outer joinされるのか それともテーブルBに対してCのテーブルがleft outer joinされるのでしょうか? 自分は前者として考えて使っているのですが間違っていますでしょうか?
687 名前:NAME IS NULL [2007/08/11(土) 02:52:31 ID:e9CmJUOZ] show table status; を実行すると、テーブル一覧とその属性が表示されますが、 項目が多すぎて見にくいです。 必要な項目だけ絞って表示することはできますでしょうか。 たとえばテーブル名(Name)と更新日時(Update_time)のみを表示する、 といったことがしたいです。
688 名前:NAME IS NULL mailto:sage [2007/08/11(土) 18:58:14 ID:???] desc カラム名
689 名前:NAME IS NULL [2007/08/13(月) 14:01:48 ID:mHaldFym] データベースの大きさってどのくらいになるのかって話です。データベースによって違うと思うのですが、MySQL を使いたいなと思っているので、ここに書き込みます。 例えば、1 レコードあたり、数値・文字列などの情報で 100 byte のデータを 100,000 件データベースに投入すると、 100 * 100,000 = 100,000,000 byte = 95 MB のようなディスクの領域が必要になるのでしょうか? 検索用のインデックスとかを保存する領域とかも他に必要になってくるんですかね? どんな計算をするものなのか、教えてもらえたらと思います。 または「ここを見ろ」などの情報でもありがたいです。 よろしくお願いします。
690 名前:NAME IS NULL [2007/08/14(火) 12:52:48 ID:vLfyd2Go] >>689 です。 人が少ないようなので、他でもきいてみます。 マルチポストになりますが、すみません。
691 名前:NAME IS NULL mailto:sage [2007/08/14(火) 14:02:46 ID:???] >>689 show table status like 'hoge'; の出力を見ると当たり前だが・・ Avg_row_length * Rows が DBファイル "hoge.MYD" のニアリサイズになる。 Avg_row_lengthを基準にして今後のレコードの増加によるDBのディスクサイズを想定する。 つまり可変長テーブルではある程度データが揃わないと算出できない。 また削除や更新が頻繁に行われるとフラグメーションが起こるので注意。 MyISAM なら optimize table で解消される。
692 名前:NAME IS NULL mailto:sage [2007/08/14(火) 14:04:55 ID:???] >>684 サブクエリを使え。 SELECT MAX(NUM)+1 FROM TABLE WHERE ID=1 か。
693 名前:NAME IS NULL [2007/08/14(火) 15:37:13 ID:r5/gZLeq] ちょいと気になったんだが 一回のクエリに一本のインデックスしか使わないMySQLだけど、 サブクエリの場合、それぞれのクエリに別々のインデックス使えるの?
694 名前:NAME IS NULL mailto:sage [2007/08/14(火) 15:47:02 ID:???] PHPだとdb_convert_encodingで文字コードのコンバートができますが, C言語はこのような関数はありますか?
695 名前:NAME IS NULL mailto:sage [2007/08/14(火) 18:06:10 ID:???] >> 693 使える
696 名前:NAME IS NULL mailto:sage [2007/08/14(火) 19:47:30 ID:???] >>695 そうなのかー サブクエリ化することで高速化する みたいなこともできそうだね ありがとう
697 名前:NAME IS NULL mailto:sage [2007/08/14(火) 21:48:31 ID:???] >>696 サブクエリでなくて複数テーブルの join でもテーブル毎にインデックスが使われる
698 名前:NAME IS NULL mailto:sage [2007/08/15(水) 00:32:13 ID:???] >>693 あれ、これって5.0だか5.1で変わってなかったっけ?
699 名前:NAME IS NULL mailto:sage [2007/08/15(水) 11:06:39 ID:???] >>698 explain すれば一目瞭然。
700 名前:NAME IS NULL [2007/08/15(水) 16:52:21 ID:TNiife/O] Linuxで取得したmysql 3.23のdumpファイルを Windows版のMySQL 3.23にリストアしようと mysql < dumpfile したら Unknown command '\n'. って表示されるんだが、 dumpファイルのTEXT型の列のデータに '\n'が含まれている場合に、 エラー無くリストアする手段を教えてください。
701 名前:700 mailto:sage [2007/08/15(水) 17:03:49 ID:???] 情報後出しスマソ。 dumpファイルの文字エンコードはutf8だった。 Databaseのデフォルトキャラクタセットはlatin1。 このあたりの問題だとしたら、 どうやったら回避できるのでしょうか?
702 名前:NAME IS NULL mailto:sage [2007/08/15(水) 17:28:36 ID:???] >>701 で、このまま latin1 で運用続けるつもりかい?
703 名前:700 mailto:sage [2007/08/15(水) 18:45:37 ID:???] >>702 latin1にこだわりはないので、 MySQLの再インストールも辞しません。
704 名前:NAME IS NULL mailto:sage [2007/08/15(水) 22:51:59 ID:???] ちょ・・ま・・・改行コード落ちじゃねぇだろな
705 名前:NAME IS NULL mailto:sage [2007/08/16(木) 00:39:48 ID:???] 1つのテーブルに seq| 種別 | 生産日 | 販売日 | 修理日 | 1 | 1 |2000-01-01|2001-01-20|2002-01-25| 2 | 1 |2000-01-01|2001-01-20|2003-01-25| 3 | 1 |2000-01-01|2001-01-20|2003-02-25| 4 | 1 |2001-01-01|2001-01-20|2003-01-25| 5 | 2 |2000-01-01|2001-01-20|2003-01-25| というデータがあった場合。 修理日2002-01-01〜2003-12-31で検索した場合、SEQ 1,4,5のデータを 修理日2003-01-01〜2003-12-31で検索した場合、SEQ 4,5のデータを1つのクエリで取得したいのですが可能でしょうか? 具体的には、種別、生産日、販売日の組が同じものは同一の品物とみなし、 最古の修理日が指定範囲に入っているかどうかを判定したいのですが上手く行きませんでした。 OS:Windows Xp DB:Mysql 4.0.27 作成し失敗したsql(最古修理日を指定する前にエラーになります。実際のカラム名はローマ字です) mysql> SELECT seq,種別,生産日,販売日 FROM table -> WHERE (種別,生産日,販売日) IN -> (SELECT DISTINCT 種別,生産日,販売日 FROM table -> WHERE 種別 IS NOT NULL -> AND 生産日 IS NOT NULL -> AND 販売日 IS NOT NULL -> AND 修理日 IS NOT NULL); ERROR 1064: You have an error in your SQL syntax. Check the manual that corresp onds to your MySQL server version for the right syntax to use near '生産日,販売日) IN (SELECT DISTINCT 種別,生産日
706 名前:NAME IS NULL mailto:sage [2007/08/16(木) 02:18:59 ID:???] 効率悪いかも知れんけど、こんな感じで行けると思う。 seq無しでもレコードが一意になるなら最後のgroup by等は不要。 select min(seq), 種別, 生産日, 販売日, 修理日 from table1 where(種別, 生産日, 販売日, 修理日) in (select 種別, 生産日, 販売日, min(修理日) from table1 group by 種別, 生産日, 販売日 having min(修理日) between '2002-01-01' and '2003-12-31') group by 種別, 生産日, 販売日, 修理日;
707 名前:NAME IS NULL mailto:sage [2007/08/16(木) 02:52:15 ID:???] 4.0はサブクエリ使えんでしょ
708 名前:705 mailto:sage [2007/08/16(木) 07:57:47 ID:???] >>706 さん >>707 さん 制限の無いサブクエリをサポートしたのが4.1〜だと気づかず構文エラーを繰り返して、悩んでおりました。 JOIN を使うか、アプリ側で制御する事にします。 ありがとうございました。
709 名前:NAME IS NULL mailto:sage [2007/08/16(木) 10:43:08 ID:???] >>700 Windows版か・・・ Windowsディレクトリとかにある my.ini をエディタで編集し、 [mysql] と [mysqld] の下に default-character-set=utf8 を追加してサービスを再起動する。 Windows版にはadminツールみたいなGUIアプリが付いているみたいだけどそこかも出来るかも。
710 名前:NAME IS NULL mailto:sage [2007/08/17(金) 06:33:34 ID:???] MySQL 5.0.27 + MySQL ODBC Connector 5.00.11-beta + C でコーディング中 my.ini で [client][mysql][mysqld] 全部 default-character-set=utf8 を指定して再起動 コンソールから status; show variables like '%char%'; で全部 utf8 になってるのを確認 ODBC クライアント側でデータ取り出すと日本語文字化け(なんか余計な変換して壊してるっぽい) 接続後に set character set utf8; ステートメントを発行しても同じ ついでに念のため skip-character-set-client-handshake も指定しても変わらず ODBC 使わずに libmysql (mysqlclient) 使ったら utf8 でちゃんとアクセス出来ている つまり ODBC のバグっぽ こんな漏れに愛の手を
711 名前:sage mailto:hage [2007/08/17(金) 07:39:19 ID:???] 何が問題なの?
712 名前:700 mailto:sage [2007/08/17(金) 23:11:42 ID:???] >>704 改行コードは全てのINSERT文ごとに 入っているように見えるのですが、 確実にCRLFかと言われると そうでないかもしれませんね。 念のため、dumpファイルの中身を 再確認したいと思います。 >>709 試してみたんですが、 MySQLのサービスが正常に起動しませんでした。 自分のやり方が間違っていないか、 月曜に再確認しながらやってみます。
713 名前:NAME IS NULL mailto:sage [2007/08/17(金) 23:56:55 ID:???] >>710 MySQLのODBCは昔からバグだらけ 直す気ないみたいだから 素直にlibmysql使うが吉
714 名前:NAME IS NULL [2007/08/18(土) 00:37:18 ID:Jizu4jHd] 侵入されたようだ。 ネットに似たような症例が見付からなかったので書いとく。 3.23.52をパスワードなしで動かしっぱなしにしていた。 McAfeeのウイルス警告で気付いた。 C:\clown.dll、C:\windows\system32\clown.dll が突然作成され、McAfeeがこのファイルを削除した。 このときネットワークを確認すると、 mysqld-nt.exeの3306ポートから 外部の220.64.218.159と220.118.88.20に接続した 2つのセッションが存在していた。 ネットワーク停止後、mysqlを自動起動しないようにした。 itpro.nikkeibp.co.jp/free/ITPro/USNEWS/20050128/155389/ と発生条件は同じだが、症状は異なるみたい。 データベースmysql内のテーブルは columns_priv, db, func, host, tables_priv, user のみ。funcの中身は空。 実害があったのか、今のところ不明。
715 名前:NAME IS NULL mailto:sage [2007/08/18(土) 04:20:22 ID:???] パスなしで使う香具師は馬鹿 3306を外部に開放する椰子も馬鹿
716 名前:NAME IS NULL mailto:sage [2007/08/18(土) 08:47:53 ID:???] DB鯖をインターネットに繋いでる時点で論外。 DB鯖は、ファイヤーウォールの中で動かすものだし。
717 名前:NAME IS NULL mailto:sage [2007/08/18(土) 19:15:09 ID:???] MySQL 4.1.15 テーブル Shouhin Goods_id 5桁の数字 Joken_a 1,2,3 Joken_b 1,2,3 とあり、Joken_aから1,2のみを取り出したいけど、 Joken_aが1のものについてはJoken_bから3のみを取り出したい と言った時にどういう風にSQLを書けば良いんでしょうか
718 名前:NAME IS NULL mailto:sage [2007/08/19(日) 07:25:59 ID:???] select * from Shouhin where (Joken_a = 1 and Joken_b = 3) or Joken_a = 2;
719 名前:NAME IS NULL mailto:sage [2007/08/19(日) 07:34:27 ID:???] >>718 あぁ、or でつなげば良いんですよね。すいませんでしたm(__)m
720 名前:NAME IS NULL mailto:sage [2007/08/19(日) 13:06:47 ID:???] Cでプログラムをしているんですが, int uid = 123; として,UserInfoテーブルからUserIDが123を取り出したいのですが以下ではできません. mysql_query(mysql, "SELECT * from UserInfo WHERE UserID=uid"); 「UserID=uid」この部分はどのように記述すれば良いですか?
721 名前:NAME IS NULL mailto:sage [2007/08/19(日) 13:48:44 ID:???] >>720 ちゃんとCの勉強してる? intを文字列に変換して連結でしょ。 もいっこのやり方は…書くのめんどい。
722 名前:NAME IS NULL mailto:sage [2007/08/19(日) 14:12:00 ID:???] すまない.連結?がよくわからない・・・
723 名前:NAME IS NULL mailto:期待に応えて書いてやるぜ [2007/08/19(日) 14:56:48 ID:???] char *querystring = "SELECT * from UserInfo WHERE UserID=%d"; sprintf(querystring, querystring, uid); mysql_query(mysql, querystring);
724 名前:NAME IS NULL mailto:sage [2007/08/19(日) 15:46:50 ID:???] >>723 小学校からやりなおせよ低脳
725 名前:720 mailto:sage [2007/08/19(日) 16:02:03 ID:???] sprintf(querystring, "\"SELECT * from UserInfo WHERE UserID=%d\"", uid); mysql_query(mysql, querystring); このやり方は無理?
726 名前:720 mailto:sage [2007/08/19(日) 16:22:04 ID:???] サンクス.できた
727 名前:NAME IS NULL mailto:sage [2007/08/19(日) 23:52:54 ID:???] 個人情報のテーブルを作ろうと思っています。 ex) 名前|性別|年齢|趣味|・・・・ レコードを追加していってレコードの数が大きくなったら、 テーブルを分けた方が良いのでしょうか? ※「良い」というのは、参照効率やメモリ・CPUの負荷、等の面で
728 名前:NAME IS NULL mailto:sage [2007/08/20(月) 00:15:28 ID:???] そりゃあーた何をどうしたいかによる罠、 依存関係やらどう運用するかで決まるし、 最初の設計で皆苦労しとるんよ。
729 名前:NAME IS NULL [2007/08/20(月) 02:49:49 ID:R3oVd09H] ライセンスの件で質問です。 バンドメンバー募集サイトのWebアプリケーションを 個人で作っているのですが、MySQLはサーバー側のみで 使用するので当然アプリやMySQLを配布する訳ではないので 有料ライセンスにはならないですよね。 スポンサーの広告収入で運営したいと思っているので 一応商用サイトにはなると思うのですが。
730 名前:NAME IS NULL mailto:sage [2007/08/20(月) 02:56:35 ID:???] >>729 アプリを配布しないのであれば無問題
731 名前:NAME IS NULL mailto:sage [2007/08/20(月) 03:02:42 ID:???] >>730 ありがとうございます、スッキリしました。
732 名前:NAME IS NULL mailto:sage [2007/08/20(月) 12:50:01 ID:???] >>727 DBのファイルサイズがでかくなり上限の4G超えそうになったり、でかすぎてパフォーマンスが 落ちてきたら merge table すればいいじゃないかい。 ttp://dev.mysql.com/doc/refman/4.1/ja/merge.html
733 名前:NAME IS NULL mailto:sage [2007/08/20(月) 12:54:32 ID:???] >>724 よく見ると恐ろしい sprintfだな。 しかし小学校では女子だけ体育館に集合する事はあってもCの勉強はないヨ。
734 名前:NAME IS NULL mailto:sage [2007/08/20(月) 18:18:02 ID:???] ぱっと見でおかしいだろ。
735 名前:NAME IS NULL [2007/08/20(月) 22:15:18 ID:prQ3mqs2] 5.0.41のWindows用ソース(mysql-5.0.41-win-src.zipかmysql-5.0.41-win-src.tar.gz)を探しているのですが、見つかりません。 Sennaのコンパイルに.dswファイルが必要なのです。 どこにあるのでしょうか?
736 名前:735 [2007/08/20(月) 22:17:41 ID:prQ3mqs2] >>735 mysql-5.0.41.tar.gzには.dswファイルはありませんでした。
737 名前:NAME IS NULL mailto:sage [2007/08/20(月) 22:45:51 ID:???] そんなファイルはありまsenna
738 名前:NAME IS NULL mailto:sage [2007/08/20(月) 23:10:04 ID:???] mysql-5.0.45-win-src.tar.gz があるけど こっから取り出したらいいんじゃないかな
739 名前:NAME IS NULL [2007/08/20(月) 23:20:17 ID:IoKE2vQO] SQLについて(というかデータベースについて)かなり初心者のものです。 いま、JAVAで書けば次のようなインスタンスの配列を管理したいと考えています。 class Student // 生徒データ { int number; String class_name; } class ClassRoom // 教室データ { String name; Vector<String> student; // この教室の生徒のnumberの配列 } この関係をデータベース化するにはどのような構成にすればよいのでしょうか? CREATE TABLE STUDENT ( number INTEGER UNIQUE, class_name CHAR(20) REFERENCES classroom(name), ); CREATE TABLE CLASSROOM ( name CHAR(20) UNIQUE, /* STUDENTの配列の管理方法がわからない */ ); CLASSROOMの新しい要素がINSERTされるたびに、追加されたCLASSROOM.nameと同じ 名前のテーブルを作り、そこに格納するという方法が考えられますが、 その方法はベストといえるのでしょうか? 当方かなり初心者です、ご指導お願いいたします。
740 名前:NAME IS NULL mailto:sage [2007/08/20(月) 23:21:20 ID:???] Vector<String> student; // この教室の生徒のnumberの配列 は Vector<int> student; // この教室の生徒のnumberの配列 でした、しつれいしました。
741 名前:NAME IS NULL mailto:sage [2007/08/20(月) 23:29:20 ID:???] >>728 >>732 なるほど、ありがとうございました。 レコードを1行作ってみてどの位の大きさになりそうか見積もってみます。 日本国内をターゲットにしたのサイトなので、最大約1億レコードで 運用上問題なければOKかと・・・(笑)
742 名前:735 [2007/08/21(火) 00:05:52 ID:oSdLFFt+] >>738 レスありがd unix系に不案内なのでよく分からないのですが、そんなモンなのでしょうか? っていうか、.dswなのでWindowsの話? とりあえず、やってみます。
743 名前:NAME IS NULL [2007/08/21(火) 01:15:19 ID:iiLEoTiD] >>739 CREATE TABLE STUDENT ( number INTEGER UNIQUE, class_name CHAR(20) REFERENCES classroom(name), ); CREATE TABLE CLASSROOM ( class_id INTEGER, name CHAR(20) UNIQUE, /* ここはクラスごとの属性 */ ); CREATE TABLE STUDENTINTHECLASSROOM ( class_id INTEGER, /* number of ClassRoom */ number INTEGER, /* number of Student */ );
744 名前:NAME IS NULL mailto:sage [2007/08/21(火) 11:45:07 ID:???] >>743 参考になりました、どうもありがとうございます。m( )m
745 名前:NAME IS NULL mailto:sage [2007/08/21(火) 13:37:17 ID:???] 昔は第三正規化とか言ってたけどいまはそういう名称使われないの?
746 名前:NAME IS NULL mailto:sage [2007/08/21(火) 22:51:04 ID:???] いや使うだろ。 ただ、不勉強な人にそんなことを言っても通じないだろうから使ってないんじゃね?
747 名前:NAME IS NULL mailto:sage [2007/08/22(水) 02:44:59 ID:???] >>745-746 >>739 もひどいが >>741 もいまいちだよな
748 名前:700 mailto:sage [2007/08/22(水) 10:16:01 ID:???] コマンドプロンプトから、 mysql db_name -u user_name --password=password < dump_file_name って実行すれば何の問題もなく流れました。 己の愚かさに反省。orz そして助言してくれた皆様に感謝。 ・・・吊ってくる ノシ
749 名前:NAME IS NULL mailto:sage [2007/08/22(水) 12:15:06 ID:???] テーブルadminに対してテーブルclientがあります。 adminの特定データを削除するときに関連するclientのデータも 一気に消したいと思い下記のようなSQLを実行しましたが adminのデータは削除できませんでした。 DELETE admin a, client b FROM admin a LEFT OUTER JOIN client b ON a.id = b.id WHERE a.id = 1 このときのclientには、まだ関連するデータが無い状態です。 こういう場合は、別々にSQLを切らなきゃダメでしょうか?
750 名前:NAME IS NULL mailto:sage [2007/08/22(水) 12:29:10 ID:???] ↑これですが、私の確認ミスで問題ありませんでした。 スレ汚し失礼しました。
751 名前:NAME IS NULL [2007/08/22(水) 16:18:43 ID:JIJXKf2H] backup200701.sql backup200702.sql … 上記のように、あるテーブルのデータを月別に出力したファイルが数か月分あるのですが、 mysql dbname < backup200701.sql -u root -p pass mysql dbname < backup200702.sql -u root -p pass とインポートすると、一度drop table してるようで、前にインポートしたレコードが消えてしまいます。 これを01を消さずに02,03と追加していく良い方法ないでしょうか?
752 名前:NAME IS NULL mailto:sage [2007/08/22(水) 17:02:18 ID:???] backup******.sqlの中にdrop tableやらcreate tableやら入ってるだけじゃないの? 元のファイルのエクスポート方法を見直すのが一番速いと思うけど それが出来ないならシコシコとコメントアウト。
753 名前:NAME IS NULL mailto:sage [2007/08/23(木) 02:50:09 ID:???] 公式から、ダウンロードするとき 個人情報を入力しないといけないようになりました?
754 名前:NAME IS NULL mailto:sage [2007/08/23(木) 07:28:32 ID:???] >>753 skipしていけば問題なし
755 名前:NAME IS NULL mailto:sage [2007/08/23(木) 09:57:56 ID:???] >>754 あ、小さい文字でなんかありました。 ありがとうございます。
756 名前:NAME IS NULL mailto:age [2007/08/23(木) 13:57:40 ID:???] element_tbl user_seq master_seq number user_tbl user_seq name age master_tbl master_seq item こんなテーブルがあった時、 select `user_tbl`.`user_seq`, `user_seq`.`name`, `element_tbl`.`master_seq` FROM `user_tbl`, `element_tbl` WHERE `user_tbl`.`user_seq`=1 and `user_tbl`.`user_seq`=`element_tbl`.`user_seq` GROUP BY `element_tbl`.`elememt_seq`; このとき、element_seqをORDERする際、`number`が一番若いものの`master_seq`を取り出したいのですがどのような書き方があるでしょうか?
757 名前:NAME IS NULL mailto:sage [2007/08/23(木) 14:21:08 ID:???] >>756 過去ログ嫁 >>618
758 名前:756 mailto:age [2007/08/23(木) 14:45:09 ID:???] >>757 さん ありがとうございます。JOINは使ったことがなかったので読んでみます。 なんどもごめんなさいですが、以下の場合も教えていただけるとありがたいです。 select `user_tbl`.`user_seq`, `user_seq`.`name`, `element_tbl`.`master_seq` FROM `user_tbl`, `element_tbl` WHERE `user_tbl`.`user_seq`=`element_tbl`.`user_seq` GROUP BY `element_tbl`.`elememt_seq` ORDER BY `user_data`.`age` DESC LIMIT 0,5;
759 名前:NAME IS NULL mailto:sage [2007/08/23(木) 16:40:52 ID:???] >>758 group by は最初に見つかったレコードをチョイスする特性があるので、 まず element_tbl をサブクエリで並べたい順番に order by した結果を group by する。
760 名前:NAME IS NULL [2007/08/23(木) 21:23:22 ID:iOrH9/U/] 1テーブルに付き、どのくらいのフィールド数にするのが適切ですかね? やたらと入力(フィールド)項目があるアンケート用のシステムを 組まなくてはいけなくなり、フィールド数だけで、100以上はあります。 だから、用途毎に分けてJOINで結合する予定ですが、 それでも、5,6テーブルを結合する必要があり、 処理が重くならないか懸念してます。 皆さんはこういう場合どうしてますか?やはり複数テーブルを結合してますか?
761 名前:NAME IS NULL mailto:sage [2007/08/23(木) 22:09:04 ID:???] 複数テーブルを結合してます
762 名前:NAME IS NULL mailto:sage [2007/08/23(木) 22:28:09 ID:???] >>760 正規化する必要がなければ1テーブルに入れるのが基本 しかも100オーバのフィールド数なんて珍しくないし
763 名前:NAME IS NULL mailto:sage [2007/08/23(木) 22:30:42 ID:???] データディレクトリに、ホスト名.lower-testがあって、 mysqld起動時にファイルシステムに書きに行っているようなのですが これって何なんでしょう。。 リファレンスやGoogleさんにも、それらしい記述を見つけることができないので どなたかご存知でしたらお力添えください。。
764 名前:NAME IS NULL mailto:sage [2007/08/23(木) 23:32:28 ID:???] cygwin on mysql for win. この組み合わせってダメなの? Win 版 MySQL のコマンドラインツールって cmd.exe からじゃないとダメ?
765 名前:NAME IS NULL mailto:sage [2007/08/24(金) 00:32:47 ID:???] パス次第
766 名前:NAME IS NULL mailto:sage [2007/08/24(金) 12:31:40 ID:???] >>763 OSがファイル名の大文字小文字を区別するかどうかを 確かめるためのテストファイル。 mysqld起動時にsrc/mysqld.ccのtest_if_case_insensitive関数で <hostname>.lower-testファイルを作り、 <hostname>.LOWER-TESTという名前でアクセスできるかどうかを試験してる。 誰も気にしてないのでマニュアルには載ってないと思われ。 ほっといてOK。
767 名前:NAME IS NULL mailto:sage [2007/08/24(金) 20:27:20 ID:???] ちょっと質問なんですが、 reset by peer ってなメッセージで、作業が拒否されるのはどういう現象なんでしょうか。 具体的には、毎日rubyのライブラリ経由でmysqlに、一日どうだろ、10万レコードぐらい入れてるのかな。 今一番多いテーブルが3000万レコードとなっている(株のティックデータだったりする)。 で、毎日そういうのをぶっこんでいると、ここ数週間必ず上記のエラー「reset by peer」と言われて 途中で止まるようになってしまった。直後に再試行すると同じエラーが起き、しばらく寝かすと なんか通るみたいな。その時間間隔はよくわからない。 なんでこういうことになるのか、reset by peerとはなんなのか、もしかして俺なんかまずい事してる? について腑に落ちる方がいましたら教えて下さいな。 具体的データ入れルーチンの手順 あるテーブルに10万レコードをcsvファイルにしてから一括登録 あるテーブルに5000レコードぐらいを逐次追加登録 あるテーブルに5000レコードぐらいを逐次追加登録(中身は画像BLOB) <- ここでエラーが起き出した。
768 名前:NAME IS NULL mailto:sage [2007/08/24(金) 21:30:44 ID:???] >>767 MySQLが頑張って考えてる最中何も通信しなかったから 勿体無いから回線切ったった
769 名前:NAME IS NULL mailto:sage [2007/08/24(金) 21:39:39 ID:???] >>768 うーん、でもね、sleep 60秒 入れて再試行しても、あるいは10分後に手動で再試行しても やっぱり同じエラーが返ってきたりしたんで、それは何?と思ってしまったんですよ。
770 名前:760 [2007/08/24(金) 22:55:31 ID:abcdyQsi] >>762 遅レスですみません。 1つのテーブルに100オーバーなんて「普通」なんですか? 確かに、複数テーブルに分けてJOINしまくるというのは、 それだけでSQL文が長くなって、バグやミスに繋がりそうな気がします。 ただ、XOOPSとかphpBBとかOpenPNEとか有名なCMSツールを見ると 1つのテーブルに100オーバなんてないし、細かく分けているので、 どうする方が適切か?汎用性が高いのか、ずっと悩んでいました。 ちなみに、今組んでいるアンケートシステムは、後から変更する事はないです。
771 名前:NAME IS NULL mailto:sage [2007/08/25(土) 00:18:31 ID:???] 「普通」とはなんでしょうか?
772 名前:763 mailto:sage [2007/08/25(土) 00:46:58 ID:???] >>766 ありがとうございます。腑に落ちました。 これからソース眺めてみます
773 名前:NAME IS NULL mailto:sage [2007/08/25(土) 01:16:21 ID:???] 普通じゃなくてもいいじゃん やたらと入力(フィールド)項目がある 普通じゃないアンケート用システムなんだろ?
774 名前:NAME IS NULL mailto:sage [2007/08/25(土) 01:48:58 ID:???] 自由に設問を追加できるようにしてくれ、なんて要望が出たときってどうすればいいんだろう。 アプリ側でカラムを追加できるようにさせるしかないかなあ?
775 名前:760 mailto:sage [2007/08/25(土) 02:09:18 ID:???] >>773-774 となると、やはり正規化して「個人情報」「カテゴリ」「アクセス情報」など 分けられるだけ分けた方が良いかもしれませんね・・。 設計の段階でずっと悩んでいます。なにせ100以上のフィールドがある DBを組んだ事がないので、どうするのが後々良いのか悩みます。。
776 名前:NAME IS NULL mailto:sage [2007/08/25(土) 02:41:18 ID:???] 重複した質問とかしてないか?
777 名前:760 mailto:sage [2007/08/25(土) 02:52:15 ID:???] それはないです。よくある性格診断アンケートのような感じです。 質問項目がやたら多いような・・。
778 名前:NAME IS NULL mailto:sage [2007/08/25(土) 06:09:04 ID:???] アンケートの種類にもよるのだろうけど、 キー以外全部CSVかXML形式でText(不定長サイズの文字列)に格納してしまったほうが楽かもしれない。 集計のときは端から全部読んでプログラムで結果を条件毎のマトリックスに加算してゆくことがほとんどで SQLの集合関数は意外と統計には使いづらい。 調査項目の多いアンケートは結果見て何を集計するか決めたいといったケースが多く、 プログラムやデータ構造は作り捨てになりやすい。
779 名前:NAME IS NULL mailto:sage [2007/08/25(土) 06:15:01 ID:???] ああ回答欄をフィールドに一個一個割り当ててるんだろ。 それ、アホ設計じゃん。 そんなの俺なら質問1万項目あろうが4フィールド前後で生成可能だな。 でも方法は教えられんね。自分で死ぬほど考えて。
780 名前:NAME IS NULL mailto:sage [2007/08/25(土) 06:19:19 ID:???] 項目名と回答で1レコードにするの? それもそうとうだな・・
781 名前:NAME IS NULL mailto:sage [2007/08/25(土) 09:32:51 ID:???] 名前 | 質問 | 回答 ってこと? でもこれだと回答を抽出する時に少し面倒な気がする。良い方法あるん?
782 名前:NAME IS NULL mailto:sage [2007/08/25(土) 09:37:14 ID:???] 何のためのリレーショナルデータベースだよ。 1対多でリレーションすればいいじゃん。
783 名前:NAME IS NULL mailto:sage [2007/08/25(土) 09:58:23 ID:???] id | 質問形態 | 質問 | 回答 だな
784 名前:NAME IS NULL mailto:sage [2007/08/25(土) 09:58:54 ID:???] 名前も質問のひとつ
785 名前:NAME IS NULL mailto:sage [2007/08/25(土) 11:21:36 ID:???] >>781 >>783 ちゃんは、正規化できてへんでーー 誰の回答かも分からへんしー。 でも、概要例としてなら分かるわー。
786 名前:NAME IS NULL mailto:sage [2007/08/25(土) 11:45:13 ID:???] 質問マスタ 質問id | 質問形態 | 質問文 | その他 回答者テーブル 回答者id | 質問id | 回答 これで十分
787 名前:NAME IS NULL mailto:sage [2007/08/25(土) 15:17:21 ID:???] >>786 回答にコメントつけたいんだけど
788 名前:NAME IS NULL mailto:sage [2007/08/25(土) 18:11:00 ID:???] つければ?
789 名前:NAME IS NULL mailto:sage [2007/08/25(土) 18:17:22 ID:???] こういう持ち方をすると回答フィールドのが型指定できないのが難点。 単純な集計ならいいが、男女年齢層別の集計とかやりだしたら問い合わせが複雑にならないか。 入力システムならいいが集計時は横1レコード形式に変換してそう。
790 名前:NAME IS NULL mailto:sage [2007/08/25(土) 18:57:20 ID:???] >>788 回答者テーブルに回答idとコメント先回答idを追加する必要があるね
791 名前:NAME IS NULL mailto:sage [2007/08/25(土) 19:05:59 ID:???] >>769 MySQLのクライアントとサーバーの間にFireWallとか変なルーターとかいない?
792 名前:NAME IS NULL mailto:sage [2007/08/25(土) 19:10:04 ID:???] >>789 できるからええやん。 ただ、それなりのスキル無いと重いクエリになるが。
793 名前:760 mailto:sage [2007/08/25(土) 21:47:27 ID:???] 皆さん、いろいろ検討ありがとうございます。 自分が正規化するなら [基本マスタ] ID|ユーザID|質問マスタA・ID|質問マスタB・ID|質問マスタC・ID| [ユーザマスタ] ユーザID|名前|性別|年齢|都道府県| [質問マスタA] 質問マスタA・ID|質問01|質問02|・・・・(質問の数だけフィールドがある) と言うように考えておりました。 一覧表示する時は、すべてをLEFT JOINで結合するような感じで。 でも、これって糞仕様なのでしょうか?
794 名前:NAME IS NULL mailto:sage [2007/08/25(土) 21:56:46 ID:???] 上に出てる通りどこに重きを置くかによって違う。 システムはアンケートの入力それとも集計に重点をおくのか。 1回きりのアンケートなのか。繰り返し使うのか。 記名式かユーザーIDでの管理はあるのかそれとも匿名式か。 アンケートはネットでやるのか紙ベースか、 入力内容の精査はどの低度するのか、 集計方針は決まっているのか分析しながら決めるのか、などなど。
795 名前:NAME IS NULL mailto:sage [2007/08/25(土) 22:15:59 ID:???] 横から失礼します! ググっても分からず、どこで質問したらよいか分からないので、こちらに来てみました。 apache(2.2.4)+php(5.2.3)+mysql(4.1.22)を自宅のWin2kにインストし、 そこへphpMyAdminをインストしようとしてるのですが、apacheでエラーが出て困っています。 apacheを起動すると以下のように表示されるのです。 --------------------------- httpd.exe - エントリ ポイントが見つかりません --------------------------- プロシージャ エントリ ポイント mysql_get_character_set_info がダイナミック リンク ライブラリ LIBMYSQL.dll から見つかりませんでした。 --------------------------- で、調べたところlibmysql.dllのバージョンらしく、phpに付属のlibmysql.dllなら発生しません。 しかしphpに付属のですと、phpMyAdminで「クライアントライブラリのバージョンが違う」 と怒られてしまう、という状況です。(MySQL クライアントのバージョン: 5.0.37) お門違いの質問でしたら申し訳ありませんが、何卒ご教示ください。
796 名前:NAME IS NULL mailto:sage [2007/08/25(土) 22:26:36 ID:???] >>791 いいえ、同一パソコン上、localhostです。 for code in 1000..9999 "select code from table where code = #{code} and date = 今日" 既に登録されてたら next 登録されてなかったらデータを集めて "insert into table values xxx" end ってな感じで、再試行時にselect文は通ってるので、mysql自体が無反応というわけではなさそう。 でinsert文の所で「Connection reset by peer by mysql (Errno::ECONNRESET)」ってエラーになるです。
797 名前:NAME IS NULL mailto:sage [2007/08/26(日) 00:38:54 ID:???] >>795 MySQLを5にしろ
798 名前:NAME IS NULL mailto:age [2007/08/26(日) 01:21:38 ID:???] 初めてDB作成してみたのですが思うようなパフォーマンスがでず、 アドバイスをいただければと思いました。 ヤフオク(ttp://www.yahoo.co.jp/r/ac)での検索自由度を高めたいと思い、 MySQLに全てを格納後し自分でSQL文を打ち検索する、 自分専用システムを構築したいと思いました。 全ての情報は取得も保持も無理なので、特定の2つ3つのカテゴリのみの制限付きです。 まずは2つのテーブルを設計いたしました。 (1)カテゴリID、カテゴリ名、自分の親のカテゴリIDを保持するテーブル ttp://developer.yahoo.co.jp/auctions/rest/categorytree/V1/categorytree.html よりデータを作成 (2)1つ1つの商品の情報を保持するテーブル ttp://developer.yahoo.co.jp/auctions/rest/categoryleaf/V1/categoryleaf.html よりデータを作成 1のテーブルはレコード数2000程度なのですが、 2のテーブルは90万レコードというものになりました (経験がなく、大きすぎる数字なのかどうかが判断できません) SQL文を発行して(2)から特定のカテゴリIDを持つものを引っ張ってみたところ、 47秒という速度になってしまいました。 Webからの利用を想定していますので遅くても10〜20秒程度でないと 使用に耐えられません(自分専用とはいえ...) 仕方がないので、現在は(2)のテーブルを大きいカテゴリ毎に分割することを考えております。 が、分割したテーブル全体に渡るSQL文を発行した場合、 それほど速度に変化はでないのかと思っております。 MySQLで90万レコードの検索を高速に扱うにはどのような点に注意すればよろしいでしょうか。 PCはCeleron2GHzメモリ1GBのLinuxマシン、 MySQLは5.0.33のソースからコンパイルしたデフォルト設定です。
799 名前:NAME IS NULL mailto:sage [2007/08/26(日) 05:13:33 ID:???] 90万レコードでその速度なら テーブル設計が悪いか、SQLが悪いか又はその両方
800 名前:NAME IS NULL mailto:sage [2007/08/26(日) 05:17:36 ID:???] >>799 それ、何かを答えてることになるの? 実質的に何も言っていないに等しいと思うんだけど。
801 名前:NAME IS NULL mailto:sage [2007/08/26(日) 05:32:21 ID:???] CPUかバスが原因だろ
802 名前:NAME IS NULL mailto:age [2007/08/26(日) 06:02:00 ID:???] ユニークキーが重複してるときって上書きや無視しちゃっても大丈夫ですかね?
803 名前:NAME IS NULL [2007/08/26(日) 07:54:48 ID:cLbF/99H] on duplicate key update オプション付きなら上書きだし。
804 名前:NAME IS NULL mailto:sage [2007/08/26(日) 08:58:35 ID:???] >>798 インデックスとExplainの結果を見せてもらおうか
805 名前:NAME IS NULL [2007/08/26(日) 09:30:22 ID:f7724A+Z] 今、2003stdにMS-SQLが動いてるんですが、MySQLの共存は可能ですか? あまり共存とかしたくないけど、予算の都合上、入れられるのがそのサーバなもので。
806 名前:798 mailto:age [2007/08/26(日) 09:40:58 ID:???] >>801 CPUかバスですが・・ 全てのデータをオンメモリにするような設定があれば多少マシになるでしょうか。 >>804 SQL初めてでよくわかっていませんが、実行してみた結果です。 mysql> show index from itemlist; +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ | itemlist | 0 | PRIMARY | 1 | auctionid | A | 843116 | NULL | NULL | | BTREE | | +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ 1 row in set (0.00 sec) mysql> explain select * from itemlist where categoryid = 27751 and price < 2000; +----+-------------+----------+------+---------------+------+---------+------+--------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+----------+------+---------------+------+---------+------+--------+-------------+ | 1 | SIMPLE | itemlist | ALL | NULL | NULL | NULL | NULL | 843116 | Using where | +----+-------------+----------+------+---------------+------+---------+------+--------+-------------+ 1 row in set (0.01 sec) プライマリキー(auctionid)で検索すると1秒以下で処理できますが、 それ以外ですとどうしても時間がかかってしまいます。
807 名前:NAME IS NULL mailto:sage [2007/08/26(日) 11:42:02 ID:???] where節に書く予定のフィールドをがんがんcreate indexすればいいじゃん ってだけの話だね。
808 名前:NAME IS NULL mailto:sage [2007/08/26(日) 11:55:47 ID:???] そうやって全フィールドにindexを振ってしまったが この先に待つものはいったいなんだろう・・・
809 名前:NAME IS NULL mailto:sage [2007/08/26(日) 12:12:39 ID:???] >>805 ポート被ってなけりゃ問題なく動く。 ただSQL Serverって制限しないと ほとんどの物理メモリを押さえちゃうから、 そのあたりの調整は必須。
810 名前:NAME IS NULL mailto:sage [2007/08/26(日) 13:31:34 ID:???] >>806 categoryidで検索するなら create index itemlist_cid on itemlist (categoryid); categoryidとpriceで検索するなら create index itemlist_cid_pce on itemlist (categoryid, price); priceで検索するなら create index itemlist_pce on itemlist (price); オークションの終了日時で検索するなら create index itemlist_end on itemlist (endtime); 出品者で検索するなら create index itemlist_id on itemlist (id); 特定のカテゴリ、特定の出品者、ある入札価格で検索するなら create index itemlist_cid_id_pce on itemlist (categoryid, id, price); きりがないな
811 名前:NAME IS NULL mailto:sage [2007/08/26(日) 14:41:56 ID:???] 同じ道具を使っても、出来る物が違う。 それがプロ製作と素人製作の違いなのだよアンダーソン君
812 名前:798 mailto:age [2007/08/27(月) 06:40:24 ID:???] >>807 ,810 がんがん18個ほどindexを作成いたしましたところ、 期待通りの速度を得ることができました。 #index作成に4時間かかりましたorz どうもありがとうございました。
813 名前:NAME IS NULL mailto:sage [2007/08/27(月) 07:29:12 ID:???] ちょっと話を戻すようで申し訳ない。 回答者 | 質問内容 | 回答 ------------------------------ 高橋 | 年齢は? | 30歳 高橋 | 好物は? | もやし 鈴木 | 好物は? | コーヒー みたいなテーブルがあるとき(実際には、回答者と質問内容については別のテーブルを参照する) 検索とかしようとすると手間のような気がするんだけど、何かスマートな方法ってある?
814 名前:NAME IS NULL mailto:sage [2007/08/27(月) 09:31:41 ID:???] なんの検索だよ
815 名前:NAME IS NULL mailto:sage [2007/08/27(月) 11:24:10 ID:???] >>813 普通の正規化なら、 ・回答者マスタ ・質問マスタ みたいなテーブルを作って、キー項目でJOINすると思うんだが それが面倒だと思うならVIEWにすればいいんじゃね?
816 名前:NAME IS NULL [2007/08/27(月) 13:34:17 ID:y3LbHP1t BE:251556252-2BP(1002)] MacOS 10.4.10(intel)/mysql5.0.45 Perlと連携させようと思ってるんですが、 DBD::mysqlが動きません>< さんざんググって出てきたのが↓のバグフィックス。 #30220が「まさにその通り」って感じでした。 書いてある通り次バージョン出るまで待つしか無いんでしょうか… それともパッチ付きバージョンって出てるんでしょうか… 何か対策ご存知の方教えてください。お願いします。 bugs.mysql.com/bug.php?id=28544 bugs.mysql.com/bug.php?id=30160 bugs.mysql.com/bug.php?id=30220
817 名前:813 mailto:sage [2007/08/27(月) 15:31:44 ID:???] >814 検索しないならDBに入れる意味ないんじゃ? >815 いや、正規化の話じゃなく。
818 名前:816 [2007/08/27(月) 15:52:09 ID:y3LbHP1t BE:1232624977-2BP(1002)] MySQLバージョンを5.1.20betaに上げましたがだめでした
819 名前:NAME IS NULL mailto:sage [2007/08/27(月) 16:11:53 ID:???] >>817 検索と一言で言っても、回答者検索から統計から広範囲に渡るがな。 回答者検索なら、どこが面倒なんだ? という事だ。
820 名前:NAME IS NULL mailto:sage [2007/08/27(月) 16:51:15 ID:???] >819 ごめん、回答者検索。 SQL初学者なもんで、すげー回りくどい方法で書いてたのかもしれない。
821 名前:NAME IS NULL mailto:sage [2007/08/27(月) 17:21:53 ID:???] もぅ知らない!
822 名前:NAME IS NULL mailto:sage [2007/08/27(月) 20:49:36 ID:???] >>820 おまえ日本語も初心者だろ
823 名前:NAME IS NULL mailto:sage [2007/08/28(火) 00:07:13 ID:???] ローカル内の2つのサーバにおけるmysqlデータベースデータを 同期しようと思っています。 メインのサーバで更新したら、サブのデータベースを更新したいのですが、 リアルタイム制は必要なく、3分程度の遅れでもいいと思います。 この場合、どのような方法で同期を取ることができますか? データベースの内容は、2000レコードぐらいの個人情報です。
824 名前:NAME IS NULL mailto:sage [2007/08/28(火) 00:14:34 ID:???] MySQLのConnectorっていたるところでバグ多いよな 一番マシなのがjdbcくらい
825 名前:NAME IS NULL mailto:sage [2007/08/28(火) 00:15:48 ID:???] サブが先に更新された場合は?
826 名前:823 mailto:sage [2007/08/28(火) 00:28:26 ID:???] >>825 サブは読み込むだけなんです。 メインもほとんどが読み込みですが、たまにメインの方で更新されるぐらいです。 高度な技は持っていないので、 何かシェルレベルでも支障が無い同期が取れるでしょうか?
827 名前:NAME IS NULL mailto:sage [2007/08/28(火) 01:18:47 ID:???] >>826 レプリケーションかなあ 一応テーブル指定でも取れる ttp://www.irori.org/doc/mysql-rep.html
828 名前:NAME IS NULL [2007/08/28(火) 10:47:09 ID:bE9ZNEtp] mysqlのレプリケーションのバイナリログが膨らんであたふたしてるんだが、 バイナリログ作成止める方法ってどうすればよいんでしょう? ちなみに、my.cnfのserver-idをコメントアウトしただけじゃダメですたorz
829 名前:NAME IS NULL mailto:sage [2007/08/28(火) 12:33:59 ID:???] >>828 my.cnfのlog-binをコメントアウトして再起動。 だけど、使い終わったバイナリログを消すだけでいいのでは? PURGE MASTER LOGS TO 'xxxxx-bin.xxx';
830 名前:NAME IS NULL mailto:sage [2007/08/28(火) 15:08:42 ID:???] >>826 間違いなくレプリケーションだろ。
831 名前:805 mailto:sage [2007/08/28(火) 20:25:27 ID:???] >>809 ありがとうございます。 参考にします。
832 名前:NAME IS NULL [2007/08/29(水) 11:55:41 ID:UjsiDPtN] どうか、お知恵をお貸し下さい。 以下のような2つのテーブルが有ります。 tableA | uid | name | +-----+------+ | 001 | aaaa | | 002 | bbbb | | 003 | cccc | | 004 | dddd | | 005 | dddd | Primary = uid tableB | uid | snum | food | +-----+------+-------+ | 001 | 0001 | apple | | 001 | 0002 | orange| | 003 | 0001 | apple | | 004 | 0001 | melon | | 004 | 0002 | apple | | 004 | 0003 | banana| Primary = uid , snum tableBにデータの無い tableA.uid を求める場合どうしたらよいでしょうか? 上記の例ですと、002 と 005 が取得したい結果です。 よろしくお願いいたします。
833 名前:NAME IS NULL mailto:sage [2007/08/29(水) 13:09:03 ID:???] >>832 tableA と tableB を left join して snum が null のレコードを探すでどうよ?
834 名前:NAME IS NULL [2007/08/29(水) 13:13:00 ID:OUZw7AOU] WEB上のフォームでは誕生日の欄が [昭和・平成] []年[]月[]日 みたいに分かれているとします。 これをテーブル設計する時、どのようなフィールドにしますか? 単に「birth」というフィールド内に詰め込むのか、 「年号」「年」「月」「日」っと4つに分けるのか。 OPENPNEなどを見ると分ける形になっているのですが、 このように範囲が定まっていないデータを扱う場合、 出来るだけ項目毎にフィールドを分けた方が良いのでしょうか?
835 名前:NAME IS NULL mailto:sage [2007/08/29(水) 13:15:52 ID:???] >>834 全部西暦で管理。 データの参照の時には西暦→和暦変換、 格納の時には和暦→西暦変換をそれぞれ実行する。
836 名前:NAME IS NULL mailto:sage [2007/08/29(水) 13:25:46 ID:???] exists使えばいいんじゃねーの? select uid from tableA where not exists (select * from tableB where tableA.uid = tableB.uid);
837 名前:NAME IS NULL [2007/08/29(水) 15:16:31 ID:UjsiDPtN] >>833 ありがとうございました。 SELECT tblA.`uid` AS 'uid' FROM `tableA` AS tblA LEFT JOIN `tableB` AS tblB ON tblB.`uid` = tblA.`uid` WHERE tblB.`snum` is NULL で上手くいきました。 >>836 ありがとうございます。そしてスミマセン。 環境書くの忘れていました。 現在は4.0なのでサブクエリが使えないのですが、 いつか使える環境で開発する時の参考になりました。
838 名前:NAME IS NULL mailto:sage [2007/08/29(水) 15:19:16 ID:???] >>834 データベースとしては、date型一つに収めるべし 利用(表示)によって適宜変換すればよし
839 名前:834 mailto:sage [2007/08/29(水) 23:00:17 ID:???] >>835 ,838 なるほど。入力時は複数にしていたとしても、date型に納めれば 西暦から平成・昭和に分けることは出来るし、如何様にも対処出来ますね。 ただ、会員登録フォームなどで「平成・昭和」+年で 入力するフォームがありますよね?その場合も実際の登録は西暦なのでしょうか? 例えば、[平成][19]年 として入力した場合も、登録は2007にするような。
840 名前:NAME IS NULL mailto:sage [2007/08/30(木) 00:35:33 ID:???] あとで再利用するかどうかだな 聞くだけ聞いて利用しないならそれでもいい 利用するつもりならそのままなら面倒だろ
841 名前:NAME IS NULL mailto:sage [2007/08/30(木) 02:11:02 ID:???] てか、西暦と和暦は正確に1:1で対応してるんだから わざわざ和暦で記録する必要性があるようには思えない。 「昭和70年」みたいな存在しないはずの数値は扱えなくなるけど、 それはすっきりした設計を犠牲にしてまでデータベースの側が 面倒を見る問題なのか? という疑問もある。 データの入り口(入力フォームとか)で適切なチェックをかければ いいだけの話だし。
842 名前:NAME IS NULL mailto:sage [2007/08/30(木) 02:25:44 ID:???] >>841 西暦と和暦は1:2のときもあります
843 名前:NAME IS NULL mailto:sage [2007/08/30(木) 02:31:40 ID:???] 波長60の周期関数じゃなかったっけ
844 名前:NAME IS NULL mailto:sage [2007/08/30(木) 09:29:26 ID:???] >>842 年月日で考えれば、キリの良い箇所はあるだろ。 昭和64年1月7日と平成元年1月8日とかな。 それなら西暦年月日と和暦年月日は1:1対応だ。
845 名前:NAME IS NULL [2007/08/30(木) 13:04:09 ID:aMigI0oO] PHPでわざと間違えたクエリーを$queryに入れて if(!mysqli->query($query)) print("Error!: ".mysqli->error); ってやってもError!って表示されるだけでmysqli->errorの部分が表示されないんですけど どうしたらいいんでしょうか?
846 名前:NAME IS NULL mailto:sage [2007/08/30(木) 14:46:32 ID:???] >>845 $が抜けてるとかってオチ?
847 名前:NAME IS NULL [2007/08/30(木) 17:33:03 ID:3/8QntVY] datetimeのフィールドを使ってYYYYMMなどの月ごとにデータを集計しているのですが データ数が多くなってきて、集計に時間がかかるようになってしまいました。 使用SQL SELECT date_format(datetime,"%Y%m") AS dateMonth,count(*) FROM table WHERE dateMonth='200708' date_format()を使った場合は、当然インデックスが使われないので遅くなってしまうと 思うのですが、こういった月ごと集計などを高速にやるやり方ってあるんでしょうか?
848 名前:NAME IS NULL mailto:sage [2007/08/30(木) 17:47:47 ID:???] >>843 それは還暦
849 名前:NAME IS NULL mailto:sage [2007/08/30(木) 17:50:03 ID:???] >>847 明らかに date_format が原因
850 名前:NAME IS NULL mailto:sage [2007/08/30(木) 17:53:09 ID:???] >>847 あります
851 名前:NAME IS NULL [2007/08/30(木) 17:53:30 ID:xXyjZ2jf] >>847 ttp://kokoromo.jugem.cc/?eid=204
852 名前:NAME IS NULL mailto:sage [2007/08/30(木) 18:09:41 ID:???] >>847 そのsqlならインデックス効かなかったっけ? どっちにしても、月を切り出す程度なら 定石では 当月一日以降、翌月一日未満 って指定だよね。
853 名前:NAME IS NULL mailto:sage [2007/08/30(木) 18:18:55 ID:???] >>847 つべこべ言わずに explain しる。
854 名前:NAME IS NULL [2007/08/30(木) 18:28:33 ID:2zV5thfK] phpMyAdminにて、エクスポートしたファイルをインポートしようとすると、 #1193 - Unknown system variable 'SQL_MODE' と表示されてインポートできません。 MySQL5のデータをMySQL4に移したいのですが、 'SQL_MODE'というのはMySQL5からの対応になるのでしょうか? また、何か対処法はありませんでしょうか。 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; の部分を削るとNOT NULL関係のものがインポートできないとエラーが出ます。 (#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'collate utf8_unicode_ci NOT NULL, `date` datetime NOT NULL)
855 名前:847 mailto:sage [2007/08/30(木) 18:38:07 ID:???] explainは使っていたのですが、検証が足りなかったみたいです。 特定の月のデータを抜き出す場合 SELECT * FROM table WEHERE datetime BETWEEN '2007-08-01 00:00:00' AND '2007-08-31 00:00:00' date_format(datetime,'%Y%m')を使うより、50倍ほど高速になりました。 月毎の集計を出す場合 SELECT date_format( datetime, "%Y%m" ), count( * ) FROM table WHERE datetime BETWEEN '2007-07-01 00:00:00' AND '2007-08-31 23:59:59' GROUP BY date_format( datetime, "%Y%m" ) 10倍ほど高速に。 みなさんアドバイスありがとうございました。
856 名前:NAME IS NULL mailto:sage [2007/08/31(金) 09:51:04 ID:???] >>854 ttp://sourceforge.net/tracker/index.php?func=detail&aid=1783667&group_id=23067&atid=377408 2.11.1で修正されるみたいです。
857 名前:NAME IS NULL [2007/08/31(金) 21:35:02 ID:2Luotq0e] 列名が、id, version_id, revision_id, content となっていてidが主キーです。 version_id ごとにデータを取り出したいのですが、それぞれrevision_idが最も大きいデータのみを取り出したいのです。 例えば、以下のデータの場合、 id, version_id, revision_id, content 1 1 1 abc 2 1 2 bcd 3 2 4 acb 4 2 3 dac 5 3 1 cad 下記のデータを得たいのです。 id, version_id, revision_id, content 2 1 2 bcd 3 2 4 acb 5 3 1 cad groupやdistinctを試してみましたがうまくいきません。 どのようなSQLを書けばよいのか教えてください。
858 名前:NAME IS NULL mailto:sage [2007/08/31(金) 21:40:38 ID:???] >>857 version_idでグループしてrevision_idがMAXな version_idとrevision_idだけの仮テーブルをこさえて じょいん
859 名前:NAME IS NULL [2007/09/01(土) 21:39:05 ID:lOCeHxsv] create tableやcreate indexのsqlを吐いてくれる、 フリーのExcelファイルってないですか? いくつかあったんですけど、 auto incrementとかPじゃないkeyが設定できないんス。
860 名前:NAME IS NULL mailto:sage [2007/09/01(土) 22:32:48 ID:???] >>858 一回SQLを発行して仮テーブルを作成し、 ジョインするってことは、一発のSQLでは無理ってこと?
861 名前:NAME IS NULL mailto:sage [2007/09/01(土) 23:00:56 ID:???] >>860 バージョンが(多分)5以上であればインラインビューを使えば テンポラリテーブル使わず、SQL一発でできるよ。
862 名前:NAME IS NULL mailto:age [2007/09/04(火) 18:17:45 ID:???] select * from tbl WHERE `time`='2007-09-04' こんな感じにすると カラムがdatetimeの場合、 意図したように取り出せません。 2007-09-04 00:00:00〜2007-09-04 23:59:59 まで取り出すにはどうしたらいいでしょうか? select * from tbl WHERE `time`=>'2007-09-04' and `time`<'2007-09-05' これ以外でお願いします。
863 名前:NAME IS NULL mailto:sage [2007/09/04(火) 18:22:19 ID:???] >>862 > select * from tbl WHERE `time`=>'2007-09-04' and `time`<'2007-09-05' に >2007-09-04 00:00:00〜2007-09-04 23:59:59 書きゃいんじゃねーの
864 名前:NAME IS NULL mailto:sage [2007/09/05(水) 09:53:36 ID:???] >>862 select * from tbl WHERE SUBSTRING(`time`,0,10)='2007-09-04'
865 名前:NAME IS NULL mailto:sage [2007/09/05(水) 10:51:11 ID:???] >>862 普通、 select * from tbl WHERE date(`time`)='2007-09-04'; じゃね?
866 名前:NAME IS NULL mailto:sage [2007/09/05(水) 10:56:46 ID:???] 関数で分解するとindex効かないっす
867 名前:NAME IS NULL mailto:sage [2007/09/05(水) 11:11:08 ID:???] autoincrementみたくさ 関数定義しといて なんか追加したら別のカラムに計算して勝手に突っ込む 見たいなの無い?
868 名前:NAME IS NULL [2007/09/05(水) 12:04:41 ID:H/eyjQaz] ↓空欄に一致させたいのですが、これだとうまくいきません。どうすればいいですか? select * from t_table where id=''
869 名前:NAME IS NULL mailto:sage [2007/09/05(水) 12:14:49 ID:???] >>868 select * from t_table where id is null;
870 名前:NAME IS NULL [2007/09/05(水) 13:19:41 ID:H/eyjQaz] >>869 なるほど。ありがとうございました!
871 名前:NAME IS NULL mailto:sage [2007/09/05(水) 23:08:33 ID:???] >>867 dev.mysql.com/doc/refman/5.1/ja/create-trigger.html
872 名前:NAME IS NULL mailto:sage [2007/09/07(金) 12:15:12 ID:???] あの。。恥しい質問なんですが、複数ユーザーがいた場合のトランザクションってどのように動作するんでしょう? ユーザー1 ユーザー2 START TRANSACTION; UPDATE tbl SET hoge='1' WHERE id = '1'; UPDATE tbl SET hoge='2' WHERE id = '1'; UPDATE tbl2 SET hoge='1' WHERE id = '1'; COMMIT; この場合、 SELECT hoge FROM tbl WHERE id = '1' は1になるという事でいいんでしょうか? ユーザー2はユーザー1のコミットが終了するまで待たされるという事?
873 名前:NAME IS NULL [2007/09/07(金) 18:02:22 ID:2pJ+Fq5j] すみません、どなたかヘルプお願いします。 MySQL Migration Toolkitを起動したのですが、JRE(5.0) Update 8がないから 初期化に失敗したとか言われます。 JRE5.0はUpdate10〜12を入れているのですが・・・ Javaのサイトにいっても古いバージョンをダウンロードできる場所が 見つかりません。 どなたか、対策をお教えいただけないでしょうか?
874 名前:NAME IS NULL mailto:sage [2007/09/07(金) 23:45:39 ID:???] >>872 実際にコンソール2つでやってみればわかるよ!
875 名前:NAME IS NULL mailto:sage [2007/09/07(金) 23:56:29 ID:???] LOCKくらいしろ
876 名前:NAME IS NULL [2007/09/08(土) 07:47:26 ID:W79c84Ln] ローカルの環境で Microsoft Access 2000/2007 と OpenOffice Base で作成したデータベースがあります。 これらを一括して MySQL データベースにまとめて ODBC 経由でアクセスするようにアプリケーションを 書き換えようとしているのですが、mysqldump のように スキーマとデータをまとめてダンプするようなツールは Microsfot Access や OpenOffice Base には無いでしょうか?
877 名前:NAME IS NULL [2007/09/08(土) 08:06:24 ID:W79c84Ln] データ自体は Microsoft Access や OpenOfice Base から ODBC 接続して複製すれば(マクロは追加で書かなきゃいけないのかも) いけそうなんですが、スキーマは手動で移すしかないですか? とりあえず CREATE TABLE などの SQL 文でダンプさえできれば、 あと少々の差異の調整はダンプを何らかのスクリプトで処理して やればなんとかなると思うのですが・・・
878 名前:NAME IS NULL mailto:sage [2007/09/08(土) 08:11:57 ID:???] Microsoft Access 2007 にはテーブル単位で 「ODBC データベースへのエクスポート」が可能でした。 リレーションは移ってくれないのだろうか…
879 名前:NAME IS NULL mailto:sage [2007/09/08(土) 08:27:05 ID:???] エクスポートではできない。 リレーションも含めたダンプができればいいんだろうが。 Access 2007 ヘルプ - エクスポート - リレーションシップ 1 回の操作で 1 つのテーブルしかエクスポートできないため、 エクスポート操作でリレーションシップをコピーすることはできません。 複数のテーブルとそのリレーションシップをインポートする場合は、 インポート先のデータベースを開き、そのオブジェクトをインポートします。
880 名前:878 mailto:sage [2007/09/08(土) 08:34:19 ID:???] インデックスの有無や制約は一切反映されませんでした。 Microsoft Access のエクスポート貧弱なり・・・
881 名前:NAME IS NULL mailto:sage [2007/09/08(土) 23:39:12 ID:???] アップサイジングウィザードっつーのがあったんだけどな 今のバージョンにはないのかな
882 名前:878 mailto:sage [2007/09/09(日) 10:02:07 ID:???] >>881 Access 2007 からはユーザインターフェイスが大幅に変わって うまく見つけられなかったけど、「データベースの移動」 っていう項目の中に SQL Server へのデータの移動がある。 なので SQL Server にはスキーマも含めてうまく移行できると思う。 で、あらためて SQL Server から MySQL に移行すればいいのかな。 MySQL Migration Tool を使うのがベスト? このツールはまだ一回も使ったことないんでこれから検討。
883 名前:NAME IS NULL [2007/09/09(日) 22:18:37 ID:8M0+Vljb] ネーミングのせいで評価を落としてしまってる件。 ポスグレの方がずっと使えそう。 名前って大事だよな、ミギー。
884 名前:NAME IS NULL mailto:sage [2007/09/09(日) 23:36:46 ID:???] かわいいじゃん、まいえすきゅーえる ポスの方がすぐに読めないから名前は嫌い
885 名前:NAME IS NULL [2007/09/09(日) 23:56:25 ID:QjCU4T3R] int型に文字列を入れようとするとwarning は出るんですが、INSERTされてしまうんです。 これをされないようにするにはどうすればいいか教えてもらえないでしょうか?
886 名前:NAME IS NULL mailto:sage [2007/09/10(月) 00:46:07 ID:???] >>885 dev.mysql.com/doc/refman/5.1/ja/server-sql-mode.html
887 名前:NAME IS NULL mailto:sage [2007/09/10(月) 03:13:39 ID:???] set names hoge って、なんで「NAMES」なんていうキーワードなのかさっぱりわからん。
888 名前:NAME IS NULL [2007/09/10(月) 13:11:08 ID:6m8MdV+L] >>886 ありがとうございます。 解決しました。 MYSQL5じゃないと出来ないみたいでしたので、バージョンアップしたらできました。 それと int型に 99.99 を入れようとすると自動的に丸められて挿入されてしまうんですがこれは防ぐ方法ないですか?
889 名前:NAME IS NULL mailto:sage [2007/09/10(月) 13:48:34 ID:???] >>888 int型って何か分かってる? 前処理で切上げ・切捨て・四捨五入など 必要な処理をすれば、何の問題も無かろうに。
890 名前:NAME IS NULL [2007/09/10(月) 13:53:32 ID:6m8MdV+L] >>889 分かってるつもりです。 エラーではじいて欲しいだけなんです。 postgresだと int型に 99.99を入れようとするとシンタックスエラーになるので mysqlでも出来ないかな?とおもって探しています。
891 名前:NAME IS NULL mailto:sage [2007/09/10(月) 14:16:11 ID:???] >>890 「そもそもint型に実数突っ込む実装が糞」って言ってるの。
892 名前:NAME IS NULL mailto:sage [2007/09/10(月) 16:52:29 ID:???] MySQLについて質問です。 今日、PHPの勉強をしようと思ったのですが、 データ管理(メンバー登録)にはMySQLがいいのでしょうか? ネットで調べたら、下のようなものが引っかかったので不安です。 www.ad.vg/voice/modules/tinyd0/index.php?id=8 『メモリー馬鹿食いでswapまで使いまくる』 『とてつもなく大規模な利用目的には活躍の場もあると思いますが、 通常はなんらメリットの感じられないmysqlには落胆しました。』 とあります。 実際はどうなのでしょうか?
893 名前:NAME IS NULL mailto:sage [2007/09/10(月) 17:00:27 ID:???] >>892 アホなの?
894 名前:NAME IS NULL mailto:sage [2007/09/10(月) 17:02:16 ID:???] うん、アホだから聞いてるw
895 名前:NAME IS NULL mailto:sage [2007/09/10(月) 17:03:55 ID:???] >>892 メモリ馬鹿食いなのはSQL Serverもだな。
896 名前:892 mailto:sage [2007/09/10(月) 17:07:44 ID:???] >>895 ってことは、PHPでDBの勉強するなら 自分のPC、メモリ馬鹿食いは避けれないってことなのかな?
897 名前:NAME IS NULL mailto:sage [2007/09/10(月) 17:10:34 ID:???] >>896 世の中のRDBMSが全てそうだと思うなよwww SQLiteでも使えや。
898 名前:892 mailto:sage [2007/09/10(月) 17:19:44 ID:???] お、SQLiteってのがあるのですかww 一度調べて出直してきます。 回答ありがとでした^^
899 名前:892 mailto:sage [2007/09/10(月) 17:47:06 ID:???] >>897 SQLiteでPHPのプログラム組んだとして・・・、 SQLiteが入ってないサーバでしか動かないって落ちはないよね?
900 名前:NAME IS NULL mailto:sage [2007/09/10(月) 17:54:18 ID:???] >>899 日本語でOK。 つかSQLiteでググってみてから それでも分からなきゃSQLiteのスレで訊けwww
901 名前:NAME IS NULL [2007/09/10(月) 17:58:33 ID:2g8YrWQX] >>873 古いバージョンはもう手に入らない。 雑誌などから古いバージョンを探すしかない。それか、持っている人にアップロードしてもらう。 それが出来なければ、MigrationToolkitは使えないから諦めるんだな
902 名前:NAME IS NULL mailto:sage [2007/09/11(火) 00:55:09 ID:???] 古いのは、ここから落とせるでしょ。JRE 5.0 Update 8 も。 java.sun.com/products/archive/
903 名前:873 mailto:sage [2007/09/11(火) 16:39:27 ID:???] >>902 ありがとうございます! 見事JRE 5.0 Update 8をゲット・・・ ・・・・J2SE 5.0 Update 8になっててインストールしても Migration Toolkitが「JRE 5.0 Update 8」を入れろやコラ!!と 相変わらず動いてくれないなあ・・・ なんでなんだろ
904 名前:NAME IS NULL [2007/09/11(火) 21:42:16 ID:+zsoqsPe] Javaを使って、ローカルPCからjpeg画像ファイルを読み込んで、 MySQLにBLOB型で格納したいのですが、どのようにやればよいか 具体例を教えてもらえないでしょうか? 参考となるリンクだけでも構いません。 OSはWindowsXP Pro、JDK1.6.0、MySQL5.0.45という環境です。 よろしくお願いいたします。
905 名前:NAME IS NULL mailto:sage [2007/09/11(火) 23:54:27 ID:???] 既にデータが沢山入っているテーブルに新たなカラムを追加しようと思っています。 これは、 ALTER TABLE テーブル名 ADD 追加するカラム名 型; というコマンドで実行可能ですが、その場合、新たに追加されたカラムには NULL が代入されてしまいます。 新たなカラムを追加し、それに "" (文字列無し、ただし NULL では無い。) を入れる場合にはどうしたら良いでしょうか? 初歩的な質問で申し訳ありませんが、よろしくお願いします。
906 名前:NAME IS NULL [2007/09/11(火) 23:58:41 ID:ya4K9LL7] これはアメリカのゲームです。1度やってみてください。 これは、たった3分でできるゲームです。試してみてください。 驚く結果をご覧いただけます。 このゲームを考えた本人は、メールを読んでからたった10分で願い事が かなったそうです。 約束してください。絶対に先を読まず、1行ずつ進む事。 たった3分ですから、ためす価値ありです。 まず、ペンと、紙をご用意下さい。 先を読むと、願い事が叶わなくなります。 @まず、1番から、11番まで、縦に数字を書いてください。 A1番と2番の横に好きな3〜7の数字をそれぞれお書き下さい。 B3番と7番の横に知っている人の名前をお書き下さい。(必ず、興味の ある性別名前を書く事。男なら女の人、女なら男の人、ゲイなら同姓の名 前をかく) 必ず、1行ずつ進んでください。先を読むと、なにもかもなくなります。 C4,5,6番の横それぞれに、自分の知っている人の名前をお書き下さ い。これは、家族の人でも知り合いや、友人、誰でも結構です。 まだ、先を見てはいけませんよ!! D8、9、10、11番の横に、歌のタイトルをお書き下さい。 E最後にお願い事をして下さい。さて、ゲームの解説です。 1)このゲームの事を、2番に書いた数字の人に伝えて下さい。 2)3番に書いた人は貴方の愛する人です。 3)7番に書いた人は、好きだけれど叶わぬ恋の相手です。 4)4番に書いた人は、貴方がとても大切に思う人です。 5)5番に書いた人は、貴方の事をとても良く理解してくれる相手です。 6)6番に書いた人は、貴方に幸運をもたらしてくれる人です。 7)8番に書いた歌は、3番に書いた人を表す歌。 8)9番に書いた歌は、7番に書いた人を表す歌。 9)10番に書いた歌は、貴方の心の中を表す歌。 10)そして、11番に書いた歌は、貴方の人生を表す歌です。 この書き込みを読んでから、1時間以内に10個の掲示板にこの書き込みをコピーして貼って下さい。 そうすれば、あなたの願い事は叶うでしょう。もし、貼らなければ、願い事を逆のことが起こるでしょう。とても奇妙ですが当たってませんか?
907 名前:905 mailto:sage [2007/09/12(水) 01:26:52 ID:???] 自己解決しました。 default '' というパラメーターをつければおkみたいです。 ありがとうございます。
908 名前:NAME IS NULL [2007/09/12(水) 16:20:51 ID:QChlKlei] mysql4.1.20を使用しています postgresばかり使っていたのでmysqlの事がさっぱりわからないのですが SELECT currval や SELECT NEXTVAL の代わりになるようなものはMYSQLには用意されていないのでしょうか?
909 名前:NAME IS NULL mailto:sage [2007/09/12(水) 18:37:39 ID:???] >>908 postgres あまりわかんないけど、auto_increment と last_insert_id() を調べてみ。
910 名前:NAME IS NULL [2007/09/13(木) 01:05:56 ID:vM9MWgfF] >>909 last_insert_id()がちょうどSELECT currvalにあたるようです ありがとうございます
911 名前:NAME IS NULL [2007/09/13(木) 23:08:45 ID:+g8hjTGs] CREATE TABLE文でPRIMARY KEYを指定して 主キーに設定したカラムは、自動的にインデックスが 作成されるのでしょうか?それとも主キーでも 自分でCREATE INDEX文でインデックスを作成しないと いけないのでしょうか?
912 名前:NAME IS NULL mailto:sage [2007/09/13(木) 23:27:09 ID:???] >>911 勝手に出来るよ 安心汁
913 名前:NAME IS NULL [2007/09/13(木) 23:38:26 ID:+g8hjTGs] >>912 ありがとうございます。 show index from テーブル名で確認したら、 主キーのカラムでSeq_in_indexの値が1となっていました。 申し訳ないのですが、もう1つ質問させてください。 以下のSQL文を実行するとエラーとなってしまうのですが、 その理由が分かりません。1つのテーブルにAuto_incrementのカラムが 1つしかなく、かつ主キーに設定しているはずなのですが…。 どなたかエラーとなる理由が分かる方いらっしゃいますか? <SQL文> create table sample( id1 integer not null, id2 integer not null, id3 integer not null, id4 integer not null auto_increment, name varchar(20) not null, primary key(id1, id2, id3, id4) ); <上記SQL文に対するエラーメッセージ> ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
914 名前:NAME IS NULL [2007/09/14(金) 00:10:34 ID:nR/wca1E] >>913 auto incrementで設定したキーって唯一のPKでなければ ならないんではなかったっけ? なので primary key(id1, id2, id3, id4)ではなく primary key(id4)ならばエラーはなくなる(はず)
915 名前:NAME IS NULL [2007/09/14(金) 00:27:09 ID:CZohK/lz] >>914 今試しにPRIMARY KEYの指定順序を以下の通りに してみたらテーブルが登録できてしまいました…。 Auto_incrementのカラムが唯一の主キーでなければ ならないとしたら、登録されたしまったテーブルは不正でしょうか? create table sample( id1 integer not null, id2 integer not null, id3 integer not null, id4 integer not null auto_increment, name varchar(20) not null, primary key(id4, id1, id2, id3) ← auto_incrementのカラムを1番目に移動 ) ENGINE=InnoDB;
916 名前:915 mailto:sage [2007/09/14(金) 01:01:23 ID:???] 何度も失礼します。 show index from sample;を実行したところ、 >>915 のSQL文の主キーがid4しか出てこなかったので、 PRIMARY KEY(id4, id1, id2, id3)のid1, id2, id3は 主キーとしては無視されているようです。 エラーが出なかったためはまってしまいました。
917 名前:915 mailto:sage [2007/09/14(金) 01:10:02 ID:???] でも、show fields from sample;を実行したら、 id1, id2, id3, id4は全て主キーになってました…。 もちろんid4はauto_incrementになってます。 やはり>>914 さんが言うとおりに、 主キーかつAuto_incrementのカラムは表に1つだけ というのが正しい事なのでしょうか?もう分かりません。
918 名前:NAME IS NULL mailto:sage [2007/09/14(金) 01:42:27 ID:???] 目と目が逢う 瞬間 主キーだと気付いた
919 名前:NAME IS NULL [2007/09/14(金) 05:20:39 ID:lPZkncXg] 質問させて下さい。 MySQL 5.0.43を使っています。 ■カンマ区切りのデータの一部を曜日に合わせて取得したい ・テーブル構造 CREATE TABLE `info_percent` ( `info_percent_no` int(10) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'Percent No', `info_percent_daily` varchar(34) NOT NULL default '' COMMENT 'デイリー% カンマ区切りで7日間', `info_percent_up_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新日時', `info_percent_reg_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '登録日時', `info_percent_del_flg` TINYINT NOT NULL DEFAULT '0' COMMENT '削除フラグ 0=未削除 1=論理削除 2=一時削除' ) ENGINE = innodb CHARACTER SET ujis COLLATE ujis_japanese_ci COMMENT 'Percent情報'; ・レコード例 info_percent_dailyには「5,10,11,7,6,8,6」のようなデータが入っています。 ・質問詳細 info_percent_dailyレコードにはプログラムで利用する一週間分(7個分)の数字がカンマ区切りでセットされています。 このレコードからその日の数字を取得したいのです。 テンプレに紹介されているリンクを色々見回って無い知恵を絞って以下のような文を書いたのですが、NULLが返されます。 SELECT MAKE_SET( ( DATE_FORMAT( NOW(), '%w' ) +1 ),`info_percent_daily` ) FROM `info_percent` 本日、金曜日であれば、上記レコードデータで言うと「8」を取得したいのですが、なかなか上手くいきません。 ほとほと行き詰まってしまいました。 お力添えをいただけませんでしょうか。 宜しくお願いします。
920 名前:NAME IS NULL mailto:sage [2007/09/14(金) 06:04:31 ID:???] >>918 漏れは別れてから気付いた
921 名前:NAME IS NULL mailto:sage [2007/09/14(金) 11:22:14 ID:???] >>919 SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(`info_percent_daily`, ',', DATE_FORMAT( NOW(), '%w' ) +1),',',-1) FROM `info_percent`
922 名前:919 mailto:sage [2007/09/14(金) 22:25:59 ID:???] >>921 ばっちりいけました! なるほどこのようにすればいいんですね。 勉強になりました。ありがとうございました!
923 名前:NAME IS NULL [2007/09/15(土) 01:18:59 ID:ZjADhqZJ] すみません あるフィールドにテーブル名が入っていて そのテーブルと join するようなクエリって書けますか? table1 | id | value | | 1 | 100 | | 2 | 200 | | 3 | 300 | table2 | id | value | | 1 | hoge | | 2 | fuga | table3 | id | tbl | key | | 1 | table2 | 2 | | 2 | table1 | 3 | のときに select table3.id, `tbl`.value from table3 left join `tbl` on table3.key = `tbl`.id; みたいな感じのことがしたいのです
924 名前:NAME IS NULL mailto:sage [2007/09/15(土) 11:09:16 ID:???] select max(hoge) + 1 from fuga; としたときにデータが空だと NULLが出力されてしまいますが NULLを0とみなして計算して 1を出力してもらうためには どういう記述にすればよろしいでしょうか?
925 名前:NAME IS NULL mailto:sage [2007/09/15(土) 11:15:45 ID:???] select coalesce(max(hoge),0) + 1 from fuga;
926 名前:NAME IS NULL mailto:sage [2007/09/15(土) 22:57:05 ID:???] >>923 table1とtable2をまとめてこうすればいいじゃない。 table | table | id | value | | table1 | 1 | 100 | | table1 | 2 | 200 | | table1 | 3 | 300 | | table2 | 1 | hoge | | table2 | 2 | fuga |
927 名前:NAME IS NULL [2007/09/16(日) 17:07:51 ID:rVRRSUiB] SQL文の中で、名前にハイフンを含むデータベース名は どのように書いたらいいのでしょうか。 スクリプトからアクセスする場合はhoge-fugaで問題ないのですが、 phpMyAdminからやプロンプトから、例えば CREATE DATABASE hoge-fuga; とするとパースエラーになってしまって・・・ hoge\-fugaなどとしてもダメです。
928 名前:NAME IS NULL mailto:sage [2007/09/16(日) 17:33:11 ID:???] ハイフンを含まないデータベース名にすれば無問題
929 名前:NAME IS NULL [2007/09/16(日) 17:39:28 ID:rVRRSUiB] >>928 データベース名にはすでにハイフンが入っているんです。 スクリプトからはそれでアクセスできていますが 直打ちだとどうしたものか・・・ すべてスクリプトを介してアクセス、というのはナシの方向でひとつ・・m(_ _)m
930 名前:NAME IS NULL mailto:sage [2007/09/16(日) 20:22:29 ID:???] `hoge-fuga`
931 名前:NAME IS NULL [2007/09/16(日) 22:00:21 ID:rVRRSUiB] >>930 ありがとうございます!助かりました!
932 名前:NAME IS NULL [2007/09/18(火) 13:59:24 ID:LM+QWEw9] mysqlとphpの連携を学習したいと重いDBを勉強したいのですが、 Mysql5.0をインストールしました。 入門レベルとして、何を覚えていけばよろしいでしょうか? OSはwindowsXPです
933 名前:NAME IS NULL mailto:sage [2007/09/18(火) 14:56:17 ID:???] まず入門書を数冊読破して下さい
934 名前:NAME IS NULL mailto:sage [2007/09/18(火) 15:29:02 ID:???] SQL文を覚えてください
935 名前:NAME IS NULL [2007/09/18(火) 16:22:18 ID:6uQh2xqH] update hoge_tbl set countup = (select countup from hoge_tbl) + 1; 上記のような自身のカウントアップをさせたいのですが update時に同テーブルをサブクエリに指定しているのが原因という事は わかったのですが、MYSQLにはどのような代替案があるのでしょうか?
936 名前:935 mailto:sage [2007/09/18(火) 16:34:37 ID:???] 自己解決しました
937 名前:NAME IS NULL mailto:sage [2007/09/18(火) 16:40:33 ID:???] update hoge_tbl set countup = countup + 1; では問題があるのだろうか??
938 名前:NAME IS NULL mailto:sage [2007/09/18(火) 17:45:44 ID:???] >>932 mysqlは軽いRDBMSの部類だよ。と突っ込んでみる。
939 名前:NAME IS NULL mailto:sage [2007/09/18(火) 21:51:04 ID:???] >>932 windowsでは様々な問題に直面します。 まずはLinuxの導入から初めてください。 しかし重いDBが希望のようですので、 windowsのままでOracleかMSSQLでも購入してください。
940 名前:NAME IS NULL [2007/09/19(水) 05:24:48 ID:5f6hIkAQ] text型のカラムにalterでunique属性をつけようとすると エラーがでるのですがどうしてでしょうか?( varcharだとうまくいくようなのですが。。) mysql> alter table a_tbl add unique b_item(b_item); ERROR 1170 (42000): BLOB/TEXT column 'name2' used in key specification without a key length ごきょうじゅお願いします。
941 名前:NAME IS NULL [2007/09/19(水) 06:30:18 ID:thY75gxD] BLOBやTEXTカラムではインデクスする文字列の長さを指定する必要がある って事なんだけど、エラーメッセージにもそのように書いてあるやん
942 名前:NAME IS NULL mailto:sage [2007/09/19(水) 23:53:34 ID:???] それだとuniqueにならない恐れがありますよね?
943 名前:NAME IS NULL mailto:sage [2007/09/20(木) 01:29:51 ID:???] >>942 そんなんなんとかしろ
944 名前:932 [2007/09/20(木) 10:47:44 ID:fT/6kBZZ] レス遅くなりました。 とりあえずはMysqlで勉強したいと思います。 やはりSQL文をコマンドラインに打ち込んで覚えるのがいいですよね? 教本あるのですがさっぱり
945 名前:NAME IS NULL mailto:sage [2007/09/20(木) 13:04:10 ID:???] >>944 そう重います(笑)
946 名前:NAME IS NULL mailto:sage [2007/09/20(木) 13:24:21 ID:???] InnoDBを使ってるんですが、 innodb_file_per_tableオプションを付けたほうがパフォーマンスは上がるんでしょうか? ibdata1が肥大化してすごいサイズになってるんですが、これってパフォーマンスには関係ないんでしょうか?
947 名前:NAME IS NULL mailto:sage [2007/09/21(金) 00:31:02 ID:???] InnoDB使ってるやつなんて いんの?
948 名前:NAME IS NULL mailto:sage [2007/09/21(金) 12:34:52 ID:???] MySQL User Conf Japan 2007 のInnoDBパフォーマンスチューニングでは?そんなパラメータの話は出てこなかった気が。
949 名前:NAME IS NULL mailto:sage [2007/09/21(金) 14:21:48 ID:???] >>946 関係ある。あたりまえだが、ファイルサイズが大きくなれば一般に遅くなる。 ibdata1が同一物理ディスク上にあるなら、Windowsでいうデフラグするだけで早くなる可能性はある。
950 名前:NAME IS NULL mailto:sage [2007/09/21(金) 20:25:14 ID:???] >>949 可変長カラムがあってもInnoDBはフラグメンテーション発生しないんでなかったっけ? Winじゃなければ関係ないような。
951 名前:NAME IS NULL mailto:sage [2007/09/22(土) 08:34:10 ID:???] ファイルのフラグメントと、DBのフラグメントは違うんじゃないか? ファイルが大きくても、たくさん開くよりは、たいていは速いよ。
952 名前:NAME IS NULL [2007/09/22(土) 14:48:03 ID:SdV4tJcU] DEFAULT CHARSET=utf8を付けるとエラーが出るのですが、 このバージョンではこの指定はサポートしていないということでしょうか? ・Win2k MySQL 4.0.20a-nt ・コマンド CREATE TABLE `test` ( `id` INTEGER ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ・エラー #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT CHARSET=utf8' at line 3
953 名前:NAME IS NULL mailto:sage [2007/09/22(土) 16:14:45 ID:???] utf8はMySQL4.1からサポート。
954 名前:952 mailto:sage [2007/09/22(土) 17:05:08 ID:???] >>953 そういうことでしたか。 ありがとうございました。
955 名前:NAME IS NULL [2007/09/23(日) 00:03:21 ID:nJudGDWP] すいません、初心者です。 今、テーブル作ろうと思ってるんだけど、1/7/2007って値が入るカラムのデータ型ってなんになるのかな? 一応、mysqlのホームページでリファレンスマニュアル見たけどわからんかった・・・
956 名前:NAME IS NULL mailto:sage [2007/09/23(日) 00:09:45 ID:???] >>955 アメリカのデートだな
957 名前:NAME IS NULL [2007/09/23(日) 00:16:14 ID:nJudGDWP] >>そうなんすか?駄目理科・・・ テキスト型じゃまずいのかな・・・そっちの方向で考えているのですが・・・ 初心者かっこわりー
958 名前:NAME IS NULL [2007/09/23(日) 00:29:37 ID:nJudGDWP] >956 テキスト型で行けました。ありがとうございました。
959 名前:NAME IS NULL [2007/09/23(日) 01:27:31 ID:FBJ1MWDN] すみません、DBを業務で触るのは久々なので教えて下さい…。 以前はSybase(バージョン失念)を2年程弄っていたのですが、 今回MySQL5.xを弄る事になりまして。 DATE_TIME型のカラムをCHAR型にCONVERTし当日よりn日前のレコードを抽出したいのです。 確かこのような構文だったと記憶しているのですが。 datediff ( convert (char(8), dd, now(), 112) - n いまいち思い出せず…。
960 名前:NAME IS NULL mailto:sage [2007/09/23(日) 01:52:04 ID:???] DATETIMEをCHARにCONVERT? 逆じゃないの? mysql> desc test; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | dd | char(8) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 1 row in set (0.21 sec) mysql> select * from test where datediff(convert(dd, date), now()) = -22; +----------+ | dd | +----------+ | 20070901 | +----------+ 1 row in set (0.01 sec)
961 名前:NAME IS NULL mailto:sage [2007/09/23(日) 02:02:19 ID:???] dd列にINDEXが効くように直してみた。 mysql> select * from test where dd = date_format(date_sub(now(), interval 22 day), '%Y%m%d'); +----------+ | dd | +----------+ | 20070901 | +----------+ 1 row in set (0.11 sec)