1 :
NAME IS NULL :
2006/05/30(火) 06:02:36 ID:sdhUJq1+
>>982 linux側からtelnet host 3306 もだめでした。
telnet: connect to address host: Connection timed out
telnet: Unable to connect to remote host: Connection timed out
my.cnf 中にはskip-networking , bind-address などはありません
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
>>3 ネットワークでアクセスするのにbind-addressがないのは問題じゃないですか。
ポート指定もないみたいだし。その辺の項目を追加してやればいいのでは。
5 :
NAME IS NULL :2006/05/30(火) 18:25:11 ID:+JwpeOWp
Mysql5.0.21+perl(DBI)で サーバUTF8、クライアントs-jisで自動文字コード変換を利用しているのですが、 データの末端に「表」の字をINSERTしようとするとSQLエラーとなります。 データの末尾でなければ問題無くINSERTできます。 ex. DBI::st=HASH(0x86f0880)->errstr これはどういう理由からなのでしょうか?回避策とかありますかね?
selectの実行結果をファイルに書き出す方法ってありますか?
7 :
5 :2006/05/30(火) 19:15:59 ID:+JwpeOWp
試しにテーブルをS-jisにして、文字コード変換しないで試しましたが、 同じように「表」の字がエラーとなりますね。 「ソ」もそうなります。 どちらも2バイト目が0x5cです 困った。。。
>>6 ふつーにリダイレクトで流せばいいんじゃね?
select * into outfile 'c:/temp/data.csv' fields terminated by ',' enclosed by '' lines terminated by '\r\n' from 〜 where 〜
12 :
5 :2006/05/30(火) 20:07:08 ID:+JwpeOWp
調べてみたら、0x5cでperl文法中のダブルクォーテーションがエスケープされるためのようです。 あらかじめUTF8にコンバートしてやれば文法エラーでなくなりますね。 携帯電話用サイトなので、s-jisがデフォルトで、perlのコードもならべくs-jisで書きたい。 拡張領域の括@などもあるので、SQLにもそのままs-jisとして格納したい。 どなたか良い解決法をご存知の方はいらっしゃらないでしょうか?
シングルクオート use encoding
14 :
5 :2006/05/30(火) 23:25:12 ID:+JwpeOWp
>>13 変数を展開しないといけないのでシングルクォートは使えません。
EncodingはJcodeとどう違うのでしょうか?
mysqlをインストールしたいと思い、 tar コマンドで解凍 ./configure --prefix=/usr/local/mysql --with-charset=ujis make make install まで出来たのですが、データベースの初期化をしようと cd /usr/local/mysql ./bin/mysql_install_db としたら、 Could not find help file 'fill_help_tables.sql' in /usr/local/share/mysql or inside /usr/local. とでました。 ./bin/mysqld_safe & と入力しても mysqlのサーバーも起動できませんでした。 どうしたらmysqlを起動できるでしょうか?
16 :
5 :2006/05/31(水) 00:22:55 ID:QTGkxqhj
該当データにスペースを追加しても支障がないので、とりあえず、 $sjis =~ s/([\x81\x83\x84\x89-\x9F\xE0-\xEA][\x5C])$/$1 /; として2バイト目が5Cの文字にスペースを追加してみました。 「表」だと、「表scape」として問題なくSQLに入ります。 しかし「表表」の場合、$sjisは「表表scape」になりますが、SQLには「表表\scape」と挿入されます。 「表表表」であると、「表表\表scape」となってしまいます。 scapeは半角スペースです。 益々わからなくなってきました。
>>5 君のコードは根本的に間違っている。
プレースホルダを使うべし。
これ以上はPerlのスレかDBIのスレで聞きなさい。
18 :
5 :2006/05/31(水) 00:39:55 ID:QTGkxqhj
>>17 プレースホルダは使ってます。
DBIスレってあるんですか。そっちでも聞いてみます。
そもそもSJIS使う自体が間違い・・・・って言うと、また荒れるんだろうな。 なんで、SJIS使って、わかってる筈の0x5c問題に特攻するかなーと思ってたら、 携帯電話はSJISが多いらしいことをつい最近知った。 SJISしか通らない携帯があるので、SJISで作るのが都合いいらしい。 単にwindows使いたいだけなら逝ってヨシ
20 :
5 :2006/05/31(水) 03:39:52 ID:QTGkxqhj
>>19 そうですね。PC相手なら迷わずutfで統一したいところです。
0x5cって有名な問題なんですか。。
それはともあれ、文末の0x5cはスペース入れる事で解決できましたが、
十十十十十十→十十\十十\十十\と二文字づつエスケープされるのは
DBIのバグでしょうか?
内部でどんな処理をしてるんでしょ?
DBIのスレ無い・・・(〃 ̄ω ̄〃ゞ
ところでPerlって、どのバージョンからSJISで
スクリプトコードが書けるようになったの?
Perlに疎いからUTF-8だけかと思ってた。
>>12
>>21 すれ違いとは思うが、、、
perlでのsjis問題は解決したの?
ご助力お願いします CREATE TABLE `test` ( `grade` int(11) NOT NULL default '0', `class` int(11) NOT NULL default '0', `student` int(11) NOT NULL default '0', `score` int(11) NOT NULL default '0', PRIMARY KEY (`grade`,`class`,`student`) ) ENGINE=MyISAM DEFAULT CHARSET=cp932; 上のテーブルで +-------+-------+---------+-------+ | grade | class | student | score | +-------+-------+---------+-------+ | 1 | 1 | 1 | 10 | | 1 | 1 | 2 | 76 | | 1 | 1 | 3 | 30 | | 1 | 1 | 4 | 87 | | 1 | 1 | 5 | 100 | | 1 | 2 | 1 | 74 | | 1 | 2 | 2 | 52 | | 1 | 2 | 3 | 61 | | 1 | 2 | 4 | 0 | | 1 | 2 | 5 | 48 | +-------+-------+---------+-------+ のレコードが入っています。 ここから class ごとの最大点数を取っている student を表示させたいです。 +-------+-------+---------+-------+ | grade | class | student | max(score) | +-------+-------+---------+-------+ | 1 | 1 | 5 | 100 | | 1 | 2 | 1 | 74 | +-------+-------+---------+-------+ こんな感じです select grade, class, student, max(score) from `test` group by class; すると、取得できる student が 1 になってしまいます よろしくお願いします
プレースホルダを使ってるのに
>>14 って発言はありえないだろ。
まさかスクリプト中でSJISを使っているわけではあるまい?
perlの話は、mysqlには関係ないな。スレ違い。 mysqlならutf8で使えでいいとおもう。 sjis使いたいなら、sjis対応のボラクルとか買ってもらえ。
まだ
>>5 はいるかな?
俺、携帯関連の開発してるけど、PerlやPHPやMySQL全部sjisでやってるよ
PHPの場合MySQLに入れる前に mysql_real_escape_string() をかませば万事OK
INNER JOIN した時に同じフィールドがあった場合、どちらか片方の値が優先される と思うのですが、どういった基準でどちらの値が採用されるのでしょうか?
>>28 TableName.FieldName とかしないとエラー出るんじゃない?
>>29 SELECT * で取ってくると、adodbの場合、ASSOCだと2つとってくるんですよね。
それで困っているんですけど、どうすればいいかさえわからず。
とりあえず、SELECT の後に欲しいフィールド名を全部書けば大丈夫なのは
確認したのですが、ちょっとアホっぽいというか…
>>9 ,11
ありがとうございました。出来ました。
まあどっちにしても俺は SELECT * って最近使わないな 設計変更でフィールド追加やフィールド名変更後もOKで柔軟に見えるけど、 実際は全てのフィールドをそのまま呼ぶことは少ないので。 テーブル名.フィールド名 で取得は冗長だけど確実
33 :
23 :2006/05/31(水) 14:27:59 ID:???
考えてくださってる方々、ありがとうございます。 一応期待した結果を得るクエリはできたのですが ↓ select grade, test.class, student, test.score from test inner join ( select class,max(score) as score from test group by class) as max_data using(class,score) インデックスが使えないため行数が増えるとやばそうな感じがします。 インデックスを使って解決できる素敵なクエリがありましたら、 よろしくお願いします。
34 :
NAME IS NULL :2006/05/31(水) 14:53:59 ID:Ow+BXBzw
再び。ませんです。 RH9 へ 4.1.15を RPMで入れると出来ていた mysqlコンソールからの直接日本語入力が、 同じバージョンをソースからBuildすると出来なくなります。 コンパイルオプション?回避策があればご教授をお願いします。
35 :
23 :2006/05/31(水) 14:57:03 ID:???
>>34 RPMのコンパイルオプション見てみればいいんじゃね?
36 :
NAME IS NULL :2006/05/31(水) 15:23:32 ID:Ow+BXBzw
>> 35 おお確かに。--without-readline でした。ども!
37 :
5 :2006/05/31(水) 16:08:05 ID:QTGkxqhj
>>21 CGIとしてなら少なくとも5年前ぐらいからは既にSjisでコーディングできましたよ。
>>24 スクリプト中でsjisを使ってるとは?
全部sjisでコーディングしてます。
そのほうが楽なので。
>>26 Mysqlが問題というよりはperl+DBIがSjisで問題あるんだと思います。
ならperlスレやDBIスレで聞けという事なんでしょうが、まともなperlスレがないので
ここで聞かせてもらってます。。同じくSjisでやってる人いませんかねぇ。。
一応MySQL+DBI+Perlなのでお邪魔させてください<(_ _)>
>>27 PHPは関数多くていいですねぇ。DBとの相性はPHPの方がよさそうですね。
2chのスクリプトはs-jisで書いてないのかな?どうなんだろ。
まぁDBは使ってないだろうけど。
もの凄いKENT臭がするけど
>>37 DBIとMySQLに関係はないのでスレ違いです。
ム板かWebProg板でどうぞ。まともなスレです。
39 :
5 :2006/05/31(水) 18:18:50 ID:QTGkxqhj
>>38 うーん・・(〃 ̄ω ̄〃ゞスレ違いといえばそうなんでしょうが、、
perlスレ行ってもDBIはスレ違いとか、DB板に行けとか言われそうだし、、
困ったちゃん。一番知ってる人多そうなのはやっぱDB板の住人かなぁ
>>27 見落としてましたが、perlでも開発されてるんですね。どう回避されてます?
>>32 なるほど。
実際に仕事でやっている人が言うなら多分そっちの方がいいんでしょうね。
全部書き出してやることにします。
ありがとうございました。
max(point) AS max とか書くと、 東MAX を思い出してしまう
JDBCの中の人いらっしゃいましたら、お願いします。 prepStmtCacheSize=4096 prepStmtCacheSqlLimit=4096 としているのですが、 サーバサイドPreparedStatementを使ってくれないクエリがあります。 使ってくれないと判断したのは、 --log にてクエリログをとった時 Execute ではなく Query と表示(JDBC側でPreparedされてる?)されているからです。 この時、にサーバサイドで行われる規則性があれば ご教示お願いします。
>>37 少なくともうちではshift_jis(正確にはcp932)の文字列入れても問題なく動いてるので
君のコードが悪いと思うよ。
これ以上は教えてgooとかはてなとか答えてくれそうなとこに行けば?
44 :
NAME IS NULL :2006/05/31(水) 23:40:00 ID:QTGkxqhj
>>43 問題なく動いてるという事は前述の事柄が発生しないって事なんだろうか?
「十十十十」を入れても問題ない?\入らない?
せめてもう少し詳しく・・・
shiftjisスレ作って、そっち行った方がいいんじゃないか?
46 :
5 :2006/06/01(木) 01:08:43 ID:QbpA5RC0
>>45 糞スレ立てるな言われそうだしなぁ。
うーん・・(〃 ̄ω ̄〃ゞ
一応perlをutf8で書いてみましたが、DBIに渡す文字コードがSjisなら
同じ結果となりました。
俺のコードがうんぬんという意見がありますが、そんな問題ではないです
placeholderの使い方ぐらいはわかってます。。( ̄ー ̄;
47 :
5 :2006/06/01(木) 01:30:13 ID:QbpA5RC0
考えた結果、utf8でいきます。 絵文字と機種依存文字は事前にマッピングしなきゃいけないが。。かなり面倒(-o-; スレ違い失礼しました。<(_ _)>
48 :
NAME IS NULL :2006/06/01(木) 14:31:38 ID:rhh4Lyou
MySQL5.0で直接言語ではなくホスト言語で作ったデータベースを編集(更新)するにはどうすればいいですか? いま、データベースを作りテーブルもつくりました。 そこで、ホスト言語(C言語)でその作ったデータベースを編集(更新)しようと思うのですが、 main() { EXEC SQL BEGIN DECLARE SECTION; : : : と、「.c」で保存したc言語のソースファイルがあります。 でも、作ったのはいいが、どうすればデータベースを 編集(更新)できるかわかりません。 コンパイルってどうやるの?詳しく教えて。
49 :
NAME IS NULL :2006/06/01(木) 15:02:41 ID:Pm26ePI7
>> 48 コンパイルしてもないのに作ったつもりになるなよな。 mysqlのライブラリやヘッダ使って gcc とか vc とかでコンパイルしてみたらどう? っていうか、Halo World 組んだことあんのか?
50 :
NAME IS NULL :2006/06/01(木) 16:08:16 ID:OrA/J7SJ
>>48 ゆんゆんゆん ゆんゆんゆん ゆいまーる
ゆんゆんゆん ゆんゆんゆん ゆいまーる
Connecter/J を 3.1.13にしてから java.sql.SQLException: No operations allowed after statement closed. が出てしまい、データの取得ができません。 3.1.12では正常に使えます。 環境は Windows XP sp2 4.1.20-community-nt-log Tomcat 5.0.28 commons-pool-1.2 j2sdk1.4.2_11 です。同様の現象が再現する方いらっしゃいませんか?
基本的な質問なのですが、100万件のデータを更新するには、 100万回のUPDATEのSQLを発行する以外に方法はないのですか?
mysqlのインストールについてですが、データベースの初期化が終わって ./bin/mysqld_safe & と入力してサーバーを起動させようとしたのですが、 Starting mysqld daemon with databases from /usr/local/var STOPPING server from pid file /usr/local/var/linux.pid 060601 18:06:33 mysqld ended と出てしまいました。 どうしたらmysqlを起動させることができるでしょうか? 環境は、 linux mysql-5.0.22 php-5.1.4 apache2です
>>52 update table_name set column_name=hoge
これで100万行更新してください。
>>53 エラーログ
追加
http://www.mysql.gr.jp/mysqlml/mysql/msg/12382 さらに
, イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 〜 没年不明 )
>>54 > update table_name set column_name=hoge
> これで100万行更新してください。
やはりそれで100万行更新するしかないですか。
あとは、プリペアードステートメント?を使ったりして少し早くするしかない
ですよね。
>>56 モノによる。
情報小出しにしないでくれよ
>>56 それはupdate内容にもよるし、しっかりSQLの基礎で勉強してください
59 :
56 :2006/06/01(木) 19:18:50 ID:???
ランキングを付けるSQLを書いています 以下のような場合です。 $sql = "SELECT rank_id,point FROM rate_table"; $points = $DB->getAll($sql); //100万件あるとする foreach ($points as $point) { $sql = "SELECT COUNT(*)+1 FROM rate_table WHERE rate_point > $points['point']"; $result = $DB->GetRow($sql); $sql = "UPDATE ranking SET ranking = $result[0] WHERE rank_id = $points['rank_id']"; $DB->execute($sql); }
出してもらって悪いが何をしたくてこの処理をしているのか さっぱりわからん
ひどい処理だな。設計から見直すのが正解じゃないの?
62 :
56 :2006/06/01(木) 19:47:02 ID:???
投票システムを作っています。
テーマに対して、ユーザさんが意見を書き、それに多数のユーザさんが点数
をつけます。
rate_table は、採点された点数が入っています。
primary keyが rank_idで点数が pointです。
rate_table から 点数を持ってきて、その点数順に順位をつけるということを
したくて
>>59 のような処理を現在しています。
順位は、rankingテーブルのrankingフィールドに入ります。
以上でわかりますでしょうか?
点数でorder して join すればいいんじゃね?
64 :
56 :2006/06/01(木) 19:52:50 ID:???
>>61 ひどい処理だろうとは思うのですが、どうすれば良くなるのかもわからないの
です。
自力でやるしかしょうがないので、とりあえず、自分のわかる方法で実装した
のですが、うーん、やっぱりこのまま全てUPDATEをするしかないのか...
65 :
56 :2006/06/01(木) 19:57:41 ID:???
>>63 点数でorder すると同一の点数の場合、同一の順位にならないような気がする
のですが
joinはちょっと勉強してきます。
プログラム側でなんかするなら > $points = $DB->getAll($sql); //100万件あるとする このあたりもなんかしておくれ。
order by 順位 で limit つければおk
69 :
53 :2006/06/01(木) 21:25:51 ID:???
>>54 060601 21:15:58 mysqld started
060601 21:15:58 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
060601 21:15:58 InnoDB: Starting log scan based on checkpoint at
InnoDB: log sequence number 0 36808.
InnoDB: Doing recovery: scanned up to log sequence number 0 43655
060601 21:15:58 InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percents: 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
InnoDB: Apply batch completed
060601 21:15:59 InnoDB: Started; log sequence number 0 43655
060601 21:15:59 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
060601 21:15:59 mysqld ended
というエラーがありました。
>>55 ググってもなかなか解決策がみつからなかったので・・・。
>>69 ためしにぐぐって見つけたサイトと、
検索フレーズ教えてよ。
71 :
53 :2006/06/01(木) 21:52:06 ID:???
72 :
NAME IS NULL :2006/06/01(木) 22:14:08 ID:OrA/J7SJ
>>71 mysqlの公式ドキュメントでも解決不能なら、ここではどうしようもないよw
>>69 MySQLのインストールディレクトリ/dataにある
ib_logfile0とかib_logfile1、および
データファイル(ibdata1とか)を削除してみたらどう?
ただしこれやると今までのデータは復元できないので自己責任で
74 :
53 :2006/06/01(木) 22:31:09 ID:???
>>72 そうですね・・・。何度も読み直して挑戦してみたのですが・・・
>>73 一か八かやってみます。
みなさんの意見ありがとうございます。
>>74 データディレクトリの中身削除して、
ちゃんとパーミッション確認して
mysql_install_db --user=mysql すりゃ直るよ
だが、君は開発に向いていないからやめたほうがいい。
>>47 あー、すまん。問題ないのはcharsetがutf8じゃなくてcp932になってた。
utf8にしたくないならcp932で登録しておけばいいんじゃないの?
ってか、絵文字を入れるんならutf8にするのもまずいんじゃないかな。
binary型にしといたほうがいいかもね。
あと、多分調子が悪いのはMySQLのcp932およびsjisの変換周りっぽいので
レポート出しておいてね〜。
#LIKEで半角カナがマッチしないのも同根かもね。
SJISの仕組み知ってれば、半角かながまともに使える訳が無いって理解できるはずだけどね。 エラーログ見て理解できないようならアクセスでも使っとけ。 おまいにデータベースは無理。
就職して初の仕事でmysql使わされたのか、初歩的な質問増えてるなー
>>56 更新せずに実現する方法もある。
>>69 ログに答えが書いてある
80 :
237 :2006/06/02(金) 09:03:10 ID:58T5JMzZ
>>76 utf8にしてうまくいきました。
絵文字はあらかじめ_16進_のように退避させてから、変換してます。
最初からこうすれば良かったです。。
それにしてもEncodeモジュールインストしてなかったんですが、めちゃ便利ですね。
IBM外字に気を使わなくてよくなりました。
十十十十 → 十十\十十\ はどうもDBIの問題のようです。
81 :
56 :2006/06/02(金) 09:33:02 ID:???
>>66 そのなんとかのイメージも掴めないのです...Hintだけでもよいので
とりあえず、order by で取ってきて配列につっこんでそこから順位を
プログラム側で決めて、それをUPDATEするという所まではわかるのですが、
やっぱり100万件あったら100万回UPDATEするところは、変わらずのような...
>>67 なんかするというと?? 全部取り出す以外に方法はあるのでしょうか?
>>68 limitつけたら全部の順位がつけられない...
と思ったところよく考えたらページに表示する分だけLIMITかければいいんですね。
と思ったけど、でもテーブルに順位を保存する仕様(これが間違っているのかな)
なので結局UPDATEしなきゃなのでダメか...
>>81 あなたはとりあえず、100万回のクエリ発行でもいいから
効率より まずは動く物を作るべきですね。
それからチューニング作業を経て、テクニックを憶えてください。
>>81 おはよう。
`ranking を update して順位をつけよう`なんて発想は捨ててくれ。
順位専用のテーブルを作って、そこから表示する部分の順位とを取得する。
rank | rank_id
----+------
1 | aaa
2 | bbb
こんな風に。
そしたら
ranking テーブルには rank_id の詳細データが入ってるようだから
join してやればいい。
using(rank_id) でね。
ranking テーブルはリネームしたほうがいいね。順位テーブルと似てて嫌だから。
select ranking.*, rank
from (
select rank_id,rank from 順位 order by rank limit 0, 2) as rank
inner join ranking
using(rank_id)
みたいな感じかな
>>80 たぶんDBIが問題じゃない。
$dbh->quote( $str )
でエスケープして送信してるわけだが、そこでは例えば
十\十\十\十\
という感じでエスケープがなされる。にもかかわらず
十十\十十\
となるのは何らかの不具合があると思われる。
いい加減、DBIはmysqlに関係無いからスレ違い。 言語板プログラム板逝けや。
86 :
237 :2006/06/02(金) 11:59:50 ID:58T5JMzZ
>>85 そんなすれ違いに敏感にならんでも。
ひょっとしたらMySQL側の問題かも知れないでしょ。
俺はDBIの問題じゃないかと思ってるけど、そうじゃないって意見もあるわけで。
そもそもこのスレってMySQLに本当に特有の質問自体が少ないんだからさぁ。
87 :
NAME IS NULL :2006/06/02(金) 14:20:29 ID:l1QesHU7
ランク・リミット(0,2)が怪しい
88 :
56 :2006/06/02(金) 15:17:00 ID:???
>>82 とりあえず実装済みでバグがありながらも動作はしている状況です。
>>83 おはようございます。
親切にありがとうございます。
はじめはsub queryを利用していたのですが、MySQL 3.x環境で動かなかったので
元のサンプルでは、SELECT -> UPDATE と二度にわけてあります。
ちょっと内容理解するのに時間がかかりそうなので、とりあえずお礼まで。
Perl厨キモイ
90 :
NAME IS NULL :2006/06/02(金) 17:25:35 ID:IiSaL6i2
自治厨ウザイ これもまた真実
DBIなのかmysqlなのかの切り分けも出来ずに、このスレでグダグダ続けられてもねえ。 だからperl廚はレベルが低い。
93 :
NAME IS NULL :2006/06/02(金) 18:43:42 ID:2UWhJ5M+
sjis漢字2バイト目の '5C' 問題って、default-character-set=sjis で解決だろ。さようなら。もうここへ来るな。
JDBCではスレ違いという話は出なかったのに、 Perl-DBIでは拒否反応というのは、いかがなものだろうか。
96 :
237 :2006/06/02(金) 19:56:51 ID:58T5JMzZ
>>92 切り分けしてくれよ。どっちだ?
>>93 もちろんそんなレベルの話じゃない。想像だけで勝手に解決するな。
さっきも言ったがMySQL特有の質問なんて皆無だろ。ここ。
そういう狭い考え方をすればここの全レスがスレ違いみたいなもんだ。
単純なSQL文に関する質問も他に行けという事になる。
模範問答でもあればなんか示して欲しいもんだ。
俺はもう解決したからこの問題はどうでもいいんだが、何かに資するかもしれないと思ってレスしてるだけ。
スレ違いスレ違いと馬鹿の一つ覚えで叫んでる輩こそ無益だろ。
そんなにスレ消費が問題か?うざいなら虫籠にでも入れたらいい。
ま、俺はここにはもう来ねぇけど。ばいばい
JDBCにしろDBIにしろ文字化け関連のは検索すれば
そこらじゅうに情報が転がってるからうざい。
稀有な情報のは探してもないんだから。
>>42 とか
>>53 みたいに・・・
98 :
97 :2006/06/02(金) 20:59:41 ID:???
99 :
NAME IS NULL :2006/06/02(金) 21:09:45 ID:0f1YUdA4
バカをあんまり刺激しないようにしようよ。
荒れてるようですが… MySQL 4.1.16 OS:XP double(5,4) unsignedで取ってるwrate というカラムに以下のSQLを 行ったんですが、 update xxx set wrate=500.0000 where pkey= yyyy(プライマリキー) Rows matched:1 Changed: 0 Warnings:1 となっています。このWarningを見るにはどうしたら良いんでしょうか。
>>100 show warnings;
でいけるよ。
結論:やっぱりS-JISは使わないほうがいい。
>>101 アリガトです。見れました。んで、教えてください(^^;Warnigsには
code Message
1264 Data truncated; out of range for column 'wrate' at row 1
となっています。は、データが切り詰められてしまった?様なんですが、これはどうして?
桁は double(5,4) で取ってあるからOKだと思ってたんですけど。
104 :
sage :2006/06/03(土) 00:53:39 ID:JoDCjUKp
こんな感じだから日本語環境いつまでたってもよくならないんだろうね 自治厨うざい
まったくだ。プログラム言語は何時になったら 日本語の問題が解消するのやら...
>103 decimal(5,4) なら、「全体で5桁、うち小数点以下4桁」だぞ。 足りなくて当然だろう。
>>106 そういう事だったんんですか、、、、、、なるほど。有難うございます〜 m(__)m。
>>108 提示されたページにはそれ系のことは書かれていないよ?
ん? ちゃんと読んでないけど、バックスラッシュとSJIS、BIG5、GBKで問題がある (SQLインジェクションが起こる) みたいな記述があったからそれ系の話なんじゃないの? MySQLのサイトは文字が小さいからちゃんと読みたくないんよ……
バックスラッシュの処理を利用してSQLインジェクションを起こす事ができる バックスラッシュの変換処理(エスケープシーケンス処理)結果がおかしい 別の話に見えるが。 そもそも、問題がおきやすいSJISを使わない方が良い というなら間違ってないが。
問題がおきやすいWindowsを使わない方が良い というなら間違ってないが。
113 :
NAME IS NULL :2006/06/04(日) 04:20:33 ID:esQ+h+P5
id | name | value ----+-----+-----+ 1 | aaa | 100 2 | bbb | 420 2 | bbb | 310 2 | bbb | 270 1 | aaa | 111 1 | aaa | 150 1 | aaa | 220 3 | ccc | 120 1 | aaa | 200 という感じで。 複数テーブルではなく、1つのテーブル内の同じnameデータ(valueは、値が違います) にaaa=1、bbb=2、ccc=3というようにindexを付け足す事は可能でしょうか。 nameフィールドにindex(または、キー)を付ければいいのでしょうか。 お願いします
jdbcはutf前提だから、同じutf前提のmysqlときり分けがしやすい。 mysqlはutf以外受付なくすればいいよ。そうすれば文字コード問題は解決。 sjis使いたければ、金取ってしっかりケツ持ちしてくれるボラクル使えってことで。 中途半端にsjisサポートするから文字化けも避けられないし、perl廚にmysqlに対してぐだぐだ言われる隙を与えることになる。
>>113 > にaaa=1、bbb=2、ccc=3というようにindexを付け足す事は可能でしょうか。
id項がそれではないんですか? id に index付ければ完了です。
加えて、このテーブルは正規化すべきです。
sjisというかcp932が最悪
Perl厨というよりSJIS厨じゃね? PerlもUTF-8メインになりつつあるのにこれじゃあね。
118 :
NAME IS NULL :2006/06/04(日) 13:59:57 ID:esQ+h+P5
>>115 ありがとうございます。
説明不足で申し訳ありませんでした。
id | name | value
----+-----+-----+
1 | aaa | 100
2 | bbb | 420
2 | bbb | 310
2 | bbb | 270
1 | aaa | 111
1 | aaa | 150
1 | aaa | 220
3 | ccc | 120
1 | aaa | 200
で、IDに1つ1つ「aaaは、1」「bbbは、2」と作っていく事は出来るのですが。
auto_incrementで行いますと。
id | name | value
----+-----+-----+
1 | aaa | 100
2 | bbb | 420
3 | bbb | 310
4 | bbb | 270
5 | aaa | 111
6 | aaa | 150
7 | aaa | 220
8 | ccc | 120
9 | aaa | 200
と、なってしまいます。
「aaaは1、bbbは2、cccは3・・・・」という無数のnameに重複させず割りあてするのは、1つの
テーブルの場合は無理なのでしょうか。
aaaテーブル、bbbテーブルと作るしかないのでしょうか。
id | name ---+----- 1 | aaa 2 | bbb 3 | ccc というテーブルと、 id | value ---+--- 1 | 100 2 | 420 2 | 310 2 | 270 みたいなテーブルに分けるのが常道かと…
>>118 最初より多少は分かったけど、まだ説明が不足してます。
>…と作っていく事は出来るのですが。
は、そういうコードが作れるという意味ですか? それであれば
この時点で完成なのに、なぜわざわざauto_incrementを付けたのですか?
ユニーク番号を付けたいとすれば、id項目とは別の項目を追加して
auto_incrementつければ良いですし。
>>119 >>120 >>121 お返事ありがとうございます。正規化ありがとうございます。
うまくできるようになりました。
>auto_incrementを付けたのですか?
わたしの勘違いミスでした、申し訳ありません。
昨日、MySQLダウソしたんですが、コマンドプロンプトでいじってると入力ミスしたときのピープー音が半端なく五月蝿いです 皆さんこれは仕方ないことなんでしょうか? 設定で変えられたりします? もしできたら教えてくださいませ
beep音自体を無効にする コンパネからシステム、デバイスマネージャ ↓ 表示->非表示デバイスの表示 (普通では表示されないため) ↓ プラグアンドプレイではないドライバ (まぁ、そういうことだ) ↓ Beep このデバイスを使わない (これっきゃねーな) ↓ ウマー
>>123 が本当に教えてもらうべきなのは
検索方法だと思う・・・・
>>123 , イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 〜 没年不明 )
>>127 しばいたろか!!
ググるのはパンピーの仕事だ!!
129 :
NAME IS NULL :2006/06/04(日) 21:06:18 ID:7hrqK74/
誕生日を入れているカラムから年齢を求める自己関数って作れます? 今はアプリ側でやってるんですが
131 :
123 :2006/06/04(日) 22:31:07 ID:???
すみません、質問させてください。
MySQLの起動ができずに悩んでいます。
環境は、OS:Fedora core 5 ppc MySQL:4.0.25 (Vineから拾ってきたrpm)です。
入れた rpm は、devel client server shared です。
rpmインストール前に、バイナリパッケージからインストールしようとしたのですが、
どうしても./configure の途中でコケてしまうので、Vineのppc対応rpmを拾って
インストールしたのですが、起動できなくて悩んでいます。
エラー文は以下の通りです。
/var/lib/mysql/hogehoge.err の中身
060604 11:28:12 mysqld started
Fatal error: Can't change to run as user 'mysql'. Please check that the user exists!
060604 11:28:12 Aborting
060604 11:28:12 /usr/sbin/mysqld: Shutdown Complete
060604 11:28:12 mysqld ended
mysql ユーザーがいないと言われても、rpm からインストールしたので自動作成されている
はずですし、実際 useradd mysql とやると既に存在しますと怒られます。
mysql_install_db とやって初期化しようとすると以下の様なエラーがでます。
Neither host 'hogehoge' nor 'localhost' could not be looked up with
/usr/bin/resolveip
Please configure the 'hostname' command to return a correct hostname.
If you want to solve this at a later stage, restart this script with
the --force option
ググってみると、
ttp://nekomimists.ddo.jp/~tom/mysql_install.html ttp://oshiete1.goo.ne.jp/kotaeru.php3?q=1261081 ttp://www.atmora.jp/user/manual/vps/st/vps_ug_1301.html と、同じような現象だったので同じように hostname したり、/etc/hosts に
127.0.0.1 hogehoge localhost.localdomain localhost
としてみたり、やったのですがダメでした。
対応として、まず何をすればよいでしょうか?
アドバイスいただける方、宜しくお願い致します。
※ちなみに、Fedora 標準の MySQL-5.0.18-2.1 でも試して見ましたが、同じエラーで起動できませんでした。
mysql っていうユーザ居るよね?
すまん、読み飛ばしてた。 居るのね。
myuserとmyadminで別けたほうがいいよ。 orauserとoraadmin見たいなノリで。
mysql_install_db --user=mysql --force option ってやるとどうなるの?
138 :
132 :2006/06/05(月) 00:33:39 ID:???
>>136 有り難う御座います。
え〜っと・・・、具体的には何をしたらいいのでしょう・・・?
ユーザーを myuser で、グループをmyadmin にするということでしょうか?
>>137 有り難う御座います。
さっそくやってみました。
Fatal error: Can't change to run as user 'mysql'. Please check that the user exists!
060604 14:46:38 Aborting
060604 14:46:38 /usr/sbin/mysqld: Shutdown Complete
Installation of grant tables failed!
Examine the logs in /var/lib/mysql for more information.
You can also try to start the mysqld daemon with:
/usr/sbin/mysqld --skip-grant &
You can use the command line tool
/usr/bin/mysql to connect to the mysql
database and look at the grant tables:
shell> /usr/bin/mysql -u root mysql
mysql> show tables
Try 'mysqld --help' if you have problems with paths. Using --log
gives you a log in /var/lib/mysql that may be helpful.
The latest information about MySQL is available on the web at
http://www.mysql.com Please consult the MySQL manual section: 'Problems running mysql_install_db',
and the manual section that describes problems on your OS.
Another information source is the MySQL email archive.
Please check all of the above before mailing us!
And if you do mail us, you MUST use the /usr/bin/mysqlbug script!
相変わらず『mysql ユーザーがいまへんがな〜』と言われるだけです。
しかも、hogehoge.err の中に何も書いていってくれないという不親切ぷり・・・。
もうちょっと色々と試行錯誤してみます。
>>138 変な設定の/etc/my.cnfが残ってるってことはないかな?
最近よく見かける偉人 ググレカス [ Gugurecus ] は、 何を成し遂げた人物なんですか?
釣りだろうけど、わろた。
142 :
132 :2006/06/05(月) 09:14:51 ID:???
>>139 my.cnf がないことを確認してインストールしたのですが、やはりダメでした。
試しにと思って、my.cnf を作った状態でインストールを試みたのですが、結果は同じでした。
ん〜、もういっかいバイナリパッケージからのインストールをやってみようかな・・・
configureオプションでも晒したら?
144 :
132 :2006/06/05(月) 10:52:51 ID:???
>>143 バイナリパッケージからインストールしようとした時のオプションは、こんな感じです。
./configure \
--with-charset=ujis \
--with-extra-charsets=all \
--with-mysqld-user=mysql \
--prefix=/usr/local/mysql \
--with-unix-socket-path=/var/run/mysql/mysql.sock \
--without-debug \
--without-bench
で、肝心のエラーなのですが、現在問題の切り分け・原因箇所の特定の為に
yum upgrade 前 の MySQL 5
yum upgrade 前 の MySQL 4.0
と
yum upgrade 後 の MySQL 5
yum upgrade 後 の MySQL 4.0
の検証比較、をしようとOSごと再インストール中です。
とりあえず rpm でこれらの検証をして、それでもダメならまたバイナリパッケージからの
インストールに手を出そうかと思います。
※Fedora core 5 ppc じゃなくて、Vine 3.1 ppc に変えてみようかとも検討中だったり・・・ 軽くなりそうだし・・・
145 :
132 :2006/06/05(月) 14:49:47 ID:???
経過報告です。 とりあえず、簡潔に。 yum upgrade 前 の MySQL 5 動いた yum upgrade 前 の MySQL 4.0 ダメ yum upgrade 後 の MySQL 5 動いた (前は動かなかったのに・・・) yum upgrade 後 の MySQL 4.0 ダメ でした。 5 の方の rpm インストール時に、perl-DBD-MySQLを依存性で一緒に入れさせられた(libmysqlclient.soの影響)ので、 これかなと思い、4.0 の方にも必要かとVine から perl-DBD-MySQL を拾ってきて入れたのですが、やはり動いてくれませんでした。 もう、バイナリパッケージからインストールで頑張ります。
PPC版か。 俺もUbuntuのPPC版でいろいろやってみたけど、同じ症状でどうしても動かなかった。 結局、MacOSXに戻してそれっきり・・・ 動いたらやり方を教えて!
148 :
132 :2006/06/05(月) 16:31:49 ID:???
>>146 残念ながら、未だ動くに至っておりません。
>>144 で書いた ./configure でやったのですが、以下の様なエラーが出てしまい止まります。
NOTE: This is a MySQL binary distribution. It's ready to run, you don't
need to configure it!
To help you a bit, I am now going to create the needed MySQL databases
and start the MySQL server for you. If you run into any trouble, please
consult the MySQL manual, that you can find in the Docs directory.
Preparing db table
Preparing host table
Preparing user table
Preparing func table
Preparing tables_priv table
Preparing columns_priv table
Installing all prepared tables
060605 6:58:45 ./bin/mysqld: Shutdown Complete
To start mysqld at boot time you have to copy support-files/mysql.server
to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
./bin/mysqladmin -u root password 'new-password'
./bin/mysqladmin -u root -h chapa-penguin-i password 'new-password'
See the manual for more instructions.
You can start the MySQL daemon with:
cd . ; ./bin/mysqld_safe &
You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:
cd sql-bench ; perl run-all-tests
Please report any problems with the ./bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com Support MySQL by buying support/licenses at
http://shop.mysql.com Starting the mysqld server. You can test that it is up and running
with the command:
./bin/mysqladmin version
[root@chapa-penguin-i mysql-standard-4.0.27-unknown-linux-gnu-powerpc-glibc23]# Starting mysqld daemon with databases from /usr/local/src/mysql-standard-4.0.27-unknown-linux-gnu-powerpc-glibc23/data
STOPPING server from pid file /usr/local/src/mysql-standard-4.0.27-unknown-linux-gnu-powerpc-glibc23/data/chapa-penguin-i.pid
060605 06:58:45 mysqld ended
もうちょっと色々やってみます。
>>147 いや〜・・・ Mac は Mac なんですけど、G3世代の iBook なんですよ。
750CXe の 400MHz にそんな高級なもんを入れるのは酷かと・・・w
増設しているメモリをはずしても症状は同じですか?
150 :
132 :2006/06/05(月) 18:02:10 ID:???
>>140 , イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 〜 没年不明 )
>>150 NPTLでも動くよ
っていうかNPTLのほうが速いよ
速いなんてもんじゃないよ。 全くの別物。
154 :
132 :2006/06/05(月) 23:10:04 ID:???
なんかfedraスレのネタじゃね? MySQLに罪は無いじゃん。 マカお断り。
いや、Fedoraとは関係ない。 PPC版Linux特有。
157 :
132 :2006/06/06(火) 00:00:14 ID:???
>>155 すみません、確かにFedoraが元からNPTLか?なんて、Fedoraネタですね。
NPTL環境については、向こうで聞いてきます。
ただ、PPC版Linuxは、どうもMySQL入れるにはなかなか一苦労するみたいなので
その辺ご理解ください。
ちなみに私はマカじゃないですよw このiBookもMacOS立ち上げる前にOS入れ替えちゃいましたしw
158 :
140 :2006/06/06(火) 01:44:04 ID:???
判明しました。 ■ググレカス [ Gugurecus ]: アプレカスの乱の中、「キャピ リンキック デ ググレ」(無知こそが最大の敵である) という言葉を残した。
マカの空気を読まない傍若無人ぶりと変わらんよ。 このスレのほとんどはインテル使いで全く話題に関係ない。 PPCリナクススレにでも逝けよクズ。
PPCでもItaniumでもSparkでもこのスレでおk
インストール後の話題限定な。 インストールはそれぞれのOS板逝け。
データベースごとに別々のディレクトリに保存したいのですが可能ですか?
163 :
132 :2006/06/07(水) 00:42:07 ID:???
>>152 >>153 PPC版Linux でも NPTL環境のMySQLを導入できました。
Fedora 4 に戻して LinuxThreads 駆動のMySQLも体感したのですが、
NPTL 環境の方が断然速いですね。
体感速度でも 2 〜 3 割速くなった気がします。
有り難う御座いました。
>>160 有り難う御座います。
でも、なんかIntel以外の風当たりが寂しいのでこの辺でレスつけるのやめとこうと思います。
色々アドバイスいただいた方々、有り難う御座いました。
すみません、適切なSQLが分からずに悩んでおります。 下記のようなテーブルから、「idが●●で、他のカラムの値が1のカラム名を抽出する」という作業をやりたいのですが、 どのようなSQLを書けばよいのでしょうか・・・。下記の場合、id=1と指定したとき、「namae」というカラム名を得たいです。 id | namae | email ---+-------+------- 1 | 1 | 0 2 | 0 | 1 3 | 1 | 0 4 | 1 | 0
165 :
164 :2006/06/07(水) 03:10:28 ID:???
補足です。 分かりにくい説明だったかもしれませんが、 上記の例の場合、たとえばid=2なら、「email」というカラム名を 取得するのが目的です。
166 :
NAME IS NULL :2006/06/07(水) 10:12:02 ID:yGMe4PSI
>>164 根本的にテーブル設計がおかしい に3000ペリカ
漏れも初心者っぽい質問してみる デリ嬢テーブル 最終利用者テーブル ID | 参照先 利用ID|最終利用者情報 10 | 000001 000000|東京都千代田区1-1 11 | 000002 000001|東京都千代田区永田町1丁目 12 | 000002 000002|東京都港区六本木6−10−1 六本木ヒルズ森タワー のようなテーブルがあったとして、利用済になった000000の行をSQL一発で削除する方法ある? 無いなら、被参照カウンタとかアプリ処理とかで解決するけど。
169 :
NAME IS NULL :2006/06/07(水) 10:49:37 ID:fLygDYNy
グランが応用かよw 利用IDが「0」からってなんだよ
170 :
NAME IS NULL :2006/06/07(水) 11:17:29 ID:Lyvn5c/o
うん。設計がおかしいね。sql文だけじゃ無理だろ。 id data 1 namae 2 email 3 namae こんな感じのテーブルにすれば?
171 :
164 :2006/06/07(水) 11:41:33 ID:???
>>170 実はカラムは「namae」「email」以外にももっといっぱいあって、全部で10個くらいあるのです。
そのそれぞれに入る数字も0や1だけでなく、いろんな数字(一桁)が入ります。
このとき、たとえば数字の「1」が入ってるカラムだけ抽出、とか、
数字の「9」が入ってるカラムだけ抽出、とかやりたいのです。
やっぱりSQL一発じゃ無理ですかね。PHPと絡めてやってみるしかないでしょうか。
テーブル設計自体はおかしくないと思います(正規化などしたうえでのテーブル状態です)。
むしろテーブルの利用法がおかしいというか、変わってるというか。。。
172 :
164 :2006/06/07(水) 11:46:37 ID:???
ちなみにこのテーブルの利用法と言いますのは、 前述のテーブル(テーブルA)とは別のテーブル(テーブルB)に実データ(名前やメアドなど)が入ってるテーブルがありまして、 そちらを参照するときに、前述のテーブル(一桁の数字が入っているテーブル)を参照して、 スクリプトで表示するか否かを決定したいのです。 つまり、テーブルAから名前などのデータを抽出する際に、テーブルBの同名カラムを参照して、 値が「0」ならHTMLに出力しない、「1」ならHTMLに出力する・・・という感じで、 名簿リストを表示するスクリプトを作っております。 分かりづらい説明で申し訳ありません。
>>171 そういったのを含めて、現在のテーブル設計は好ましくないですよ。
でも、とりあえずそれで行ってみるよろし。SQLでは無理なので
プログラムで処理ね。
174 :
164 :2006/06/07(水) 13:12:17 ID:???
>>173 ありがとうございます。やはりSQLだけでは無理ですか。。。
このような処理を行う場合、例えばどういったテーブル設計が好ましいのでしょうか?
すなわち、実データのテーブルと、その実データを表示するか否かの
コンフィグ設定テーブル(?)とを分ける場合の設計です。
>>174 =164
なんか最初の質問から意味が変わってるぞ。
>>164 ではメタデータ(列名)を取得しようとしてたのに、
>実データのテーブルと、その実データを表示するか否かの
>コンフィグ設定テーブル(?)とを分ける場合
これは普通にJOINするような話じゃん。
>>174 私ならそういった処理をする時に最も良い形として、こうします
<いま>
id | namae | email | address | phone
--+-------+-------+---------+-------
1 | 1 | 0 | 9 | 0
<変更後>
id | parm | value
--+------+-------
1 | namae | 1
1 | email | 0
1 | address | 9
1 | phone | 0
あと、レコードが無ければ値がゼロ、という扱いでOKならよりレコード数も押さえられます。
id | parm | value
--+------+-------
1 | namae | 1
1 | address | 9
>>176 俺は
>>164 ではないが、その設計だとDB使用容量は抑えることができるだろうけど、
10ユーザ→10レコード のように、色んなユーザプロフィールをフィールドで持つほうが
SQL文とかプログラム側の処理も楽な感じがするんだよね。
冗長なコードだから処理速度が遅いってことはないけどね
(SQLの回数が多くても、全体処理が最速ならそれが最善だし)
178 :
164 :2006/06/07(水) 15:23:28 ID:???
>>176 なるほど! 私は「一つのID(一人)には一つのレコード」…と頭が凝り固まっておりましたが、
そのようにする手段もあったんですね。
その場合、たとえば画面表示OK設定のカラムのみのデータリスト(名簿表)作る場合、
SELECT `param` FROM config_table WHERE `id`=** AND `value`=1 で得たparam名(仮に$rec_paramとします)を元に、
SELECT {$rec_param} FROM data_table WHERE `id`=** で、やりたいことが実現できそうです。
私の説明が下手でしたが、良い例として、mixiのプロフィール表示を思い浮かべてもらえると
分かりやすいかもしれません。mixiのプロフィールのように、場合によって表示するかしないか(友人のみに表示するとかもあり)、
という設定が出来るようにしたいのです。私がいま作っているのはWeb上の同窓会名簿です。
179 :
NAME IS NULL :2006/06/07(水) 15:34:25 ID:HRUFSYOs
>>176 性器化しる!
id|parm_id| value
----+-------+-------
1| 1 | 1
2| 2 | 0
3| 3 | 9
4| 4 | 0
parm_id| parm
-------+---------
1| namae
2| email
3| address
4| phone
180 :
176 :2006/06/07(水) 15:49:28 ID:???
>>179 それ書こうかとも思ったが、parmテーブルの項目がidと名前だけだと
典型的な設計者の自己満正規化になるので、(意味が薄いから)やめた方がよい
181 :
164 :2006/06/07(水) 16:03:51 ID:???
>>180 私も正規化を考えたのですが、
「典型的な設計者の自己満正規化」とはどういう意味なのでしょうか??
実務経験などが無いので、想像がつきません。
182 :
177 :2006/06/07(水) 16:16:05 ID:???
>>164 本来正規化とは、データの無駄な重複などをなくしDB使用量を抑えたり
レコード数が増大すると思われるテーブルで速度が必要なときに
可変長のデータが入るフィールドを別テーブルにして検索速度をあげたりするのが目的
でも過剰にやりすぎると、SQLが複雑になりマンドクサくなったり遅くなったりする罠
183 :
176 :2006/06/07(水) 16:23:25 ID:???
殆どの場合は第三正規型まで正規化するのが良いのですが
>>182 さんの言うようにパフォーマンスの問題等(問い合わせ数を減らすために)で
敢えて第二正規形で以降の正規化を行わない、という選択をする事があります。
いわゆるサジ加減というやつなので、うまい説明が出来ません。(´・ω・`)
「今まで出てきた情報を基にするなら私なら」そうすると言っただけなので、
現状を一番よく理解してる
>>164 さんが思うようにすれば良いと思いますよ。
184 :
164 :2006/06/07(水) 16:40:10 ID:???
>>182 さん、
>>183 さん
ありがとうございます。
では今回のデータ構成程度なら、表示設定についてのテーブルの正規化までは必要なさそうですね。
ところで
>>178 にてmixiのプロフィールの例を挙げましたが、
あれも今回私がやっているような手法にて、表示設定を保存しているのでしょうか?
この場合は、恐らく
>>179 までの性器香は必須だと思いますよ。
検索アプローチの可能性として、 addressが定義されていない人を見つける。
とかいう場合パフォーマンスが全然違ってきますからね。
>>185 その場合のSQLとかってどうなる?一回でOK?
簡単なSELECTしか分からないので教えてください m(_ _)m
188 :
179 :2006/06/07(水) 20:09:01 ID:HRUFSYOs
SQL的には、そこまで性器化するのがよろし。 2テーブルにまたがることでパフォーマンスが気になりかつ、それほどの量ではなければ、 "namae","email" ... を別テーブルにもたないでプログラムの配列に入れておいて 取り出すとかする。早いし。プログラムでマスタ管理できるし。 しかし、176 の「最も良い例」は最も良い例ではあらず。しかも初心者に教えてるんだろ。
>>184 ん〜〜〜、mixiも設定を保持するテーブルとか作ってるんじゃないのかねぇ?
あるいはOpnePNEのソースでも覗いてみるとか。
OpnePNEじゃなくてOpenPNEだった タイプミスorz
>>182 正規化する理由はそれだけじゃないけどね。
整合性のほうが主目的で、パフォーマンスは副次的なものでしょ。
煮詰めると 自然になるよ 正規化に
あえて正規化しないのも有り
195 :
NAME IS NULL :2006/06/08(木) 12:28:04 ID:rq6cVgMB
4.1.20 で sennaってみた。すげーし。 3桁ぐらいパフォーマンスが上がった。 ビバ razil
sennaって何?? razilってナニ??
197 :
NAME IS NULL :2006/06/08(木) 20:03:17 ID:rq6cVgMB
198 :
NAME IS NULL :2006/06/08(木) 21:11:59 ID:WgetNrgV
>>196 ::|─- 、ミヽ
::|j ii / Λ
::| ̄`ヾ、ノイ{
::| ゙、ノi!
::| ,\ Yソ
::| ;:こラ j{
::| i ー ' ソ
::| j ,′
::|<‐-イ
::|‐ /
::| ,/
::|'r‐'´
4.1.12でテーブルのフィールドもujis_japanese_ciで作って、 phpMyAdminよりEUCのsqlファイルをアップロードするのにUTF-8に変換される。 EUCのphpファイルで直接EUCのSQLを送ると、文字が化けて消えて空になる。 解決法ってあります?
全部utf8に統一。データ失いたく無いならなおさら。
203 :
NAME IS NULL :2006/06/09(金) 02:35:20 ID:SmsrEn68
質問させてください。
環境:WinXP/PHP5/mySQL4.0
現象的には、以下とほぼ同様な状態です。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=28391&forum=26&7 1.データベースは確かにujisで構築できているらしい。
2.しかしコマンドラインから見ると文字化けしている。
もしかして
『ujisで構築したデータベースはコマンドラインから文字化けせずに読むことは不可能』
なのでしょうか?
そうでなければ、文字化けの回避方法を教えてください。
因みに質問者と同じようにcreate database aaa set character set ujisしてみたところ
>mysql> create database aaa character set ujis;
>ERROR 1064: Something is wrong in your syntax : 'character set ujis' ノユカ・ : 1
>ケヤフワ
とエラーが返ってきます。
>>203 DOS窓はSJISとUTF8でしかお話出来ないと思ったが、、、
205 :
NAME IS NULL :2006/06/09(金) 09:05:10 ID:wOeRh0uc
質問です というか、ご意見ください MYSQLにて、項目名は日本語にするかどうか 例えば メニュー区分という項目を付けたい場合 1.メニュー区分 2.MENUKUBUN 3.MENUKBN 4.MENUCLASSIFICATION 他にも色々あると思いますが、一般的な 命名方法はどんな感じなのでしょうか? 某MLで数年前に激しい議論があったようなんでちょっと ご意見伺いたいと思いました
おまいらujis以外のテストぐらいして自分で原因の切り分けぐらい出来ないの? トラブルに巻き込まれたくなければutf使っとけ。無変換だからトラブル無いよ。
207 :
203 :2006/06/09(金) 10:59:23 ID:SmsrEn68
おはようございます。レスありがとうございます。
>>204 ,206
おっしゃるとおりです。
確かにUTF8なら問題は無いのですが、4.1以前なので使用できません。
使おうと思っているレンタルサーバー(さくら)が4.0.2xだからなのですが、
これはもうサーバーの変更を考慮に入れるべきなんでしょうか。
208 :
203 :2006/06/09(金) 11:21:16 ID:SmsrEn68
203追記です。 ということは、やはり 『ujisで構築したデータベースはコマンドラインから文字化けせずに読むことは不可能』 ということでFAという事ですね。
>>208 コマンドラインで使うツールに、EUC-JP→SJISフィルタ噛ますか
そういった機能を持つもの使えば使える。
ところでWinのプロンプト窓の話をしてるのに、
何でそこでさくらの鯖が絡んでくるの?
さくらの鯖を使うのでMySQLを合わせたいのなら、
管理のやり方やツールもさくらの鯖のを操作するものと合わせれば良いのでは。
phpMyAdminを使うなら、ローカルにもPHPとWebサーバを設ける。SSHならローカルにもsshdを。
# それとも、さくらって外部から直接MySQLを弄れるようにPort開けてるのかな
>>208 [mysql] を sjis にして [mysqld] とか残りを ujis にすればいいじゃないかい?
4.1.16-ntだけど、DBの文字コードがなんだろうが化けないよ。
オイラの環境はね。
>>208 210だが、SHOW VARIABLES like 'character%'; で character_set_client が
sjisになっていれば化けないぞ。my.iniをいじれ。オレっていいやつだな。
212 :
208 :2006/06/09(金) 13:12:26 ID:???
>>209 なるほど、フィルターツールですか。ちょっと探してみます。
さくらの環境と同じ環境をローカルにも構築すれば言い、というのはやまやまなんですが、
あそこはOSがFreeBSDなのですが、開発の簡便性のためにWindowsで作業をしたいと思っています。
>ポート
先ほど、ODBC経由で接続できないと知って、ちょっと本気で他のサーバを探してみようかと思いました。
>>211 ,212
>[mysql] を sjis にして [mysqld] とか残りを ujis にすればいいじゃないかい?
4.0.26だと、その設定にしても効果がありませんでした。
>SHOW VARIABLES like 'character%'; で character_set_client が
すいません、こちらも4.0.26だとshow variables〜でも
character_set (ujis)
character_sets
しか現れず、my.iniに強引にcharacter_set_client=sjisとしても
mysql起動時に
mysql:unknown variable 'character_set_client=sjis'
とエラーになってしまいます…
213 :
210 :2006/06/09(金) 13:29:49 ID:???
214 :
208 :2006/06/09(金) 13:38:41 ID:???
>>213 さくらのSQLが4.0.2xなんですよ。
他の連鯖探してきますね…。
selectの結果をcsvで標準出力に出力したいんだけど どうしたらいい?
>>215 mysql --batch --execute="select * from database.table"
tsv→csvは適当なフィルタを噛ます。
>>212 >先ほど、ODBC経由で接続できない
安い共有サーバのサービスなら使わせないのが普通。
ローカルもリモートもhttpd+PHPのphpmyadminで管理すれば
良いと思うのだが、コマンドラインに拘る理由は?
GUIアプリだって、任意のクエリ実行は可能。
結論:やっぱりWindowsは使わないほうがいい。
開発は Widnowsでも許してやれ
>>214 Windows Server で SQL Serverを運営している連鯖を探しなされ。
accessの代わりにタダで使えると思って入れてみた。 考えが甘かった。_| ̄| ....○ ワケ ワカ ラン
heartbeatとldirectordでフェイルセーフと負荷分散したいんですが、 良い案ありますかね? レプリケーションは一方向でマスターが切れたら一苦労だし リングマスタしても負荷はかわらないし。
>>223 accessの方がよっぽどワケ ワカ ラン
accessって画面&帳票作成ツールだっけ?
>>226 おじさま達の俺はPCできるんだぞって自慢するツールじゃね?
access(笑)
>>226 こんなんで売り物になるんだから、
シェアの力はすごいなw
今更だけどQueryBrowserいいね 早く気付けば良かった
mysqlにエクセルで集計したデータをいれたいんですが 簡単な方法は何かありますか?
>>232 おまえにとって簡単な方法はないと思われる。
>>232 CSVで出して、DBに流し込むスクリプト組んだらいいだけじゃないのか?
>>232 あるよ。
冗談でもなく234の言うものも、その方法のひとつ。
OracleでいうところのSQLLoaderみたいな物があるかどうかって事かな?
>>239 美勇伝、美勇伝、美勇・・・伝、伝、伝伝伝!LET'S GO!
ODBC出接続してMySQLへInsertというVBAをしこしこ作りますた。 はぁしんど。
SQLインジェクションできまくりなのか。
>>241 CSVというかタブ区切りにして、
load data infile "filename" into table tablename;
でサクっと。
あるデータ(例えば試験の点数)の上位○件を抽出する方法はありますか?
>>246 誘導有難うございます。
ログから目的の方法を見つけ出す事が出来ました。
バイナリデータつっこんでる人いる? バイナリデータのカラムはignorするクエリってあるのかなぁ?
249 :
223 :2006/06/11(日) 20:49:16 ID:???
win98にmysql+apache+perl入れてやっと動いたよ。(ノД`) オジサン ウレシ… mysqlを知ってから3日で動かせたんだけど俺はPCできるんだぞって自慢出来る?
>>249 accessと比べたら環境構築の手間は
段違いにメンドクサイわな
でもなぜPerl?phpじゃだめなの?
Perlで出来た既製の何かを動かそうとしてるかなんかでしょ。 みんながみんな何かを自作するためにA-M-P環境を構築するとは限らない。
252 :
233 :2006/06/11(日) 21:23:54 ID:???
>>252 Perlは時期的に早かったのが大きいな。cgiに使える適当なスクリプト言語が今のように多くは無かった。
sed awkに毛が生えたようなツールでここまでやるのかと当時は感心したり呆れたり。
正規表現を組み込んだ言語がココまで強力なのかぁと世に知らしめたのは大きかったが、
さすがにもうレガシー sed awk と同列の扱いに戻してあげよう。
254 :
233 :2006/06/11(日) 21:45:27 ID:???
PHPのほうが早くて軽いそうだからスキルがあればそのほうがいいんだけどねぇ。 入門の身としてはPerlのドキュメントの多さと安定性がありがたかったり。 PHPの勉強はPerlをある程度マスター出来たらの話かな。
かつては俺もPerl使いだったが、Perlでできることって もうすでにphpで十二分にカバーできるんだよね なので俺はPerlはもう不要というスタンスです スレ違いですね、すみませんでした
256 :
NAME IS NULL :2006/06/11(日) 23:23:16 ID:eUBYBaQq
オートインクリメントのIDを主キーにしたテーブルにINSERTしたと同時にその IDを取得する方法ってないかな?その直後にSELECTで最大値のID取得って 方法だとINSERTとSELECTのわずかな合間に別のトランザクションがINSERTかける危険性があって 不安なんだが・・・ 言語はPHPです。
>>256 トランザクションの意味をもう一度しっかり調べることをお勧めする
>>256 Cならmysql_insert_id()がある。PHPは知らん。
専用関数がないのなら、SELECT LAST_INSERT_ID()
awkってレガシーなのかな awk '{print $1}'とかよく使ってるけど・・・・ そんな漏れもPHP派 PHPもわかりにくくかけばわかりにくくなるけど、perlの難解度に比べたらマシだと思ってる。
WASのチョイスは開発者のスキルや好みもあるけど基本は案件によるもの。 でオイラの好みはやっぱ java
>256-257 そもそもトランザクションとかせんでも >258のは接続毎のを返してくれるんでなかったっけ。
>>261 そう、なので、258の SELECT LAST_INSERT_ID() で問題なし。
263 :
NAME IS NULL :2006/06/13(火) 08:44:29 ID:jMJnFNSg
すいません、phpMyAdminが使えません。 WinXP SP2 Apache v2.0.58 PHP 5.1.4 mySQL 4.0.26 phpMyAdmin 2.6.3pl データベースやテーブルの参照は出来るのですが、 Select文を発行してデータを見ようとすると、Apacheが終了してしまいます。 (データが一つもない場合は通常にその旨が表示されます) コンフィグの設定はWebを参考にやってみたのですが…。 何が原因なのでしょうか。
>>263 まずはApacheが落ちる原因を究明せんことには。
サーバモジュールのPHPを使ってるんだと思うので
PHPの方でApacheの足を引っ張って落ちたんだと思うけど。
Apache/PHPのログに何か出てないか?
(で、MySQLに関係ないのでスレ違い)
∧_∧ ∧∧ ( ´∀`). (゚Д゚,,) ( ) ( ) (( 人 Y | | )) し(__,) し'ヽ) ∧∧ ∧_∧ . (゚Д゚,( ´∀`) ( ( ) | (( 人 Y し'ヽし(__,) ∧∧ ∧_∧ . (゚Д゚,,) ( ´∀`) ( ) ( ) | | )) (( 人 Y し'ヽ) し(__,) ,.'´ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄`ヽ ! す れ 違 い ! ヽ、 ノ  ̄`V´ ̄ ̄ ̄ ̄`V´ ̄ . ∧∧ ∧_∧ (,゚Д゚,) ( ´∀` ) . ( c0m ( c0m 〈 fヽヽ / /ゝ 〉 U J (__)、_,)
Aテーブル(IDと名前を格納している) ID | name ------------ aa | Aさん bb | Bさん Bテーブル(IDとアクションを起した日付データを格納している) ID | date ------------ aa | 2006-06-01 bb | 2006-06-03 aa | 2006-06-05 この2つのテーブルをJOINTし、Bテーブルのdateカラムをソートして名前を 表示させたいのですが、Bテーブルに複数のデータが入っていると、名前も 同じ数だけ表示されてしまいます。 これを… SELECT A.ID,A.name,B.date FROM A INNER JOIN B ON A.ID=B.ID ORDER BY B.date desc A.ID | A.name | B.date ----------------------- aa | Aさん | 2006-06-05 bb | Bさん | 2006-06-03 aa | Aさん | 2006-06-01 ↓ A.ID | A.name | B.date ----------------------- aa | Aさん | 2006-06-05 bb | Bさん | 2006-06-03 こうしたい。 MySQL 3.23.58です。よろしくお願いします。
>>266 group by B.ID じゃ解決できないから悩んでるんだろうな。
268 :
266 :2006/06/13(火) 13:07:24 ID:???
>>267 group by B.ID は試してみましたが、order by B.date が効かないんですよね…。
>>266-268 JOINより先にBから最新日付(とID)を取ってきて、これとAをJOINすればいいと思うんだけど、
MySQLのバージョンが古いらしいので、動くか確認できない
270 :
266 :2006/06/13(火) 13:21:23 ID:???
>>269 サブクエリが使えれば…。
やっぱり一時テーブルみたいなのを作るか、アプリケーション側でなんとかするしかないですか。
ありがとうございました。
ライセンスについて質問。 GPLを選択した場合、ソースを公開しないといけないようですが、 ソースとは何処までを指すのでしょうか。 例えばApache + cgi + MySQL の開発をし、MySQL自体を改変しない場合、 cgi部分は 公開しなくてもいいのでしょうか。
272 :
NAME IS NULL :2006/06/13(火) 14:24:17 ID:7VkFvBIO
age
>>266 に良く似た質問があったのでお聞きします。
環境:MySQL 3.23.58(レンタル鯖プリインスコ)
Aテーブル(IDと名前とその他10フィールドくらい)
id | name
------------------------
01 | Aさん
02 | Bさん
03 | Cさん
Bテーブル(IDと日付とアクション)
id | date | data
------------------------
01 | 2006-06-01 | 1
02 | 2006-06-01 | 3
01 | 2006-06-02 | 2
2006-06-01 データ ↓のような形で出力したいのですが
id | name | data (▼ソート)
------------------------
02 | Bさん | 3
01 | Aさん | 1
03 | Cさん | 0
色々やってみたのですが、Bテーブルにデータがない場合
INNER JOINだとCさんが表示されません。
Aテーブルに登録されているユーザーは全て表示させたいです。
LEFT JOINだと重複して物凄い件数がHITしてしまいました。
何か良い方法や、SQL文の御教示お願い致します。
SELECT A.id, name, data FROM A INNER JOIN B ON A.id=B.id WHERE date = $date ORDER BY B.data desc
>>274 これもBを先に絞り込めば簡単(&高速)なんだけどね。副問い合わせできないんだよね?
276 :
274 :2006/06/13(火) 18:37:20 ID:e1vImS2l
>>275 さん
レンタル鯖でPleskを使用しているのでMySQLのバージョンUPが行えません。
(正確にはバージョンUP不可能ではないが)
サブクエリを使用する方法なら分かってきたのですが、バージョンが古いので・・・
現在は下のように強引にやってますが、この方法だとTHEADの項目をクリックして
ソートできるように折角組んだものが使えなくなってしまいます。
ここはPHPにも精通してる方が多いと思いますので、何かヒントありましたらお願い致します。
$sql = "SELECT A.id, name, data FROM B LEFT JOIN A ON A.id=B.id
WHERE date = 20060601 ORDER BY B.data desc, A.id";
$res = mysql_query($sql);
while ( $row = mysql_fetch_array($res) ) {
$u_id[] = $row[0];
$tbody .= "<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td></tr>";
}
// 表示済みユーザーを排除
$sql = "SELECT id, name FROM A WHERE id NOT IN (".join(',',$u_id).")";
$res = mysql_query($sql);
while ( $row = mysql_fetch_array($res) ) {
$tbody .= "<tr><td>$row[0]</td><td>$row[1]</td><td>0</td></tr>";
}
277 :
NAME IS NULL :2006/06/14(水) 00:08:17 ID:SbMDiNi8
事情があって、mysql4.0.18のDOS版(Setup.exeがついてる方)を探しています。 本家サイトには落ちていないので、どこかで配布しているサイトって ないでしょうか。よろしくお願いします。
>>277 , イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 〜 没年不明 )
質問させてください。 WIN XPにMySQL5はじめて入れました。 root@localhost このrootユーザは、localhostからだけで 外からアクセスできないんですよね。 ネットで初期設定調べていたら、rootパスワード入れないと 危険ってあったんですが、localhost以外からアクセスできないのに どんなとき危険なんでしょう。 3306のポートが空いているような気がしますが、local以外からでも そこからアクセスされるんでしょうか。
>>280 つ[マルチユーザOS]
つ[トロイの木馬]
性善説の人間がネットワークを使うとろくな事がない
といって性悪説だとネットにつなげないか、多額の出金が必要。 ま、スレ違い過ぎるよね
285 :
280 :2006/06/14(水) 19:15:39 ID:???
>>281 >>282 localhostから以外はアクセスできないんですね。
ウイルスとか友達、家族のときのための備えですか。
ありがとうございました。
トロイの場合は遠隔操作出来るが感染しなきゃいいだけ。
>>285 最近のWindows用のMySQLのインストールの際に
「rootにパスワードを設定しろ」と出てくるようになったのは
まさにMySQLでデフォルトの管理ユーザrootが用意されてて
それにパスワードが設定されていないことを利用した
ワーム(だったと思うが)が一部で流行したため。素直にパスワードを設定汁。
ついでに設定ファイルの[mysqld]セクションにskip-networkingも記述しとけ。
どうせならポート番号も変えとけ。 大事なデータを入れないなら別だが。
show status の値をサーバを再起動せずにリセットする方法ありましたら 教えてください
290 :
NAME IS NULL :2006/06/14(水) 20:24:24 ID:MbEvWAgp
SET SESSION join_buffer_size=512K とすると エラーを返してきます。 SET SESSION join_buffer_size=524288; とするとうまくいきます。 いちいち計算するのもあれなので、 KとかMとかGとか使えないでしょうか?
偉人こえええええええええええ
>>292 |At runtime, use the `SET' statement to set system variables.
|In this context, suffix letters cannot be used, but the value can take
|the form of an expression:
| mysql> SET sort_buffer_size = 10 * 1024 * 1024;
まあ、MySQL ABに対応してくれとリクエストはしてみたら。
>>294 ありがとございます。
演算子は使えるんですね、
ならばそのままでもいいかなと・・・・
偉人は、今の時間 WebProg板の方で手一杯です
普通DB鯖ってファイヤーウォールの中に置いてるよね。 またインターネット鯖の3306ポートでMySQLに繋げられたりはしないよね。
ファイアウォールで 特定ホストからのみ許可しています。 やばいっすか?
セキュリティーとは層を重ねて実現するものだ。
::|─- 、ミヽ ::|j ii / Λ ::| ̄`ヾ、ノイ{ ::| ゙、ノi! ::| ,\ Yソ ::| ;:こラ j{ ::| i ー ' ソ ::| j ,′ ::|<‐-イ ::|‐ / ::| ,/ ::|'r‐'´
ググレさまが見てる
textフィールドに数千文字のデータが入ってる場合、 任意の文字数だけ取り出すことは出来ますでしょうか? (たとえば、先頭の100文字だけSELECTする・・・など)
AB配布のバイナリのコンパイルオプションが 4.1の時にO3だったのが5.xになってO2になったんだけど 4.1をコンパイルするならO3のほうがいいのかなぁ
>>302 ああ、おかげでもう顔半分だけでは済まないぞ。
mysql substring でググレカス
, イ)ィ -─ ──- 、ミヽ ノ /,.-‐'"´ `ヾj ii / Λ ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{ ノ/,/ミ三ニヲ´ ゙、ノi! {V /ミ三二,イ , /, ,\ Yソ レ'/三二彡イ .:ィこラ ;:こラ j{ V;;;::. ;ヲヾ!V ー '′ i ー ' ソ Vニミ( 入 、 r j ,′ ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ ヽ ヽ -''ニニ‐ / | `、 ⌒ ,/ | >┻━┻'r‐'´ ヽ_ | ヽ _ _ 」 ググレカス [ Gugurecus ] ( 2006 〜 没年不明 )
, イ)ィ -─ ──- 、ミヽ ノ /,.-‐'"´ `ヾj ii / Λ ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{ ノ/,/ミ三ニヲ´ ゙、ノi! {V /ミ三二,イ , /, ,\ Yソ レ'/三二彡イ .:ィこラ ;:こラ j{ V;;;::. ;ヲヾ!V ー '′ i ー ' ソ Vニミ( 入 、 r j ,′ ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ ヽ ヽ -''ニニ‐ / | `、 ⌒ ,/ | >┻━┻'r‐'´ ヽ_ | ヽ _ _ 」 ググリカタガムズカシインダカス [ Guguri Katta Gamuzcasi indacus ] ( 2007 〜 没年不明 )
>>308 ググリかたからググレ かすw
, イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 〜 没年不明 )
>>303 気になるなら好きなオプションでソースからコンパイルすれば。
__, --──−、_ /::_, -‐─ ‐-、_::::`‐-、 . /::/ `‐i:::::::ヽ |:./ ',ミ::::::} }:l lミ::::::l' _!,'_ ,..-- ..、 __ !::::::::| lヽ! `i ィェッ、.i'゙"i';;;ィェッ;,`i===,、 ',.l ゙、゙゙゙゙゙,ノ ヽ_"゙゙ ゙/ r;;;;;;/ i|  ̄,' ::::ヽ `''" .,{;;;;;;/ ',. ゙`-"゛'' ,};;;;;;' ! ,_、,___, /;;;/" _,` 、 /;;r' _,, -─ '';;;;;;;;;| 、ヽ,,____,,-‐';;;;;;;;;;;\_ ;;;;;;;;;;;;;;;;;;;;;;;;;;| \ _//;;;;;;;;;;;;;;;`ヽ、 ;;;;;;;;;;;;;;;;;;;;;;;;;;| r‐ィt- '" /;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;| /,彡彡} ,!;;;;;;;;;;;;;;;;;;;;;;;;;;;; ツレマスカ [Vladimir Tzlemazka] (1915-1997 ロシア
313 :
NAME IS NULL :2006/06/15(木) 21:50:46 ID:knTR55Mc
>>311 うん、いつもソースからコンパイルしてるんだけど
昔は1000超える多数の接続受けるならスレッドスタック減らせとかあったけど
今はなくなってるのね
EM64Tだから -m64 つけたいけどgccが対応していないよー
__, --──−、_ /::_, -‐─ ‐-、_::::`‐-、 . /::/ `‐i:::::::ヽ |:./ ',ミ::::::} }:l lミ::::::l' _!,'_ ,..-- ..、 __ !::::::::| lヽ! `i ィェッ、.i'゙"i';;;ィェッ;,`i===,、 ',.l ゙、゙゙゙゙゙,ノ ヽ_"゙゙ ゙/ r;;;;;;/ i|  ̄,' ::::ヽ `''" .,{;;;;;;/ ',. ゙`-"゛'' ,};;;;;;' ! ,_、,___, /;;;/" _,` 、 /;;r' _,, -─ '';;;;;;;;;| 、ヽ,,____,,-‐';;;;;;;;;;;\_ ;;;;;;;;;;;;;;;;;;;;;;;;;;| \ _//;;;;;;;;;;;;;;;`ヽ、 ;;;;;;;;;;;;;;;;;;;;;;;;;;| r‐ィt- '" /;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;| /,彡彡} ,!;;;;;;;;;;;;;;;;;;;;;;;;;;;; ツレマセン [Vladimir Tzlemazchen] (1876-1939 ルーマニア)
AA荒らしって規制の対象になってたっけ?
>>313 EM64Tでコンパイルしたら通った気が・・・・
動くかどうかまでは確認してないけど。
318 :
NAME IS NULL :2006/06/16(金) 08:53:06 ID:+aIfUPjf
Common SQL Environment (
ttp://www.hi-ho.ne.jp/tsumiki/ ) を利用されている方、いますか?
MySQLサーバーに接続する際(接続時)に「アプリケーション実行中に以下のエラーが発生しました。」
「エラー内容:オブジェクト情報取得中にエラーが発生しました。」「DBエラー詳細:DEEOR 1227」と
ポップアップが表示されます。
一応ポップアップメッセージが表示されても、MySQLには接続されているようで、SQL文を流したりすることは
できるようなのですが。
ちなみにSQL Serverへ接続した時には、このようなポップアップはありませんでした。
もし何かご存知の方がいましたら、教えて頂ければ幸いです。
320 :
NAME IS NULL :2006/06/16(金) 13:27:59 ID:+aIfUPjf
>>319 情報ありがとうございます! なるほど。
確かにポップアップに「ERROR 1227: Access denied. You need the SUPER, REPLICATION CLIENT privilege for the operation」とありました。
訳すと、ERROR 1227 は「許されないアクセス。 あなたは、 SUPER, REPLICATION CLIENT 権限を、処理するのに必要とする」なので、
GRANTで、このユーザーに SUPER, と REPLICATION CLIENT の権限を付与して、試してみます。
ありがとうございました!
OpenOfficeのbaseからodbc接続でMySQLをいじろうとすると、 日本語項目が化けてしまいます。悲しいです。 MySQL5.0.22(win)Odbc3.51は無理っぽいですか?
幸いにもデータベースの障害に見舞われたことがないのですが、壊れたりするときにはどのような壊れ方をするのでしょうか? 一番気になるのはinsertの結果がディスクに反映される前に障害が起きた場合にどうなるかなのですが、どうなるのでしょうか?
>>322 不幸にも過去ガンガンDB壊れているけどな。オレ。
テーブルやインデックスに矛盾が生じてクエリエラーになったり、あるのにクエリ
かからなかったり、主キーが重複してると言ってきたり色々ある。
でもちゃんと repairできる。ディスク障害以外でrepair出来なかった事ないな。
>>321 データベースの文字エンコーディングは何?
ODBCでの接続だと変換関係が上手くいかない(時もある)ので
JDBCでの接続に変えてみるというのも手。
でも項目が全部化けるのなら設定の問題だと思うよ。
>>323 それって論理的に壊れてるの?
たとえば、リレーショナルしてたら、リレーショナルも逝く?
>>323 repairは論理的な矛盾までは直してくれないよ。
リレーション関係の矛盾は残る。
ません。↑ 325 へのレス
328 :
321 :2006/06/17(土) 00:55:28 ID:???
>>324 JDBC接続にしたら、すんなりきれいに出力されました〜!
ありがとうございました。
粘着スレ違い厨うせぇ・・ 早くいなくならないかな・・・
mysql固有の話題してればいいのだよ。関係ない話するから湧く。
SQL自体ってのはSQL文って意味なのか? MySQLとPostgreSQLとかその他DBで記述方法が違うとかあるだろうし 専用スレに質問するのがベターだと思ってた
MySQLの方言の話以前のSQLの書き方は別だろ。 ・SQL-92ではこんなんだけど、MySQLでは上手くいかないんだが (準拠とはいえ互換性低くね) ・PostgreSQL、Oracleではこう書いてやってるんだけど 副問い合わせの出来ないMySQL3.xではどうやったら良いかね。 とかは、ここが適正。
まあ標準SQLで動かないときに相談するのはアリだと思うけど。 それ以前のはちょっとね……
なるべく標準SQLで実装するのが、DB非依存の基本。 最初から特定のDB前提で組むと後で苦労するよ。
336 :
NAME IS NULL :2006/06/18(日) 18:13:51 ID:j7BtzjXk
OS(WindowsXP)を再インストールしたら CGIからMySQLに接続できなくなってしまいました。 my($dbh, $sth); $dbh = DBI->connect('DBI:mysql:seibundo:localhost', "$mysqlid", "$mysqlpass") or return 0; ↑ここで失敗する $sth = $dbh->prepare("$_[0]"); $sth -> execute() or return 0; 原因がわかるエラーメッセージを表示できないものでしょうか? よろしくお願いします。 Apache HTTP Server 1.3.33 ActivePerl522 MySQL Server 4.1
結論:win(ry
>>336 なんで今更古いバージョンのPerlを使っているのか謎ですが。
or die $DBI::Errorとかすれば分かるんじゃね?
そもそもperlの問題だろ。 mysqlコマンドで接続できれば、mysqlは無関係。 % mysql -u mysqlid の実行結果を曝せ。
.NET Framework2.0からmysqlを利用するには どういったライブラリがありますか? 公式のConnector/.NETはFramework1.1にしか 対応していないようなのです
.NETスレで、ODBCかJDBCの使い方でも訊け。 MySQLに関係無い。つーかMySQL側で出来ることは何も無い。
そうします。失礼しました
結論:win(ry
345 :
NAME IS NULL :2006/06/20(火) 22:22:46 ID:j1rdIaDT
select 〜 into outfile 構文で出力するデータを 既存のファイルに追記させることって できないでしょうか? 追記させようとすると ERROR 1086 (HY000): File 'a.txt' already exists というエラーが出るのですが。
>>347 その手だとmysqlやmysqldumpツールが入ってないと出来ないから
隠れた条件に合わないかも。
つうてもSELECT INTO OUTFILEで既存ファイルが指定できないのは
マニュアルに書かれてる通りの理由があるからな...
あるテーブルの主キーを調べる構文ってありますか? show columnsでカラム全部を吐き出して調べるのではなく 主キーの名前だけを抽出するような技があればよいのですが。。
350 :
NAME IS NULL :2006/06/21(水) 15:52:28 ID:S4UzvAAF
351 :
NAME IS NULL :2006/06/21(水) 17:42:11 ID:4s8CJcwM
>>351 ブログむさ重いんでここに書く
「ローカル環境を鯖環境にきちんと合わせれば文字化けなどしない」
353 :
NAME IS NULL :2006/06/21(水) 20:22:59 ID:4s8CJcwM
>>352 現実的には、やっぱ対応する必要があります。
・サーバを移転
・既存システム(UTF-8)に別システム(EUC-JP)を追加
などなど...
>>351 エクスポートする機能なのに、文字化けって意味わからん。
phpmyadminのエクスポート機能は、単純に格納してる生データを吐き出せないのか。
まあmysqldumpも最近のは、"余計な変換"を掛けやがるけど。
utf8で統一すれば化けないけどな。 sjisとか使うと化けるのは当たり前。
356 :
NAME IS NULL :2006/06/22(木) 04:15:41 ID:1d2hPd6+
だめだ、MySQLサーバがまたダウンorz どっか年3万以内でMySQLがある程度快適なレンタルサーバ知らない?
358 :
356 :2006/06/22(木) 11:48:29 ID:AgHOUkWe
レスTHX。 実はいま使ってるのがロリ。。。orz MySQLはさくらとかの方がいいのかな?
>>356 ロリポップはレスポンスが悪いので、移転中です。
移転先はさくら。
年6,000円。
mysql5.0をwin2000にインストールしようとしてるんだけど server instance configurationの最後のところで Start service ってのがペケになって Could not start the service MYSQL Error:0 ってなる どうすればいいんだー
厳禁 結論:win(ry
ログもログに見てない奴には何言っても無駄
エラーログが英語で読めない香具師は向いてないから諦めろ。スキルが足りない。
MysqlQueryBrowserで各Columnの幅がどうも取り過ぎてるのですが 指定幅に設定する方法はないでしょうか
367 :
356 :2006/06/22(木) 21:42:01 ID:ibZJTjrn
>>359 さくらはロリより快適?
年1万5千円のコースの方がMySQLは早いのかと思うのだが。。。
>>360 エスパーが予想するに、InnoDBの設定がおかしい。
俺様が断言するに、windowsを使うのが悪い。
>>369 悪かったなwinでちゃんと動かしてて。
まあ俺的にはwindowsを使うのが悪い
winではちゃんと動いてる様に見えるだけで動いてないと思う。
じゃあ動いてるように見えればいいだけのシステムにはwinを使おう
仕事してる様に見せてるだけのエンジニアはウィンドウズを昔から使ってる訳だが。
だから開発や検証用にはWin環境でも許してやれよ。
>>370 そんな錯覚をおこさせるOSはやめとけw
じゃあ何がいいんだよぅ。 NetBSDあたり?
質問です。 環境は windows98SE + MySQL4.0.26 + php4.4.2 + phpMyAdmin2.8.1 です。 MySQLをインストールした後に最初に winmysqladmin.exe を起動させるとID、パスワードの 入力を求めらますよね? ここで ID = user1 パスワード = pass1 としてユーザー登録を行ったのですがこのIDでphpMyAdminにログインすることが出来ません。 ID = root パスワード = (なし) だとログイン出来るのでuser1がMySQLに弾かれているようです。 インストール直後に入力したIDとパスワードは何故使えないんですか?
winmysqladmin.exe用のアカウントだから。
380 :
378 :2006/06/23(金) 23:56:08 ID:???
追記、
このページにperlとphpで書かれた2つのCGIがあります。 CGI内でID、パスワードを指定するところを
http://homepage1.nifty.com/yito/anhttpd/faq/mysql.html ID = root パスワード = (なし) と書くと正常に動くんですが、
ID = user1 パスワード = pass1 と書くとエラーが返ってきます。
user1、pass1の入力ミスかと思い何度も試したのですが正しく入力されており、
my.ini にちゃんと user1、pass1 と書かれていることも確認しました。
381 :
378 :2006/06/23(金) 23:57:33 ID:???
>>379 ありがとうございます。 何か特別なユーザーIDだということですね?
よく分からないのですがこのユーザーIDは一体何に使うものなんでしょうか?
>>380 >ID = user1 パスワード = pass1 と書くとエラーが返ってきます。
そういう時はきちんとそのエラーとは具体的に「何なのか」を
提示するのが当たり前だと思いねぇ。
(経験と想像によって類推は出来るが、確定できない)
まあ
>>382 を先に確認汁
あと
>my.ini にちゃんと user1、pass1 と書かれていることも確認しました。
この手の設定ファイルは「何処に書かれてる」のかというのが重要。
my.iniであれば、[client]のとこなのか[mysql]のところなのか等々。
仮にコメントとして書かれてたとしたら設定としては意味がないわけでしょ。
ただ、取り合えずphpMyAdmin(PHP)からの接続に
my.iniのMySQLアカウントは関係ないから考慮しなくていい。
関係するとすればPHPの設定ファイルの方
>>378 >phpMyAdminにログインすることが出来ません。
「に 」じゃなくて「では」だよな。
BASIC認証とか独自の認証を掛けてて、それの認証というオチは無しナ。
384 :
378 :2006/06/24(土) 00:27:04 ID:???
>>382 どうもです。 phpMyAdminでデータベース"mysql" を選び、User項目を表示させてみたら
s User //この行は見出し
1 root
1
というテーブルが表示されました。 user1が出てきませんがこれは一体。(;´Д`)
だから言ってるだろ winmysqladmin.exe用のアカウントだから。 user1を使いたければ登録すれば良いだけの話
386 :
378 :2006/06/24(土) 00:41:09 ID:???
>>383 どうもありがとうございます。 情報の小出しになっていましたか、すみません・・。
http://homepage1.nifty.com/yito/anhttpd/faq/mysql.html に書かれているperl版CGIのユーザー名、
パスワードを user1、pass1 に書き直してブラウザで読み込むとこのエラーが表示されました。
(再度root、パスワードなし に書き換えたら正しく表が表示されました)
> Internal Server Error
>
> The server encountered an internal error or misconfiguration and was unable to complete your request.
>
> Please contact the server administrator,
[email protected] and inform them of the time the error occurred,
> and anything you might have done that may have caused the error.
>
> More information about this error may be available in the server error log.
また、apacheのerror.logには以下のエラーが記録されました。 (改行して2行になってますがこれで1行です)
> [Sat Jun 24 00:35:28 2006] [error] [client 127.0.0.1] DBI connect failed : Access denied for user:
> 'user1@localhost' (Using password: YES) at C:/apache-hp/public_html/cgi-bin/mysql.cgi line 12.\r
そして、my.ini には以下のように書かれていした。
[WinMySQLadmin]
Server=C:/MYSQL/bin/mysqld-opt.exe
user=user1
password=pass1
// my.ini はインストールしてから一度もいじっていません。 インストールは数時間前にやり直したばかりです。
なんかまたmysqlには関係ない感じ。
アパチスレでphpとperlの設定訊け。
mysqlコマンドで接続できれば、mysqlは無実。つーかこの程度の切り分けぐらいしてくれ。
[email protected] にメールで問い合わせれば何か教えてくれるかもな。
英語のメッセージも読めない香具師はこういうソフト使うの向いてないよ。
>>383 >phpMyAdmin(PHP)からの接続にmy.iniのMySQLアカウントは関係ないから考慮しなくていい。
>関係するとすればPHPの設定ファイルの方
う〜ん、これがよく分からないです。 user1はMySQLのアカウントではないってことは分かりました。
PHPの設定ファイルとはどこのことでしょうか?
>BASIC認証とか独自の認証を掛けてて
まだMySQLをインストールし、user1、pass1を設定しただけの状態です。
perl、php、apacheも同様にmysqlを動かすための最低限の設定以外はいじってません。
>>385 MySQLにログインするためのアカウントではないということですね、ありがとうございました。
>>387 root、パスワードなし の場合は正常に動くのでそういう問題ではないです。
>>387 my.iniの[WinMySQLadmin]セクションにあるuser=、password=は一体何に使うアカウント? というお話。
>>384 結論から言うと
>>385 が言ってる事が正解。
MySQLのユーザアカウントとしては
>>384 に示されたものしかないので、
user1というアカウントをPHPやwinmysqladmin等で使いたければ、
現状使えるMySQLの管理ユーザrootで、user1というアカウントを
追加設定する必要がある。
>>386 |[error] [client 127.0.0.1] DBI connect failed : Access denied for user:
| 'user1@localhost' (Using password: YES)
このエラーの内容がキモな。
# 上のエラー提示してもしかたがないと気づくべき(ことが将来的には望まれる)もの
|[WinMySQLadmin]
|user=user1
|password=pass1
これはWinMySQLadminがデフォルトで使う、
MySQLのユーザアカウントを指定している。
しかし指定しているアカウントuser1は、前述のとおり未登録。
>>388 >PHPの設定ファイルとはどこのことでしょうか?
php.ini等のmysqlセクションのこと。
これはmysqlの話ではなくPHPの話なので、マニュアルを読んでも判らなければ「相応しいところ」へ。
(もっともphpMyAdminの設定で指定するなら、PHPの設定ファイルでやる必要はない)
392 :
378 :2006/06/24(土) 03:04:31 ID:???
>>390 なるほど、WinMySQLadminがデフォルトで使うアカウントだったんですか、ということは
IDとパスワードを省略した場合はこのアカウントが使われるということですね。
ようやく納得出来ました、どうもありがとうございました。m(_ _)m
// MySQLインストール後の初起動時にuser1、pass1を登録したときに
// 同じID、パスでMySQLにログインするためのアカウントを自動で作ってくれれば
// こんなややこしいことにはならないのに何故そう作らなかったんだろう。
// 今回のことを疑問に思ったのは自分だけじゃないはず・・。
>上のエラー提示してもしかたがない
それはちょっと違います。 「どういうエラーが出たか」 の答えなので提示する必要がありました。
自分も意味が無いと思い、「エラー」としか書かなかったんですが上で怒られてしまいました。
>php.ini等のmysqlセクション
php側でもmysqlのデフォルトのアカウントを指定出来るんですか、なるほど。
phpスクリプト内でID、パスを省略するとこれが使われるということですね。
393 :
NAME IS NULL :2006/06/24(土) 03:18:44 ID:vXTz5abN
>>392 うざい、知らんくせにぐだぐだ言うな
頭のいい人間は試行せずに思考で仕組みを理解できるが、
俺は試行しないと理解できない。
お前は試行すらできないであーだこーだ言うわけよ。
わかるか?
394 :
378 :2006/06/24(土) 03:36:13 ID:???
>>393 感情でものを書くあなたにどう言われようが構わないです。 みっともないですよ。
>>394 あかんぼが夜中に起きてぐずっているだけだから、
気にすんな。
396 :
393 :2006/06/24(土) 03:48:11 ID:???
397 :
378 :2006/06/24(土) 03:54:56 ID:???
それが何か?
タコって大変だね
>>378 のテーマソングは
「思い込んだら試練の道を〜」な気がするw
思い込み激しすぎw 2chに訊きにくる前に少しは自分を疑えw
s/自分/自分の思い込み/
重いコンダラ、、、
403 :
NAME IS NULL :2006/06/24(土) 10:07:31 ID:68KCB3XC
『アイアンファイター』ができたらハリウッドが映画化する
Kondaraって重いのかw
コンダラっていうのは、グラウンドを整地するための コンクリのドラムに引き棒をつけたもの。 野球部員が特訓として一人で引く時もあるが、 かなり重いらしい。 スレ違いすまん。
ロードローラーだッ!!
また猿がキーキー騒いでるのか、さっさと氏ねよ負け犬野郎
ど根性
やっぱりmysql -u user1でアクセスできなかったってヲチじゃん。氏ね!
論点も分かってない馬鹿は黙ってたほうがいい
phpMyAdminが無いと弄れない香具師は素人。 アクセスやSQL鯖でもどうぞ(w
アクセスをフロントエンドに使ってる俺は勝ち組
正直、「DBとかSQLに触ってみる」という目的ならMSSQLがいいと思うよ MS独特のややこしさがあるけど一通り揃っているし、GUIインターフェースも完備 unix系OSのDBは、DB・ツール・OS等がそれぞれ別の思想で作られていて、 問題の切り分けが出来ないと扱うのは難しい。 サーバとして使うなら、何やっているかわからないMS製品なんか却下するけど。
そうは言ってもですね w 入門書についてんのは大概MySQLだし。 MSSQLも鯛鍵盤(←なんちゅう変換じゃ)みたいなんあるとは思うけど。
なんか、別の思想らしい
体験版
結論: windowsでは Microsoft SQL Serverでアクセスをフロントエンドに使うのが正しい。 というか、MS製品以外使わないのが幸せ。
420 :
NAME IS NULL :2006/06/26(月) 20:54:13 ID:GNq2Onxw
$mysql -u hoge -p -h mysql.db.example.com Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 31469664 to server version: 4.0.26 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> CREATE TABLE test -> ( -> id INT(7) NOT NULL, -> mona INT(5), -> giko INT NOT NULL -> ); とすると「ERROR 1046: No Database Selected」というエラーが返ってきます。 データベースが選択されていない?? DBサーバにログインする際にhostを指定しましたけど。 どなたか原因分かりますでしょうか?
偉人が来る!!
泣けるぜ
ワロタ。 データベースぐらい指定しようぜ。
424 :
NAME IS NULL :2006/06/26(月) 21:18:56 ID:GNq2Onxw
すまん詳しく(;_;)
ますます泣けるぜ
>>420 ::|─- 、ミヽ
::|j ii / Λ
::| ̄`ヾ、ノイ{
::| ゙、ノi!
::| ,\ Yソ
::| ;:こラ j{
::| i ー ' ソ
::| j ,′
::|<‐-イ おまいは、その
::|‐ / 「ERROR 1046: No Database Selected」
::| ,/ さえも読めないのか? とほほ
::|'r‐'´
これはwindowsだろうとLinuxだろうとかんけーねーべ。
>>420 ヘルプにTutorialがあるだろ。
それやったら?
あまりにも恥ずかしすぎ。
>>420 の¥マークはwindowsの証
\は日本では¥記号にアメリカでは$記号に化けるという噂だ。
くーーー、今夜は泣けるぜw
432 :
NAME IS NULL :2006/06/26(月) 21:33:52 ID:GNq2Onxw
全米が泣いた
>>430 それは知らんかった。馬鹿にしてスマソ
ところで、use hogehogeの使い方は覚えたか?
use the use!!! luke!!!
>>420 さんは、mysqlというDBにテーブルを作ろうとしているらしい。
おもしろすぎ。
437 :
NAME IS NULL :2006/06/26(月) 21:55:56 ID:GNq2Onxw
$mysql -u hoge -p -h mysql.db.example.com [データベース名]
mysql> CREATE TABLE mona
-> (
-> mona INT(7) NOT NULL,
-> shii INT(5),
-> giko INT NOT NULL
-> );
Query OK, 0 rows affected (0.08 sec)
おっと…、解決しましたよ。
おまいら優しすぎだよ (;_;)
>>436 リアルの世界でも「君、ホント面白い人だね」ってよく言われます。
MySQLあきらめようと思ってましたが、解決して良かった。ホントーに良かった。終り。
>>437 この難問を1時間で解決した君は将来性があるぞ。
東海の 小島の磯の 白砂に これも用意してたのだが、使わなくて済んで良かった。
>>413 アクセスをフロントエンドにつかうメリットって何?
馬鹿に対する敷居の低さ。 ウェブで扱えない香具師は今はゴミだけどな。
sql使えるくらいで天狗になれる馬鹿はいい加減消えてくれないかな。 アクセル使えるようになって自慢してるおやじと大差無いことに気付けよ。
フロントエンドってアクセス以外に何があるの?
Delphi
PHPとMySQLで名簿を作っています。 フォームからあるメールアドレスと名前・住所などが送信されたときに、 そのメアド(主キーです)がDBに存在しなければINSERT、 既に存在しているならUPDATEというSQLを投げたいと思います。 これを実現するにはあらかじめフォームから来たメアドをWHERE句に入れてまずSELECTしてみて、 結果がエラーとなるかどうかを調べておき、 その結果をもとにINSERTにするかUPDATEにするかを条件分岐させる方法しかないでしょうか?
REPLACEとか
>>446 ちょっとリファレンスを見てみましたが、
もしかして4.1以上じゃないとそれは使えませんかね・・・??
当方の環境は3.23です。
>>442 そういう細かい差の積み重ねが、結局は大きな差となってるんだよ。
アクセルだけで、ブレーキが使えない香具師はダメだけどな。
>>447 いや使える。
つか、いい加減MySQL3.xは捨てに掛かれ。
>>449 捨てたいんですが、バージョンアップを躊躇するポイントが二つあります。
・鯖にPleskが入ってるため、怖くてMySQLをバージョンアップできない
・4.1や5.0は文字コードで苦労するらしいのでやっぱり怖い
逆に、このまま3.xを使い続けるとマズい点とかありますでしょうか・・・??
掲示板を作っているのですが、 1番最新のレスだけ返すにはどうしたらいいでしょうか? 渡しているのはスレッド番号だけです 多分、insert時間順にorderで並び替え、その何番目を取得見たいな感じだろうとは思うんですが… お力お貸しください
>>450 問題なく動いててユーザーも満足なら、あえて寝ている赤子を起こすようなことを
しなくてもいんじゃねーの
>>451 どうすればって、自分で答え書いてるじゃん。何を求めてるか解らん。
453 :
451 :2006/06/27(火) 15:31:03 ID:???
各スレッドの最新レスだけを抜き出したいんです 具体的には「何番目〜」ってところが分かりません
limit
ここ最近のアホの湧き方は異常だと思う
っていうか、451に案件を発注した会社または依頼した上司が気の毒でならん。
Could not start the service MySQL というエラーが出てサービスが開始できないのですが どうすれば良いのでしょうか?
東海の 小島の磯の 白砂に 今日使えて無駄にならなくてよかった。
>>457 , イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 〜 没年不明 )
ERROR 1064 (42000): You ha corresponds to your MySQL ase show databases show databases connect test show databases' at line 1 show databases;と打ったらこうなったのですが これはどういうことなのでしょうか
>>460 mysql:「バカだなお前。ちゃんと解るコマンド打てよ。それとちゃんとググレよ」
って言ってる。
模範解答:「それウィルスのせいですよ」
>>457 Windowsで使うのをやめるのが一番。
次善の策としては、logとか見て起動できない原因を把握
win使うな厨がそろそろ面白くなくなってきた
くーーー、今夜も泣けるぜw
466 :
NAME IS NULL :2006/06/27(火) 21:53:38 ID:43MwoCfH
長文になってすみません、 MySQLの、日付型の比較について教えてください。 MySQL:Ver 5.0.21, for pc-linux-gnu (i686) using readline 5.0 OS:Fedora Core 4.0 という環境で、 CREATE TABLE `test_tb` ( `id` int(11) NOT NULL auto_increment, `i_datetime` datetime NOT NULL, ) ENGINE=InnoDB DEFAULT CHARSET=utf8; というテーブルをつくり、 mysqlプロンプトから次のような検索を行っているのですが、 mysql> SELECT i_datetime FROM test_tb WHERE i_datetime >= '2006-6-1 00:00:00'; +---------------------+ | i_datetime | +---------------------+ | 2006-06-01 10:14:03 | | 2006-06-02 15:40:05 | | 2006-06-04 12:13:54 | | 2006-06-08 23:04:27 | | 2006-06-09 01:30:03 | | 2006-06-10 00:33:36 | | 2006-06-10 15:28:34 | | 2006-06-11 16:45:09 | +---------------------+ 8 rows in set (0.00 sec) mysql> SELECT i_datetime FROM test_tb WHERE DATE(i_datetime) >= '2006-6-1'; Empty set (0.00 sec) となるのですが、 2番目の検索がなぜEmptyになるのか分かりません どなたか、Emptyになる理由を教えていただけないでしょうか! MySQLマニュアル日本語訳には、比較演算子の項に、 「引数のどちらかが TIMESTAMP または DATETIME 型のカラムで、もう一方が定数の場合、定数は比較の実行前にタイムスタンプに変換される。これは ODBC との互換性を確保するために行われる。 」 と書かれているのですが、2番目の検索では条件が文字列で比較されているように思いますが、 そういう仕様なのでしょうか?
>>315 ×規制
○削除
実際は削除人は暇じゃないのでどうでもいいものはスルー
二番目の場合は文字列比較だからなんじゃねーの? ... >= '2006-06-01' にするとどうなる?
469 :
NAME IS NULL :2006/06/27(火) 22:23:54 ID:43MwoCfH
>> 468 アドバイスありがとうございます mysql> SELECT i_datetime FROM user WHERE DATE(i_datetime) >= DATE('2006-6-1'); と mysql> SELECT i_datetime FROM user WHERE DATE(i_datetime) >= '2006-06-01'; だと、 +---------------------+ | i_datetime | +---------------------+ | 2006-06-01 10:14:03 | (中略) 8 rows in set (0.00 sec) と期待通りの結果になるのですが、 ... >= '2006-6-1' にするとなんで文字列比較になっちゃうんでしょう・・? マニュアルを読んでもいまいち理解できなくて、 それがちょっと気持ち悪いです
'2006-6-1'はchar→datetimeの暗黙の変換の対象にはならないのでは。
DATE 関数が文字列を返す。ので、「引数のどちらかが TIMESTAMP または DATETIME 型のカラムで」の条件は満たされない。 両方 DATE 関数を使う場合も、適切に型が変換されているわけじゃなく、結果 の文字列が正規化されているのでうまく比較される。 ……ってことだと思う。
RDBの実装側に成ってみれば分かるよ。 速度出すためには、無駄な処理を行わないことが重要。 最低限の利便性のための実装は、パターンを限定させた実装のほうが速度がでる。 馬鹿にも分かる様に言うと、2006-6-1だと日付型の仕様を満たしてないから文字列として実行される。 ソースは有るから、自分で弄って気に入る様に拡張でもしてくれ。
日時を比較すると文字列になる ってFAQだよな
よく見りゃ WHERE DATE(i_datetime) >= '2006-6-1'; これって本当は WHERE i_datetime >= DATE('2006-6-1'); こうしたいんじゃないの?
475 :
NAME IS NULL :2006/06/28(水) 01:31:29 ID:HNN8dDsA
スイマセン、winXPproにmySQL5.0.22をインストールしたんですが、 コマンドラインで 「'mysql' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 と言われます コントロールパネルで環境変数のPathも再設定したんですが 同じことを言われるのは、どういう間違いの可能性がありますか? ちゃんとやったつもりなんですが、、 環境変数PATHに C:\Program Files\MySQL\MySQL Server 5.0\bin を書き足したのですが間違ってるでしょうか? 誰か、よろしくお願いします。
>>475 OSの話だと思うがな。
プロンプトで
"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe”
とやっても駄目なら、単にPATHの登録が出来てないだけ。
(空白スペースの入るpathは推奨出来んのだが)
477 :
NAME IS NULL :2006/06/28(水) 02:35:12 ID:KUsFrB9K
466です、皆さんありがとうございます 個々の回答にはなっていませんが、今のところまとめると、 MySQL4.1日本語マニュアルから、(英語読めないんで5.0のではなく4.1のですが) 「6.2.2.2. DATETIME、DATE、TIMESTAMP 型」より 日付部分の区切り記号を含む文字列として値を指定する場合、10 より少ない月または日の値を 2 桁で指定する必要はありません。 '1979-6-9' は '1979-06-09' と同じ意味になります。同様に、時刻部分の区切り記号を含む文字列として値を指定する場合、10 より少ない時、分、または秒の値を 2 桁で指定する必要はありません。'1979-10-30 1:2:3' は '1979-10-30 01:02:03' と同じです。 「6.3.1.2. 比較演算子」より 引数のどちらかが TIMESTAMP または DATETIME 型のカラムで、もう一方が定数の場合、定数は比較の実行前にタイムスタンプに変換される。これは ODBC との互換性を確保するために行われる。 ということから、「i_datetime >= '2006-6-1 00:00:00'」も「DATE(i_datetime) >= '2006-6-1'」も日付、日付時刻型として比較されることを期待 「6.3.4. 日付と時刻関数」より DATE(expr) 日付式または日付時刻式 expr の日付部分を取り出す。 この内容からは、日付型として返すのか、文字列型として返すのか分かりません 実際にクエリを実行した結果からは、 条件1.i_datetime >= '2006-6-1 00:00:00' → 2006-06-01以降のレコードを返す 条件2.DATE(i_datetime) >= '2006-6-1' → 2006-06-01以降のレコードを返さない 条件3.DATE(i_datetime) >= '2006-06-1' → 2006-06-10以降のレコードを返す となり、条件1は'2006-6-1 00:00:00'を'2006-06-01 00:00:00'とちゃんと解釈して、日付時刻型比較をしているように見えますが、 条件2、3では文字列比較をしているように見えます そこで、471さんのおっしゃるとおり、 DATE 関数が文字列を返すからかと思ったので、 条件4.CAST(i_datetime as date) >= '2006-6-1' のように日付型に変換してやったのですが、 mysql> SELECT i_datetime FROM test_tb WHERE CAST(i_datetime as date) >= '2006-6-1'; Empty set (0.00 sec) となり期待したものとは違い、2006-06-01以降のレコードを返しません 質問としてまとめますと、 条件1は日付時刻型比較されて、条件2・3・4は文字列比較されているような結果になるのはなぜでしょう? 比較演算子の仕様でしょうか・・・? こういうものであれば、そういう実装をするのですが、どこかにその根拠があればすっきりするんですが
口の悪い奴がいつもこのくらいの時間に書き込むから 彼のために自動書き込みアプリを起動させて寝る。朝4時に発動。 さっさと仕事探せ。今すぐ仕事探せ。今日中に面接に行け。 ハローワーク www.hellowork.go.jp/ 『 働 か ざ る も の 食 う べ か ら ず 』。 『 働 か ざ る も の 食 う べ か ら ず 』だからな。 『 働 か ざ る も の 食 う べ か ら ず 』だぞ。
泣けるぜ
>>478 心配ありがと。実は昨日内定出たんだわ。
一両日中に返事して決まるので、そうなったら
今までみたいな時間帯には来れなくなるかな。
とか言おうか?
>>477 DATE()とかCAST()とかした時点で
それは「TIMESTAMP または DATETIME 型の『カラム』」じゃないから
その結果が更に文字列に暗黙に変換されてる、という仮説はどうだ。
484 :
NAME IS NULL :2006/06/28(水) 08:22:29 ID:HNN8dDsA
>>476 ありがとうございます
"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe" -u root -p
ってしたら上手くいきました!
しかし、毎回こんな長いパスを指定しなきゃいけないんでしょうか
なんで環境変数の指定がうまくいかなかったのかわからないでしょうか。。
朝から泣かせないでください
>>484 「ちゃんとやったつもり」が間違ってるからだろ。俺はMySQL4.1でOS XPProだけど、パスの設定はやってるから
コマンドプロンプトでなら何処でも >mysqlで動いている。
487 :
486 :2006/06/28(水) 09:31:03 ID:???
>>484 というか、MySQLをインストールする時にPathに加えるかどうか聞いてくると思うんだけど?
4.1の例だけど、インストールする時に
Include Bin Directory in Windows PATHにチェック入れてたら、それでOKだし。
488 :
NAME IS NULL :2006/06/28(水) 15:52:18 ID:dAVbcN0m
> 483 なるほどー、そんな感じがします MySQLの仕様ははっきりとは分かりませんが、 これからは、 CAST(nitiji AS date) BETWEEN '2006-6-1' AND '2006-6-30' などとするのではなくて、 nitiji BETWEEN CAST('2006-6-1 00:00:00' AS DATETIME) AND CAST('2006-6-30 23:59:59' AS DATETIME) と明示的になるように心がけます (こっちのほうが効率も良いかな) ありがとうございましたっ
なんで '2006-6-1' なんていう気持ち悪いものを使うのかやっとわかった。 年月日を別々のデータとして保持していて、 文字列を結合してクエリを発行しようとするんだけど、 ゼロフィルするのがだるいって事だと思うんだけどどう? そこがわかれば、 select STR_TO_DATE('2006-6-1', '%Y-%c-%e'); これでいいと思うんだけど。
>>484 つうか mysql動かす前にパソコン教室でもいって勉強してこい。
word使ったHPの作り方とか教えてくれるぞ。
word使ったHPの作り方とか、、、 くーーーーーーーーーーーー。今夜も泣けるぜw
AccessでJDBC接続してExcelとWordで参照して帳票やDM作る。これ最強。
493 :
NAME IS NULL :2006/06/28(水) 19:30:32 ID:U5AZuGUj
Mysql 5.0 でsjis、char、長さ255でテーブルを設計したのですが、 いざデータを入れようとすると、 data too long と表示されてしまいます。 どの様にした良いでしょうか?
中学生の英語教室だな
くわーーーーーーーーっ、ますます泣けるぜw
自演の香り
>>493 データを格納する前に、頭100文字で残りを切り捨てると良いよ。
indexをselect文で直接指定する方法ってありますか?
MySQL Query Browser 使っているんだけど クエリ文の末尾の1文字が認識されない時ない? 例えば select id, sum(syoukei) from hoge where id='fuga' group by id order by NULL っての実行すると、 Unknown column 'NUL' in 'order clause' ってNULLをNULと認識してるんだよね
501から24H経過しましたので、質問は却下となりました。 次の方、どうぞ。
load data local infile で1行目の1カラム目、つまり一番最初のフィールドだけが "になってしまうのは仕様ですか?
505 :
祐一 :2006/06/30(金) 13:58:56 ID:???
父さんへ 帰りにキャベツと大根とにんじんを買ってきて下さい。
>>504 ども、 今は末尾にスペース付けてます。
でも本当ならそれも面倒かなと思います。
コピペしてそのままCtrl+Enterでクエリ実行したいので・・・
>>505 ここはお前の伝言板じゃねーんだよコノヤロバカヤローメ...
ここを便所の落書きにすんなよ、コノヤロメ...
508 :
父さん :2006/06/30(金) 16:57:36 ID:???
祐一へ 父さんは疲れました。母さんの事は頼みました。
509 :
祐一 :2006/06/30(金) 20:13:53 ID:8TbmdTEg
父さんへ 火葬をするお金が勿体無いので、 韓国式で逝ってください。 ほな、さいなら
510 :
NAME IS NULL :2006/07/01(土) 08:07:16 ID:vGyPP1La
オートインクリメントで、DELETEなどによって消失した開き番を使わせる方法ってないのでしょうか? 更新が多いDBで無尽蔵に増えていくのも使いづらいのですが。。
番号を直接指定する
>>510 俺ならdeleteさせずに、
有効か無効かのflagで判定して、
さくじょしないっつうか。
>>510 無尽蔵に増えるのがいいんじゃないか。
削除したモノも含めて重複しないわけだし。
たぶん想定してる使い方が間違ってるんでしょう。
>>512 その方法だとデータ肥大しない?
まあ頻繁に削除の必要があるテーブルにオートインクリメントする設計も変かもしれんが
削除せずフラグにしておくことで、何かあったときにリストアできるのはいいけどね。
でも個人情報のデータだとやっぱ削除したほうが良い気もするし。
無尽蔵に増えていくのが「使いづらい」と感じる理由をじっくりと考えてみよう
無尽蔵に増えるデータをうまく管理するのがデータベース
>>516 こらこら考えさせたら頭がパンクしちゃうだろw
考えてはダメだ。感じるんだw
ワックスかける ワックス拭き取る
521 :
NAME IS NULL :2006/07/01(土) 20:10:34 ID:YC9UFGIT
オートインクリメントに対して空のデータを入れると、自動的に数字データが 補完されますが、INSERTした後に、どんな数字データが入ったかを確実に 取得する方法はないでしょうか? INSERT後すぐにSELECTをした場合、もしかしたら別のユーザがその間に 違うデータをINSERTするかもしれないので。
>>521 , イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 〜 没年不明 )
523 :
486 :2006/07/01(土) 20:17:28 ID:???
キーワード、オシエロカス
525 :
522 :2006/07/01(土) 20:46:54 ID:???
>>523 MYSQL AUTOINCREMENTでググってトップに出てくるマニュアルを嫁 カスw
ホントだw 「カス」って最高の褒め言葉だよな。カス様万歳!!
なんだ、SQLって難しいと思ってたけど簡単なんだね。 簡単だって分かったら勉強する気無くなった、困った、ハハハ。 先にPHPの勉強でもしようかな、でもどうせならCでCGI書いたほうが 速くていいよね。 PHPは動作確認とかがラクだけど遅い、とにかく遅い。 それにPHPってガキっぽくて嫌。ajaxに手が出せない馬鹿が使うものでしょ? つまり何が言いたいのかと言うとね、もう寝るからおやすみ。
PHPはとにかく早い!! 何が早いかって? スクリプトの開発が他の言語に比べてとても早いんだ。 おれだけ?
漏れもPHPだな。お手軽に作るには一押し。 それ以上のことを要求するならCで作る。 javaは遅すぎて我慢できん。MySQLアクセスに特化すりゃ速いんだが、メモリ処理が・・・・
>>530 javaが遅いとはいつの時代の方ですか?
俺、PHPは JavaScriptのサーバーサイド版として使ってるw
533 :
510 :2006/07/02(日) 05:05:08 ID:iggkVlwd
うーん。 オートインクリメントはやめよう。 ユニークなcolumnがない。。DATETIMEがms使えればいいんだが。。
本当にCで組めるなら、PHPの遅さも論外だろう(w Javaで組めないphp廚ってだけじゃ? そろそろウィンドウズ版とスレ分けたほうがいいと思う。 あまりにもウィンドウズ特化な釣り多杉。
俺としては、笑えるor泣けるネタが提供されるので、 スレはwindows版とわけないほうがいい。
スレ違いの釣りが多すぎる
そりゃまあこれだけ入れ食いだとしょうがない罠
javaのメモリ処理が遅いっていまいちわからないな。 GCのチューニングが面倒くさいって事?
Mysqlのセキュリティ情報など得られる場所として何をつかっていますか?
改善されたとはいえJavaはグラフィック絡みというか ハードウェアに近いところの扱いに不満はある。 ハードと余り馴れ合わないのがJavaの長所でもあるけど。 Javaは周辺環境が揃ってるから、DBMSと連携するなら 他の言語よりも高い候補になるよね。
グラフィックに特化したらJavaの意味ない。 DirectXに特化したら、Windowsでしか動かないし。 まともなDB関係商用フレームワークが揃ってるのってJavaぐらいだしな。
今の時代に「商用だからまとも」だとか思っていたとしたら とんだ大コケするぞ
商用だと責任転嫁が出来るという天下の宝刀が使える。
MySQLも商用版があるんだけどなー。
データベース設計でお勧めの書籍はありますか?
商用だと金で尻拭いしてくれる香具師が居る。 自分で尻拭いできないスキルなのに、商用使ってない香具師は困った時にどうするの? MySQLの商用使うくらいなら、オラクル導入したほうがコスト的には安いよ。 月18万でもオラクルエンジニアぐらい集まるみたいだし。MySQL使えるエンジニアを集めるのは結構大変。
550 :
NAME IS NULL :2006/07/03(月) 11:11:55 ID:8+JKr8en
+----------+-----+ |date |title| +----------+-----+ |2005-05-02|hoge | |2005-05-02|hoge | |2005-05-04|hoge | |2005-05-05|hoge | +----------+-----+ というテーブル(table)に SELECT date,count(*) as count FROM table GROUP BY date; を実行すると +----------+-----+ |date |count| +----------+-----+ |2005-05-02|2 | |2005-05-04|1 | |2005-05-05|1 | +----------+-----+ になると思いますが、 +----------+-----+ |date |count| +----------+-----+ |2005-05-02|2 | |2005-05-03|0 | |2005-05-04|1 | |2005-05-05|1 | +----------+-----+ という風に表示させることはできますでしょうか。 バージョンは5.0.17です。
ねーもんは作れないから、日付連番でテーブル作ってそれに対して集計。
最近、ないものねだりが多いなw
DBを扱うにあたっての基礎の基礎をすっとばして いきなり実用しようとしている素人が増えてきたって事だな。 何もかもそこまで甘ヵねーよっつーの。 まずもっとちゃんとドキュメント嫁
初めてのプログラミング入門でいきなりPHP+MySQL使ってくる奴らが増えてるから、 こうなってくるのはしょうがないかもしれないな。
まずはVB+SQL鯖とかアクセスの基礎を積めばいいのにな。 後、正解をまず求めてるのもダメだな。次男以下の自己解決能力の無い香具師ばっか? ソースあるんだから弄って実装すればいいのに。
PHP+MySQLなら、PHPで処理すれば済むだけの話だろ
mysql_query()は、自分で構文を指定しなくてはいけない。 その他のだいたいの処理はPHPにまかせられるが。
PHP+MySQLの場合、 PHPのスレではもMySQLのスレで質問しろと言われ、 MySQLのスレではもPHPのスレで質問しろと言われるんだろな。 まぁ、もっと笑えるのが、Winでの場合だけどな。
ではも、、、は {では あるいは でも} の意味です。
access(フロントエンド)からデータ入力するときにIMEが自動的に日本語全角になるんだけど(フィールドの型はvarchar) 半角英数であってほしいんだけど どうすればいいですか
>>560 どうみてもAccessの問題だから、それ。
でもVBAでIMEの制御は出来たと思うよ。
560 できた。Accessの問題でした。すんません。そして ありがとう
563 :
NAME IS NULL :2006/07/05(水) 09:54:53 ID:Rry+HRv3
アンケートを作成していますが、 チェックボックスの回答結果は、 1選択肢=1行にするのが普通でしょうか? チェックされた選択肢が増えるとinsertする行が増えるので、 どうしたものかと迷っています。 問が何問かあって、50個のチェックボックスがあったとして、 そのすべてがチェックされると50行ものinsertになります。 こんなやり方で大丈夫なのでしょうか…?
>>563 をいをぃ。。。普通、アンケート1件が1レコードだろ。
おまいはアンケートとるとき1枚のアンケート用紙じゃなく、
1問ずつのカードにするのか?
565 :
NAME IS NULL :2006/07/05(水) 11:28:14 ID:4nAHq3Yc
OS:BSD DBver:4.1.20 httpd:apache2 webapp:mediawiki ->> Error in fetchObject(): Can't open file: 'page.ibd' (errno: 1) Backtrace: GlobalFunctions.php line 602 calls wfbacktrace() /homeと/var/db/mysql下をコピーしてサーバを変更したら こんなエラーメッセージが出たんですが、どんな原因なんですか?これは。
>>565 /homeと/var/db/mysql下をコピーしてサーバを変更が原因と思われます。
他に何をコピればよさげですか?
>>567 新環境では mysqlはちゃんと動いているか?
/etc/my.cnf は環境に合っているのか?
など、それだけの情報だけじゃ原因となるファクタが大杉
適当にコピーすれば動くと思ってるところが痛すぎ。
570 :
NAME IS NULL :2006/07/05(水) 14:42:35 ID:F4sjjQz+
前にC:\Program FilesをDVD-Rに保存してる人を見ました その人に「マウスの差込が丸いのと四角いやつの違いって何?」って聞かれました。 毎月1日にバックアップを取る几帳面な人ですが、無知は損だと思いました。
mysqlはちゃんと動いてるんですけどね〜 /etc/my.cnfとかはどっちもないんです デフォルト値でコンパイルしてbinを入れたんです。どっちも てっきりpublic_htmlとdbの/var/db/mysql下をコピればいいものだと ばかり思ってた゜・(PД`q。)・゜・
>> 571 mysqlのコンソールでコピーしたDBにアクセス出来れば mysql環境はOK
>564 正規化の仕方によってちがうんじゃないの?スレ違いだけど。
普通はダンプしてリストアするものだけど。 単純にコピーすれば動くってものでもない。
テーブルのデータを全消去してもオートインクリメントのカラムは次のINSERTで 1からに戻りませんが、これを戻すにはどうすればいいんでしょうか? カウンタをいかに 初期化するかわかりません
偉人くるぞこりゃ。
テーブル空にして↓とか ALTER TABLE `DBname`.`TBLname` AUTO_INCREMENT = 0;
くーるー きっと来るー きっと来るー
579 :
NAME IS NULL :2006/07/06(木) 17:44:45 ID:odfsaVHx
PostgreSQLはVarchara型は全部text型にする方が正解って聞くが MySQLもそうなのか?
Common SQL Environment というソフトを使っています。 このソフトは libmysql.dll というライブラリを使用しているのですが、 Shift_JIS 用と EUC 用があって、それらは公開されています。 ところが今回、DB側がUTF-8のため、それに対応した libmysql.dll が必要なのですが、入手方法ご存知の方いらっしゃいますか?
>>579 MyISAM ならできる限り char にするといいよ。
呼んだ? , イ)ィ -─ ──- 、ミヽ ノ /,.-‐'"´ `ヾj ii / Λ ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{ ノ/,/ミ三ニヲ´ ゙、ノi! {V /ミ三二,イ , /, ,\ Yソ レ'/三二彡イ .:ィこラ ;:こラ j{ V;;;::. ;ヲヾ!V ー '′ i ー ' ソ Vニミ( 入 、 r j ,′ ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ ヽ ヽ -''ニニ‐ / | `、 ⌒ ,/ | >┻━┻'r‐'´ ヽ_ | ヽ _ _ 」 ググレカス [ Gugurecus ] ( 2006 〜 没年不明 )
583 :
NAME IS NULL :2006/07/07(金) 11:07:05 ID:e/N/yrD3
>>581 理由は分からんけど、言うとおりに
char型 と text型 を使いわけることにしてみる。
ありがと
メモリ(ディスク容量)をどれだけ使うかとのトレードオフってわけだ。
>>585 そそ。
インデックスはメモリに載ってるけど
実データはディスク上だから、
ほとんどディスク容量を犠牲にして高速化って感じだと思う。
587 :
NAME IS NULL :2006/07/07(金) 15:49:31 ID:e/N/yrD3
>>584 でも、256文字以上を分けてたらテーブル増えるなー。
ちょっと考える・・・
次の笑える質問まだぁ?(AA略 ちんちん
アプリケーション側で固定長で組んで、最初は動的テーブル使って楽して、バージョンアップ案件とかでもう一稼ぎする時に固定長に変更で速度向上ですよ。
うは、リフォーム詐欺野郎キタ━━━━━━(゚∀゚)━━━━━━ !!
>>589 ひょっとしてインデックス張らないテーブル作って
「最近パフォーマンス落ちてきてるんだけど……」
「じゃあ改修が必要ですね。料金はこれくらい」
「それでお願い」
とかやってるんじゃないだろうなw
まずはハードウェアの増強で金稼ぐのが一般的ですよ。
ハード増強では自分の手柄に出来ない罠
商品はインスタントコーヒーなんかでも、 商品の味を徐々に変えて出荷しておき、 しばらくして元の味に戻したのを新商品とし、 「更に美味しくなりました」 って出してるって噂だし。
毎月バージョンアップしますって月額保守受けて、メジャーアップデートで最初に戻すのがオープンソースビジネスモデルですね。
596 :
NAME IS NULL :2006/07/09(日) 19:55:02 ID:W6qIkFOe
たとえば、 AテーブルとBテーブルに 主キー id(varchar(20)) FULLTEXT text(text) の2カラムがあったとして、 それらをMERGEテーブルで扱おうとしているのですが、 MERGEにはFULLTEXTは使えないと言ってはじかれてしまいます。 双方のテーブルから全文検索を行いたいので、MERGEテーブルから全文検索を行いたいのですが、どうすればよいでしょうか? MySQL4.0.XXを使用しています。
597 :
596 :2006/07/09(日) 20:59:46 ID:W6qIkFOe
すみません、くせでやってしまいました。 MySQL4.0.26です。
>>596 MERGEテーブルでは全文検索できません。
検索用のテーブルを別に複数用意して、
分割してコピって各々match againstしてunionでどぞ。
もしくは、64bitマシンでMySQLを動かすと吉。
全文検索はsenna使ってる?
両方のテーブルをマージするアプリケーションを書けばいい。
600 :
596 :2006/07/09(日) 22:33:15 ID:W6qIkFOe
>>598 ありがとうございます。
Sennaバインディング使ってます。
UNIONしてみようと思います。
なぜ64bitマシンだといいのでしょうか?
32bit処理を同時に2つ処理できるからに決まってるじゃん。
>>600 >>601 のとおり!ではなくて、
Max_data_lengthがデフォルト値で大きいのよ。たしか。
というわけで、どでかいファイルが気にせず扱える、、、はず。
MAX_ROWSとAVG_ROW_LENGTHを変えてもいいんだっけ?
603 :
311 :2006/07/10(月) 11:10:23 ID:met2DaFx
かなり更新頻度の高いテーブルなのですが、更新時にオーバーヘッドが発生します。 MySQLはオーバーヘッドがあるとデータが壊れやすいと聞きました。 最適化はどういった頻度で行えばいいのでしょうか?
かなりとかいう表現やめてもらいたいものだ。 でっかいファイルとか、長いレコードとかさ。 文学者じゃないんだから、ちゃんとした数字で言えよ。
605 :
311 :2006/07/10(月) 11:42:44 ID:met2DaFx
>>604 レコードの長さや更新頻度やカラムの種類なんかで、オーバーヘッドがどの程度かって予測できます?
オーバーヘッドがどの程度発生しているか数値で見れたらいいんですが。
1つのテーブルを例にとってみると、INSERTが一日1000回程度、UPDATEが5000回ぐらいです。
おもにUPDATEが行われるのカラムはDATETIMEとVARCHARです。
固定長ならオーバーヘッド出来にくいんですかね?
>>605 オーバーヘッドと言ってるけど、具体的にはアップデートするときに、時間がかかるって
こと?それとも他の意味かな?UPDATE5000回ということは、クライアントが結構あるわけだね。
そっちの排他処理とかの問題が大きいと思うけど考えてみた?
607 :
311 :2006/07/10(月) 13:17:54 ID:met2DaFx
>>606 速度低下で支障をきたしているわけではありません。
データの破損を心配しています。
排他処理は問題としていません。
現状一日一回の最適化で不具合はおこっていないのですが、これで大丈夫なのかどうかわかりません。
>>607 つか、何が問題なの?普通に運用できてるんでしょ。
速度に問題があるとかそういうことかと思ったけど。
データ破損うんぬんはバックアップとかRAIDの話だし。
ところで、オーバーヘッドって何なの?
609 :
311 :2006/07/10(月) 13:44:06 ID:met2DaFx
>>608 バックアップはもちろん取っていますが、それは万が一のためのもので、
データが多少でも紛失しては困ります。
RAID環境はありません。
オーバーヘッドと言いましたが、ゴミ領域の増大とINDEXの不整合化を問題としています。
先ほども言いましたが速度低下は問題ありません。
ただMySQLはこのような状況となった場合、データの破損が起こりやすいと聞いたもので、
心配になりました。
RAIDは残念ながら導入できません。できる範囲で強度を上げたいのです。
キチガイだ。あぼーんした。
>>609 データは破損するものだし、どうリカバリするかが問題。
DBだけで処理出来る範囲ではないよ。
ゴミ領域の増大とINDEXの不整合化も謎な表現。
削除されたHDD領域があるのが嫌だってことかな。
indexの不整合ってそんなのシステムやPG設計の問題だと思うが。
>>609 >データが多少でも紛失しては困ります。
>RAID環境はありません。
>RAIDは残念ながら導入できません。
DBを2重化。まあそれでもHDDが物理的に壊れたらキビシイから
logとかバックアップ先のHDDは別のところに汁
613 :
311 :2006/07/10(月) 14:52:09 ID:met2DaFx
>>611 データは破損するものだという事はわかっています。
>ゴミ領域の増大とINDEXの不整合化も謎な表現。
このような状況下(最適化をおこなっていない状況)だとMySQLはデータが壊れやすいと聞いた事があるのです。
これは正しくない情報なのでしょうか?
MySQLは頻繁なUPDATEがあるテーブルには向かない(壊れやすい)というのも、ここからきたものだと思っていました。
ただ、有料のSQLも予算の関係上使えないですし、PostgreSQLも速度の面で不満があります。
indexはテーブルの更新等を行うと、不整合を起こしますよね?速度低下はこのためではないでしょうか?
>>612 書き方が悪かったかもしれませんが、100%壊れないDBを期待しているわけではありません。
最適化でどの程度壊れにくくなるのかを知りたいのです。
年に1度データが壊れる可能性が3%あるとしたら、それを1%にできないかというニュアンスです。
残念ながら、ハードはいじくれません><;
>>613 なんでindexが更新ごときで不整合おこすんだ?
不整合ってのはキーと値が一致しないと言うことだぞ。わかっていってんのか?
615 :
311 :2006/07/10(月) 15:16:04 ID:met2DaFx
>>614 新しくINSERTした行や、INDEXが作成してあるカラムを更新するとINDEX効かないんでない?
自動的にINDEX作り直してくれないですよね?
内部的なものよくわからないんですが、そう理解してました。
617 :
NAME IS NULL :2006/07/10(月) 15:20:09 ID:3jihmA7Q
すいません、MySQLをインストールして初期から存在してる "mysql", "test"って言うデータベースは削除しても問題ないですか?
618 :
311 :2006/07/10(月) 15:20:57 ID:met2DaFx
>>616 なんか、、荒らす気はないんですが、、
気に食わない人はレスしないでくださいな。
MySQL板は失礼なのが多い。どうしてだろうか・・・
質問者も回答者も礼儀を持てないものか。
とっても大切なDBだからけしじゃだめだよ。ぜったい。 でも、普通のSEはすぐさま消してるよ。
620 :
311 :2006/07/10(月) 15:21:45 ID:met2DaFx
>>618 というかさ、DBの基本すら、わかって無いのでは?
初心者以前でしょそれって。
せめて、MySQLの本ぐらい一冊読んでからの方が良いと思うよ。
>>613 > ただ、有料のSQLも予算の関係上使えないですし、
ちゃんと GPL にした?
GPL で配らないのなら商用ライセンスを買わないとだめだよ。
623 :
311 :2006/07/10(月) 15:27:50 ID:met2DaFx
>>621 具体的に指摘してみたらどうですか?
わからないならレスしなくていいです。
>>615 違うよ。
そういう基礎がわかってない状態で勘違いをばらまくから
みんな変な反応をしてるんだ。いい加減気付け。
>>623 >indexきかない
って何だって話。
だから、DBしらんの?ってことじゃん結局。
わかんねーなら、わかんねーと言ってくれればそれなりのレスできるけど、
当然知ってることを、「とおもってましたあはは」といわれると切れるだろ。
626 :
311 :2006/07/10(月) 15:39:40 ID:met2DaFx
ああ。更新ではINDEXは更新されますね。 失礼しました。
もう夏休みなのかな?
>>311 オレの経験からすると 311程度の更新数なら数年間動かしてもDBは壊れない。
でも、それはそのシステムにマッチしたハードウェア構成と最適化された
メモリ設定、テーブルデザイン、インデックス、クエリ環境であれば・だ。
なので、誰も311の質問には答えたれないよ。
失礼な俺様が、一日の仕事を終えてやってきましたよ。
>>617 やってみればわかるが、mysqlはまずいだろw
あとは偉人様に聞け。
本日の2案件も笑えました。 一旦収束したようですので、次の話題に移りましょう。 では、次のかた、どうぞ↓
質問です
ttp://fedorasrv.com/mysql.shtml このページを参考にして、FC4にmysql-server.i386 0:4.1.20-1.FC4.1を
インストールしたのですが、rootのパスワードを設定してexitしたあと
ログインしようにも、設定したはずのパスが弾かれてしまいます。
行った操作は、設定したパスワードを「hogehoge」、サーバ名を「foo」と仮定して
set password for root@localhost=password('hogehoge');
set password for root@foo=password('hogehoge');
と言うように設定。
その後、selectでパスワードを見てみると"0398e2da79a2d6e2"みたいな
文字列になっていましたが、表記上暗号化されてるんだろうと気にしませんでした。
その後、eixtしてログインしようとすると
[root@foo ~]# mysql -u root -p
Enter password: ←hogehoge と入力
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@foo ~]# mysql -h foo -u root -p
Enter password: ←hogehoge と入力
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
となります。
よろしくお願いします。
うわぁぁ〜今俺の頭の中を「devだからデブ」というネタがぐるんぐるんしてる〜
>>631 パスワードの設定でこけているかもなので、
Mysql rootパスワードを忘れた時の一般的対処法 でぐぐれ
>>631 環境が判らんのだが
set password for root=password('hoge');
set password for root@'%'=password('hoge');
辺りではどうか。
>>637 気のせいではなく、そのパスワードハッシュはold-passwords
>FC4にmysql-server.i386 0:4.1.20-1.FC4.1
と書いてあるので、
OSはFC4
mysqlバージョンは4.1.20なんでしょう。たぶん、、、
639 :
NAME IS NULL :2006/07/11(火) 02:26:58 ID:9xHycgAR
バイナリログがたんまり溜まっててそろそろディスク容量がやばいです。 レプリケーションしてるんですがどうやって消せばいいんでしょうか?
>>638 4.1.xなら新しいのになってたとおもうけど、FC4のパッケージってわざわざold-passwordにしてるの?
そのへんがちょっと気になったんですよ。
>>640 Fedora Coreは最新のFC5のでもデフォルトはold_password=1
>>639 ググレば出てくる筈だが。オイラはやさしいので教えよう。
全SLAVE側で SHOW SLAVE STATUS; して、最も古いバイナリログを見つける。
MASTER側で、purge master logs to '古いバイナリログ'; を実行する。
これで、指定したバイナリログより前のバイナリログは全て削除される。
初心者です。 MySQL使ってサイト作ったら、「ソース文くれ」といわれたらあげなきゃいけないんでしょうか?
644 :
311 :2006/07/11(火) 13:30:05 ID:ol0Vlxfn
結局、皆さんは最適化なんて行っていないんでしょうか?
>>628 ありがとうございます。経験則が一番参考になります。
645 :
631 :2006/07/11(火) 14:06:57 ID:???
助言ありがとうございます
>>635 やっぱ再設定しかないですか?
>>636 設定を変えようにもログインできませんです
>>637 確かに今時短いハッシュだと思いました。
本来はもっと長いんですね。
ソース渡したく無ければ買ってくれ。 ミッションクリティカルな用途ならボラクルRACでもどうぞ。
648 :
631 :2006/07/11(火) 15:53:17 ID:???
--skip-grant-tables オプションによる再設定で片を付けました。
どうも再現のできない問題でしっくりきませんが
皆さん、お助言どうもありがとうです
>>636 再設定後、試してみましたが両方ともエラーみたいです
>>640 old-passwordにしているのは従来prgからの接続での互換性のためと思う。
Mysql323 のサーバで Mysql5系をインストールして使おうかと思うのですが、 どのようなメリット、デメリットがありますでしょうか? 速度が遅くなる、メモリが重複してもったいないなどが想像できるのですが 正しいでしょうか?
>>650 「Mysql323 のサーバで Mysql5系をインストールして」
というくだりがそもそも意味不明
Mysql323のサーバってのはOSだと思ってるのか?
>>652 単純に間違えです
MySQL323が入っているサーバに MySQL5をインストールして です。
>>650 入れ替えるのか、複数入れるのか判らんが
「取り敢えずやってみればいいじゃん」
速くなる場合もあるし、逆に遅くなる場合もある。
(総合的には向上したと思えるけど)
入れ替えによるトラブルも出るだろうが
"まだ"MySQL5.xを使ったことがないなら、そういったことも経験のウチ。
>650 やめとけーーーー ぜーーーーったい、こーーーかいするぞーーーー。
656 :
NAME IS NULL :2006/07/12(水) 10:47:14 ID:GGdkRuQC
PHPからレコードを一件削除したくて mysql_query("delete from money where val = 1234",$db); を実行したのですが、削除できません。 どこがおかしいのでしょうか? ちなみにPhpMyAdminからは削除できました。
>>658 なら巷のパッケージと使うならそのままだと対応していないものが
殆どなので、SPECファイル(もしくはそれ相当のもの)弄るなり
公式バイナリやソースを手で設定する必要はある。
まあドキュメントどおりにやっていけば難しくはないよ。
660 :
NAME IS NULL :2006/07/12(水) 16:04:15 ID:GGdkRuQC
"delete from money where val = 1234" ってSQLの文法に合っていますか?
ちなみにテーブル構造は idx int(11) date date str text val int(11) です。
>>660 ハンカチの用意をしながら聞くが、
phpでそのテーブルの内容を表示したことあるの?
Tableタグ使って表みたいなものを表示した事があります。 他にも、Html上から 「INSERT INTO」で追加したり 「select *from money where date」で絞込み表示までできています。 後は、削除のみなのですがうまくいきません。
>>663 ハンカチをポケットにしまって、
$db指定抜きにしてやってみるとどうかな。
自動的に探すはずだけど。
あとは、val=のとこでちゃんとselect文で該当データが出てくるか確認。
そこらへんみてみそ。
予約語くさいフィールド名変えたほうが早いんじゃまいか
[ ] でフィールド名をくくるとか
select文では該当データが出てきませんでした。 他に、フィールド名を「m_val」にしたり、括弧でくくってみたりしたけど 変化は無しでした。 ただ、PhpMyAdminからは削除ができました。
>> 667 最近ここ読むの疲れるなぁ。 単純に GRANT だったらプンプンビームだぞ。
夏休みの間は全ての質問に対して答えは「死ね」でいいよ
ぐぐれ この一言でOK
ここに質問する前に最低限 mysqlのコンソールから同じアカウントで接続し、 同じクエリを発行してみるなどの検証をなぜしないのか不思議だよね。
コマンドライン操作が出来ない香具師に限って、mysqlでつまづくと思う。 オラクルならコンソールついて来るし。 そう言う香具師には、アクセスとSQL鯖の組み合わせのほうが全部GUIでできて簡単なのに。 おまいにはそのレン鯖は向いてない。 クリック一つで使えるようなもっと簡単に使えるレン鯖見つけたほうがいいよ。見つかればいいね(w もうさ、PhpMyAdminって初心者ホイホイの害だよな。 下手にブラウザで簡単に使えると騙してるだけで実は、いろいろ知識が無いと使いこなせませんと言う罠。 踏み台鯖を量産するwebminみたい(w
つかさ、select文で出てこないの削除出来るわけねーじゃん。 myAdminで消してそれを消そうとしてました、あはは、ってオチじゃねーだろな。
なんでもselectすれば出て来ると思い込んでしまうのも初心者の罠。 mysql本を一通り読むだけでもそんなこと無いって理解出来るのに。 漏れの自治体の図書館でもmysql本ぐらい蔵書であるよ。
夏だなぁ
677 :
NAME IS NULL :2006/07/14(金) 17:54:46 ID:OOB3BPgY
Env:FreeBSD/MySQL4.1.3/Apache2 シェルで hostA# mysqldump --opt DBname > DBname.sql してから hostB# mysql DBname < DBname.sql して、ブログのデータベースを移動したんですが、 ちゃんとコピーされてるページと、記事がなくなってるページがあるんですが 記事が消失しちゃったんでしょうか? 何か原因あったら教えてください。
夏だなぁ 夏だからだよ 夏だなぁ
>>677 暑いけどアドバイスしてみる。
DBname.sql から対象となる記事のクエリを grepとかで見つけ出し mysqlの
コンソールから直で食わせてみて出たエラーをここに晒したら何かわかる鴨
両方のサーバからダンプしてdiffとりゃいいじゃん バカかよ
さくらインターネットのMySQLがInnoDBをサポートしていませんでした。 テーブルロックを使う場合、みなさん削除などのロールバックのエミュレーションはどう実現しているのですか? どう考えてもデータの整合性が合わなくなる可能性が残るのですが...
>>682 さくらのMySQLがどういう構成かは知らないが
BDBって使えないの?
BDBならトランザクションサポートしてるはずだが
684 :
682 :2006/07/15(土) 11:05:00 ID:???
MyISAMのみです。 それより、みなさんがMyISAMでどうやってデータの整合性を維持しているのか知りたいのですが。 まさかチェックツールを作って手作業でメンテナンス、なわけないだろうし...
細かいことは気にしないえ
結論:さくらのMySQLを使うのが悪い では、次のかた、どうぞ↓
687 :
NAME IS NULL :2006/07/15(土) 15:45:03 ID:tHLQIJEz
>>mysqlのコンソールから直で食わせてみて を、分りやすく解説してください
mysql> でinsertやってみるってことじゃないの?
>>687 >>688 f`::'ー 、,-、-、_ _,....-- 、_ _,....-=―ヽ―-、-、_ 、ミ川川川彡
,.r'‐'゙´ヽ,r' ヽ \ー、_:::::::::/,´:::::::::::,:::::::,::::::::ヽ::\`ー、 ミ 彡
,〃ィ ,rヽ'-ヽ i 、 、 ヾ,、 `'y',ィ´/::::::::/|::::::ハ_::::::::ト、::::\ \ 三 ギ そ 三
r'/〃// | i! |, \、_`ー!rf.,イ-,ィ/u ノ::::/ |::::`::::|iヽ::::::ヽ ヽ. 三 ャ れ 三
iヾ!l i /,.=ヽ i,ケ ハ,i', Y't=ラ゙,〉'|::::r'|! 彡´ ,!--、 |i!|::|::i::::::', ', 三 グ は 三
{ヾllッ-, 〃ノ'-'、||ii i|i| |-/! /^ヽ ´ ヾ|从ノ::i::::| ||三 で 三
>|゙! 0ヽ ノ' ´ 0 レノWノi |,.、!/ 0 0 ',' レ|,イ::::i,,_ | !三 言 ひ 三
',i ヽ- , _, " |i| | | ´ '´ハ',Y .!三 っ ょ 三
/l ` !| | i `´ r 'ー‐' u (-, ' | !三 て っ 三
/久 U |! i|'´'、u z_,ノ/ .i |三 る と 三
/イ |ヽ '==..‐_、 |!,'|Y´,ヽ ___ ハ_ ,/i | |三 の し 三
|ト|、',::::\ _,.-‐イ//-'´::::!\'ー‐--ニュ / ト_、 _| _!,=,|三 か て 三
〉:ヾ_'、::::`ー‐r< //イ|::::::_、:::`7i\ __,..-‐'´ .| |`゙"::"::|-"三 !? 三
'ー‐'´¨`'ー、/,rケ /,'1ノ人'-‐'`y'/::::, i| ,!, |`iiイ:::::::::| 彡 三
,〃7,‐/ { ´_,-'´ ,,‐!、=,/.〃::::i i|kハ / ,ヾ、::::::|.|! 彡川川川ミ
,ッ'、_〃'f /゙-<´ r〃 〃 /イ::::,!ッ'/ ', / / |ト、:|:リ
rir' 〃,y'、久_,.rヽ/〃 川/iケir'〃/ ,-'水´ / 〃 \
f::}'ー'〃_i| /::::f|::::', .〃 r/if |||ir' f| レ' r'o | .〃-、 〃 "i
,);'ーッ゙-. レ:::::/_|::::::',_,〃=_、!!|| !i/ ||:,ri !o ∨/
WindowsXPで使用しています。 ODBCドライバは MySQL ODBC 3.51でMySQLは5.0です。 今までこの組み合わせで何十台もインストールしてきたのですが 今回新品のeMachines(Gatewayだった所)のPCにインストールしたら動きません。 具体的には データ等MySQLフォルダは他のPCで動作していたものをコピーしました。 (サービス停止してコピー) 他のPCにインストールする手順と同じでドライバ等も同じです。 この状態で select * from aaa; を実行すると mysqlコマンドでは正常にデータが表示されます。 フリーソフトのMySQLManagerというソフトだと最後にエラーが出ます(ファイルが見つかりませんみたいなエラー) 自作ソフトだと最初からエラーが発生しましたとでて起動できません。 ODBCドライバは他のものはないようですしMySQLのバージョンを変えてもダメでした。 新品のXPなので何か余計なものが入っているということはないのですが 逆に何か足りなかったりするのでしょうか? よろしくお願いします。
結論:やっぱりWindowsは使わないほうがいい。
>690に関してはいつ誰が巻き込まれるかわからんと思うが。
普通にインストーラでインストールすれば動く予感
>>ファイルが見つかりませんみたいなエラー
>>自作ソフトだと最初からエラーが発生しましたとでて起動できません。
「みたいな」とか「自作ソフトだと」とか。
そういうアホな質問だからいちいち
>>691 みたいなのが湧いてくんだろうが。
>>694 いつもはインストーラなしのものを使っています。
インストーラありのパッケージだと他(例えばsystemフォルダ等)に何かコピーしたりレジストリに書いたりするのでしょうか?
>>695 そのPCがお客さんの所にあるので詳しい情報が分かりませんでした。
ごめんなさい。
ファイルが見つかりませんの方は多分
「ファイル名またはファイル番号が不正です」
っていうエラーでした。
調べてみた範囲では物理的にファイルが見つからない場合などに出そうなので
検索結果表示には関係ないようにも思うのですがそのフリーのソフトがどうなっているのか
分からないので何ともいえません。
自作ソフトというのは少し古いソフトでDelphiからBDE(ボーランドのデータベースエンジン)を使用しています。
最初の画面が表示される前にWindowsからエラーが出てしまい何も出来ない状態です。
起動時にはSQLは送っていませんので接続しようとしてエラーが出ているのかもしれません。
フリーソフトでも駄目なのでBDEというよりはODBCドライバがおかしいのでしょうか?
WindowsのODBCデータソースアドミニストレータへ登録と設定は同じものがしてあります。
システムDSNに登録
いろいろ試したのですがどうにもなっていません。
次はXPを再インストールしてみようと思っています。
質問です。 発行したSQLが上手くインデックスを使うことが 出来た、出来なかった。 もっと進んで「このKey_nameが使われた」 の様な事を知る方法はあるでしょうか? 現在は検索時間から推測して、こちらが使われたかな?程度の レベルで作成しており、なんかもっといい方法あるんじゃ… と思った次第です。
explain
699 :
NAME IS NULL :2006/07/16(日) 02:16:52 ID:GjPQyppM
質問があります。 MySQLを使用しなくても、同等のことを PerlやPHPのみで実現することは可能なんでしょうか。
>>700 可能ですよ。PerlやPHPでMySQL相当のDBMを書いちゃえばいいだけですよ。
>>700 どこまで同じなら同等と見なされるのだ?
現実問題としてPerlやPHPで実装される事は無いだろうが、 PythonやRubyの信者をおだててたきつければ何か書くかもナー
>>700 マニュアルでAPIに関しての説明を嫁!!!
mysqlコマンドで動作する時点でmysqlには問題は無いね。 そもそもmysqlじゃないとだめなの? perlやphpも無謀な悪寒。 組めるスキルあればつべこべ言わずに組んでるだろうし。
706 :
NAME IS NULL :2006/07/16(日) 12:37:18 ID:wg5H65V/
>>698 ありがとうございます。 思う結果を呼ぶことが出来ました。
707 :
696 :2006/07/16(日) 21:44:48 ID:???
>>705 は私へでしょうか?
ありがとうございます。
両方のソフト共ODBCドライバ経由でアクセスしているので
そこら辺で何かこういう例があるかなと思って聞いてみました。
パッケージとして数十箇所納品の実績があるので
ここだけ他のDBに変えるような事は難しいのです。
その他DELLとかSONYとかNECとかいろいろ新品に入れましたけど
何も問題なかったのですけどね。
ちなみにインストーラから入れてみましたが同じ結果でした。
いろいろありがとうございました。
708 :
NAME IS NULL :2006/07/16(日) 22:17:47 ID:/bWDoSMl
すでに存在するテーブルにtext型の列を追加したいのですが、 このテーブルのキャラクタセットはUCS2になっています。 新しい列はSJISにしたいのですが、どうやったらいいんでしょうか。
SJIS厨は死ね
utf8限定のほうが問題が無いよ。 他は苦労してください。 実績があるのに対処できないってスキル低すぎ。 今まで納入した所はたまたま奇跡的に動いてるだけの悪寒。
ぐええええええ。納品って、業者? ここで質問するようスキル低い奴に納品された所がカワイソス
業者というのは普通スキルが無いもの。 スキルのある業者に辿り着けるのはスキルのある顧客だけ。
713 :
NAME IS NULL :2006/07/17(月) 21:07:39 ID:Ep9MCpSq
SQLなら、ロックしないで同時に書き込むとファイルが壊れるとか気にしなくていいのですか?
>>713 複数のクライアントが"同時"にSQLクエリを発行しても
DBMS側で逐次処理されるので"壊れる"ということはない。
でも読み出してから書き込みのまでの間に更新がないことの保証はされない。
整合がとれないのを壊れると言うなら、"壊れる"よ。
スキルのある奴は納品なんぞ行かないわな。
ボラクルとかなら更新の悩みは解決できるよ。お金かかるけど。 本来はフレームワーク側で調整してSQL再発行すべき。
つか、その表示がよくわからん。 全く買ってない、のあとは1冊2冊ってこと?
719 :
718 :2006/07/18(火) 19:57:02 ID:???
ご丁寧にURL晒してくれてるじゃん。
>>718-719 Noneの48.7%だけで充分と思いましたので、失礼しました。
URL先で、他も確認してください。
721 :
NAME IS NULL :2006/07/19(水) 00:57:24 ID:aZxEE/GQ
つまりmysqlの本を出しても売れる見込みは無しってことだね。 みんな金無いからmysqlを仕方なく使ってる感じ?
ただで使えるMySQLなのに、参考書に金使うのが勿体無いのでは?
onlineマニュアルが充実してるってことだよ。 なので大抵の問題はググれば解決する筈。
そっかぁ、それで偉人がこのスレには必要なんだ。
726 :
NAME IS NULL :2006/07/19(水) 18:48:50 ID:wkTa6Tqp
重さ(BigInt型)を検索条件として持つテーブルがあるんですが、 countや、limitなどの命令を使うと急激に遅くなってしまいます。 すでにB木のインデックスは使っています。 データの件数は約300万件あり、たとえば以下のSQLでは50秒近くかかってしまいます。 select count(weight) from weight_table where weight between 50000000 and 60000000; 何か高速化するいい方法はないでしょうか。
>>726 ハードをもっと早いのにすればいいんじゃね?
どういうインデックスはってて、どういうパターンのクエリーがあるか書く
729 :
726 :2006/07/19(水) 19:25:06 ID:wkTa6Tqp
インデックスは、この重さのカラムのインデックスだけです。 クエリは、上述のような、ある重さの範囲にある行の数を調べるものと、 テーブルには他に名前や長さといったフィールドがあるんですが、 100件ごと区切ってそれらを出力するというものです。 select name, length, weight from weight_table where weight between 50000000 and 60000000 limit 100000, 100; のような感じです。
731 :
726 :2006/07/19(水) 19:49:10 ID:wkTa6Tqp
その本はもう持ってます。
>>729 メモリー不足してんじゃないかな
select big_result ....だったか、正確にはマニュアル確認してほしいんだが、
big_result(?)指定でselectするとディスクをワークに使ったはず
あと、これのリミット値もチューニングできたと思う
メモリーとディスクを増やすことを検討してみたら?
あと、between andをnot or で書き換えてみたらどうでしょ
単純にインデクスサイズをアドレスと数値と考えて 3,000,000 * 12 = 36,000,000で36MBくらい必要なのかな MySQLのキーバッファはデフォルトで8MBくらいだから それで遅いということも考えられる マシンにメモリーいくら積んでるか知らんけど my.cnfに以下の設定をして再起動してみたら? [mysqld] set-variable = key_buffer=256M
データベースはディスクアクセスさせたら負けだよ。 基本的にオンメモリでクエリを処理できる様に最適化するのが最速への道。 だからボラクルとかでメモリは積めるだけ積めって書いてあるのはそれ。
735 :
NAME IS NULL :2006/07/20(木) 02:54:02 ID:RaFHp6Le BE:860725297-
mysql5 + PHP Version 5.1.4なのですが、 mysqlのトランザクションって、スレッドIDごとに同一トランザクションとして 管理されているのでしょうか。 同一マシンから別ブラウザで連続的にデータを入れると、テーブルロック(排他)がうまく働かないため、 ためしに画面に、DBつないだ直後に取得したmysqlのスレッドIDを出力してみました。 結果、同じ1秒内に同じマシンから複数ブラウザでアクセスした場合、 どの画面にも同じIDが出ました。 同じスレッドIDで更新に行っているため別ブラウザでもロック待ちがかかってないという 結論でOKでしょうか。それともスレッドIDは関係ない??? 長々とわかりづらく書いてすみません。。。。
>>735 mysql_pconnect() を使っていませんか?
Webアプリなどでは p のつかない mysql_connect() の方が実用的です。
また、ちゃんと mysql_close() をすべきでしょう。
>>726 EXPLAIN SELECT で次のどれで動いてるか調べてみて
1.索引で範囲を絞ってから、表のデータを読みにいっている。
2.索引は使わず、直接表のデータをスキャンしている。
3.索引だけで処理を完了している。(これはcountのSQLの場合だけになるが)
予想ではあるが select count(weight) を select count(*) にかえると1が3に変わる気がする。
InnoDB は count がすごく遅いよ 外部キーとか トランザクションとか必要ないなら MyISAMが鬼のように早い
漏れは枝葉の末端が詳しく書かれた書籍が欲しいけどなぁ ・mysqlのプリペアドステートメントにおけるアクロバット技 ・mysql-clusterのポイントと注意点、ノウハウ ・mysqlにオリジナルの関数を実装する手順・ハウツー ・mysqlにオリジナルのストレージエンジンを実装する手順・ハウツー こんな感じのがあれば間違いなく買う 幹の部分は偉人様で十分なので、そんな本なら1冊いるかいらないかだなぁ
そういう小技系はバージョンアップで変わるから書籍にはしにくい。 あとオプソの飯の種でもあるしねえ。
困った・困った。 その1: 3.x系ってスローログってサポートしてないんだっけ? その2: 4.x系ってLOAD DATA でソース側カラムのスキップはまだ出来ないんだっけ? フィルタ作るか・・・
742 :
NAME IS NULL :2006/07/21(金) 01:40:05 ID:mqNdfJur BE:163948234-
>>736 ヒントをありがとうございました。
ただ、apache側のログを見るとクリックアクセスした回数よりも
明らかに少ないログが出ていたため、ブラウザの仕様で
連続的にデータを投げたつもりが実際には投げられていないような感じがします。
コレはコレで問題ないと判断・・・していいのかなぁ。
何はともあれ、ありがとうございました。
調子こいて、ライセンス料値上げしやがった・・・ なめてんのか
3年前はpgSQLに押されてたけどBlogの普及でシェアをとったので これからは絞り取らせて貰いますよ〜 って感じなんだろうね まあビジネスだし仕方ないか、
まぁ多少いい時期に調子こいとかないとな。こくとこないかんな。
しょうがない 乗り換えるか
747 :
NAME IS NULL :2006/07/23(日) 19:50:51 ID:Ynqjr8ep
すみません。 MySQL Server 5.0インストールしてデータベースとテーブル作って テスト用のJavaプログラムで読み込もうとしてるんですけど、データベースに 接続できません。Javaのソースは import java.sql.*; class Sample1{ public static void main(String args[]){ try{ Class.forName(com.mysql.jdbc.Driver); System.out.println("1"); //ログ用 Connection cn = DriverManager.getConnection("jdbc:mysql:///mydb); System.out.println("2"); //ログ用 ・ ・ ・ てな感じで、コンパイルはできるんですけど、実行すると"1"までしか表示されません。 ちなみにJDBCは「mysql-connector-java-3.1.13-bin.jar」です。 環境変数は「C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\mysql-connector-java-3.1.13-bin.jar;.」です。 MySQLのユーザ、パスワードは入力してません。 わかる方いればアドバイスお願いします。
748 :
747 :2006/07/23(日) 20:07:03 ID:Ynqjr8ep
Exceptionの内容見たら、 java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO) ってでました。これってパスワードが入力されていないからエラー出たってことですよね…。 でもインストールする時にパスワードとかは入力しなかったのに…なんで?。
>>748 localhostからのアクセスをゆるさないのです
localhostからのアクセスをゆるすようにするか、
localhostからのアクセスをやめましょう
>>748 useridなしで接続できるよう設定されて無い に100カノッサ。
GRANTってしてる?
751 :
747 :2006/07/25(火) 01:38:42 ID:TZUKyVed
>>749 >>750 解決しました。
MySQLインストールし直してユーザIDとパスワードを共に
「root」にしてホスト名をlocalhostに変えただけで解決
できました。(ホスト名は関係ないかも)
ありがとうございます!
それとGRANTはユーザ作って権限与える、くらいしか知りません。
userテーブル見たらlocalhostのユーザが「root」でパス
ワードが空だったんでそれが原因だったんですかね?
rootのパスをrootって。。。泣けるぜ。。
パスワードを(それもrootのを)堂々とここに書きますか
おかげで100カノッサすりますた。
javaでもperlでも何で切り分けしないのかねえ。 mysql -u root localhostで接続出来ればmysqlは無実だしスレ違い。
>>755 その通りだよね。
って言うか、コンソールから実行計画とかしないでよく組めるなぁと。
同じエラーメッセージで localhostと書いたため、tcpのつもりが強制socketになってて苦しんだヲレガイル 別アプリだけどな
primary keyの意味が理解できません。 どんな時、使用しますか? 教えてくださいませ。
どんな時って。。普通にkeyとして使ってるけど。。。
キーといいますと?? マニュアルにもその詳細が載ってないんです。。 どんな意味・利点があるのかってことが
, イ)ィ -─ ──- 、ミヽ ノ /,.-‐'"´ `ヾj ii / Λ ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{ ノ/,/ミ三ニヲ´ ゙、ノi! {V /ミ三二,イ , /, ,\ Yソ レ'/三二彡イ .:ィこラ ;:こラ j{ V;;;::. ;ヲヾ!V ー '′ i ー ' ソ Vニミ( 入 、 r j ,′ <仲良くなってくれ ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ ヽ ヽ -''ニニ‐ / | `、 ⌒ ,/ | >┻━┻'r‐'´ ヽ_ | ヽ _ _ 」 ググレカス [ Gugurecus ] ( 2006 〜 没年不明 )
偉人は今年生まれの割に老けてる。。。w
764 :
760 :2006/07/25(火) 18:54:51 ID:???
うるっさい、 うるっさい、 ほんとにうるっさい、しばくぞ!
偉人は生まれながらにして偉人。
>>760 RDB のRって何だか知ってるか?> ばか
RDBでググると 「RDBラーメンデータベース」がTOPなんだなw
MySQL 4.1.20 WinXP あるユーザーにファイル権限を与えたいと思い、ルートから mysql>grant file on hoge.fuga to user@localhost identified by 'nurupo'; hoge →データベース名 fuga →テーブル名 と打ったんですが以下のエラーメッセージが出ています。 ERROR 1144(42000):Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used どのようにすれば権限を与えられるのか教えて下さいm(__)m
>>767 file権はテーブルにはつけられないので、
grant file on "." to user@localhost identified by 'ga!';
とすべし。
マイクロソフト製品に戻ったほうがいいよ。 アクセスとSQL鯖なら簡単にアクセス権の設定が可能。
771 :
NAME IS NULL :2006/07/26(水) 11:27:23 ID:SOeXTFs7
質問です 環境はphp mysql共に最新です。 10000レコードのデーターがあります。 フィールドAの内容を、 ソート順関係なしで、 上から順に、'1','2','3'〜'1','2','3'〜'1','2','3' と繰り返して編集していきたいのです。 利用目的は、10000レコードのデーターをランダムに3分割したいのです。 お詳しい方、アドバイスお願い致します。
772 :
NAME IS NULL :2006/07/26(水) 13:14:21 ID:fhTSqqh4
MySQL 5.0.22で、以下の問い合わせを行ったのですが、 むちゃくちゃ時間がかかります。 対策をご存知の方教えてほしい。 レコード数が1000件の環境とし、 hogeには、"A", "B", "C"の3種類のデータしかない。 select * from A where A.test = any (select max(test) from A group by hoge);
>>772 先頭に、explain 付けて ちゃんとindexが効いているか確認しる。
>>771 「上から順に」・・「10000レコードのデーターをランダムに」
って言ってること矛盾してない?
何したいか良く解らんが、order by rand() って調べた?
775 :
NAME IS NULL :2006/07/26(水) 14:17:38 ID:mcR9Av13
mysql_query("select sum(val) from tbl_data", $db ); を実行して得た値を取るにはどうしたらいいのですか? 戻り値みたら「Resource id 」って出てきました。
776 :
NAME IS NULL :2006/07/26(水) 14:22:03 ID:SOeXTFs7
意味が伝わらなかったようですので再送 質問です 環境はphp mysql共に最新です。 10000レコードのデーターがあります。 フィールドAの内容を、 上から順に、'1','2','3'〜'1','2','3'〜'1','2','3' と繰り返して編集していきたいのです。 利用目的は、10000レコードのデーターを3分割したいのです。 お詳しい方、アドバイスお願い致します。
>>775 mysql_query("select sum(val) as total from tbl_data", $db );
とか名前付けて取る。
>>776 select t1.hoge, t2.hoge,t3.hoge from hogetable t1, hogetable t2, hogetable t3
where t1.id=1 and t1.id=2 and t1.id=3;
主キーが連続していれば・だが、こんな感じで数字の部分をプログラムで回したらどうだろうか。
779 :
778 :2006/07/26(水) 17:20:51 ID:???
ミスった、 where t1.id=1 and t2.id=2 and t3.id=3; だな。
なんかphpスレのほうが適切。 mysqlに限定した話じゃないし。
>>775 $res3が返値として
$data = mysql_fetch_array ($res3);
echo $data["sum(val)"];
echo $data[0];
とかでいんでね
>>776 ユーザー変数使ってif(@t1%3=0....なんてやるとか。
普通にcreatetableでselectするのもあるけどindexついてこないし。
783 :
NAME IS NULL :2006/07/26(水) 22:40:23 ID:RmhxYySk
>>772 select X.* from
(select * from A) X,
(select max(text) from A group by hoge) Y
where
X.test = Y.test
で、ごまかせ。
>>776 やっぱり意味がよくわからない。
わからないなりに考えてみた。
alter table tbl add tmp int unique auto_increment;
alter table tbl change tmp tmp int;
drop index tmp on tbl;
update tbl set tmp = tmp % 3 + 1;
なんてしてみると、tmpというカラムに1から3の値が入るけど
そういうことがしたいわけでもない?
ググるベタは、質問もヘタ。正しく課題に向き合っていない証拠。
786 :
NAME IS NULL :2006/07/27(木) 18:06:37 ID:xsOVow74
Turbolinux 10 Server(SP1)にMySQL 3.23.54aをインストールしようとしたのですが コンパイルをすると : undefined reference to `errno' collect2: ld returned 1 exit status make[2]: *** [mysql] エラー 1 make[1]: *** [all-recursive] エラー 1 make: *** [all] エラー 2 っとなってうまく行きません。 何か回避策はありませんか?
3!? なんで3?
789 :
786 :2006/07/27(木) 22:40:43 ID:???
>>788 今まで動かしていたサーバーがそのバージョンで動いていたのですが、結構古いマシンなので新しくしようかなと思っているんです。
それで3.23という異様に古いバージョンになっています。
データベースのバックアップとリストアぐらい出来ないの?
>>790 バージョンがずれてもそんなに問題ないですかね?
792 :
786 :2006/07/28(金) 08:17:07 ID:???
↑786です
自分で検証してください。それがオープンソースを使う宿命。 オラクルなら丸投げで検証までしてくれるよ。
>>786 gccのエラーメッセージ "com_source(String*, char*)" でググれ。
普通にやってコンパイルが通らないだけなら世界に沢山の悩める子羊がいる
と思え。結構ヒットしたぞ。
795 :
NAME IS NULL :2006/07/28(金) 11:08:35 ID:NNcwfR+K
特定の列を変更したいのですが、 たとえば以下のTableがあったとして +----------+-----+ |name |value| +----------+-----+ |apple |2 | |banana |1 | |banana |1 | |apple |1 | |orange |1 | +----------+-----+ appleとorangeを変更して先頭に*を付けたい(*apple *orange)のですが、これを一度のSQLで実行する事はできますか? 変更する数が多いため困っています。 現在はループでUPDATEしてます。
>>795 update hoge set name="*"+name where name="apple" or name="orange";
ではだめ?
797 :
NAME IS NULL :2006/07/28(金) 12:41:37 ID:NNcwfR+K
set name="*"+name じゃなくて set name=concat("*",name)
799 :
NAME IS NULL :2006/07/28(金) 12:58:26 ID:NNcwfR+K
>>798 ありがとうございます。できました<(_ _)>
800 :
786 :2006/07/28(金) 13:59:40 ID:???
>>794 なんとかmake通りました。
ありがとうございました。
801 :
NAME IS NULL :2006/07/28(金) 15:04:20 ID:ZLc53hZl
最近になってメモリが非常に余っているにもかかわらず Out of memory; Check if mysqld or some other process uses all available memory. If not you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space というエラーが出るようになりました。 SWAPを効率の面から停止しているのですが、それが原因なのでしょうか?、、 MySQL4.0.26を使用しています。
情報を出さずに言われてもな
you can add more swap spaceって言われてるのにスワップ止めてますって(w メモり積めるだけ積んでくれ。
804 :
NAME IS NULL :2006/07/28(金) 21:02:21 ID:CqeJbMjk
windowsのMysqlってレジストリに何か書き込んだりしますか? 現在Mysql5が入っているのですが、Mysql3も入れようかなと思いまして。 同時に起動はしません。
>>804 サービスとかに登録するので、「レジストリに何か書き込んだりしますか」
の問いには、YESと答えざるを得ない。
ポートを別けるとか同時起動しないとかの工夫をすれば複数のバージョンを
インストールして動かすことは可能。
バーチャルPCとかで別けてみれば? 動作検証程度でしょ?
807 :
804 :2006/07/28(金) 23:44:56 ID:???
正確には、XAMPPを入れていて、これがMySQL5なのですが、本番サーバが MySQL3を使っているので、3を使わないと色々不便なので3を入れようとしています。 xampp/mysqlを消してそこにインストールすれば一番早いかなと思ったのですが、 レジストリをいじったりするのであれば、微妙ですね。 VMwareやVirtual PCに環境作るのと、WinにMySQLをつっこむのどっちが早いか なやんだのですが、WinのMySQLの方が早いかなぁと VMwareなどの場合Web鯖などのセットアップもしなくてはいけないので…
>>807 インストーラ使わない版を入れればいいんじゃね?
つか、サービスの登録くらいじゃなかったっけ>レジストリ
ま、Winの知識がないならどーにもならんかもしれんが。
mysqladmin: unknown variable 'pager=less' うっへり
本番鯖が3の時点で、XAMPPの選択が間違っている。 本番鯖を5にするか、XAMPPを諦めるべき。 ちなみにvmwareでも他にPC用意するだけと同じだからDB鯖がlocalhostじゃなくなるだけだよ。 本格的に鯖立て遣るつもりなら、ウェブ鯖/アプリケーション鯖/DB鯖と別ける構成も出来ないと困るよ。
811 :
NAME IS NULL :2006/07/29(土) 21:10:20 ID:6JKzWSwE
MAC OS-X 10.2.8を使っている者です。 MySQLをインストールしたいのですが、 ダウンロードページみつけられません。 知っている方ページおしえてもらえませんか?
812 :
NAME IS NULL :2006/07/30(日) 00:48:22 ID:X+uLC+T0
テーブルへのアクセス毎にSHOW TABLE STATUSであるテーブルのCheck_timeを記録して、 自分のアクセスしかないかアクセス毎にチェックしようとしたのですが(レンタル)サーバにあるCheck_timeがぬるぽです!どうしたらいいでしょうか? 自身のログイン回数や自身の最終ログイン時刻などの代替手段はないでしょうか? SHOW STATUSでログイン(コネクション)回数が分かったのですが、共有サーバなので使い物になりませんでした。。
815 :
NAME IS NULL :2006/07/30(日) 09:45:27 ID:DWDlwo1t
Mysqlってカラムは何列ぐらいできるんですか Accessって255列しかできないんですよね
255列あれば十分だろ。 そんなにたくさん列があるテーブルなんて、明らかに設計ミス。
>>817 設計はさせてもらえないこともあるからな
819 :
NAME IS NULL :2006/07/30(日) 14:25:40 ID:DWDlwo1t
>>816-818 ありがd
何列あるかわからないデーターを
処理しないといけないもので
アクセスでなくて、これでやります。
必要な列だけインポートする方法も試してみます。
ホントに列数未定義なの? なら列にIDふって普通に正規化したほうがいいよ 増減もAlter不要で自由度あがるし
正規化することで処理負荷増大→追加予算必要になる こともあるからな 学術としての正攻法で作ってカネかけるもよし 単に処理システムの一部として現実的な実装をするもよし
可変長列テーブルは別に処理負荷あがらんし手間もないから大丈夫。データにあわせて、何列か分からない=無駄な参照多いつーほうを解消できるメリットのがティモテ
>>809 my.cnf使ってるなら[mysql]のとこに pager=less を移してみ
以前似たようなことがあった。たしかドキュメント書いた人のミス
jsp上からコマンドプロンプトで作ったデーターベースに接続するには どうしたらよいでしょうか? Context ctx=new InitialContext(); DataSource ds=(DataSource)ctx.lookup("引数"); Connection db=ds.getConnection(); Statement sttSql=db.createStatement(); ResultSet rs=sttSql.executeQuery("SELECT * FROM テーブル名"); この構文の引数のところを変えるだけではだめですか? 教えていただければ幸いです。
列数未定義って。。。やるのはかまわんが破綻するのは目に見えてるな。
返信ありがとうございます。 列数未定義ですか・・・ もう少し詳しく教えてもらえませんか?
>>826 まあRDB的にはアレだけど動けばいいじゃまいか
>>827 その言い方だと、私のやり方で正しいようですね
ありがとうございました
私のやり方って何だよw破滅人生まっしぐらってことかw
OS:XPPro MySQL 4.1.20 sjis \マークの処理で教えてください create table testdata( id int(9) not null auto_increment, naiyou text not null, primary key (id) ) engine=InnoDB , default charset=sjis; というテーブルを作り、そこに以下のデータをinsertしました。 insert intu testdata(naiyou) values('c:\testdata\system\include'); でnaiyouの中身を見ると c:estdatasystem32include と\マークが欠落しています。これの対処方法を教えてください (だからWindowsは…なんて言わないで w)
>>831 >(だからWindowsは…なんて言わないで w)
おまえ自分が間違ったことしてるのに気づかず、
それをWindowsに固有するWindowsの問題だと思ってるの?
見てて痛すぎる。
SQLにしろなんかのプログラミングにしろ果てはHTMLにしろ
どこいってもエスケープ関連の概念はあるんだから
それに思い至らないのは完全な勉強不足でしょ。
どうやって
>>831 の段階まで進んだのかが疑問だ。
だからここで質問してるんでしょ。ぐだぐだ叩くのも見てて痛い。
>>831 \を\\にしてインサート汁。
\\じゃダメかと思われ。できるんか?
なんだ、普通に\\でできるじゃんか。実験して損した。
偉人はまだ?
>>833 こりゃまた、どうもすんませんでしたm(__)m
838 :
84 :2006/07/30(日) 19:35:26 ID:29G85lji
すいませんどなたか教えてください。mysqlにネットワーク経由で接続する場合 はどこで設定すればよいのでしょうか。現在PHP5.1 ,Apache2,localhostで接続 していますが、mysqlサーバーを別のPCにしたいと思っています。
>>838 あのさ
「現在PHP5.1 ,Apache2,localhostで接続」
と自分で言っている時点でなんで別のマシンに
接続する方法を思い浮かべようと、想像してみようとしないの?
質問を丸投げすれば(少なくともこのスレでは)何らかの解答は
得られるけどさ、もう少し問題を解決するための「想像力」を働かせようよ。
840 :
NAME IS NULL :2006/07/30(日) 21:05:48 ID:6Il9GTxJ
最近は PHP5.1 ,Apache2,localhost がどう動いているか 知らなくても簡単に使えるからね。 いい時代になったもんだ。
mysql_connect()の第一パラメータってホスト名じゃねーか あほくさ ちょっとは自分で調べたら?
842 :
84 :2006/07/30(日) 21:40:37 ID:29G85lji
>>839 "localhost"の部分をIPアドレスにしてみたのですが、接続できませんでした。
やはりどこか設定ファイルを書き換えてlocalhost以外に繋げるのかなと思って
調べてたら,my.cnfの設定の書き換え(unix)とあって探しましたが、windows環境
では、見つけられませんでした。もしよかったら次の手を教えていただける
と助かります。
844 :
84 :2006/07/30(日) 21:55:49 ID:29G85lji
>>843 ありがとうございました。すべて解決しました。
>>839 ,840,840の皆様このへなちょこにお付き合いいただきありがとう
ございました。
845 :
839 :2006/07/30(日) 22:00:20 ID:???
>>842 質問をする場合はそういう情報はあらかじめ提示しておくものだよ。
mysqlクライアントで接続先のマシンのIPを指定して接続はできるの?
具体的には、ユーザー名「hoge」、接続先マシンのIP「123.12.23.34」
だとした場合
$mysql -u hoge -p -h 123.12.23.34
とコンソール上に入力し、ログインできますか?という質問
>>845 グローバルアドレスを例に出すんじゃないよ。
847 :
811 :2006/07/31(月) 00:06:29 ID:HILh2Gyl
MySQL Clusterはメモリ上にすべてのデータを保持しているそうですが 、これってメモリ上にしかデータを保存してないということですか? だとしたら全サーバが同時に落ちた場合、データは?
>>848 プレステ2でセーブしないでリセット押したらどうなるか考えてみそ。
850 :
NAME IS NULL :2006/07/31(月) 14:31:30 ID:mmQlREuo
SELECT * FROM data WHERE date BETWEEN '2006/07/26' AND '2006/07/28'; で日付の範囲を絞った後 select date , sum(値) from data group by date; で日付ごとの値を集計するにはどうしたらいいのですか?
851 :
850 :2006/07/31(月) 14:43:55 ID:???
補足: 日付で計算範囲を絞った後、絞ったテーブルで更に日付毎の集計をするにはどうしたらいいのですか?
>>850 select date,count(*) from data group by date;
OSXは鯖版なら最初からmysql入ってたはず。クライアント版はシラネ。クライアント環境で動かす代物じゃないし。 windowsといい、sjisといい、素人に限って嵌りそうな環境で見事に嵌ってるのは何だろう? 入門書で前提にしてるような推奨環境で始めればスムーズに始められるのに。 マニュアルも読まないならソフト代の代わりに本とかで情報ぐらい買おうぜ。
854 :
NAME IS NULL :2006/07/31(月) 19:05:10 ID:mw76PMAn
あんだけ自動ガードされたらたまったもんじゃあねーな!
855 :
知を糞で返す :2006/07/31(月) 19:06:04 ID:mw76PMAn
テスト
856 :
NAME IS NULL :2006/07/31(月) 20:43:14 ID:N4ewC+Rg
InnoDBはなんと読むんでしょうか・・・
陰嚢DB
挿入不可DB
貞操帯DB
861 :
NAME IS NULL :2006/08/02(水) 23:27:41 ID:Cx7r1RKJ
すいません。コメントについての質問です。 -- は使えるけど、 /* */ は使えない?複数行の場合、どうすればよいですか?
MySQLだと非同期クエリって使えないんですかね。。
ものすごい変な質問でしたら申し訳ないのですが、 テーブル作成からDB登録までの一連の流れが書いている、 sqlファイルってどう使うんでしょうか? PHP+MySQLが使えるサーバーです。 PHPでクエリーを書くよりも、外部ファイルにまとめてたほうが綺麗なので、 そっちのほうがいいのですが、どう使うのかわからなくて…
>>861 ?何をしたいかわからんが、クエリに、/* XXXXX */ select 〜
とかしておいて、show processlist; やログで状況を把握することは良くするけどな。
866 :
NAME IS NULL :2006/08/03(木) 11:04:50 ID:fUSps9Wh
ふつう、INSERTすると、データはテーブルの一番上に追加されますよね? これをテーブルの一番下に追加することは出来ますか?
869 :
NAME IS NULL :2006/08/03(木) 11:26:41 ID:fUSps9Wh
870 :
NAME IS NULL :2006/08/03(木) 11:30:21 ID:fUSps9Wh
あれ、一番上になったり一番下になったりしてるな… ごめん。
>>870 MySQLに限らず、物理的にどこにinsertされるかなんてわからないので
取得順は不定というのを前提に考えないといけない。
並び順を決めたかったら order by で。
スキルアップ目的でレンタルスレッド掲示板のようなものを PHPを使用して作っています。 bbsスレッド bbsレス というテーブルがあると仮定して、 検索(取り出し)する際、 bbsスレッドテーブルから スレッドid(英字)を取り出して検索するのと、page_seq(一意性のある数字)を取り出して検索するのはどちらが可動性が良い(早い)でしょうか? どうかご教示ください。
873 :
872 :2006/08/03(木) 14:08:03 ID:???
追記 bbsスレッドからどちらかを取り出して そのクエリでbbsレス検索をする ということです。 お願い致します。
>>872 インデックスの状況やらテーブルの内容やらでファクタ大杉。
それを悩み検証するのがスキルアップっていうもの。
>>872 数値がいいにきまっておる。 文字列なんてダメダメ。
876 :
NAME IS NULL :2006/08/03(木) 18:42:24 ID:fUSps9Wh
>>871 なるほど! どうもありがとう。
これでまた知識が一つ増えた感じがして嬉しいよ。
878 :
NAME IS NULL :2006/08/03(木) 21:11:52 ID:xtff+ygY
FreeBSD 6.0 で使用しています。 最近、画面上にSegmentation Faultが出たため、確認したところ MySQL4.0.27がsignall 11で何度も再起動していました。 トレース情報等が何も出ないので、解析のしようがないです。 大変使用頻度の高いDBなのでクエリのログ統計が取れません。。 --without-debugでコンパイルされてるのですが、--with-debugにするとエラーは詳細に出るのでしょうか? 思い当たることは、同じサーバー上で同じバージョンのMySQLが動いていることでしょうか。。 インストール時にprefixで別ディレクトリに作成し、ポート、ソケットともに別の物を指定してきちんと稼働しているのですが。。
分からんけどPIDファイルが分かれてないとか
880 :
NAME IS NULL :2006/08/04(金) 03:17:09 ID:5hu1Gvnn
PIDファイルは分かれています。 configure時にlocalstatedirで分けたデータディレクトリ上にmy.cnfを置いています。 設定等もきちんと各各が読み込まれていて何も問題がないのですが、なぜか再起動します。 *.errにも再起動の旨しか書き込まれないんです。。
with-debugはそれなりに使えるのやってみる価値はあります SIGSEGVで再起動されてるならその原因を探すしかないけど エラーがエラーだけに原因が判明しても解決するかどうか
一応マニュアルにクラッシュ対応の手引きがあるが、あれってヘルプつーよりデバグしなさいって感じだよな
883 :
NAME IS NULL :2006/08/04(金) 05:53:32 ID:5hu1Gvnn
pid 49158 (mysqld), uid 3306: exited on signal 11 core dumpするわけじゃないので、ほんとお手上げ状態です。 デバッグ有効にしてコンパイルしてgdb起動で負荷かけて様子見てみようと思います。
884 :
878 :2006/08/04(金) 06:24:52 ID:5hu1Gvnn
runさせたら Program received signal SIGUSR1, User defined signal 1. 0x0826e1f7 in ?? () とでてきたのでbtしてみたら #1857 0x00000019 in ?? ()がだーっとでて 最後にError accessing memory address 0xbf800000: Bad address.とでました。 これはメモリが悪いんでしょうか、それともMySQLのバグ?;;
FreeBSDなら、trussってなかったっけ? straceだっけ?
普通はリナクス。 どこのバイナリ? 自分でコンパイルしてるのならシラネ。 どこかのなら、おまいの環境が悪い。そのディストリのスレで訊け。
887 :
878 :2006/08/04(金) 09:39:52 ID:???
truss: Cannot alloc -1534803213 bytes for fd_set output: Cannot allocate memory となってしまい1秒間しか記録できませんでした。。 今の所頻度が少なくなりましたが依然落ちます。。
888 :
878 :2006/08/04(金) 09:41:05 ID:???
>>886 自分でコンパイルした物です。
といっても、portsですが、、
まぁメモリテスト1回したほうがいいよ。
890 :
NAME IS NULL :2006/08/04(金) 10:38:04 ID:vHFIPEOK
MySQL5.0をFedoraCore5に ソースインストールしたのですが、 その場合、my.cnfってどこのディレクトリに格納されて いるんでしょう?? shell > locate my.cnf で検索してもでてこないので焦ってます。。
891 :
890 :2006/08/04(金) 10:47:08 ID:???
ちょっと寝ぼけてました。
>>890 はスルーしちゃってください。
892 :
NAME IS NULL :2006/08/04(金) 14:53:49 ID:7F4xQick
初歩的な質問ですいませんが、いまFTPごしにmysqlのデータを ダウンロードしています。そこでひとつ不安な要素があり 確認のために質問させてください。 MYD,MYIなどのデータは、バイナリデータなのでしょうか? それともアスキーデータなのでしょうか? ダウンロードする設定で、転送方式をどうすればいいか お教えください。 よろしくお願いいたします。
>>892 全部バイナリデータ。
FTPは出来るはずだがFTPの最中に更新が入るとバックアップしたつもりが
矛盾したファイルを大事に保存することになるので注意してね。
trussでシステムコール追えないのか。。 やっぱ環境がおかしい気がしなくもないが、 別のバイナリなら動くんだよね。 なんだろう。共有メモリ?パイプ?
mysqlの有効な監視項目はあるのでしょうか? postgreからmysqlに切り替えたのですが、MRTGでmysqldのプロセスを監視してもプロセス管理がスマートなのかあまり増減が分かりません。 ほかに監視すべき要素があるのでしょうか?
>>895 OSでのプロセス監視とはちょっと違うが、
見ておくべき監視項目はMySQLのSTATUSで調べられる。
mytopユーティリティを使うと便利。
897 :
895 :2006/08/05(土) 13:25:29 ID:???
>>896 さん、おへんじありがとうございます。
調べた結果mtop等も含めて検討してみます。
そもそもmysqlの監視で何を求めてるかだよな。 生死が知りたいのか、レスポンス状況が知りたいのか、リソースの使用状況が欲しいのか。 自分でコンパイルしてるなら自己解決するしかないね。他では問題ないし。 普通にRHELでも買って来て付属のmysqlバイナリパッケージをインスコすれば問題なく使えると思うよ。
mysql5.0のストアドプロシージャで動的SQLを作成して実行したいんですが、 文法がわからなくて困ってます。 たとえば引数としてテーブル名を指定するとそのテーブルの処理をしてくれる、 というような事がしたいんですが、どうすれば良いでしょうか。
マヌアルぐらい読めばいいのに。 調べるの面倒なら、ABから情報買えば?
>>900 それをいったらこの板の意味がなくなる罠。
答える気がないのなら無駄なレス消費するだけなんだから黙っとけ。
と、えらそうなこといってみたが
>>899 の答えは俺にはわからない。
>>899 ちらっとマニュアル眺めた感じではそういう使い方はできないのでは?
ストアドのパラメータに指定できるのってデータ型だけみたいだし。
だめもとでmysqlコマンドから以下のコードを試してみたら?
mysql> CREATE PROCEDURE testproc(IN p1 VARCHAR(32), OUT p2 INT)
-> BEGIN
-> SELECT COUNT(*) INTO p2 FROM p1;
-> END;
-> //
mysql> CALL testproc('mytable', @a);
エラーになったらあきらめれ。
903 :
NAME IS NULL :2006/08/06(日) 17:00:10 ID:h2rv+uvl
MySQL 5.0.24 を FedoraCore5 に 下記の流れでソースインストールしました。 1 shell> groupadd mysql 2 shell> useradd -g mysql mysql 3 shell> gunzip < mysql-VERSION.tar.gz | tar -xvf - 4 shell> cd mysql-VERSION 5 shell> ./configure --prefix=/usr/local/mysql 6 shell> make 7 shell> make install 8 shell> scripts/mysql_install_db 9 shell> chown -R root /usr/local/mysql 10 shell> chown -R mysql /usr/local/mysql/var 11 shell> chgrp -R mysql /usr/local/mysql 12 shell> cp support-files/my-medium.cnf /etc/my.cnf 13 shell> /usr/local/mysql/bin/mysqld_safe --user=mysql & あとから configure を変更したくなった場合に、 上記の例だと5,6.7だけ行えばOKでしょうか?? ちなみに、変更するconfigureは --enable-local-infile を付加するだけです。
フェドラコアスレで訊けば? make cleanしたほうがすっきり。
>>901 文法分からんとかいうのに答える必要なんぞないだろ
物には限度ってもんがある
MySQL5 ってどうよ
もう2ch飽きた…
908 :
899 :2006/08/06(日) 23:15:10 ID:???
>>902 そうそう、マニュアルに無くて困ってたんですよね。
知ったかして結局答えない人もいるみたいですけど。
とりあえず試行錯誤して、動的SQLを実行するところまでは出来ました。
CREATE PROCEDURE testproc (in p1 text)
BEGIN
set @sql = concat('select * from ',p1);
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
END
こんな簡単な文法も結構苦労しました・・・が、今度はこの実行結果をカーソルに入れて
逐次処理を行いたいのですが、declare cur cursor from execute stmt;
とかやってもエラーでちゃいます。。
詳しい方よろしくお願いします。
他人に頼るにしてもせめてエラーの内容ぐらい貼れボケ
910 :
899 :2006/08/06(日) 23:39:51 ID:???
>>909 申し訳ない。
execute stmt;の行を、
declare cur cursor for execute stmt;
とやるとこの行でsyntax errorになります。
(上の書き込みでfromとなってるのはミスです。訂正します)
syntax errorってただの構文エラーだろ 何でdeclare cursorにexecuteが入ってんだ? DECLARE cursor_name CURSOR FOR select_statement 以外に使い方があるなら知らんが
MySQLコマンドラインで日本語入力を可能にするには どうすればいいんでしょう?? Linuxのコンソールでは日本語入力ができてるんですが、 MySQL コマンドでログイン後はなぜか はじかれてしまいます。
913 :
899 :2006/08/07(月) 02:20:12 ID:???
>>911 だからそういう文法が無いことはわかってますよ。
どうすれば「execute」で実行した動的SQLの結果が
カーソルで処理出来るかどうかが知りたいんです。
というかそもそもそれが出来ないなら、executeを使わずに
動的SQLを実現する方法から見直す必要がありますけど。
cursorの使い方は自分もそれしか知らないです。
だから、それ以外に「文法が無い」のか、単にマニュアルに「書いて無い」だけなのか
ご存知の方がいたらお聞きしたかっただけです。
908からどうやって >だからそういう文法が無いことはわかってますよ。 >どうすれば「execute」で実行した動的SQLの結果が >カーソルで処理出来るかどうかが知りたいんです。 …を読み取れるのか 情報小出しにし過ぎ自分で勝手に試行錯誤しとれ
SQLだけで実現しようとせずにアプリケーション処理で実現するのがいいんじゃね
なんか知らんがMySQL5系おもしろそうだな
>>888 コンパイルフラグミスると不定期にクラッシュするへっぽこバイナリ出来上がるよ
自分で調べることも出来ないアフォが多いですね。
そーですね
>>912 --without-readline 付けてコンパイルした?
921 :
NAME IS NULL :2006/08/07(月) 15:00:54 ID:ZoPVfSyz
勉強不足なのは承知で、マジご教授お願いします。 4系では select tb1.hoge from tb1 left join tb2, tb3 on tb1.id = tb2.id and tb2.id = tb3.id where 条件 で上手くいってたのに、MySQL 3.23でエラー。。 下記にしたら 同じ結果が返ってこない。 select tb1.hoge from tb1 left join tb2 on tb1.id = tb2.id left join tb3 on tb2.id = tb3.id where 条件 同じ結果返さないのはどこが変ですか?
表示されたエラーメッセージやテーブル定義やデータや検索結果も晒してくれないと考えるのめんどい
>>921 上段の書き方ははじめて見るけどどういう意味でとっらいいのだろう?
tb1 と tb2 が左外部結合で、その結合結果と tb3 が内部結合
tb2 と tb3 が内部結合で、その結合結果が tb1 に対して右外部結合
tb1 に対して tb2 が左外部結合、同じくtb1 に対して tb3 が左外部結合
924 :
NAME IS NULL :2006/08/07(月) 19:16:35 ID:ZoPVfSyz
>>922 ごめんなさい
エラーはでません、結果は全て内部結合したのと同じ出力になってしまします。
>>923 tb2 と tb3 が内部結合で、その結合結果が tb1 に対して右外部結合 です
よろしくお願いします。
>>924 >tb2 と tb3 が内部結合で、その結合結果が tb1 に対して右外部結合 です
試しては無いけど、これでどう?
from tb1 left join (tb2 join tb3 on tb2.id = tb3.id) on tb1.id = tb2.id
926 :
NAME IS NULL :2006/08/07(月) 20:50:44 ID:ZoPVfSyz
>>925 ありがとうございます。
(tb2 join tb3 on tb2.id = tb3.id) → (tb2 『left』join tb3 on tb2.id = tb3.id)
left を追加しました。しかしMySQL 3.23でエラーが出てしまいます。
MySQL4.0.22ではエラーは出ませんでしたが、期待の結果とは違っていました。
長くなりますが、すみません。下記に例を書かせていただきます。
staff テーブル
|staff_id | name |
-----------------
| 1 | 山田 |
-----------------
| 2 | 鈴木 |
-----------------
| 3 | 佐藤 |
sales テーブル
|sales_id | staff_id | date_id | price |
-------------------------
| 1 | 1 | 2 |10,000 |
-------------------------
| 2 | 2 | 2 |9000 |
sales_date テーブル
|date_id | sales_date |
-----------------------
| 1 | 2006-9-10 |
-----------------------
| 2 | 2006-9-11 |
-----------------------
| 3 | 2006-9-13 |
欲しいのか下記のような結果です。
staffは全レコード出力されて、salesテーブルでstaff_idとsales_dateをヒモづけする。
|name | price | sales_date |
-----------------------------
| 山田 | 10000 | 2006-9-11 |
| 鈴木 | 9000 | 2006-9-11 |
| 佐藤 | null | null |
どうかよろしくお願いします。
外部結合一般の問題とMySQL 3.23固有の問題が混ざってて説明しづらいな。 そのsales テーブルに同じstaff_idのレコードは複数ありえるの?
928 :
NAME IS NULL :2006/08/07(月) 22:32:49 ID:ZoPVfSyz
>>927 はい。salesテーブルに同じstaff_id のレコードはありえます。
ただ、staff_idとdate_idではユニークになります。
よろそいくお願いします。
項目名ってidなの?dateテーブルってのもすごいと思うが。
930 :
NAME IS NULL :2006/08/08(火) 11:35:13 ID:aOMvbJww
>>629 分かりにくくて、すみません。
例ですのでidだけで結ぶ単純な内容になっています。
dateテーブルも思いつかなかっただけで、実働では中身のあるデータになっています。
感じた事がそもそもMySQL3で、3つのテーブルを外部結合って可能なのでしょうか?
何度もすみません。1度例を整理します。
select
tb1.hoge
from
tb1
left join tb2 on tb1.tb1id = tb2.tb1id
left join tb3 on tb2.tb3id = tb3.tb3id
where
tb3.hoge = '条件'
上記のような場合、tb1.hogeをtb3.hoge = '条件'にかかわらず、tb1.hogeが全て出力される
記述をMySQL 3.23で記述するにはどのようにすればよいのでしょうか?
よろしくお願いします。
>>930 例とかでなくもう少し具体的にやりたいことをいってくれた方が良いと思う。
たとえば、担当者別に売り上げ明細を出力したいとか、集計表をとか、そんな感じで。
ビジネスモデルのエキスパートはこのスレにいっぱい居るしね。
932 :
912 :2006/08/08(火) 12:16:06 ID:???
>>920 してない!
それかー!!
さんくす!!!
933 :
NAME IS NULL :2006/08/08(火) 12:32:13 ID:gkWZ/N8n
MySQL-3.23.52-1 RPMからインストール後に(古いバージョンが使いたいのでyum等は使用してません)、 # cp /usr/share/mysql/my.cnf /etc/my.cnf とやると、 Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' というエラーが出てmysqlに端末から接続できません。 /etc/my.cnfを消すと、/var/lib/mysql/mysql.sockが生成され接続できるようになります。 /tmp/mysql.sockは生成されません。 調べると、このエラーで悩まれその後解決した方は結構多いようなので色々試してみたのですが、 解決できませんでした。 ※/tmp/mysql.sockにシンボリックリンクを張る手段はファイルがないので取っていません。 置くと接続できなくなるmy.cnfの内容は以下の通りです。(一部) [client] socket = /var/lib/mysql/mysql.sock [mysqld] socket = /var/lib/mysql/mysql.sock 今のままですと、my.cnfにより設定を色々変えたりすることができないので困っております。 ('A`) アドバイスもらえるとうれしいです...
934 :
912 :2006/08/08(火) 12:34:45 ID:???
>>920 見事できました!!
ちなみに、
shell > make clean
shell > ./configure ..... --without-readline
shell > make
shell > make install
という流れでOKですよね?
935 :
920 :2006/08/08(火) 13:24:54 ID:???
>>933 socket= の行頭に、# 入れてコメントにしてみ。
>>930 outer join
結合3つごときで騒がない。
938 :
NAME IS NULL :2006/08/08(火) 14:13:12 ID:aOMvbJww
>>931 確かにそうですが、実例ではあまりにも長くなりすぎます。
要は
>>930 のシンプルな事が分かれば、
あとは自己解決できるような気がするので、
>>930 でのご教授お願いいたします。
>>937 ありがとうございます。
outer join → outer left joinだと思うのですが、
outer join は外部結合を明示するだけで、
left joinと変わらないと認識してるのは間違いでしょうか?
ちなみに、
>>930 にouter left join としても結果は同じでした。
よろしくお願いします。
where条件にかかわらず出力ってなんだよ。なんでwhereいらねーだろw
940 :
NAME IS NULL :2006/08/08(火) 16:43:53 ID:gnS6pEmg
942 :
NAME IS NULL :2006/08/08(火) 17:16:20 ID:gnS6pEmg
)))941 ありがとうございます、言葉が足りなくて申し訳ありません。 WIKIも見たんですが説明に要されている言葉がすでに理解できなくて。 漠然としたイメージもつかめていない状態です。 よろしければ再度お答えがいただければ幸いです。
>>942 データベースの一種。グーグルだってDBだ。それでわからんなら、本でも買って読め。
その分からない単語を一つ一つググればわかるんじゃないの
>>942 データを大量に蓄えさせ、希望の条件でそれを
取り出す為の中枢ソフトだバカ。
946 :
NAME IS NULL :2006/08/09(水) 09:19:00 ID:GugtKQco
>>939 誤解を招いてすみません。
条件とは片方の条件を満たしていなくてもということです。
自分もその辺りが怪しいと思っているのですが、
t3.hoge = '条件'では、t1を絞り込んでる訳ではないので、
t1は全て出力されて欲しいのです。
けつのwhere内にt3.hoge = '条件'を書くのが変なのかと思うのですが、
すくなくとも、4系では問題なかったので・・
>>921 よろしくお願いします。
readline抜いてコンパイルするとどういうメリットがあるんだ? ヒストリ使えなくて不便なだけじゃないかと思うんだが
日本語が通らない腐ったreadlineがいんすこされているとか、 readlineいんすこするのが死ぬ程面倒だったとか、 readlineはGPLなので理由もわからず恐れたとかw
readlineが不要とか、変な動作起こす場合には省いたほうがいい。 漏れは要らないし、検証用途で忠実に入出力したい時にreadline通したくない場合があるので常に無効にしている。
950 :
NAME IS NULL :2006/08/09(水) 22:39:14 ID:MhvThrSV
MySQLのテーブルをAccessでテーブルを表示させようとするのですが ODBCでデータソースを作ってテスト接続もOKなのにテーブルを表示しようと するとエラーになります。 MySQLはVersion5でAccessは2002なのですが何か設定でもあるのでしょうか? 教えてほしいです。お願いします。
エラーになるというなら、エラーメッセージぐらい書け
業務用途ではGPLは避けとくのが無難。 GPL廚にソースを配布しろとかいちゃもんつけられることに成るし。 アクセスと連携するならSQL鯖が最強。 どうやらutfの設定とか出来ないでしょ? SQL鯖ならGUIで全部設定出来るよ。
業務用途?なにか配布するものでもあるのかねw
独自に色々な改良を加えているならまだしも、 readline入れてコンパイルしただけなら、 ソースよこせと言われてもconfigureのオプション渡せばいいだけなんじゃ・・・・ GPLでは、必ずしも再利用可能なフルセットである必要無く、独自に作った部分だけで良かったよーな
独自に作った部分を公開するなら、丸ごと公開したって良いじゃないか。 そもそも、業務でも内部で使ってるだけなら、配布しないから関係ないが。
skip-networking をuncommentしたら localhost で mysql -u hogehoge -p でつなごうとすると /tmp/mysql.sockで通信できないと怒られるのですが socketと外部からのポートの接続は同時にできないのでしょうか? googleで軽く調べたのですが出てきません。 よろしくお願いします。
$mysql -u hoge -p -h localhost
>>954 が正しいな
つーか、GyaoでRevolutionOSってドキュメンタリー
やってるから見てこいよw、GPL理解できないやつは
ストールマンが肉声でその辺説明してるからw
>>955 >そもそも、業務でも内部で使ってるだけなら、配布しないから関係ないが。
同意
>>959 少し前にGPLモノを含んだプロダクトの開発者が、リソースが余り無いので
「元のやつから改変してないから、そのGPLモノを公開してる
本家に行って入手してよ」と言ってたら
FSFから「それでも貴方(開発者)が供給しないと駄目」とか言われてた。
GPLが適用されるバイナリ渡すなら、それをビルドできる
全部のソースが提供できないと駄目。
# まあ確かに理解は出来るけど、弱小デベロッパには結構酷な話だよな。
Mysql4.0.25 InnoDB でDBをマスタ スレーブ 各1台ずつの構成で稼動している際に mysqlcheck -a DB名 もしくは ANALYZE TABLE **** をマスタで実行した際に 反映されたindexの情報などはバイナリログに残りスレーブにも適用されるのでしょうか? それともスレーブはスレーブで実行すべきなのでしょうか お、教えてください!!!!!
>>960 晒されてる詫び状の添付資料見たけど、
動作中のディスクのラベル(パーティションテーブル)上書きしたんでしょ?
ありえんな。
MySQLは全く関係ないね。
Windows2000 Professional MySQL 4.1.7 Apache1.3.33 PHP5.0.3 で作ったデータベースを、 WindowsServer 2003 MySQL 4.1.20 Apache 1.3.35 PHP 5.1.4 環境に、mysqldump で移そうとしていますが、 1秒くらいでさくさく動いていたクエリーが 極端に遅く(1分以上かかる)ようになってしまいます いろいろぐぐってはいるのですが、原因が不明です どなたか同様の経験された方っていらっしゃいますか?
SQLの独学用に、Windows XPマシンにMySQL 5.0をインストールしたのですが、 MySQL Command Line Clientで日本語の文字化けが発生しています。 見た目だけでなく、データベースの削除もできなくてちょっと困っています。 MyNAには類似の事例は見当たらなかったのですが、原因と対処法が わかる方はお教えください。 文字コードは以下の通りsjisベースで、クライアントとサーバは同じ文字コードです。 | character_set_client | sjis | character_set_connection | sjis | character_set_database | sjis | character_set_filesystem | binary | character_set_results | sjis | character_set_server | sjis | character_set_system | utf8 | character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ (自分でもいまさらsjisはどうかと思ったのですが、インプレス発行の「基礎SQL」を 自習テキストに使っているので、それに会わせました。この本ではMySQL 4.0.16の使用を想定しています) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | | クラ | | タ | | タブレチE | | ブラン | +--------------------+ 7 rows in set (0.01 sec) テキストに従いデータベース「クラブ」を作成したところ、「ブ」が表示されません。そこで 他に「ブ」を含むデータベースを作成しましたが、「タブ」は同様にブが消え、「ブラン」は 問題なし、「タブレット」はブではなくットの部分が化けています。
>>966 の続きです。
mysql> use クラブ;
Database changed
mysql> create table タブレット(
-> タブレット varchar(24),
-> タブレット個数 char(2));
Query OK, 0 rows affected (0.08 sec)
mysql> show tables;
+-------------------+
| Tables_in_クラブ |
+-------------------+
| クラブ\タブレチE |
+-------------------+
1 row in set (0.00 sec)
mysql> describe タブレット;
+----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| タブレット | varchar(24) | YES | | NULL | |
| タブレット個数 | char(2) | YES | | NULL | |
+----------------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
テーブル名、データベース名は化けていてもアクセスできるようです。
フィールド名は化けていません。
mysql> drop database ブラン;
Query OK, 0 rows affected (0.00 sec)
mysql> drop database クラブ;
ERROR 6 (HY000): Error on delete of '.\繧ッ繝ゥ繝暴/繧ッ繝ゥ繝暴db.opt' (Errcode: 2)
mysql> drop database タブレット;
Query OK, 0 rows affected (0.01 sec)
mysql> drop database タブ;
ERROR 6 (HY000): Error on delete of '.\繧ソ繝暴/繧ソ繝暴db.opt' (Errcode: 2)
mysql> drop database タ;
ERROR 1008 (HY000): Can't drop database '繧ソ'; database doesn't exist
「ブ」が末尾にあるデータベースはエラーのためdrop出来ません。「タブレット」は
文字化けがあってもdropできます。
とりあえずゴミとなった「クラブ」「タブ」データベースを削除できればいいのですが。
968 :
965 :2006/08/11(金) 23:52:37 ID:???
>>965 自己レスです
テーブルのインデックスを作り直したら、治りました
お騒がせしました orz
馬鹿が湧いてる。
普通はデータベース名に日本語は使わないお。
UNICODEだったら、日本語もアルファベットも同じように扱えるんじゃない? 今は普通日本語を使わないかもしれないけど、 将来は普通に使うようになるかも
機構よりも、どの程度一般素人に使われるかが問題じゃないのかな? 技術系の人なら、未知の問題を防ぐ為に多バイトコードの使用を防ぐ癖がついてるし
Vista日本語はなに使うの?あいかわらず、Shift_jis?
馬鹿避けに、日本語とかutfで作ろうとしたらエラー返せばいいのにな。 まともに動かないのに、エラー返さないってタチ悪い。初心者にも悪影響を及ぼすだけだ。 ところでjavaのペットショップ例のmysqlでのDB作るsqlどこかに落ちてないの? xmlから抜いてinsertするプログラム書くのマンドクセ。
すいません、超ド素人の質問で恐縮なのですが、 住所録みたいな内容のDBがあるとして、それにオートインクリメントで IDを割り振っているとします。 このとき、「ランダムなIDを10件選ぶ」というのはどうやればいいのでしょうか? ORDER BYなどで昇順・降順で選ぶのはできますが、ランダムに選ぶ方法が分かりませんでした・・・
>>975 スクリプトで呼び出すのなら、
スクリプト側で乱数を生成して条件式を作るが良いのでは?
>>975 SELECT *
FROM table
ORDER BY RAND( )
LIMIT 10
MySQL5.1で全文検索機能を利用しようかと考え phpMyAdmin経由で、該当フィールドの「全文」フルテキストキーで操作しようと試みてみたのですが ボタンアイコンが白色になって、押せない状況です いろいろ調べてみたのですが解はみつかりませんでした プライマリーキー、インデックスボタンは問題なく押せます 原因をご存知の方、お願いいたします
全文検索を行うテーブルはMyISAM型でなくてはならない
phpMyAdmin経由でしか弄れない時点でダメなのでは? SQL鯖ならGUIで弄るツールがツテルから苦労無く使えると思うよ。 なんだろ? 援交サイトで登録者をランダムに表示とか?
>>979 ぬおー MyISAMでこしらえたらできました
ありがとうございました
innoDBで使えないというのは悩みますね・・・
クマった
で、ぐぐるとMySQL+Sennaがよさそうで Sennaは、ひろゆき会社が開発元かw ありがとうございました
現在、掲示板+日記スクリプトのようなものを作っています。 そこで使っているあるテーブルのカラムには `diary_ID`, `diary_owner_ID`, `commenter_ID`, `new_comment_ID`, `timestamp` の5つがあります。 `new_comment_ID`が主キーで、`commenter_ID`にはインデックスをつけてあります。 このとき、以下のようなクエリを投げて期待通りの結果を得ることに成功しています。 SELECT `diary_ID` FROM new_comment WHERE `diary_owner_ID` = '1' AND `commenter_ID` <> '1' ORDER BY `timestamp` DESC LIMIT 7 しかし、WHERE節において「<>」を使うと、インデックスが使用されないと本に書いてありました。 その本によると「カラム名 <> 値」ではなく 「カラム名 < 値 AND カラム名 > 値」と書けばインデックスが使われるとのことです。 しかし上記のようなクエリ文の場合、他の条件(`diary_owner_ID` = '1' AND …)も あるので、そこに`commenter_ID` < '1' AND `commenter_ID` > '1'などと くっつけると、「AND」の解釈がおかしくなるらしく(?)、 期待した通りの結果が返されません。 この場合、どのようにWHERE節の条件を書いたら良いのでしょうか?
>>983 インデックスがどうのはとりあえず置いといて、
| `commenter_ID` < '1' AND `commenter_ID` > '1'
この条件に当てはまる commenter_ID ってどんな値?
>>984 commenter_IDには正の整数のみが格納されています。
つまりこの場合、「1以外のcommenter_ID」、ということです。
上記の例ではたまたま条件として「1」が入っていたので
`commenter_ID` < '1'は意味が無い条件となりますが、
実際の運用では「1」の部分の数字はクエリ毎に動的に変わり、「1」とは限りません。
一応正しいかどうか自信ありませんが報告しておきます phpMyAdminの「追加ボタン」で auto_incrementを設定してあるフィールド(ここでは'id')を含んだテーブルに データをINSERTする場合、エラーになり、入れられません SQL文を見ると INSERT INTO `test` ( `id` , `name`) VALUES ('', 'hoge'); となり「''」が問題のようです 値に「null」を入れたとしても、'null'になるためエラーになります よって、関数「LAST INSERT ID」を設定して INSERT INTO `test` ( `id` , `name` ) VALUES (LAST_INSERT_ID( ) , 'moemoe'); あげるか、「SQLボタン」でSQLステートメントを書くしかありません 1時間くだらんことで悪戦苦闘し、まさに 「ぬるぽ」 でした
>>983 そんな事はない。ちゃんと使われる筈。
mysqlのコンソール使って、クエリの先頭に、explain を付けてインデックスの使用状況
を調べれば。
>>986 一般的には、
INSERT INTO test (id, name) VALUES (null, 'hoge');
って書くけどね。phpMyAdmin 使わないからシラネ。
>>987 explainで調べてみたところ、やはり「`commenter_ID` <> '1' 」を検索するにあたって、
インデックスは使われていないようです。
「rows」の値が全レコード件数と同値でした。
>>989 not みたいな検索だとindexは使えないんじゃなかったっけ?
indexが使えないのは not like でした (しかもOracleの話だった)
992 :
983 :2006/08/17(木) 12:57:13 ID:???
>>990 はい、そうなんです。
>>983 でも書きましたが、「先輩に聞くSQLの素朴なギモン」という本によりますと、
「<>」や「!=」ではindexが使用されないそうです。
そこでindexを使用するようにWHEREの条件をしつつ期待通りの結果を得るクエリの
書き方について、
>>983 で書いたような質問となりました。
993 :
NAME IS NULL :2006/08/17(木) 13:11:49 ID:7Y3OcNy1
>>983 クエリの最適化による。複合インデックス使ってる?
>>993 あ、そうでした! 書き間違えました!!
`commenter_ID` < '1' AND `commenter_ID` > '1'
ではなくて、
`commenter_ID` < '1' OR `commenter_ID` > '1'
です。
しかし
WHERE `diary_owner_ID` = '1'
AND `commenter_ID` < '1' OR `commenter_ID` > '1'
と指定しても、期待した通りの結果が得られません。
イメージとしては`commenter_ID` < '1' OR `commenter_ID` > '1'をカッコで
囲んでる感じで条件指定したいのです。つまり、「OR」のかかる範囲を限定したい・・・と言いますか。
>>995 >イメージとしては`commenter_ID` < '1' OR `commenter_ID` > '1'をカッコで
>囲んでる感じで条件指定したいのです。
じゃあ、カッコで囲めばいいじゃない。
>>983 ここに質問する前に論理演算子の勉強が先。
>>996 以下のようなクエリを試してみましたが、やはりindexが使用されていないようです。
EXPLAIN SELECT `diary_ID`
FROM new_comment
WHERE `diary_owner_ID` = '1'
AND (
`commenter_ID` < '1'
OR `commenter_ID` > '1'
)
ORDER BY `timestamp` DESC
LIMIT 7
SELECT `次期首相` FROM 3人 WHERE `愛国心` = 'TRUE' AND `国益` > `難癖アジア人への“配慮”` AND `平和` = (`経済`+`外交`) GROUP BY `派閥` ORDER BY `ルックス` LIMIT 1
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。