MySQL 総合 Part4

このエントリーをはてなブックマークに追加
1NAME IS NULL
快速RDBMS、MySQLの総合スレです。

■ 公式サイト
http://www.mysql.com/
http://www.mysql.gr.jp/

■ リファレンスマニュアル
http://dev.mysql.com/doc/mysql/ja/

■ メーリングリスト
http://lists.mysql.com/
http://www.mysql.gr.jp/ml.html

■ 前スレ
MySQL 総合 Part3 http://pc5.2ch.net/test/read.cgi/db/1096838301/
MySQL総合 Part2 http://pc5.2ch.net/test/read.cgi/db/1079502373/
MySQL総合 http://pc2.2ch.net/test/read.cgi/db/1056942908/
2NAME IS NULL:05/02/11 21:25:15 ID:???
3NAME IS NULL:05/02/11 21:46:26 ID:???
前スレで以下のリファレンスマニュアルへのリンクがあった。

6.3.6.2 その他の各種関数
6.4.8 LOAD DATA INFILE 構文

1.8.4.4 ストアドプロシージャとトリガ
1.8.4.6 ビュー
2.2.6 MySQL がサポートしているオペレーティングシステム
3.3 データベースの作成および使用
4.4.1 GRANT および REVOKE の構文
4.5.6.5 myisamchk のその他のオプション
4.8.2 mysqld_safe(mysqld のラッパ)
4.9.9 mysqlimport(テキストファイルからのデータのインポート)
5 MySQL の最適化
6.2 カラム型
6.2.2.2 DATETIME、DATE、TIMESTAMP 型
6.3.2 文字列関数
6.4.1 SELECT 構文
6.4.1.1 JOIN 構文
6.8.2 MySQL 全文検索の調整
6.8.3 全文検索に関連する TODO 項目
A.5.3 NULL 値の問題
G MySQL の正規表現
4NAME IS NULL:05/02/11 22:03:18 ID:???
テンプレ以上
5NAME IS NULL:05/02/11 22:18:19 ID:???
6NAME IS NULL:05/02/11 22:23:30 ID:???
>>2s/pc2/pc5/
7NAME IS NULL:05/02/12 02:53:24 ID:pNOCDTMn
誰か MySQL++ と MySQL(4.0|4.1|5.0) の定量的に性能比較した人いませんか・・・(´・ω・`)
ttp://tangentsoft.net/mysql++/
8NAME IS NULL:05/02/12 03:29:44 ID:???
前スレかわいいのが1000とったな
9NAME IS NULL:05/02/12 16:09:29 ID:???
>>7
++ですか。
使ってる人ってどれくらいいるんだろ?
10NAME IS NULL:05/02/12 18:10:17 ID:???
maxっとmaxじゃないやつってなにが違うんでしょうか?
11NAME IS NULL:05/02/12 18:26:47 ID:???
>>9

C++ のドライバだろ。
12NAME IS NULL:05/02/12 18:40:52 ID:???
>>10
MAXは地域限定。MAXは糖度が高い。

もちっと、どのMAXか限定してよ。
13NAME IS NULL:05/02/12 18:47:58 ID:???
>>11
いや分かっているわけだが。
14NAME IS NULL:05/02/13 07:39:45 ID:???
bin-log ファイルが 20 コ溜ったので(^^;
cd /path/to/mysql; mkdir bin-log; mv hostname-bin.* bin-log して
my.cnf に log-bin = /path/to/mysql/bin-log/hostname-bin と書いて
mysqld を再起動させたんですが、root で
mysql> show databases;
してみると何故か bin-log ディレクトリが勝手にデータベースとして
認識されちゃってます(^^;
なぜこんなことになっているのでしょうか?

ちなみに
mysql> use bin-log
Database changed
mysql> show tables;
Empty set (0.03 sec)
(^^;
15NAME IS NULL:05/02/13 11:30:27 ID:???
>14
mkdir bin-log
でフォルダを作ったからでは?
フォルダ=DB という仕様です。
16NAME IS NULL:05/02/13 21:36:16 ID:???
バイナリファイルをMYDに格納するとそれ自体で圧縮されますか?
それとも事前に圧縮して格納した方がいいんですか?
あとmyisampack-myisamchkの圧縮率は一般的に効果的ですか?
17NAME IS NULL:05/02/14 00:09:00 ID:BtBlqqvx
>>16
圧縮はされない、効率的にレイアウトされる程度
(ファイルシステム/テーブルタイプによるが)
必要ならIn/OutにGZIP等を噛ます。
18NAME IS NULL:05/02/14 01:33:29 ID:???
Bツリーインデックスなデータベースだから
ファイルシステムもBツリーなReiserFS4を採用。
19NAME IS NULL:05/02/14 09:53:25 ID:???
mysqlccってかなり使えるね!
20NAME IS NULL:05/02/14 10:08:47 ID:???
>>12
??よく分からないのですが、maxにも色々あるということでしょうか?

MySQLAdministratorで設定するときに、my.iniに起動するmysqlを選択できますが、
mysqld、mysqld-ntとの違いは、単体のexeなのかサービスとして動作するものなのかの
違いだと思っているのですが、それぞれにある、mysqld-maxと、mysqld-max-ntとは
なんなのでしょう?

現在調べているmysqlの環境はmysql-4.0.22です。
21NAME IS NULL:05/02/14 12:15:12 ID:???
>>20
MySQL絡みだとMaxDBもあるし。
MySQLのバイナリでmaxであるかないかの違いは、
MySQL ABがコンパイルオプションで、「とある機能」を有効にして
ビルドしたかしてないかの違い。ただし「とある機能」はそのバイナリのバージョンにもよる。

>現在調べているmysqlの環境はmysql-4.0.22です。
前にも書いたけど、MySQL4.0.22だと

無印: 95/98/ME向け。デバックコードも含んでいるためサイズが大きく、動作は若干遅い。
opt: 95/98/ME向け。デバックコードは含まないため、無印よりも動作は速い。
max: optをBerkeleyDB(トランザクション)が使えるようにしたもの。
InnoDB(トランザクション)は、無印/maxのどちらでも使えるので、
MySQL3.xの頃のようにトランザクションサポートの有無の違いではない
nt: optまたはmaxをNT/2000/XP向けに最適化してビルド
(NTサービスとして起動、名前付きパイプの使用)

だから「mysqld、mysqld-ntとの違い」というのは合ってます。
2220:05/02/14 12:52:53 ID:???
>>21
なるほど!丁寧な解説ありがとうございます。
じゃあ、4.0.22の場合だと、maxを使用することで、BerkeleyDBが使用できるようになるということですか。

InnoDBとBerkeleyDBのどちらもトランザクションが使えるようですが、
内部的な難しい違いはほっといたとしたら、

・ロックは行単位でなく、ページ単位で行なわれる (ページ単位って?)

こんなもんでしょうか?
23NAME IS NULL:05/02/14 14:00:14 ID:???
>>22
ページ単位というはのテーブル内のレコード群を容量単位でロックするということです。
一方の行単位というのは1レコード単位でロックをかけるということです。
InnoDBとBDBとの決定的な差異はInnoDBがMVCC機能を持っているということに尽きるでしょう。
これはロック個所の書き込みだけをアトミックにするということです。
ロックされているレコードを読み込むことは可能。BDBのロックだと読み込みも不可になってしまう。
以上、某書籍の受け売りです(^^;
2420:05/02/14 15:19:32 ID:???
>>23
解説、ありがとうございます。
MyISAMは、InnoDBと比べて高速という利点があるわけですが、
InnoDBではなく、BDBを使う機会はあまりないんでしょうかね。

1データベース内で、テーブルの用途に応じて、MyISAMと
InnoDBを使い分けるって設計は一般的でしょうか?
例えば、マスタ系はMyISAMで作成して、トランザクション系はInnoDBを使うとか。
考えるの面倒くさいから、全部InnoDBにしようと思っていますが。
25NAME IS NULL:05/02/14 18:49:01 ID:???

SQLの最後の" "や";"の件

何だかこんがらかっています。超初歩的なことかも知れませんが恥を忍んでお聞きします。

SQLのクエリ文の最後なのですが、" "(半角空白)が入ったり、";"が入ったり、何も無かったり・・・
何がどー違うんでしょうか?

下記はネット上で拾ってきたクエリです。

最後に半角空白が入っている例(「常識」とおっしゃる方も・・・)
@$sql = "select wo,Ix,Iy,Zx,Zy from ibeam_tbl ";
A$sql = "INSERT INTO linkdata(gt_site, gt_kanri, gt_url, gt_os, gt_line, gt_bind, gt_mta, gt_www) ";

最後に";"が入っている例
B$sql = "SELECT COUNT(*) AS cnt FROM linkdata;";

)で終わる分には何もいらないのか?
C$query = "INSERT INTO ADDRESS (date,time,name,address,tel,email,memo) values ('$date','$time','$name','$address','$tel','$email','$memo')";
んぢゃ、Aとどー違うん?

何がどー違うんでしょ・・・(´・ω・`)?
26NAME IS NULL:05/02/14 19:05:40 ID:???
>>25
半角スペースはあんまり気にしない。
ただ、文字列を連結してSQL文を書くときに、スペースを空けることがある。
$sql = "sellect * from hoge ";
$sql = $sql . "where field_foo = xxx";
1行目の最初でスペースを入れないと、from hogewhere となってしまうから、それを避けるために
末尾にスペースを入れているのでは?
@Aのように1行で完結する場合はスペースを空ける必要はないが、
入れる時と入れないときと、考えずに全てに入れているのだと思う。

セミコロンは、プログラムからSQLを実行する際には、いらないと思う。
あってもなくても良いかと。
sqlを実行するコンソールからSQL文を入力するときなんかは、
1文の終わりを示すためのセミコロンを使う。
別の言い方をすれば、1つのSQL文を何行使って書いてもいいから、セミコロンでsql文の終わりを伝えている
sql> select *
sql> from
sql> hoge; ←ここで「select * from hoge」のSQLを入力し終わったことを伝えている。

sql> select *
sql> from
sql> hoge ←まだ続きがあるのでセミコロンは入れていない
sql> where
sql> field_bar = xxx;
27NAME IS NULL:05/02/14 19:09:00 ID:???
PHP+MySQLだと行末のセミコロンはダメじゃなかったかな
PostgreSQLならOKだったはず
28NAME IS NULL@25:05/02/14 19:59:32 ID:???
どうもです。
とりあえず、" "(半角空白)を入れておけば間違い無さそうですね。
どこかのページで「常識」なんて書かれてあったので、驚いていました!
(聞いてねぇよ〜状態!)

お手数をお掛けしました。ありがとうございました。 m(_ _)m
29NAME IS NULL:05/02/14 20:25:01 ID:???
PHP+MySQLでも行末セミコロン通るぞ。

だからといって、
・PHPの行末セミコロン
・シェルスクリプトの行末セミコロン
・C言語の行末セミコロン
・SQLの行末セミコロン
が全て共通の規約だと思っている時点でオワッテルと思うが。
30NAME IS NULL:05/02/14 20:45:29 ID:???
MySQLが実装する";"を解釈するパーサジェネレータのソースコードを見れば即解消だな
31NAME IS NULL:05/02/14 20:49:53 ID:???
MySQLが動作しない環境ってありますか?
32NAME IS NULL:05/02/14 21:09:59 ID:???
>>31
SEE MySQL Reference Manual 2.2.6 and 2.6
33NAME IS NULL:05/02/14 21:14:42 ID:???
>>31
ある。少なくてもウチのポケコンでは動かない。
34NAME IS NULL:05/02/14 21:16:09 ID:???
>>29
そういうことじゃなくて、複数行クエリには対応して
いないんじゃない?ってことを言いたいのだと思う。
35NAME IS NULL:05/02/14 22:20:27 ID:Np6w1724
素人ですが、phpMyAdmin 2.6.1 について教えてください。

自分のPC(Windows XP Pro)に MySQLとPHP、Webサーバーにはテスト用に
Apache をインストールしました。
2年ぐらい前、phpMyAdmin 2.2.7 を利用したことがありましたが、既存のテーブルに
レコードを追加する場合、「新しい行の追加」というメニューがありそこから追加
することができましたが、2.2.7 にはそれらしきメニューが見当たりません。

どなたか、ご存知の方既存のテーブルにレコードを追加する方法を
教えていただけますか。

それと phpMyAdmin 2.6.1の解説書やWebサイトがあれば教えてください。
(公式はなんだかごちゃごちゃして分かりづらいです)
36NAME IS NULL:05/02/14 23:30:19 ID:???
phpMyAdminでググれば君の疑問は解消されるであろう
37NAME IS NULL:05/02/14 23:38:54 ID:???
>>35
>どなたか、ご存知の方既存のテーブルにレコードを追加する方法を
データベース選択して、テーブル選択すると
一番上に「追加」ってリンクメニューが出てくるでしょ

>それと phpMyAdmin 2.6.1の解説書やWebサイトがあれば教えてください。
ない。いじり回して体で覚えなさい。
phpMyAdminはバージョンアップの頻度が高いから、解説書いてもすぐに古くなってしまう。
38NAME IS NULL:05/02/15 00:17:06 ID:s+Y66ik4
phpMyAdminの特権につきましてお願いいたします。
ローカルサーバーにphpMyAdmin-2.5.7-pl1をインストールして
テストしていたところ「特権無し」と表示されデーターベースの
新規作成ができなくなってしまいました。
apache、phpMyAdminとも再インストールしましたがダメでした。
どこを再設定すればよいのでしょうか。
環境はwin2000 service Pack4です。
よろしくお願いいたします。


39NAME IS NULL:05/02/15 00:49:54 ID:???
>>38
phpMyAdminのconfig.inc.phpファイルを開いて
$cfg['Servers'][$i]['user']に「root」
$cfg['Servers'][$i]['password']にrootのパスワード
を指定しなさい
40NAME IS NULL:05/02/15 01:21:36 ID:???
>>37
>phpMyAdminはバージョンアップの頻度が高いから、
>解説書いてもすぐに古くなってしまう。

だよね。俺も初心者向けに(自分じゃ使ってもいないのに、仕方なしに)
スクリーンショット貼り貼りの資料作ったんだけど、あっという間に陳腐化した。
41NAME IS NULL:05/02/15 01:49:37 ID:???
note that DO 'chmod 400 config.inc.php'.
42NAME IS NULL:05/02/15 02:24:09 ID:???
>>41
>環境はwin2000 service Pack4です。
43NAME IS NULL:05/02/15 03:38:31 ID:s+Y66ik4
>>39さんありがとうございます。
$cfg['Servers'][$i]['user']
$cfg['Servers'][$i]['password']
 の書き換えは行っていましたし、再インストールしてこの個所も書き換えた
のにうまくいきませんでした。最初にインストールしますとデフォルトの特権
が指定してありますが、おそらくこれを削除したのか書き換えたのだと思います。
 設定に関しましてもう一点不明なことがあります。正常に動いているときか
らですが、phpMyAdminのconfig.inc.phpの
$cfg['Servers'][$i]['host'] = 'localhost';
のhostをlocalhostに書き換えると動作しませんでした。host以外はだめでした。
 PHP、apache、phpMyAdminの再インストールで元に戻らないので、私の残さ
れた対処法はOSごとの再インストールですが、いろいろと時間がかかるの
で、できればそれは避けられたらと思います。使用ソフトのバージョンは次の
とおりです。
apache 2.0.39
MySQL 4(細かいverは?です。どこで確認できるのでしょうか)
phpMyAdmin 2.5.7-pl1
PHP 4.2.2
アドバイスよろしくお願いいいたします。
44NAME IS NULL:05/02/15 03:42:43 ID:qoH68y+6
基本的なことで悪いが
まぁ初心者でレン鯖使ってる奴はくれぐれも生パス情報書いてある
設定ファイルのパーミッションを間違いないようにしろよ。

特に問題ないならconfは600ぐらいにしとくべし。
45NAME IS NULL:05/02/15 04:25:22 ID:???
>>43
> MySQL 4(細かいverは?です。どこで確認できるのでしょうか)
% mysql --version
46NAME IS NULL:05/02/15 07:34:27 ID:???
cygwin 版って無いのか……
ググって集めた情報で make してみたが、どうにも作れなかった orz
47NAME IS NULL:05/02/15 20:24:48 ID:???
>>43
間違いなくrootのアカウントを指定したんですよね?
rootなら自分の権限を自分自身で変えられるはずだけど…

phpMyAdminの初期画面に「特権」てあるでしょ?
そこ見てrootの権限書き換えてみたら?
48NAME IS NULL:05/02/15 23:33:46 ID:???
4.1.10
49NAME IS NULL:05/02/16 01:43:21 ID:???
4.0最高!
4.1はバカ!
50NAME IS NULL:05/02/16 05:42:15 ID:???
>>49
まぁ、同意
51NAME IS NULL:05/02/16 09:07:48 ID:wZt+xKmc
php4.2.2
mysql4.0.23
phpMyAdmin2.6.1で
「扱えない拡張子のファイルです 」
と出てきてしまいます。
phpmyadminをおいてあるディレクトリでphpinfoとかは表示させられるので
原因がよくわかりません。よろしくお願いします。

52NAME IS NULL:05/02/16 10:41:01 ID:???
ITmedia エンタープライズ:MySQL、法人向けにもGPLを採用へ――料金体系も一新
http://www.itmedia.co.jp/enterprise/articles/0502/15/news107.html

違う〜。欲しいのはGPLじゃなくて、CMLの簡素化/低価格化の方だって...
53NAME IS NULL:05/02/16 11:21:23 ID:???
法人向けにGPL用意したってのはねぇ・・・
54NAME IS NULL:05/02/16 12:37:23 ID:???
俺いつも、GPLで分からなくなるので教えてください。
・MySQLを使ったシステムを顧客に売る
・MySQL自体はバイナリを使うだけで、改変とかは一切なし
・システムはRDBMSとしてMySQLを使っているだけだが、
 細かいSQLの互換性なんかがあるから、MySQLがないと
 動作しないシステムと考えてよい
・システム開発の費用を顧客からもらうが、
 MySQL自体を販売はしているわけではない。
・でもシステム導入の費用はもらって、ダウンロードしたMySQLの
 セットアップを請け負う
・納品物としては、MySQLはつけないでシステム本体のバイナリと
 ソースを顧客に納品する
・顧客向けのシステムなので、ソースコードを一般に公開はしない

これによると、
http://www.softagency.co.jp/products/mysql/process.html
「そのソフトの改変と再配布を無制限に誰にでも許可しますか?」
⇒Noなので、CMLにしなければならないの?

例えば、これが自社内システムならGPLでOK?
もしくは、MySQLでなくとも一般的なRDBMSならOKなつくりにすればOK?
55NAME IS NULL:05/02/16 12:53:32 ID:???
一応社内のみのシステムならOKだけれども、GPLのソフトが社外に
持ち出されるのを止めれるのかどうかとか問題は多い希ガス
5654:05/02/16 13:20:45 ID:???
>>55
>一応社内のみのシステムならOKだけれども、
それは、
>>例えば、これが自社内システムならGPLでOK?
こっちのことに対するOKですか?

それとも、一番最初に長々と書いた条件でも「CMLの必要なし」という意味でしょうか?
補足すると顧客の社内向けシステムと考えた場合です。

もちろん、仮想のケースを書いているだけなので、
あなたに「ライセンス違反じゃないよね?」って確認と責任を求めているわけではなく、
見解を聞きたいだけなのですが。
57NAME IS NULL:05/02/16 13:22:37 ID:???
現在postgresを会社で使用しているのですが
社長命令でMySQLも入れろといわれてしまいました_| ̄|○
で、いれようと思うのですが、postgresが既に入っている
サーバーにmySQLをいれて、同時に起動させてた際に
問題になる事や弊害はなにか有るのでしょうか?
googleなどで調べてみたのですが、それらしいサイトを
見つけることが出来ませんでした…(多分調べ方がわるいんだろうな)
そこでどなたか、そういうことをやられた事がある方
もしくは該当するようなサイトを教えてもらえませんか?
58NAME IS NULL:05/02/16 13:29:24 ID:luFECCIC
>同時に起動させてた際に
>問題になる事や弊害はなにか有るのでしょうか?
ない
ポスグレとMySQLのメモリ使用料だけ頭にいれとけ
59NAME IS NULL:05/02/16 13:41:00 ID:???
phpMyAdmin のドキュメントってコレ?
http://www.phpmyadmin.net/pma_localized_docs/Documentation_ja.html
60NAME IS NULL:05/02/16 14:07:43 ID:???
>>57
別に問題ないよ。
外からPort使って繋げるなら重ならないように注意するぐらい。
まあ、それも両方ともデフォルトなら重なることもない。
61NAME IS NULL:05/02/16 14:11:22 ID:???
>>54
どうやってMySQLに繋がってるかが不明。そこのところが重要。
あと最新のクライアントライブラリはPDS/LGPLじゃなくて、GPLだってことも。

6254:05/02/16 14:31:54 ID:???
>>61
返答ありがとう。なるほどクライアントライブラリが関係してくるわけですね。
MySQL本体は4.0.23として。

ケース1
 Connector/ODBC 3.51をつかって、Excelからデータ取得したりしている。
 GPLであって、ソフトはConnector/ODBCを使わないと動作しない。
 ⇒顧客に配布するにはCML必要?

ケース2
 でも実は、ODBC経由であれば動作するので、Connector/ODBCである必要はない。
 「このExcelアプリは、ODBC経由で接続できるDBならOKですから、
 適切なDBとODBCドライバを用意して、使ってください」と名目上の理由をいってアプリを売る。
 顧客は社内向けに自身でMySQLとConnector/ODBC 3.51を選択した。
 セットアップは請け負った。⇒こっちはCML不要?

JDBC接続も同様。 こんな考えはどうなんでしょうか?
63NAME IS NULL:05/02/16 14:54:53 ID:???
>>58
>>60
ありがとうございます
これで心起きなく使用できます。
64NAME IS NULL:05/02/16 18:23:58 ID:???
>>62
本来、後者なら回避できそうなんだけど、
http://pc5.2ch.net/test/read.cgi/db/1056943680/668-680
にあるようにMySQL的にはMySQLを使って再配布されたくないものは
CMLとれというのが基本方針だからなぁ。

下手な方便つかって回避策考えないといけないようなら、素直に
PostgreSQLを使うべきでは?
65NAME IS NULL:05/02/16 19:05:42 ID:???
素直に買うべき、とも言える罠
66NAME IS NULL:05/02/16 19:26:01 ID:???
にしても、新規の案件っぽいのに4.0を前提に作るっていうのは
いまさらどうよ。いくら4.1がアレだからといって、5.0でも今の
仕様は受け継がれていくわけで。
6754:05/02/16 19:53:33 ID:???
>>64
なるほどありがとう。

>下手な方便つかって回避策考えないといけないようなら、
>PostgreSQLを使うべきでは?

別にいま使おうと選定に迷っているわけでなく、
MySQLを使うときのライセンスについて知りたかっただけ。

サンクスです。
68NAME IS NULL:05/02/17 00:14:41 ID:???
>>66
5.0ってどうなん? 今4.0なんだが。

サブクエリが使えるとか、拡張されてる分は見りゃわかるんだが、
安定度や、パフォーマンスとか、管理面とかは公式にも比較資料が見当たらない。

5.0勧める以上は、数ヶ月くらい使い込んだ感想なんかを聞かせて欲しいんだが。


ライセンスに関しては、具体的事例を示して解説するページくらい作って欲しいな。公式に。
まぁ、高いなら高いで他DBも視野に入って来るから、そんな無茶な話にはならないとも思うが。
69NAME IS NULL:05/02/17 01:12:35 ID:???
>>68
windows版で4.1、5.0使うのはチャレンジャーつか人柱だとだけ。
70NAME IS NULL:05/02/17 01:34:09 ID:???
5.0はまだ開発途上ベータ版でしょ
4.1は5.0の機能を一部先取りバージョン
4.0は安定した枯れたバージョン
71NAME IS NULL:05/02/17 07:17:31 ID:???
>>51
WindowsXP/php5.0.3/mysql4.1.9/phpMyAdmin2.6.1で同じ様になってた。
http://allabout.co.jp/career/database/closeup/CU20040928A/index.htm
を見てlibmysql.dllっていうのをC:\Windows\system32内にコピペして、
php.iniをいじったらうまくいきました。PHP4だとこっちかな。
http://allabout.co.jp/career/database/closeup/CU20031114/index.htm

7271:05/02/17 07:35:21 ID:???
↑でうまくいったと書きましたが次の段階でエラーが出て困っております。
ttp://localhost/略/phpMyAdmin/index.phpを開きユーザー名とパスワードを
入力すると

Fatal error: Call to undefined function PMA_reloadNavigation() in
D:\Apache/略/phpMyAdmin/header.inc.php on line 132

というエラーが3箇所に出てうまく表示されません。
原因分かる方、教えてくださいm(__)m


7371:05/02/17 08:20:48 ID:???
すいません。自己解決しました。
http://sourceforge.net/tracker/index.php?func=detail&aid=1111855&group_id=23067&atid=377408
ここに載っていました。
74NAME IS NULL:05/02/17 11:29:57 ID:???
>>72-73
MySQL4.0→MySQL4.1での文字コート絡みの変更で
phpMyAdminの場合、結果としてそんなエラーとして現れるんだね。
改修されたみたいだけど、覚えとこ。
75NAME IS NULL:05/02/19 13:25:10 ID:N/12/J4L
Windows上のGUIクライアントからLinux上のサーバに接続する際の
文字化けについて質問させてください。

現在、以下の環境でMySQLのGUIクライアントを色々試しています。

[サーバ]
OS:Fedora Core 3

MySQL:4.1.9
7675:05/02/19 13:26:32 ID:N/12/J4L
すみません、途中で送ってしまいました…orz

ちゃんと書いて出直してきます…。
7775:05/02/19 13:36:28 ID:N/12/J4L
Windows上のGUIクライアントからLinux上のサーバに接続する際の
文字化けについて質問させてください。

現在、以下の環境でMySQLのGUIクライアントを色々試しています。

[サーバ]
OS:Fedora Core 3
/etc/sysconfig/i18nを以下に変更
LANG="ja_JP.eucJP"
SUPPORTED="ja_JP.eucJP:ja_JP:ja"

MySQL:4.1.9
/etc/my.cnfで以下を追記
[mysqld]
default-character-set = ujis
[client]
default-character-set = ujis
[mysql]
default-character-set = ujis

[クライアント]
OS:WindowsXP SP2
試したソフトウェア:
Navicat2004(試用版)⇒日本語が文字化け
MySQL Query Browser⇒日本語が文字化け

具体的には、Blob型、text型のフィールドに上記クライアントから
データを入れると、文字化けするという現象です。また、サーバ側
のプロンプトから日本語入力をすれば大丈夫なのですが、クライアント
からそのデータを見ると文字化けします。

Navicatには、サーバーの接続設定でEncordが選べるようになっており、
そこで「EUC」を指定しても変わらないみたいです。Query Browserの
方は、そもそもそういう設定が見当たりません。

もし、上記クライアントをEUC環境で使えている方がいらっしゃいましたら
設定方法等ご教授いただきたく、お願いいたします。
78NAME IS NULL:05/02/19 15:31:06 ID:???
FedoraはOSの標準文字コードがUTF8じゃなかったか?
サーバ側のプロンプトから入力して正常ってことは、UTF8の文字コードをDBに放り込んでる可能性が高い。
しかも、mysqlの設定がUTF8になっていない。

二重・三重に文字コードの扱いを間違ってるに一票。
79NAME IS NULL:05/02/19 15:45:44 ID:???
>>78
それは設定しなおしてるみたいだから、他へ影響は置いておけば
MySQL絡みのところとは関連しないと思うよ。

MySQL4.1.xのサーバとクライアント間のエンコーディング変換の
問題が関係してると思う。MyNAのFAQ参照して設定してみては?
80NAME IS NULL:05/02/19 16:37:54 ID:???
むしろMySQL4.1はUTF8が楽なんだけどな
8178:05/02/19 16:59:01 ID:???
あ、ほんとだ。
i18n書き換えているのか。
見落としていたスマン。
8275:05/02/19 17:22:31 ID:N/12/J4L
>>78-81

レスdクスです。

MyNAのFAQ読んできました。おおむね理解できました。

>>80さんが仰るとおり、自分もUTF8にしといた方が楽
なような気がしてきました。

VirtualPC上に開発環境組んでいるので、とりあえず
今の環境はおいといて、UTF8環境を作って試してみる
ことにします。

既存のリソースがEUCなので、安易にEUCにしてみたん
ですが、考え直す必要がありそうです。

それにしても、4.1からえらい変わりましたね。
自動変換はどうにかならんのだろうか…。

後で結果報告しに来ます!ありがとうございました!
83NAME IS NULL:05/02/19 20:11:50 ID:???
QueryBrowser自身はUTF8固定。
WinのIMEがquery browserに
どういうコードを送っているんだろうか? sjisか?
だったらsjisをutf8として扱う時点でQBはアウト。
つかえねー
84NAME IS NULL:05/02/19 22:14:37 ID:???
Navicatは単にblob,texgtを(MEMO)って表示にしてるだけじゃない?
コピペしたら値がわかるけど。
鯖がujisならnavicatのエンコードはEUCね。
8575:05/02/20 02:43:09 ID:8ytzqIR+
>>78-81
>>83-84

レスありがとうございます。>>75です。
サーバーをUTF8で構築したんですがどうもうまくいかず、
Apache + PHP + MySQL を最初から自前でmakeして、やって
みました。

先と同じくEUCで統一してやったのですが、結果は
QueryBrowserもNavicatも化けずに見れました!
ってか、MyNAに書いてあったことがやっとわかりました。

>>83さんがおっしゃる通りQBでダンプを見るとutf8になって
ましたね。でも見れるってことは、きちんとeucにして
送ってるってことなのかな?

ってなわけで、ご報告でした。皆さんありがとうございました。
86NAME IS NULL:05/02/20 22:27:46 ID:???
現在、MySqlとPerlとに奮闘中なんです。

今作ろうとしてるのは、サイトメンバー情報のDB化及び検索の機能みたいなものです。
それらはMySqlを使って作ろうとしてます。

さて、付随する掲示板とか日記とか作るとしたら、
パフォーマンスを考えた場合、
それらのデータもDBに突っ込むべきか、
それともテキストファイルに書いて、読み出すコードを書いたほうがいいか悩んでます。
DBに突っ込むと、余計な処理のために重くなりそうな気がしてます。
どうでしょう?
87NAME IS NULL:05/02/20 23:22:05 ID:???
DBI::mysql
88NAME IS NULL:05/02/21 16:54:30 ID:???
>>86
まず、WebサーバとMySQLサーバは同じマシンなのか、
自鯖なのかレンタルか、
さらにmod_perlは使うのかどうか、
書いてくれ。
89NAME IS NULL:05/02/21 22:34:17 ID:???
1つのデータベースにたくさんテーブルがあるとして、
そのなかから、あるフィールドをもつテーブルを抽出するにはどうすんの?


90NAME IS NULL:05/02/21 23:54:24 ID:???
9186:05/02/22 00:01:31 ID:???
サーバーはレンタルの共用です。
DBサーバーは別ですが、これもまた共用です。
mod_perlは今のとこ考えてません(使ったことがないし、利用不可のため)。

今やってるのサイトでは、すべてのデータをテキストで保存し、
Perlを使ってゴリゴリに読み書きするコードを書いてます。
パフォーマンス的には問題ないです。

でも、それだけでは面白くないので、再構築を考えているんですが、
複数のファイルを読むには、やっぱりSQLを使ってJOINさせたほうが断然楽だし、
いろいろな見せ方ができそうなので、MySqlのあるレンタルサーバーを契約しました。

DBがあるとは言え、ほとんどテキストデータである掲示板や日記まで
DBに突っ込んでもよいものかと思ってる次第です。

なお、SQLを使用したいものについて、現在のサイトのデータを使ってテストしてみました。
データ件数は、300件のテーブル3つと4000件テーブル1つ。
この程度なら速度的には問題なさそうですが、
今後データ件数が増えると、重くなりそう。


92NAME IS NULL:05/02/22 15:23:56 ID:???
>>91
DB がその程度で重くなるわけないっしょ。安心しろ。
重ければそれは設計か、コードがおかしい。
93NAME IS NULL:05/02/22 15:52:06 ID:???
>>91
>ほとんどテキストデータである掲示板や日記まで
>DBに突っ込んでもよいものかと

じゃぁ、何を突っ込む気だ?
94NAME IS NULL:05/02/22 16:46:54 ID:???
ロリポかさくらだろ
9586:05/02/22 22:20:08 ID:???
>>92
今んとこその件数だからそのとおり。
将来はかなり増やす予定。

>>93
DBに入れたいのは、メンバーの情報。複数のテーブルをJOINしたいから。
テキストでやろうと思っているのは、掲示板や日記。

たとえば掲示板だけで1テーブルにした場合、莫大な件数になりそうかと。
その点、テキストファイルなら、スレッドごとにファイルを分ければ
かなり軽くアクセスできると思っとります。
DBでも、インデックスとかきっちりやれば、全然軽いのかな。
我流でやっとるんで、一般的な手法がどうなのかあまり分からないっす。

>>94
鋭い。
96NAME IS NULL:05/02/22 22:53:08 ID:???
Windows版 4.1 の mysqld-max-nt のスレッド数が1万5千以上もあるんだけど、これって普通?
97NAME IS NULL:05/02/22 23:39:30 ID:???
>>96
それは全然普通じゃないが、そのスレッド数ってのは
どうやって調べた(コマンドやその結果の何から)の?
98NAME IS NULL:05/02/23 00:46:22 ID:???
>>97
タスクマネージャで見れるやつでないか?
9996:05/02/23 02:23:01 ID:???
>>98 のおっしゃる通りタスクマネージャです。
立ち上げただけでその数になるので、ちょっと気になったので質問しました。

……普通なのかな?
100NAME IS NULL:05/02/23 04:24:00 ID:???
>>99
タスクマネージャで見ると
mysqld-max-ntという名前の「プロセス」が
だーっと1万5千行以上も列挙されるってこと?

因みにWindowsはNT/2000/XPの何?
再現確認できるようならやってみるので。
101NAME IS NULL:05/02/23 10:19:32 ID:gvfioclR
postgresqlからの移行でexceptの変換にとまどっています。
違うテーブルであれば LEFT JOIN が使えるのですがどうすれば良いのでしょうか?

select name from w where date < '10:10'
except select name from w where date < '10:20' ;
102NAME IS NULL:05/02/23 12:00:16 ID:???
>>100
タスクマネージャで列を設定すれば、プロセスに対するスレッド数が見れる
103NAME IS NULL:05/02/23 16:29:59 ID:???
>>95
>DBに入れたいのは、メンバーの情報。複数のテーブルをJOINしたいから。
>テキストでやろうと思っているのは、掲示板や日記。

敢えてテキストファイルも使うなら、普通は逆のような気がするが…

まぁ、結局どうやってデータ保持しようが、
フロントの作りがタコなら、結局はこける。
104NAME IS NULL:05/02/23 16:43:18 ID:???
えぇと、レコード毎に被問い合わせの数を記録しておいて
任意の期間でその数の多さでテーブルをリファクタリングしたい。
具体的にはURLのカラムを対象にして踏んだ数のランキング100ごとの
テーブルを自動生成する。このSQL文の例で助言求む。MyISAMで。
105NAME IS NULL:05/02/23 18:17:50 ID:???
>>104
前提として存在するテーブルはなんなんだ?
106NAME IS NULL:05/02/23 20:25:59 ID:???
>>102
さんきゅ。そんな設定で見られるとは知らなかった。

MySQL4.1.10-max-ntでやってみたけどMySQL4.0.23-max-ntと同じだね。
通常13ぐらいで、接続毎に1増えるけど接続断でちゃんと減ってるし。
異常切断があったとしてもタイムアウト処理で正常に消えてる。
(スレッドキャッシュは0で確認)

どっちにしても起動直後から相当な数が上がってるというのは
異常としか思えない。
107106:05/02/23 20:26:53 ID:???
試したのは、WindowsXP PRO SP1
10896:05/02/23 20:41:55 ID:???
>>106
どうもです。
間違えてました。スレッドじゃなくてハンドルの方でした m(_ _)m
4.1.9-nt-max + Win2kprosp4 です。
OS ごと再起動しても、毎回 15,461 以上になります (情報が小出しになっちゃってすみません)
使ってて問題なさそうなので、とりあえず気にしないことにします。
109NAME IS NULL:05/02/23 22:58:57 ID:???
SQL*Plusをインストールしたんですが、改行が変なとこでされてて非常に見えにくいです。
どうやったら直せるんですかね?
トライアル版では無理なんでしょうか。
ご存知の方いたら教えて下さい。お願いします。
11086:05/02/23 23:03:08 ID:???
>>103

◇メンバー情報
A,B,Cテーブル:約280件
Dテーブル:約4200件
Eテーブル:約280件

A:B:C:Dは、1:1:1:n で、
A:Eは、n:1の関係。
なので、コードでJOINさせるのがめんどいし、
検索・ソート機能が充実させにくいので、DBで管理したい。


◇掲示板、日記
掲示板スレッド数:約160件
掲示板レス数:約1800件
日記利用者数:約160人
日記件数:約3500件
日記レス件数:約11000件

掲示板のレスデータはスレッド毎にファイルを分割。
日記データ、日記レスデータは、それぞれ利用者ごとにファイルを分割。
JOINも不要で、ソートも必要ないので、コードで書いても手間はかからない。


いずれも、再構築後は10倍に増やしたいと考え中。
いかがなもんでしょうか?
111NAME IS NULL:05/02/23 23:06:22 ID:???
その程度でDBが重くなると考えるのはあふぉだな
112NAME IS NULL:05/02/24 00:17:39 ID:???
数百万件くらい余裕
113NAME IS NULL:05/02/24 00:29:40 ID:???
まぁ、2chはテキスト保存だったりするわけだが…
11486:05/02/24 00:31:25 ID:???
上の「◇メンバー情報」のデータで今まさにテストしてるんですが、
一瞬で帰ってくるときもあれば、数秒待たされるときもあります。
だから気にしてます。
DBが共用だから待たされてるってことなのかな。
115NAME IS NULL:05/02/24 00:39:58 ID:???
>>114
ユーザー毎にCPUパワーまでパーティショニングして運用しているわけじゃないだろうから、
その辺はある程度はしょうがないでそ。
116NAME IS NULL:05/02/24 01:03:18 ID:???
たのユーザーのSQLがインデックスはってなくて全件検索はいってるとかあるとこわいな
117NAME IS NULL:05/02/24 01:22:55 ID:???
同人を一冊一冊MySQLに入れたいのですがどういったテーブルを作ればいいのでしょうか?
同人は平均150KBのjpgファイルが10-50枚が1単位(冊)です。見るときはこの1単位毎にします。
118NAME IS NULL:05/02/24 01:31:33 ID:???
普通にディレクトリ掘ってファイルシステムに入れとけ
119NAME IS NULL:05/02/24 01:38:06 ID:???
どうしてもMySQLに突っ込みたいのです。パスもかけれますし…
バラの(jpg|gif|png)とかもMySQLにいれて保護したいのです。
MD5のユニークインデックス使えば複重を弾けるらしいので(=゚д゚)ウマー
120NAME IS NULL:05/02/24 02:27:53 ID:???
本箱テーブル:(本ID、ページ番号、画像データ) 主キー(本ID、ページ番号)
使いたければ、MD5ハッシュも入れろ。
121NAME IS NULL:05/02/24 12:23:55 ID:???
バイナリデータ入れたら、入れるときも、見るときも
プログラムでも使わないとだめだから、面倒だと思うけど。(クエリじゃ無理だよな?)

他のデータと共に一元管理したいなら分かるけどさ、(ユーザ情報+顔写真とか)
122NAME IS NULL:05/02/24 14:36:35 ID:x9bV7eQL
質問させていただきます。
例えば下の様な2つのテーブルから、SELECT 文で
「『ある食堂(単・複)のうまいメニューが属するジャンル』が好物な人物」
を検索するにはどうすればいいでしょうか?

●「好物」テーブル
+------+----------+
| 人物 | ジャンル |
+------+----------+
| 太郎 | ごはん類 |
| 次郎 | ごはん類 |
| 三郎 | めんるい |
| 四郎 | めんるい |
| 五郎 | どんぶり |
+------+----------+

●「食堂」テーブル
+----------+----------+--------+--------+--------+
| ジャンル | メニュー | A食堂 | B食堂 | C食堂 |
+----------+----------+--------+--------+--------+
| ごはん類 | 玉子ご飯 | マズイ | マズイ | マズイ |
| ごはん類 | お茶づけ | マズイ | マズイ | うまい |
| ごはん類 | おむすび | マズイ | マズイ | うまい |
| めんるい | ラーメン | うまい | マズイ | マズイ |
| めんるい | タンメン | うまい | マズイ | マズイ |
| めんるい | ソーメン | うまい | マズイ | うまい |
| どんぶり | カツどん | マズイ | マズイ | マズイ |
| どんぶり | テンどん | マズイ | うまい | マズイ |
| どんぶり | 親子どん | マズイ | マズイ | マズイ |
+----------+----------+--------+--------+--------+

例えば「A食堂またはB食堂でうまいメニューが属するジャンル(めんるい&どんぶり)」が好きな人物
を検索して

+------+
| 人物 |
+------+
| 三郎 |
| 四郎 |
| 五郎 |
+------+

という結果を得たいのです。
MySQL のバージョンは 4.0.23 です。
よろしくお願いします。
123NAME IS NULL:05/02/24 14:56:09 ID:???
五郎君の好物で「うまい」ものはテンどんだけか。
カワイソウ(´;ω;`)ウッ…

内容ないのでsage
124NAME IS NULL:05/02/24 15:58:26 ID:???
どこの食堂も同じメニューが必ずあるのか?
125NAME IS NULL:05/02/24 17:01:31 ID:???
日替わり定食=残飯処理
126NAME IS NULL:05/02/24 18:28:25 ID:???
暇だからやってみた。
サブクエリ使わない場合は、TEMPORARY TABLE使って、こんな感じかな?

********************
環境の準備
********************
create table koubutsu(
hito varchar(20),
genre varchar(20),
primary key(hito)
);
create table shokudou (
genre varchar(20),
menu varchar(20),
a char(1),
b char(1),
c char(1),
primary key(genre, menu)
);
insert into koubutsu values
('太郎', 'ごはん類'),
('次郎', 'ごはん類'),
('三郎', 'めんるい'),
('四郎', 'めんるい'),
('五郎', 'どんぶり');

insert into shokudou values
('ごはん類', '玉子ご飯', 'x', 'x', 'x'),
('ごはん類', 'お茶づけ', 'x', 'x', 'o'),
('ごはん類', 'おむすび', 'x', 'x', 'o'),
('めんるい', 'ラーメン', 'o', 'x', 'x'),
('めんるい', 'タンメン', 'o', 'x', 'x'),
('めんるい', 'ソーメン', 'o', 'x', 'o'),
('どんぶり', 'カツどん', 'x', 'x', 'x'),
('どんぶり', 'テンどん', 'x', 'o', 'x'),
('どんぶり', '親子どん', 'x', 'x', 'x');

以上、準備。

create TEMPORARY TABLE tmp (
select distinct genre from shokudou
where a = 'o' or b = 'o'
);
select hito from koubutsu, tmp
where koubutsu.genre = tmp.genre;
drop table tmp;

食堂はA,B,C以外も増えそうだから別テーブルにした方がいいよね。
127NAME IS NULL:05/02/24 20:32:43 ID:???
Perl や PHP を使わずにバイナリデータをテーブル(のBlob型カラム)に挿入できますか?
128NAME IS NULL:05/02/24 21:24:58 ID:???
WinXP+MySQL4.0.23なのですが、レプリケーションのスレーブを設定すると
OSのイベントビューアにエラーが出ます。
シャットダウンと起動とレプリケーション起動のフツーのメッセージが、
例の赤いバッテンとともに追加されてくんですが、これって普通ですか?
・全ての動作は異常ない(レプリケーションもちゃんとしてできてる)
・レプリケーションを殺すとエラーが出なくなる。
・MySQLの再インストールしても変わらん。
・マスター側はイベントビューアには全然ログを出さない。
うーむ・・・
129NAME IS NULL:05/02/24 21:54:56 ID:???
>>127
できないこともない。
130NAME IS NULL:05/02/24 22:07:00 ID:???
>>129
是非とも教えてください
ググってもありませんでした
131NAME IS NULL:05/02/24 22:10:47 ID:???
>>127
できる
132SQLビギナー:05/02/24 23:18:53 ID:miHwNeG8
PostgreSQLからMySQLに移行したらMySQLのバージョンが古くて、
サブクエリが利用できないことが判明しました。
以下のSQL文をサブクエリなしで表現したいのですが、
どなたかご教授頂けないでしょうか。

select g.proid,g.gono,g.cateno,g.itemno,
catename,itemname,gname,gnameh,kakaku1,
ktanni1,kakaku2,ktanni2,kakaku3,ktanni3,
jika,rakuten,proname,picname,picno
from t_goods g
left join m_productor p on (g.proid = p.proid)
left join m_item i on (g.cateno = i.cateno)
and (g.itemno = i.itemno)
left join m_category c on (g.cateno = c.cateno)
left join (select proid,gono,picno,picname from t_picture where (proid,gono,picno) in
(select proid,gono,min(picno) from t_picture group by proid,gono)) as pct2
on (g.proid = pct2.proid)
and (g.gono = pct2.gono)
where g.cateno = 4
and g.itemno = 11
order by gnameh,picname;

よろしくお願いします。
133NAME IS NULL:05/02/24 23:25:26 ID:???
>>132
お前の仕事の手伝いなんぞ嫌だ
134NAME IS NULL:05/02/25 00:08:36 ID:???
>>132
何この丸投げ
135NAME IS NULL:05/02/25 01:02:22 ID:???
>>122
は、
>>126
も言っているとおり、正規化すべきだと思う。

また、「好物テーブル」 における「人物」が
「好物」をひとつしか選択できないのはどうかと。
これも正規化するといいかな。

例えた事象だから、本当のところはどうかわからんけど。


>>132
教授は頂けない。
136NAME IS NULL:05/02/25 01:07:26 ID:???
正規化ってどうするの?
属性別にテーブル設けて各テーブルにインデックスカラムを付けるだけなの?
137NAME IS NULL:05/02/25 01:25:35 ID:???
>>136 プログラマ的に気持ちよく分割されてればおk
138NAME IS NULL:05/02/25 01:40:58 ID:???
>>136
http://hccweb1.bai.ne.jp/~hdg93401/sad/db/seikika.html

食堂テーブルにある、ジャンルはメニューに従属しているから、分割とか。
139122:05/02/25 13:14:06 ID:z4T9Kjr8
>>123 >>124
まぁ例えなんで深くは考えずに

>>126
ちゃんとできました。
ご教授ありがとうございます!

>>135
アドバイスありがとうございます。
参考にさせていただきます。
140NAME IS NULL:05/02/26 00:07:27 ID:jOGQTQaN
ASP.NETでウェブ・アプリ作ってる方に聞きたいんですが、
MySQLに接続するために必要なAPIあれば教えてください。
ASP.NET on IIS with MySQL (or PostgreSQL) という構成です。
141NAME IS NULL:05/02/26 00:32:18 ID:???
142NAME IS NULL:05/02/27 00:36:56 ID:w+A6RWPj
ファイルにdrop文とcreate文を書いて実行したいのですが、
drop文で「Unknown table 'テーブル名'」と言われてしまい次のcreate文に移りません。
確かにそんなテーブル無いのですが、再作成のために書いておきたいのですがどうしたらいいですか?
143NAME IS NULL:05/02/27 01:13:49 ID:???
そこで止まることは無いと思うが。
144142:05/02/27 01:21:41 ID:w+A6RWPj
>>143
mysql -u root -ppassword -t testdb < test.sql
で実行してるのですが、
やっぱりUnknown table 'test_table'と言われて止まってしまいます。
ためしにcreate文でtest_tableを作ってから実行したらちゃんと実行されました。
postgreではエラーが出ても続行されたんですが・・・。
しょうがないんですかね。
145NAME IS NULL:05/02/27 01:26:59 ID:IfrbtRcK
146142:05/02/27 03:51:35 ID:w+A6RWPj
>>145
おお、これだ。
リファレンス本しか読んでなかったのがいけなかったみたいです。
反省します。ありがとうございました。
147NAME IS NULL :05/02/27 12:20:00 ID:mWXh/ugo
こんにちは。
PHP5+MySQLで練習をかねて資産管理を作っています。
まだ、登録・修正&削除・一覧表示をPHPで出来る所までしか
来ていないのですが・・・。
5つあるテーブルの4つまでは、何の問題もなく上記3つの
PHPページが出来たのですが、最後の一つのテーブルだけ
PHPから削除・一覧表示は出来たのですが、登録・修正だけが
MySQLのデーターベーステーブルに反映されません・・・。
コピペで作っているので、盆ミスでもなさそうな雰囲気なのです。

もしかして、カラム名に使ってはいけない文字ってありますか?
英小字一文字だと、駄目とかありますか?
よろしくお願いいたします。
148147:05/02/27 14:25:16 ID:mWXh/ugo
自己レスです。
すみません。
UNIQUE制約が邪魔していたみたいです。
お騒がせいたしました
149NAME IS NULL:05/02/28 18:39:12 ID:wLGA0zr7
mysqlについて質問なのですが、show processlistのコマンドを打つと、

mysql> show processlist;
+----------+-------+----------------------+-------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----------+-------+----------------------+-------+---------+------+-------+------------------+
| 33278669 | testd | 192.168.100.15:61610 | named | Sleep | 6358 | | NULL |
| 33301701 | testd | 192.168.100.15:63815 | named | Sleep | 5427 | | NULL |
| 33349421 | testd | 192.168.100.15:61724 | named | Sleep | 3511 | | NULL |
| 33353592 | testd | 192.168.100.15:54189 | named | Sleep | 3350 | | NULL |
| 33385893 | testd | 192.168.100.15:59342 | named | Sleep | 2130 | | NULL |
| 33441073 | root | localhost | named | Query | 0 | NULL | show processlist |
+----------+-------+----------------------+-------+---------+------+-------+------------------+

という結果が表示され、192.168.100.15からの接続でのsleep状態がずっと続いてるのですが、原因がわかりません。
他のサーバもローカルIPで接続してるのですが、192.168.100.15のサーバだけがsleepしています。
どなたかお助けください。
150NAME IS NULL:05/02/28 22:57:31 ID:s2lgItl0
Windows上のC++でODBCを使わずにMySQLをいじるには何が必要でしょうか?
(かねやんMySQLみたいな奴)
151NAME IS NULL:05/02/28 23:50:39 ID:???
>>150
MySQL++ってWindowsでも使えないんだっけ?
152NAME IS NULL:05/03/01 00:16:48 ID:???
>>151
使える。が、別に使わなくても繋げるしね。
もっと言えばDBMSぽく繋がないんだったら、
素のC++だけで、後は自前で作ってもなんとでもなるよ。

>かねやんMySQLみたいな
繋がりが良く判らん
153NAME IS NULL:05/03/01 00:32:00 ID:r4T/MZvg
MySQLのクライアント・サーバー間のプロトコルって公開されてるの?
154NAME IS NULL:05/03/01 00:56:41 ID:???
>>153
特に「プロトコル」って公開はされてはいないが
クライアントもサーバもソースは公開されてますんで
全然隠蔽されてませんよ。要するにアンドキュメントなだけ。

SSL通せば隠蔽はされますが、それとは別の話。
155NAME IS NULL:05/03/01 01:20:36 ID:???
>>153
see 4.2.3
156NAME IS NULL:05/03/01 13:16:51 ID:???
>>146

きちんとしたリファレンス本にはきちんと書いてあるぞ
157NAME IS NULL:05/03/01 13:27:54 ID:???
blobカラムに画像ファイルデータを挿入したんですけど
mysqlプロンプトから任意の画像ファイルデータを問い合わせて
任意の画像ビュアーにそのデータを渡して画像を閲覧するようなクエリをお教え下さいませ
158NAME IS NULL:05/03/01 14:51:32 ID:???
php.ini において、magic_quotes_gcp = on にしていれば、
SQLインジェクションに対して安全でしょうか?

やはり
mysql_real_escape_string() とか mysql_escape_string() とか addslashes を
使うべきでしょうか?
159NAME IS NULL:05/03/01 15:50:47 ID:???
そりゃPHPスレで聞くもんだべ
160NAME IS NULL:05/03/01 17:01:18 ID:4KnrU+VK
MySQLにてテーブルの形式だけを取り出したいのですが
mysqldump データベース名 > ファイル名
だとテーブルのデータもくっついてくるのでこれを取り除く方法はないのでしょうか?
161NAME IS NULL:05/03/01 17:34:14 ID:???
【環境】
RedHatLinux WS2.1
mysql-4.0.23(INNODB)

上記環境で使用しています。
動作自体は安定して稼動しているのですが
ibdata1が肥大化してHDDを圧迫するようになりました。
なにか良い方法はありませんでしょうか。

162NAME IS NULL:05/03/01 17:35:22 ID:???
>>160
マニュアルくらい読めよ
http://dev.mysql.com/doc/mysql/ja/mysqldump.html
163NAME IS NULL:05/03/01 17:45:58 ID:???
>>157
mysqlプロンプトはバイナリーセーフではない作りの気がする。
よって何らかのプログラムを組んでやらないと駄目かと。
164160:05/03/01 17:48:41 ID:4KnrU+VK
>>162
失礼いたしました。

別ページを見たらレコード削除するとか書いてたので^^;
ありがとうございました。
165NAME IS NULL:05/03/01 17:49:06 ID:???
ああ、あと入力側に256文字制限/プロンプト入力があるような話を
MLで見かけた気もする。出力側にも何らかの制限がある可能性も。
166NAME IS NULL:05/03/01 21:24:43 ID:???
>>163
mysql> select d from hoge limit 1;
-----------------------------------------------------+

mysql> select d from hoge limit 1 \G
*************************** 1. row ***************************
d: 憊

こんな感じです。パイプとかで流し込めないのでしょうか?
その前に外部バイナリの指定ってSQL文の中でできる?できない??
167150:05/03/01 23:48:23 ID:???
皆様、ありがとうございました。
まず、テンプレートの使い方から勉強させていただくことにしました。
168NAME IS NULL:05/03/02 11:51:54 ID:b2z/H3G1
どなたかご教授下さい。
フィールドの並び順を CREATE TABLE コマンドで定義した順番から変更する方法はありますか?
もう一度 CREATE TABLE をやり直すしかないのでしょうか?
169NAME IS NULL:05/03/02 12:30:16 ID:???
>>168
定義上のフィールドの並び順を気にする時点で、
データベースを理解してないと思われ。

ま、ALTERでもして鯉
170NAME IS NULL:05/03/02 12:39:41 ID:???
>>168
気になる気持ちは、わからんでもないけどさ。
一旦別の名前に変えて(HOGE→HOGE2)
create table HOGE select ...... from HOGE2
とでもしたら?
171NAME IS NULL:05/03/02 13:06:50 ID:???
PDFファイルをMySQLで管理したいのですが
もともとの個々のファイルのタイムスタンプとは別に(でもこのタイムスタンプも埋め込む)
テーブルに格納された日時のタイムスタンプをIDの代りにしたいのですが
どういうコマンドライン?
172NAME IS NULL:05/03/02 14:28:16 ID:???
>168>>170
ALTER TABLE tbl_name
ADD column_name INT UNSIGNED AFTER defined_column_nane
173NAME IS NULL:05/03/02 19:09:20 ID:???
>>171
mysql > format c:
174168:05/03/03 09:30:39 ID:YOiMc7ef
>>172
できました。ありがとうございます!!
175170:05/03/03 09:57:27 ID:???
>>174
いい加減な回答ですまんかった。
>>172
そんなことができるとは知らんかったよ
176NAME IS NULL:05/03/03 12:27:42 ID:???
>>173
ありがとうございました!
177NAME IS NULL:05/03/04 22:54:45 ID:???
>>169
並び順って、開発効率を上げる面では重要だと思うけど。
リリース後の追加っていうなら分かるが。
178NAME IS NULL:05/03/05 09:44:08 ID:???
>>177
開発環境によってはそんなものは簡単に隠蔽できちゃうでしょ。
179NAME IS NULL:05/03/05 12:55:10 ID:???
だからといって、隠蔽できる開発環境を選べというのは違う気がする。

数百レベルの項目数になると、一つ一つ指定する際のオーバーヘッドも大きくなる。
テーブル分割してjoinすると、パフォーマンスで影響が出る。

項目順を予め入れ替えておくだけで解決できるなら、それはそれでやっておくべきだと思うぞ。
180NAME IS NULL:05/03/05 14:30:12 ID:???
項目数が数百ってギャグ?
181NAME IS NULL:05/03/05 14:55:47 ID:???
カタログスペックに挑戦してるんじゃね?
182NAME IS NULL:05/03/05 20:39:05 ID:???
>>179
いや、隠蔽しても別に1つ1つ指定する必要はないけど?
SELECT * しても、カラム名でアクセスすればイイだけの話だし。


183NAME IS NULL:05/03/08 01:39:30 ID:???
RedHatのクラスタでmySQLの社内システムを組もうと思うのですが
実際に運用されているかた、気をつけることとかありますか?
184NAME IS NULL:05/03/08 03:05:49 ID:???
GPLとか
185NAME IS NULL:05/03/08 04:04:59 ID:???
>>183
HAクラスタだよね。なら特に気にすることはなかったと思う。
186NAME IS NULL:05/03/08 09:08:52 ID:???
社内なら GPL も関係ないしね
187NAME IS NULL:05/03/08 09:30:53 ID:???
>>186
日本語は正確に
×:社内なら GPLも関係ない
○:社内なら GPLでも関係ない(ことが多い)
188NAME IS NULL:05/03/08 11:36:18 ID:???
問題はGPLなコードを社外に持ち出すことをとめることが出来るのかどうか
189NAME IS NULL:05/03/08 12:12:06 ID:s4x3oOUv
>>188
ごめん、よく分かってないんで、教えて欲しいんだけど。
コードを持ち出すってどういうこと?

>>183のようなシステム作って、それを他に売ることをとめられるかってこと?
それ防ぐことは、別に難しいことじゃないと思う。
それとも、作ったシステムを、社外から使うのを防げるかってこと?
社外から使っても、別にいいんじゃないの?
190NAME IS NULL:05/03/08 22:04:44 ID:???
GPLだし、これ持ち出して自分で改良して売ってみようかな〜
191NAME IS NULL:05/03/08 23:22:38 ID:???
>>190
なるほど。そういうことですか。
内部の人がパクって売ってしまうことを防げないということですね。
192NAME IS NULL:05/03/08 23:55:39 ID:???
会社(法人格)がGPLでライセンスされてるからといって、
従業員にGPLで公開されてると見なせるのだろうか?
その前提なしに従業員がパクったら横領だよ。
勿論コード以外の資料を添付または流用したら確実に、
他にも会社の技術を勝手に転用されたと訴えられるだろう。

流用・転用は裁判の結果がでないと判断できないけど、
個人で裁判を受けて立つメリットデメリットを考えると
俺にはそこまで商才はないのでやらない。
193NAME IS NULL:05/03/09 00:20:20 ID:???
んじゃーやっぱり、>>188のようなことは、あり得ないよな。
194NAME IS NULL:05/03/09 00:40:17 ID:???
なんにせよグレーゾーン
おとなしく商用ライセンス買えと
7万くらいだっけ?
195NAME IS NULL:05/03/09 02:18:22 ID:???
>>194
>なんにせよグレーゾーンおとなしく商用ライセンス買えと
え?話がずれてきてない?

>>186 社内ならGPLでも関係ないこと多い
>>188 問題はGPLなコードを社外に持ち出すことを止められるか?
>>189-192 コードパクって売る輩がいるかも(ハイリスクだけど)

ってことだろ。社内でも(リスク度外視でコード盗むやつを止められないから)
グダグダ言ってないで商用ライセンス買えってことかい?
196192:05/03/09 03:21:07 ID:???
>>195
俺もちと話がずれてると思う。
別に会社でGPLのを使うのはグレーでもなんでもない。
(MySQL AB的には、恒久的に常用するならCML買えよが本音)
197NAME IS NULL:05/03/09 10:48:01 ID:???
社内で GPL なのは公開する必要なし
それを社外に持ち出して公開するのも GPL では問題なし
ただし、GPL 以外の問題があります
198NAME IS NULL:05/03/09 22:24:50 ID:1ImZYU2T
ここにmysqldumpで取ったバックアップファイルがあります。
これをリストアしようと
mysql -uuser -ppass db < dumpfile.dmp
したのですが、TEXTフィールドで改行が入った文字列が上手く入りません。

dumpfile.dmpを見ると「3月4日\r\n私から\r\n田中さんへ\r\n」のように改行はエスケープされています。
しかしこれをインポートしてみると「3月4日\r<改行>私から<改行>田中さんへ\r<改行>のように所々「\r」が
残ってしまいます。

MySQLのバージョンは4.0.20-logです。
よろしくお願いします。
199NAME IS NULL:05/03/10 11:18:33 ID:???
MySQL4.0.23を使用しています。
レプリケーションをしている2台のサーバがありまして
masterのバイナリログがmaster-bin.100まで進んでいて
slaveがrelayログにmaster-bin.100の分まで溜め込んでいます。
この時にmasterのバイナリログmaster-bin.099までは圧縮もしくは削除しても
slave側のレプリケーションは停止しないでしょうか。
200NAME IS NULL:05/03/10 15:01:11 ID:???
サーバとクライアントの通信を暗号化するにはどうすればいいのでしょうか?
201NAME IS NULL:05/03/10 15:34:15 ID:???
>>200
MySQLとSSLでググれ
202NAME IS NULL:05/03/11 03:12:51 ID:???
>>199

slaveはrelayログでレプリケーションするので、
relayログがあるならmaster側のバイナリログを削除しても大丈夫。
レプリケーションの仕組みはMYSQL全機能リファレンスに詳しく書いてある。
203NAME IS NULL:05/03/11 04:54:53 ID:???
>>199
「OSC2005/2005-03-26: 4B-2:MySQLのバックアップ・リカバリ」
http://www.ospn.jp/osc2005/modules/eguide/event.php?eid=11
これを聴きにいくのもよいかと。

多分バックアップ&リストアの絡みで
bin-logの話も聞けると思う。
204NAME IS NULL:05/03/11 13:47:22 ID:lHD/WJDj
mysq-4.0.20-3と
mysql-Max-4.0.20-3の違いを教えてください。

この二つの用途の違いが知りたいです
205NAME IS NULL:05/03/11 13:55:34 ID:???
maxの方はBDBが使える。以上。
206NAME IS NULL:05/03/11 14:59:03 ID:???
ふたりはプリキュア と ふたりはプリキュアマックスハートの違い
207NAME IS NULL:05/03/11 16:50:26 ID:???
ヲタにしかワカラン解説 w
208Super初心者:05/03/11 23:02:55 ID:YNcJrtR5
場違いな質問していいですか?
209NAME IS NULL:05/03/11 23:06:51 ID:???
>>208

ダメです。あきらめてください。
210Super初心者:05/03/11 23:11:48 ID:YNcJrtR5
やはり...。
データベースの件なら許してもらえますか?
211NAME IS NULL:05/03/11 23:21:41 ID:???
大変大変!ライセンスが糞なんだけどどうしたらいい?
PostgreSQLに逃げると幸せになれる?
212Super初心者:05/03/11 23:30:51 ID:YNcJrtR5
MySQLを使って、販売管理したいのですが可能ですか?
最終的には本支店間の物ですが?
213NAME IS NULL:05/03/11 23:32:39 ID:xptNNxFG
googleの検索みたいに、検索数と検索にかかった時間をphpで出したいんだけど、
そんなことできる?

1 row in set (0.26 sec)

この「1」と「0.26」の数値の変数ってphpから利用出来る?
214NAME IS NULL:05/03/11 23:42:02 ID:???
>>211
残念ながらなれる

3.xからずっと使ってきてそれなりに納得してきたのだが
4.1の糞さがなおらないままなのでPostgresに移行しちまった
215NAME IS NULL:05/03/12 00:06:28 ID:???
>>213
popenでmysql呼び出して標準入出力をやり取り
216213:05/03/12 00:13:22 ID:cnkhU+30
>>215
oh! サンクス!
217NAME IS NULL:05/03/12 03:33:43 ID:???
>>212
その「販売管理」の内容にもよる。

そもそもDBMSもいらず、Excelのファイルを
バッティングしなよいように共有する程度のことでも
良いのかもしれんしな。
218NAME IS NULL:05/03/12 03:55:50 ID:q3r/NSYl
mysqlとphpを使い出したのですが


mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("zip");

$result = mysql_query("SELECT * FROM zip_code where zip=\"$formdata\"");
$r = mysql_fetch_array($result);

というphpを書いたのですが、

-----------------------------------------
$resultにはどんな情報が書かれているのでしょうか?
---------------------------------------

printしても
$result=Resource id #3
とか出てきました。

$rには配列としてフィールド分、データが入っていました。


$result = mysql_query("SELECT * FROM zip_code where zip=\"$formdata\"");
$r = mysql_fetch_array($result);
この2行はワンセットで使うおまじないみたいなものと考えていいのでしょうか?
219NAME IS NULL:05/03/12 05:05:56 ID:???
そうだよ
220NAME IS NULL:05/03/12 05:09:25 ID:???
>>218
闇雲の手探りはやめて原点を見直すこと。
http://jp2.php.net/manual/ja/function.mysql-query.php

intと書いてあるけど、実際にはint/boolのmix。
もっと厳密に言うとリソース型/boolのmix。
http://jp2.php.net/manual/ja/resource.php

型の緩やかなPHPの場合、何でもかんでもmixになってしまうので、
余りその箇所の記述は鵜呑みにはしないこと。結構適当。
221218:05/03/12 06:13:52 ID:q3r/NSYl
>>219,220
ありがとうございます。ちょっとふっきれましたです。
222Super初心者:05/03/12 13:03:24 ID:PFGNYZwI
>>217
現在、死語かも知れませんが、
Lotusアプローチで管理していますが、
クライアントサーバ型で構築したいのです。
お金を掛けて市販ソフトを使用すれと良いのですが、
弱小企業の為、予算が出ません。
参考になる様な書籍など教えて頂けましたら幸いです。
223NAME IS NULL:05/03/12 16:02:47 ID:???
初心者といって免罪符とはならん
逆に初心者と書かれるとレスしたくないと言う人もいるから、そういう名前は付けてほしくない
現在の管理データからMySQLに移行するっていうのならそう難しくないんじゃないか?
ライセンスとかは私はわからんが
224NAME IS NULL:05/03/12 16:56:41 ID:???
メールから情報をMySQLに登録するのに何か良い方法はない
ですかね?参考になる書籍とか知っている方がいたら教えて
欲しいです。

225NAME IS NULL:05/03/12 18:58:58 ID:jyfgQc/6
マ板から来ました。最近、データベースの勉強をはじめMySqlを使っていたのですが
急にMysqlの起動が出来なくなりました
データベースlの設定に関してはあまりよくわからないです


具体的にはJSP・JavaからJDBC使ってMysqlに接続してたのですが
Mysqlのコネクタが生成できなくなるというエラーです
自分でいろいろ調べたのですがMysql側に問題がある事がわかりました
確かに
>mysql -u root -p
Enter password: root
でログインしようとしても
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
というエラーが出ます

再起動した後に急に使えなくなったのですが
思い当たる節としては直前に、my.iniファイルの

[mysqld]
default-character-set=sjis
[mysql]
default-character-set=sjis

を加えただけです
でも、これはただJSPの方で文字化け対策のために
やったので関係ないとは思っていますが・・・

どうかお力を貸してください。お願いします
mysql:4.1.9
tomcat:5.5.4
jdbcドライバ:mysql-connector-java-3.1.7-bin.jar
JDK:1.5.01
226NAME IS NULL:05/03/12 19:00:58 ID:???
mysqlが起動してなかったりして・・・
227NAME IS NULL:05/03/12 19:50:00 ID:???
>>226
え?今までは自動で起動してたんで問題なく使えてたんですけど
起動コマンド教えてくださいm(__)m
228NAME IS NULL:05/03/12 20:04:30 ID:???
とてつもなく頭の悪いのが紛れ込んできたな。
229225:05/03/12 21:33:10 ID:???
解決しました
>>228
ごめんなさいm(__)m
230NAME IS NULL:05/03/13 11:10:02 ID:???
4.1.10aと4.0.24キタ━(゚∀゚)━!!!
231NAME IS NULL:05/03/13 14:53:54 ID:DgyjN9xh
テーブル名に日本語使ったらヤバイ?
232NAME IS NULL:05/03/13 17:43:19 ID:???
あるフィールドを降順で並び変えて記録する句があれば教えてください。今は表示する時にGRANTで並び変えて表示しています。
233NAME IS NULL:05/03/13 19:55:25 ID:Vyou6TzA
内容が80桁の数字or80字の文字列のレコードが200万くらいあったら
そこから検索するのにどれくらいのスペックで何秒くらいかかるだろうか?
この内容のレコードでなくても数十万数百万のレコードについての例があったらスペックとレスポンスを教えて欲しい。
234NAME IS NULL:05/03/13 20:49:50 ID:qKRtUhv9
レンタルサーバー移転のためデータをエクスポートしようとしているのですが、

旧鯖
PHP/4.3.5
phpMyAdmin/2.5.6
MySQL/3.23.49

新鯖
PHP/4.3.10
phpMyAdmin/2.6.1-rc1
MySQL/3.23.49

旧鯖のデータがeuc-jpなのですが、新鯖ではsjisで取り込んでみたくて、

旧鯖phpMyAdminからそのままエクスポート

新鯖phpMyAdminでsjisエンコーディングにチェックを入れて取り込み。

その結果、特定の行(2つ)で1064エラーが出て上手く取り込めません。
1064エラーを調べてみたけれどよく分かりませんでした。

どうかエラーの意味を教えて下さい。
235NAME IS NULL:05/03/13 21:06:30 ID:???
>>231
ストレージタイプによっては、DB名またはDB名及びテーブル名
がそのままファイル名に連動することを理解して使うのなら別に構わんぞ。

>>232
意味ワカメ
236NAME IS NULL:05/03/13 22:17:07 ID:???
>>234
何百行もあるならともかく、2行だけなら手で直せばいいじゃん

まあそのエラー番号がphpMyAdmin固有なのかPHP固有なのかMySQL固有なのか
オレには分からんな。エスパーじゃないし。それにエラーメッセージとか
エラーの出た行のデータぐらい貼ってみそ。
237232:05/03/13 23:16:09 ID:???
すみません、誤字だらけでした
例えば、SELECT id FROM table で、上から順に10、31、5、12、44と表示された場合、
これを5、10、12、31、44となるように並べかえて「記録保存」したいのです。SELECT * FROM table GROUP BY id ではなく。
やはり、SELECTするたびにGROUP BYで並べ変えるしかないのでしょうか。
238NAME IS NULL:05/03/13 23:26:23 ID:???
>>237
order by
239NAME IS NULL:05/03/13 23:42:29 ID:???
>>237
>5、10、12、31、44となるように並べかえて「記録保存」
そんなことは出来ない。仮に5、10、12、31、44の順でINSERTを掛けたとして
ORDERを掛けずにSELECTしたら、その順序で取れたとしよう(まあ取れると思うが)。
しかし「いつも、その順序で取れるという保証」はどこにもない。
240237:05/03/14 00:26:06 ID:???
なるほど…ありがとうございました
241NAME IS NULL:05/03/14 00:30:53 ID:???
>>237
内部的な記録のされ方に何故こだわるのか?
ORDERをかけて正しく取り出せればいいと思うのだが。
242NAME IS NULL:05/03/14 01:15:41 ID:???
>>240
得心いかないかもしれないけど、一般的にRDBとはそういうものだから納得しる。
243237:05/03/14 14:43:48 ID:???
共有鯖を使っていて、出来るだけ負荷を減らしたかったのです。ただでさえ重い鯖なんで…
Excelのような感じだと思っていましたが、少し違うようですね
244NAME IS NULL:05/03/14 15:31:34 ID:???
>>243
負荷って「ORDER BY」を記述する手間のこと?
んなわけないな。

RDBの中の実装は詳しく知らないけど、
もしも、RDBで並び順を保持できたら、INSERTのときに、隙間に入れなければならないし、
UPDATEしただけでデータを移動しなけりゃならない。それこと無駄が多いだろ?
代わりに、そうやって順序をよく保持できるのが、インデックスであって
インデックスがはってあれば、ORDER BYしてもソートの負荷は少ないんでないの?
245NAME IS NULL:05/03/14 16:39:18 ID:???
>>237にSQLは合わないと思うな
なんか考え方的に
246NAME IS NULL:05/03/14 23:38:47 ID:???
テーブル作成時にchar(80)と指定したフィールドが
show tablesで確認するとvarcharになってしまうんですが仕様なんでしょうか?
バージョンは4.1です。
247NAME IS NULL:05/03/14 23:56:30 ID:???
>>246
仕様。「暗黙の型変換」で調べてミソ
(個人的にはちとキモチの悪い仕様)
248NAME IS NULL:05/03/15 00:04:11 ID:???
249NAME IS NULL:05/03/15 18:24:07 ID:???
「UNION演算子でつながれたSELECT文は、
同じ列数を持ち、かつ同じ位置にある列のデータ型は同一でなければいけない。」と本に載ってたのですが、

table1 -> alpha char(1), num integer
rev_table1 -> alpha integer ,num char(1)
のように同じ位置にあるデータ型が異なる場合でも
UNIONで併合できてしまうのですが、
大丈夫なんでしょうか?

MySQL4.1.10nt
250NAME IS NULL:05/03/16 16:13:24 ID:g2s40+lA
妙な質問で申し訳ありませんが・・・

例えば

名前テーブル
+----+
|Name|
+----+
|清原|
|新庄|
|松井|
+----+
のようなテーブルから、どうにかして(select文で)

+--------+
|????  |
+--------+
|清原選手|
|新庄選手|
|松井選手|
+--------+
という結果を得ることはできるでしょうか?
(データの中身に別の文字列を連結して表示)
一時テーブルを作成しても良いです。
多分そんな事はできないんだと思うのですが、
もしやり方をご存知の方がいましたら教えて下さい。
251NAME IS NULL:05/03/16 16:18:27 ID:???
>>250
CONCATとか

Welcome to this crazy time 〜♪
252NAME IS NULL:05/03/16 16:23:19 ID:g2s40+lA
>>251
>CONCATとか
調べてみました。
文字列結合なんてできるんですね。
ありがとうございます!
253NAME IS NULL :05/03/19 17:58:09 ID:NyWmAKIj
質問です。4.0.22使用しています。

正規表現で文字列を取得できないのでしょうか。
()付きで正規表現関数にかけると、()の中身を取得できるような感じです。

どうぞご教授ください。
254NAME IS NULL:05/03/19 22:39:04 ID:???
ググってみたのかと子一時間
255NAME IS NULL:2005/03/22(火) 20:38:19 ID:9SFRPsEj
mysql3.23.58 + TLS8での運用なのですが 設置運用後1年を経て突然
safe.mysqld restartのログが出始めまして、restart失敗すると当然
apaccheも落ちるという症状でくるしんでます。mysqlの堅牢さゆえなか
なか同様の事象を見つけることもできません。発生する原因と考えられる
行為は特に思い当たりません。restartのログはおおよそ3時間インターバルにて
出力されますが周期的とまではいきません、2台運用しているのですがまったく
同時期に同じ症状が発生して 気が気でない状態です。どなたかmysqlでの運用
やメンテで同様の症状が発生して解決した方いらっしゃらないでしょうか?
256NAME IS NULL:2005/03/24(木) 03:34:10 ID:h5dhdtjw
4.1.10aで
create table sex (
anal varchar(255),
cunt varchar(255),
blowjob varchar(255),
primary key(anal,cunt)
);
したら
specified key was too long; max key length is 1000bytes
て言われちゃった
255 + 255 > 1000
なのですか?
257NAME IS NULL:2005/03/24(木) 04:47:30 ID:???
「restart失敗すると、当然apacheも落ちる」これ変。
MySQL以前にOS(例えばSWAP)とか、ハードウェアを疑った方がいい。

「2台運用しているのですがまったく同時期に同じ症状が発生」これも。
・ハードウェアの不具合因子(寿命)の関連
・電源の問題(しかしこれは、それぞれ別のUPS等噛ましてるんでしょうな)

これら運用している2台の関係はクラスタリング?
258NAME IS NULL:2005/03/24(木) 04:56:43 ID:???
>>256
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_35

マニュアル等の公式ドキュメントでの記述が見つからんかった。
判ったら教えてくれ。
259NAME IS NULL:2005/03/24(木) 05:07:28 ID:???
ああ、これだMySQL4.1.1からの変更

http://dev.mysql.com/doc/mysql/ja/news-4-1-1.html
| CHAR, VARCHAR, and TEXT columns now have lengths measured in characters
| rather than in bytes. The character size depends on the column's character set.
| This means, for example, that a CHAR(n) column for a multi-byte character set
| will take more storage than before. Similarly, index values on such columns
| are measured in characters, not bytes.

メインのリファレンスには記述がない(古いのだけ)ので、見落とし&判りづらいな。
260NAME IS NULL:2005/03/24(木) 10:15:38 ID:z8myW0oh
>>259
ありがとうございます
jamesのレポジトリをmysqlでやろうとおもってたんだけど
コンパイルしなおして2000bytesくらいにします
261NAME IS NULL:2005/03/24(木) 15:06:24 ID:???
MYSQLのテーブルのデータをエクセル形式で出力したいのですけど、どういうやり方でやるのでしょうか?
262NAME IS NULL:2005/03/24(木) 20:12:07 ID:???
エクセルから接続してエクセルにコピーするVBAを使うとか?
263NAME IS NULL:2005/03/24(木) 20:30:14 ID:???
>>261
Excelで使うMySQL活用ガイド
http://www.9-ten.co.jp/bookdata/0136.php
高橋良明/九天社/3200円/ISBN4-86167-013-6

PHPのライブラリでxlsファイルが生成できるのがあるから、
PHPからMySQLに接続して、それで作るのもあり。
ExcelならCSVファーマットも読めるから、それに対応した
無償/有償のクライアントツール使ってCSVで出力するので良いと思うけどね。
264NAME IS NULL:2005/03/26(土) 01:08:16 ID:I+g70oVB
どなたか知っているかたがいたら教えてください。

PHP+MYSQLでbooklistというテーブルがあります。
その中のコラムのひとつに”description”があり
その中のデータの最後はいつも"Weight ****g"と
いう文で終わります。この"Weight ****g"を抜き出して
他のテーブルの"weight"というコラムにIDを元に移動させ
たいのですが何かいい方法はあるでしょうか?
板違いでしたらすみません。
265NAME IS NULL:2005/03/26(土) 01:44:03 ID:???
>>264
PHPを既にインストールしてMySQLを操作してんなら、
そういう動作を行うスクリプトを組んだらよかろう。
データ(文字列)を後ろから検索掛けて"Weight"って単語の
位置を調べて、そこからEODまでを切り出し。
切り出したの使ってINSERT
266NAME IS NULL:2005/03/26(土) 08:20:57 ID:I+g70oVB
>>265
ご回答ありがとうございます。
早速やってみます。
267NAME IS NULL:2005/03/26(土) 10:29:30 ID:???
最近の若い世代の考える能力が低下しているというのは本当なんだな
268NAME IS NULL:2005/03/26(土) 21:29:47 ID:???
>>256 >>258
マニュアルにあらわには書いてない。
ttp://mysql.inspire.net.nz/doc/mysql/en/upgrading-from-4-0.html
にある。ようはCHAR(N)はN「文字」であって、文字コードによってはこれは
必ずしもN「バイト」には対応しない、ということね(multi-byte char のとき)。
なんだが、これ、和訳のほうは古くて
ttp://mysql.inspire.net.nz/doc/mysql/ja/upgrading-from-4-0.html
には記載がない。
269NAME IS NULL:2005/03/28(月) 20:04:20 ID:mPnmsWYn
4.1.10にしてからエラログに

'テーブル名' had no or invalid character set, and default character set is multi-byte, so character column sizes may have changed

ていうのが出るようになったけど、コレて何?
270NAME IS NULL:2005/03/28(月) 20:32:38 ID:???
>>269
このスレの15レス前ぐらいからの話題に関連。
271NAME IS NULL:2005/03/29(火) 01:16:01 ID:???
そろそろ息切れしてついていくのしんどいのだが
MySQL 5.0.3-betaが出たね。

まあ大きくは変わらなかったけど、
BIT型が完全に新設なのと、cp932(SJIS for Windows-J)と
eucjpms(UJIS for Windows-J)が入ったのが目新しいとこかね。
272NAME IS NULL:2005/03/29(火) 01:38:47 ID:???
cp932やっときたか!

でも回り見ても新規案件全部postgresにいっちまった・・・
273NAME IS NULL:2005/03/29(火) 02:02:02 ID:???
>>272
ライセンス形式ががMySQLよりもシンプルですからね・・・
274NAME IS NULL:2005/03/29(火) 02:40:54 ID:???
いやいや、ライセンスは買えばいいのでWEB鯖方面ならMySQL使っていたんだ

でも4.0まではよかったけど、4.1で文字コード問題発覚、
Linux等はごまかしでつかえるもののWindowsでは解決方法なし
ということで使わないことになったのさ

逆にPostgresはWindows正式対応しちゃったし、C/Sでは
MySQLはライセンス料金お話にならないのでどんどんにげてるっぽ
275NAME IS NULL:2005/03/29(火) 03:00:36 ID:???
>>273
PostgreSQLもMySQLもライセンスは別に変わってませんが?

でも自分の場合、InnoDB使うようになってきたので費用面ではちとキツイ。
276NAME IS NULL:2005/03/29(火) 03:15:09 ID:???
うちはGPLで済む用途なんだけど、MySQL4.1はまだ"待ち"かな。
現状でMySQL4.0またはPostgreSQLなんで新機能待ちではなくて、
MySQL4.0がもう終わりかなぐらいで、MySQL4.1にのれればいい
という感じなので、互換度が一番重要でそれの待ち。
277NAME IS NULL:2005/03/29(火) 22:10:44 ID:???
MySQLのライセンスって読み方捉え方次第で有料か無料の判断が分かれる。。。
PostgreSQLは商用も無料でシンプル。
278NAME IS NULL:2005/03/29(火) 22:32:03 ID:???
>PostgreSQLは商用も無料でシンプル。
には特に異論はない。
279NAME IS NULL:2005/03/30(水) 02:49:48 ID:???
いまからSQLの勉強をはじめる人にはMySQLよりPostgreSQLを薦めますか?
280NAME IS NULL:2005/03/30(水) 04:11:50 ID:DxhulZk7
mysql3系は、複数CPUをサポートしていますか?
RHELだと3系なんで、できればこれを使いたいと思ってます。
poestgreSQL7系も複数CPUをサポートしていますでしょうか?
281NAME IS NULL:2005/03/30(水) 09:34:06 ID:???
>>280
「自分で調べろ」というレベルにすら達してない段階。


280みたいなのがシステム構築して料金ぼったくってるわけだ。
なんにも考えずにRHELのライセンスかって、
なんにも考えずにSMPサーバかって、
なんにも考えずにLAMPシステムつくって…

はぁ.... orz
282NAME IS NULL:2005/03/31(木) 00:50:33 ID:???
テーブルのキャラクターセットなんでeuckrはあるのに
eucjpはないんだぁ〜〜〜〜〜〜〜〜〜


latin1でつかってますけど・・
283NAME IS NULL:2005/03/31(木) 03:45:15 ID:???
Changes in release 5.0.3:


- Added cp932 (SJIS for Windows Japanese) and eucjpms (UJIS for Windows Japanese) character sets.
284271:2005/03/31(木) 04:08:46 ID:???
5.0.3-betaの目玉、
Stored Procedures, Triggers, Viewをすっかり見落としてた...

いや実際のところ余り興味ないんだけけどね。
(トリガーはちょこっとだけあり)
285C-route:2005/03/31(木) 12:39:30 ID:y/Tz8Og2
すいません。

MySQL の演習用にデータファイル(.MYD .MYI .frm)をもらったは
いいんですが、レコードの日本語情報が sjis で記録されてました。

このデータファイル自体に対して、euc にエンコードする方法があれば
ご教示いただきたいのですが、先達にお心当たりはありませんでしょうか?
286NAME IS NULL:2005/03/31(木) 16:30:08 ID:???
>>285
バイナリーなデータファイルだけ貰っても、貰った方も困るわな。
バイナリーなデータは、同じバージョンのMySQLでしか基本的に
互換性がない(4.0と4.1はあるんかな?)から、元のMySQLと同じサーバを
sjisに設定して動かして、そこからデータベースをファイルにdump。
ファイルはsjisで出力されてるのでnkf(skf)などでeuc-jpにコンバート、
ujisに設定したMySQLサーバにimportじゃないかね。
dump後のファイルを別のエンコードに変換しつつimportする
クライアントツールはあるので、探してそれを使ってもいい。
287NAME IS NULL:2005/03/31(木) 18:26:58 ID:???
ふつうはバックアップファイルとかわたすよなぁ
288NAME IS NULL:2005/03/31(木) 18:45:58 ID:???
<チラシの裏>
FC3/RHEL4/CentOS4で、MySQL4.0.24のビルド掛けると
MySQL4.1と同様に、http://bugs.mysql.com/bug.php?id=6554となるので
http://lists.mysql.com/internals/22988のパッチを関連するファイルに適用すること
# embeddedパッケージだけが未だにエラーで作れん...orz
</チラシの裏>
289NAME IS NULL:2005/03/31(木) 23:16:05 ID:???
>>285
最悪バイナリを解析すれば?
割に簡単にできるよ。
290NAME IS NULL:皇紀2665/04/01(金) 00:35:33 ID:???
MySQLをiccでコンパイルしている人いますか?
291NAME IS NULL:2005/04/02(土) 16:07:58 ID:???
>>286
基本的に上位互換だったと思うが。
つか、sjisからeucに変換するスクリプト書いてupdateすればいいだけでしょ。
292NAME IS NULL:2005/04/02(土) 23:23:03 ID:???
>>291
4.1はプログラムのバイナリ書き換えない限りファイルシステムレベルでの
ファイルは強制UTF8だから問題は多いよ
293NAME IS NULL:2005/04/03(日) 01:49:37 ID:???
うん? ファイル名(テーブル名)にマルチバイト使ってるの?
それは多少厳しいかもだが、リネームすれば大丈夫じゃね?
294NAME IS NULL:2005/04/03(日) 13:18:28 ID:???
ファイルの中もデータはeucとかでもその他の項目とかはutf8固定
295NAME IS NULL:2005/04/04(月) 08:52:15 ID:???
ああ、フィールド名とかか。
フィールド名はasciiにしてるから気にしてなかったよ。
296285:2005/04/04(月) 12:44:18 ID:g2xL8Y8+
ご回答ありがとうございます。

逆の発想となりますが、mysql のエラーメッセージの方
を sjis にすることは簡単にできますでしょうか?
297質問すみません:2005/04/04(月) 19:10:47 ID:???
以前5C問題をご指摘いただいたものです。
その節はお世話になりました。

さて、今回なのですが
MySQL+ASP(VBScript) or Excel VBA or VB6.0+MyODBCで開発しています。
ASP/VB他、全ての開発言語で共通する事象なのですが、
SELECTでレコードに読み込んだ後特定のデータ型のみ、
レコードセットに一度しかアクセスできないという不可解な現象が出ます。
具体的には

1:RS.open "SELECT aaa FROM bbb",Cn
2:IF RS(0)="" THEN
3: A=RS(0)
4:END IF

という分岐を行った場合に、
1:でRSにレコードセットした型がVARCHARであれば問題なく処理されるのですが、
TEXT/LONGTEXT型を用いた場合に2:で一度RSのレコードセットにアクセスした後、
3:の時点でレコードセットの内容が保持されていない、または破棄されているようです。
PCや開発環境を変えても同様の事象が発生しますので、MySQLかMyODBCに依存する
エラーだとは推測しているのですが、なにか情報をお持ちの方はいらっしゃいますでしょうか?
なお、MySQLは4.1.3 BETA,MyODBCはMyODBC-standard-3.51.9を使用しています。
よろしくお願い致します。

298NAME IS NULL:2005/04/05(火) 07:00:47 ID:???
>>297
ADOでBLOB/CLOB系のフィールド読み書きする場合は
GetChunk/AppendChunkを使えってことではないかな。
299質問すみません:2005/04/05(火) 09:34:45 ID:???
>>298

ご指摘ありがとうございます。
webprog板で以下の書き込みを見つけました
http://pc8.2ch.net/test/read.cgi/php/1059401269/827
>ああ、text型ね。ADOのバグあるよ。
>前方スクロールカーソルでレコードセット取得してる場合、
>text型のカラムを二回目読もうとすると読めなくてエラー。
>また、text型のカラムより後にあるカラムを先に読んでしまっても
>エラーになる事がある。
>もうやってるみたいだけど一旦変数に格納するのが吉。
>またはカーソルタイプをダイナミックにすれば大丈夫。

>text型は重宝するんだけどバグがね…
>SJISの二バイト文字入れててbcpで吐くとデータ壊れるし。
>早く2005出ないかなぁ…。

mysqlに関わらず、ADO経由でtext型を読み込むとエラーが発生するようです。
しかもこれはADOのバグ(仕様?)のようでした。
この書き込みにあるようにカーソルタイプをダイナミックにしてみましたが、
今度はtext型の中の値がNullのときに(テーブルはNull許可の設定済み)
レコードセットに格納・参照するだけでエラーという恐ろしい状況が出てることも発見してしまいました。
現在はエラートラップで強制的にresumeさせて無視していますが、
なにか納得できない気分です。

300NAME IS NULL:2005/04/05(火) 14:35:40 ID:???
そんな致命的なバグがパッチも出てないとは考えにくいなぁ
301NAME IS NULL:2005/04/05(火) 16:30:13 ID:???
phpMyAdminについて質問させて下さい。

●環境

Red Hat Linux 9
Apache/2.0.53
MySQL 4.1.10
PHP Version 4.3.10
phpMyAdmin 2.6.1-pl3

●phpMyAdmin 設定

Language Japanese(ja-utf-8)
MySQLの文字セット: UTF-8 Unicode (utf8)
MySQL 接続照会順序: utf8_general_ci

●サーバー変数と設定値

変数 セッション値 グローバル値
back log 50 50
basedir / /
binlog cache size 32768 32768
bulk insert buffer size 8388608 8388608
character set client utf8 ujis
character set connection utf8 ujis
character set database ujis ujis
character set results utf8 ujis
character set server ujis ujis
character set system utf8 utf8
character sets dir /usr/share/mysql/charsets/ /usr/share/mysql/charsets/
collation connection utf8_general_ci ujis_japanese_ci
collation database ujis_japanese_ci ujis_japanese_ci
collation server ujis_japanese_ci ujis_japanese_ci

●現象

phpMyAdmin を使って DB の中身を参照すると

???

のように文字化けして表示されてしまいます。

phpMyAdmin トップページの Language コンボボックスでは、
「Japanese(ja-utf-8)」という項目が選択されています。
コンボボックス内の選択項目を一通り眺めてみましたが、
euc や sjis といった項目は存在しません。

文字化けを解消する方法をご存知の方がいらっしゃったら
ご教授ください。
よろしくお願いします。
302NAME IS NULL:2005/04/05(火) 20:22:23 ID:???
303NAME IS NULL:2005/04/06(水) 10:29:57 ID:???
MySQL4.1に20〜40万程度のレコードを、一気に入力するのに最適な方法は何でしょうか?
元となるデータは単なる文字列で、これをPerl/PHPなどで整形し、入力用データにする予定です。
整形する際にSQL文にするのが良いか、PHPとかで1行ずつクエリ実行するのが良いか迷ってます。
304303:2005/04/06(水) 11:06:21 ID:???
あ、すいません。今、データを整形するスクリプトを組んで実験していたら
整形するのに時間がかかって、20〜40万程度だったら入力自体には
そんなに時間がかかりませんでした。
正規表現のスキル不足でした orz
305NAME IS NULL:2005/04/06(水) 15:56:59 ID:YxlG0gex
質問です。MySQL4.0.22を使用しています。
副問い合わせが使えない環境です。

そこで次のようなことを行いたいです。

create table mst(
uid VARCHAR(10)
,title TEXT
,url TEXT
)
この3列で複合キーになっています。
上記テーブルに

uid |title |url
-----------------------------------------------
abc |aaaaaaa |www.hogehoge.co.jp
-----------------------------------------------
abc |bbbbbbb |www.foobar.co.jp

と入っているものとします。

一方
create table log(
uid VARCHAR(10)
,title TEXT
,url TEXT
)
というテーブルがあります。これはキーなしです。
ここに
uid |title |url
-----------------------------------------------
abc |aaaaaaa |www.hogehoge.co.jp
-----------------------------------------------
abc |aaaaaaa |www.hogehoge.co.jp
-----------------------------------------------
abc |aaaaaaa |www.hogehoge.co.jp
-----------------------------------------------
abc |bbbbbbb |www.foobar.co.jp
-----------------------------------------------
abc |ccccccc |www.aiueo.co.jp

というようなレコードがはいっています。

ここで質問です。
テーブルmstに登録されていない組み合わせだけを、
テーブルlogから取り込みたいのです。
※この例ではccccccの組み合わせのみです

exist()が使えれば難しくはないと思うのですが、どうも
このバージョンのMySQLは使えないのでこまっております。
どうぞご教授よろしくお願いいたします。
306NAME IS NULL:2005/04/06(水) 16:10:53 ID:???
>>305
SELECT * FROM log
LEFT JOIN mst
ON log.uid=mst.uid AND log.title=mst.title AND log.url=mst.url
WHERE mst.uid IS NULL
307NAME IS NULL:2005/04/06(水) 18:09:57 ID:YxlG0gex
308NAME IS NULL:2005/04/06(水) 18:10:25 ID:???
>>306 
間違えましたすみません。

そのやり方で解決しましたありがとうございました!!
309NAME IS NULL:2005/04/07(木) 13:07:38 ID:EqrEf0eT
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_tn01.htm
ここにoracleだとSQLを大文字で書くと速くなると書いてあるんだけど
mysqlではどうなの?
310NAME IS NULL:2005/04/07(木) 14:25:13 ID:qOmyg27t BE:154253388-#
いま Windows で MySQL 4.1.5 を使っています。
最新の 4.1.11 にバージョンアップしたいのですが、
上書きインストールしてしまっていいものでしょうか?
311NAME IS NULL:2005/04/07(木) 15:00:12 ID:DtwT39/7
テーブルのエクスポートのやりかたが分かりません
どうするのでしょう?
312NAME IS NULL:2005/04/07(木) 15:25:48 ID:???
>>310
自分は一応アンインストールしています。

>>311
mysqldump
313NAME IS NULL:2005/04/07(木) 15:56:53 ID:???
初歩的な質問で恐縮なんですが、
マスタテーブルとアイテムテーブルに分けてリレーションさせる場合、
マスタテーブルにレコードを追加する際に、アイテムのフィールドに関してはアイテムに振られたプライマリキーの数値を入れる、
ということで合ってますか?
つまり、アイテムに振られたキーの番号を覚えていないと、マスタに追加する時に何番を入れたら良いか分からなくなりそうなんですが、
そういうものですか?

また、マスタにデータ追加時に、アイテムテーブルに存在しないアイテムが出て来た場合、動的にアイテムテーブルにレコードを追加する、ってことも出来るんしょうか?
314NAME IS NULL:2005/04/07(木) 17:12:50 ID:???
アイテムテーブルって一般的な言葉なのか?
315NAME IS NULL:2005/04/07(木) 19:50:28 ID:EqrEf0eT
MySQLの空間を扱うデータベースについて、リファレンスを読んでも
何のことやらさっぱり分からないんだけど
これについて解説した書籍を知っていたら教えて欲しい。
316313:2005/04/07(木) 21:22:07 ID:???
>>314
"item"というテーブルだと思ってください。
317NAME IS NULL:2005/04/07(木) 21:26:54 ID:???
>>315
そりゃ貴方がGIS(OpenGIS規格)について知識がないからやがな。
318NAME IS NULL:2005/04/07(木) 23:42:48 ID:???
別に広い意味での地理情報だけの仕様でもないでしょう。
例えば二次元情報の時間軸次元付加に空間ベクトルを使っても興味深い。
例えばリレーショナルデータベースという二次元情報の時系列データとして使えば
それ自体で差分スナップショットのできあがり〜
319NAME IS NULL:2005/04/07(木) 23:55:56 ID:???
>>315
国土地理院のデータ2003年度版を47都道府県ぶち込んだんですが
DBがサイズ1.5Gになった・・・
320NAME IS NULL:2005/04/08(金) 01:03:00 ID:???
1.5Gなら使いやすいサイズなのでは?

てっきり20Gとか40Gになるのかと・・・・・
321NAME IS NULL:2005/04/08(金) 04:50:51 ID:???
20Gって2億レコード強ってとこか。。。

Mysqlで最高80億レコードまでは実績あるそうなんで
まーメチャな数字はないが現実的じゃないな。
322NAME IS NULL:2005/04/08(金) 09:11:24 ID:???
MySQLデータベース分だけで250GB割当ててますが何か?
CVS/SVN分以外のデータを全部格納する予定
323NAME IS NULL:2005/04/08(金) 09:46:42 ID:Dnu5jh4x
初心者です教えてください
MYODBCでACCESSにリンクしようと思っているのですが
ODBCにMYODBCを追加できません

(1)環境
Win2000 profesional sp1
Access2000
Mysql4.1
(2)手順
MyODBC-3.51.11-1-win.exe をダウンロードインストール
データ ソース (ODBC)のシステムDSNで「追加」を押しても一覧にMYODBC3.51が出てきません

ネットや本で見ると上の手順で簡単にインストールできるようなのですが
できません
おしえてくださいお願いします
324NAME IS NULL:2005/04/08(金) 10:13:29 ID:???
ドライバのインストールがインストール完了してない感じだけど
systemdrive:\WINNT\System32\myodbc3.dll
とかちゃんと入ってる?なけりゃ失敗してるんだろうけど原因は知らん。
何かシステムログとかに出てないか


325NAME IS NULL:2005/04/08(金) 10:22:05 ID:???
>>319
素朴な疑問。
国土地理院のデータフォーマットってOpenGISなの?
あと、なんでデータをDBにいれたの?
326NAME IS NULL:2005/04/08(金) 11:28:17 ID:Dnu5jh4x
>>324
アドバイスありがとうございます
インストールも正常に終わって
WINNT\System32\myodbc3.dll
もあるのですが、ODBCに追加できません
どなたか分かる方いらっしゃいませんか
327NAME IS NULL:2005/04/08(金) 12:10:19 ID:???
http://www.itmedia.co.jp/enterprise/0307/03/epn41.html
ここの一番上のSQL通りに入力しても、
ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes
と出る。
テーブルタイプはMyISAMでフィールドはSQL通りなんだけど、どうしてだろう?
328NAME IS NULL:2005/04/08(金) 13:13:00 ID:???
>>326
うーん、だとしたらODBCマネージャが腐ってるのか。
望み薄いけどexeのやつアンインストールしてmsiのやつ入れたらどう?
ぢっちみち中身同じだけど。あとMySQL4.1と組み合わせるのはちょっと
どうかと思うがMyODBC2.5系を入れたらどうなるか試す。
329NAME IS NULL:2005/04/08(金) 20:19:12 ID:???
Ver 4.1.10a
Server characterset : sjis
DB characterset : sjis
Client characterset : sjis
Conn. characterset : sjis
となってるんですが、VBAからデータをinsertすると日本語部分が
文字化けを起こしています。どうやったら直るか教えてください。
コマンドプロンプトからinsertする分には正常に表示されるみたい
なんですけど。

かねやんMySQLAdimn.exeでログインすると
このキャラクタセットでは文字化けを起こす可能性があります。
サーバのキャラクタセット ->
クライアントのキャラクタセット -> sjis

というメッセージが出るんですけど。
330NAME IS NULL:2005/04/08(金) 20:32:33 ID:???
>329

ODBC 経由で接続しているのなら、ODBC のデータソース設定で
Connect Options タブ → Initial Statement に set names sjis
を設定してみれば?
331329:2005/04/08(金) 20:57:26 ID:???
P_CNString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& " SERVER=localhost;" _
& " DATABASE=********;" _
& " UID=xxxxxx;" _
& " PASSWORD=yyyyy;" _
& " OPTION=3"
で接続しています

odbcの設定を
Loginタブでは
Data Source Name myodbc
Server Localhost
User xxxxxx
Password yyyyy

Connect Optionsタブで
Initial Statement set names sjis
に設定後Testで Success connection was madeが出たのを確認、
サービスを再起動しテストしましたが、駄目でした。
332NAME IS NULL:2005/04/08(金) 21:16:17 ID:???
>331
接続文字列が、それだと ODBC の設定が使用されてないよ〜
以下のようにしないと。
P_CNString = "DSN=myodbc"
333329:2005/04/08(金) 21:26:35 ID:???
どうも指摘有難うございます。
修正後実行し、コマンドプロンプトで見たら文字化けは直りました。
またこれかもよろしくお願いします。
334NAME IS NULL:2005/04/08(金) 22:20:48 ID:???
>>327
データベースのテーブルタイプはもちろんMyISAMなんだよね?
InnoDBだと駄目だった気がするよ。
ttp://dev.mysql.com/doc/mysql/ja/fulltext-restrictions.html

マニュアルくらい読もうZe
335NAME IS NULL:2005/04/08(金) 22:21:23 ID:???
>>327
ああごめ、MyISAMって書いてあるじゃん。
MySQLのバージョンは?
336NAME IS NULL:2005/04/09(土) 12:03:39 ID:???
>>335
バージョンは4.1.1で、Windowsでやってエラー発生。
テーブルタイプはデフォルトのままだからMyISAMのはず。
337NAME IS NULL:2005/04/09(土) 12:09:43 ID:???
>>336
それはデフォルトがInnoDBになってると思われ。
試しにType=MyISAMを追加してみそ。
338NAME IS NULL:2005/04/09(土) 12:17:47 ID:???
>>337
おおお
出来た!ありがとう!
339報告(別名 チラシの裏 w) :2005/04/10(日) 00:13:20 ID:???
mysql-4.1.10a-win32を一旦アンインストールし、
参考書についていたmysql-4,1,3b-win-zipをインストール
して、MYSQLサービスを立ち上げようとすると、
 システムエラーが発生しました。 
 システムエラー 
 1067が発生しました

というメッセージというエラーが発生。

Googleで検索してwindowsフォルダのmy.iniを一旦削除して
サービスを起動すると正常に立ち上がり。
ではどこが駄目なのか、付け加えてはサービスをあげたり落
としたりしてみたところ、以下のデータがmy.iniに入っていると正常
起動が出来なかった。

#Path to installation directory. All paths are usually resolved relative to this.
basedir="C:/Program Files/MySQL/MySQL Server 4.1/"

#Path to the database root
datadir="C:/Program Files/MySQL/MySQL Server 4.1/Data/"

# Number of threads allowed inside the InnoDB kernel. The optimal value
# depends highly on the application, hardware as well as the OS
# scheduler properties. A too high value may lead to thread thrashing.
innodb_thread_concurrency=8

   ワケ      ワカ      ラン♪
  ∧_∧    ∧_∧    ∧_∧
 (; ・∀・)  (; ・∀・)   (; ・∀・)
⊂ ⊂  )  ( つ つ  ⊂__へ  つ
 く く く    ) ) )     (_)/
 (_(_)  (__)_)    彡(_)

340NAME IS NULL:2005/04/10(日) 18:10:30 ID:???
>>339 たしかに訳若布だが、
なぜにversion下げる?
341NAME IS NULL:2005/04/10(日) 22:49:19 ID:???
Mac OSXにmysqlをインストールしたんですが、システム起動時に立ち上がってしまうのを止めたいんです。どうしたらいいでしょうか?
342NAME IS NULL:2005/04/11(月) 14:38:16 ID:???
343341:2005/04/11(月) 19:21:04 ID:???
>>342
ありがとうございます。助かりました!
344134:2005/04/12(火) 14:43:54 ID:/xM/e5Y/
MySQL5.0.3beta のインストールについて質問させてください

mysql-essential-5.0.3-beta-win32.msi
上記のファイルからインストール手順を進めていましたが
Install As Windows Service のインストールが出来ずに

cannot create windows service for Mysql error: 0

と言うエラーメッセージが表示されてしまいます。

以前のバージョンが残っているとインストールが途中で止まるとの事なので
残らず削除しましたが、やはり完全にはインストールができません。
345NAME IS NULL:2005/04/12(火) 15:16:51 ID:/8uXX3jw
MYSQLのテーブルをACCESSにリンク付けしたいのですが、
MYODBCの設定で各種パラメータ設定後、
test data sourceボタン押下時に、
アクセス拒否の旨のメッセージが出力されます。
どう対応していいのか分かりません。誰かエロイ人
教えてください。お願いします。

バージョンは以下のとおりです。
MYSQL:4.0.14
MYODBC:3.51.8
346NAME IS NULL:2005/04/12(火) 15:38:45 ID:???
そのMySQLログインユーザはODBC操作を許可してるかい?
347NAME IS NULL:2005/04/12(火) 16:01:47 ID:/8uXX3jw
>>346
ご返答ありがとうございます。
たぶんしてないと思います。MYSQL関連のサイトを拝見したのですが
いまいち分からなくて・・・
ODBC操作の許可ってどうやるんでしょう
なんせ初心者なので・・・

348NAME IS NULL:2005/04/12(火) 16:15:37 ID:???
349NAME IS NULL:2005/04/12(火) 18:56:04 ID:???
例えば下記のようなa,bのテーブルがあって、

a 1 1 1 2 2 3 3 3 ・・・n n n・・・
b 1 3 5 1 6 2 4 5 ・・・3 5 9・・・

a=1の場合のbが最小値である列
a=2の場合のbが最小値である列
a=3の場合のbが最小値である列

a=nの場合のbが最小値である列

だけを取り出す。
上の例では(a,b)=(1,1)(2,1)(3,2)(n,3)の列だけを取り出す。
のにはどういったSQLを書けば宜しいでしょうか。
考えたけど、よく分かりませんでした。
使うべき関数だけでもご教授お願いします。
350NAME IS NULL:2005/04/12(火) 19:09:28 ID:???
select a, min(b) from てーぶる group by a
351fla2404-061.wind.ne.jp/~ss.jpg:2005/04/12(火) 19:26:41 ID:???
え ぇ け っ し と る の ぉ(*´Д`)ハァハァ


うはっwwwおkwwwうえっうえっwww??
352NAME IS NULL:2005/04/12(火) 19:39:20 ID:yaYL03P4
345の者です。やっぱりうまくいかないです。一番最初のMYSQL起動時にユーザ名とパスワードを入力しなかったのがまずかったのでしょうか?ちなみにアンインストールの後インストールし直してもユーザ名とパスワード入力画面が出ません。今回、サーバ環境作るの初めてなもので…
353NAME IS NULL:2005/04/12(火) 20:58:03 ID:???
>>350
なんか出来そうな感じです、有難う御座いました。
354NAME IS NULL:2005/04/13(水) 02:57:35 ID:AvWiAUcm
SELECT * from tables; で出てくる順番において

ある行を上から2番目に移動させたいのですが
??????? from tables where xxx is yyy;
どうすればいいでしょう?

テストデータで何千件も番号の羅列のデータがあるので、
実際に使うデータを見かけ上、2番目にもってきたいという理由です。
355flets-a-west-16-32.dsn.jp:2005/04/13(水) 03:31:35 ID:???
えぇけっしとるのぉ(*´Д`)ハァハァ


うはっwwwおkwwwうえっwww??
356NAME IS NULL:2005/04/13(水) 08:47:29 ID:???
>>354
んなもんクライアント側で適当にやれや
357NAME IS NULL:2005/04/13(水) 11:15:48 ID:1z1gdUmS
参照制約について質問です。
MySQLでは同一テーブル内での自己参照制約を作成することは可能でしょうか?

同一テーブル内で、子ID・親IDを持ち、親IDは子IDを必ず参照するといった
制約をつくりたいのですが、別テーブルにわけないと実現不可能でしょうか。
358357:2005/04/13(水) 11:40:18 ID:???
自己解決しました。
作成できますね・・・。
359NAME IS NULL:2005/04/13(水) 14:53:07 ID:???
mysql 4.1.10a-nt
myodbc 3.51.11 (Initial StatementにSET NAMES sjis)
#utf8にしても同じ

クライアントはAccessでDate(time)型のフィールドを更新しようとすると
SQLデータ型が有効範囲にありません(#0)
というメッセージが出ます。これって回避できないもんなんでしょうか?

またexcelで管理してるデータをmysqlに貼り付けたいだけなんで
別になんかいい方法があれば、教えてください。

4.1.10は・・・ってのは置いといて。
360354:2005/04/13(水) 19:12:25 ID:???
mysql側でできないんですか・・・。
一応phpmyadminはあるのですが、これをつかってでも無理ですか?
361NAME IS NULL:2005/04/13(水) 19:58:14 ID:???
>>360
order by とかつけてないなら、
それは「たまたま」二番目に出てくるだけであって、
必ず二番目に出てくる保証はない。
362NAME IS NULL:2005/04/13(水) 22:09:12 ID:???
>>359
ttp://bugs.mysql.com/bug.php?id=8363
じゃね?

バージョン下げれば大丈夫っぽ。
363NAME IS NULL:2005/04/13(水) 22:10:43 ID:???
>>360
RDBMSって基本的に順番は保持してないんだヨ。
RDBMSについて勉強してみましょう。

364NAME IS NULL:2005/04/13(水) 23:40:40 ID:???
固定長文字列の中から、
ある文字列を指定した桁に含むレコードを検索したいんだけど、
通常インデックスと全文インデックスどちらでやってもlike '__abc'と言う様な検索が凄く遅いんです。
文字列はスペースの区切りが無いのでmatch()against()では1件もヒットしません。
何か良い方法ってありませんか?
365NAME IS NULL:2005/04/14(木) 04:56:53 ID:mAlafAcg
正規化されていないテーブルを、あとから切り分けたい場合、どうしたらいいんでしょうか?
・対象のフィールドで重複しないレコードを抽出して、新たに作ったテーブルに入れていく。
・新たに出来たテーブルにauto_incrementで振られた数字をプライマリキーとし、
元のテーブルのぉ…うわああああわかんね!!
366359:2005/04/14(木) 08:57:12 ID:???
>>362
thx
古いやつは、utf8書くのにちゃんちやってくれなかった覚えが
あるから、とりあえず中に書いてあった3.51.11-2ってので試してみるわ。

ついでに
>>364
subsrting()使えばlikeよりははやいんじゃないの?

>>365
漏れもわかんね。もっと詳しく
367359:2005/04/14(木) 10:21:27 ID:???
3.51.11-2で今のところ問題なし。
ついでにset names sjisとか書かなくても、日本語ちゃんとでるよ
368NAME IS NULL:2005/04/14(木) 17:50:12 ID:???
>>366
取り出す桁の位置が固定ならsubstring()使った関数インデックス作っとくとよさげやね。
それか元のテーブルの主キーと検索に必要な桁だけのテーブルを別に作っといてJOINするとか。

>>364
LIKE '_xxx' や LIKE '%xxx' みたいな式はインデックス効かないよ。
369NAME IS NULL:2005/04/15(金) 08:29:33 ID:l/QWyh7V
教えてくれませんか…?
phpMyadminの "character set client(セッション値)" の値を
"sjis" にするには…? "sjis" で管理、表示させたいんだけど
なにをどうしても "utf8" のままで…。どこをどうしたらいいんでしょ?
つまらない質問だったらごめんなさいだす、、、

環境はぁ、
fedora core 3
phpMyAdmin 2.6.1-pl3
MySQL 4.1.10
PHP Version 5.0.4
で、あります。
370NAME IS NULL:2005/04/15(金) 09:27:11 ID:???
>>369
binaryにsjis突っ込んでるとか?
わざわざsjisにしたい理由がわからない
371NAME IS NULL:2005/04/15(金) 10:28:50 ID:E+fJ7AX5
質問させて下さい。
WinMySQLadmin1.4 にて Databasesタブに、作成したテーブルが表示されないのですが
どうすれば見れるようになるでしょうか?
何回かアンインストールを繰り返しているのですが、WinMySQLadmin画面では前の履歴が
残ってい居るようです、(my.ini 設定など)。


WindowsXP MySQL4.0.21 環境です。
372NAME IS NULL:2005/04/15(金) 10:56:39 ID:KrN68DWh
質問です。

MYSQLにはフィールドロックはあるのでしょうか?
Google先生に頼んでも、普通のLockTableしか見当たらず、もしかしたら無いのかとコマっております。
373NAME IS NULL:2005/04/15(金) 11:33:56 ID:???
age
374NAME IS NULL:2005/04/15(金) 11:43:43 ID:???
>>372
フィールドロックって何?
レコードロックのことなら以下で。
 SELECT … FROM … WHERE ロックしたいレコードの抽出条件 FOR UPDATE

抽出条件の対象カラムが PRIMARY KEY でないとテーブルロックになるので注意。
テーブルタイプは InnoDB でないとレコードロックは使用できなかったはず。
375NAME IS NULL:2005/04/15(金) 11:47:58 ID:???
Mysqlってテーブルロックだけじゃなかったでしたっけ?
376muro c119201.tctv.ne.jp/:2005/04/15(金) 11:58:44 ID:???
え     っ     る     ハ     
  ぇ     し     の    ァ ハ  
    け     と     ぉ     ァ 
うはっwww夢がひろがりんぐwwwwww   
377NAME IS NULL:2005/04/15(金) 13:07:08 ID:???
>>374
すいません、用語が間違ってました
レコードロックというんですね。Google先生でもひっかかります。
ありがとうございました。
378NAME IS NULL:2005/04/15(金) 13:19:27 ID:???
>>375
選択したストレージエンジンによる。
379NAME IS NULL:2005/04/15(金) 13:59:17 ID:???
>>378
dクス。
380muro YahooBB220029188143.bbtec.net/:2005/04/15(金) 14:06:58 ID:???
え     っ     る     ハ     
  ぇ     し     の    ァ ハ  
    け     と     ぉ     ァ 
うはっwww夢がひろがりんぐwwwwww   
381muro p1160-ipad11gifu.gifu.ocn.ne.jp/:2005/04/15(金) 19:23:29 ID:???
え     っ     る     ハ     
  ぇ     し     の    ァ ハ  
    け     と     ぉ     ァ 
うはっwww夢がひろがりんぐwwwwww   
382:2005/04/16(土) 00:19:52 ID:???
新種のマルウェアが登場、2ちゃんねるを荒らす
ttp://www.itmedia.co.jp/enterprise/articles/0504/15/news068.html
383NAME IS NULL:2005/04/16(土) 10:33:21 ID:zFHNc9CJ
質問です。

フィールドの位置を移動させるにはどうすればいいのでしょうか?
384NAME IS NULL:2005/04/16(土) 10:59:52 ID:???
alter
385前スレ966:2005/04/16(土) 11:59:03 ID:4ylbpIar
前スレでLike検索時に、2バイト文字がうまく検索できないと書いた966です。
あれから、以下のような方法を思いつきました。

PHPで、すべてを取得し、mbstringかけてから配列につめる。
ループさせて、一致する文字を探す。

この方法なら出来るとは思うのですが、みなさんは、どういう風に実現してるんでしょうか?
LIKE '%キーワード%'で、作成されている方、みえませんかねぇ?

386NAME IS NULL:2005/04/16(土) 13:33:13 ID:???
>>385
いや、普通に LIKE '%キーワード%'の中間一致でやってるよ。
効率は悪いけど。

「2バイト文字がうまく検索できない」のは
ちゃんと文字コードを合わせてないから。
387前スレ966:2005/04/16(土) 16:25:49 ID:4ylbpIar
>>386
ありがとーーーーー! 感激っす。
力強く断言してもらったおかげで、探す際の気合の入り方が変わりました。
おかげさまで、my.confの書き換え忘れを発見。
さらに、BLOBからTEXTに型を戻して、PHPのSQLからもbinaryを外して、解決。
はー。
ようやく、あちこちに書いてあった意味が、繋がった...
今夜は良く眠れます。
388NAME IS NULL:2005/04/16(土) 18:51:01 ID:???
http://dev.mysql.com/doc/mysql/ja/todo-mysql-5-0.html
ここにR-TREEっていう単語が出てくるけどこれは何?
MySQLの通常のインデックスがB-TREEという事は知ってるんだけど。
389NAME IS NULL:2005/04/16(土) 22:46:53 ID:???
全文インデックスをつけたboolean検索って、emptyになる場合がそうでない場合に比べて極端に遅くない?
なぜこうなるのかちょっと不思議。
390NAME IS NULL:2005/04/16(土) 23:56:13 ID:zFHNc9CJ
>>384
thx
とても助かりました。

391NAME IS NULL:2005/04/17(日) 03:08:04 ID:???
myisam形式ってメモリ上で格納されるので、速度が速いとどこかで見たのですが、
いきなり電源が落ちてしまった場合は、サーバ立ち上げ時から更新されたデータは飛んでしまうのでしょうか?
fedora coreですが、デフォルト状態で使っていても問題ないのでしょうか?
392NAME IS NULL:2005/04/17(日) 15:01:18 ID:???
>>387
R-TreeっていうのはたしかB-Treeを多次元に拡張したもののはず。

>>391
heapと勘違いしてない?


そういえば、senna の日本語全文検索機能を組み込んで使ってる人はいる?
会社名が怪しすぎるから試していなかったけど、ちょっとやってみるかな。
393NAME IS NULL:2005/04/17(日) 18:41:07 ID:???
>>392
R-Treeは本来は多次元インデックスです。
しかしGISデータ型用だから2次元までしか対応してないのでは?
PostgreSQLでもやはりR-Treeは2次元インデックスです。
PostgreSQLで多次元インデックスが欲しければGiSTで作ることになります。
なおPostgreSQLでは昔から指定できたので関連文書に解説があります。

4.10) R-tree インデックスとは何ですか? (PostgreSQL FAQより)
http://www.postgresql.jp/wg/jpugdoc/faq-japanese.html#4.10
[postgres95 801] spatial data structures
http://ml.postgresql.jp/pgsql-jp-old/pgsql-jp/1996Oct/msg00007.html
394NAME IS NULL:2005/04/18(月) 21:51:23 ID:6qA5XaRH
リファレンスからコピペ
CREATE TABLE t1 (s1 INT);
INSERT INTO t1 VALUES (1);
CREATE TABLE t2 (s1 INT);
INSERT INTO t2 VALUES (2);
その後、SELECT を実行します。
SELECT (SELECT s1 FROM t2) FROM t1;
結果は 2 になります。なぜなら、t2 には、カラム s1 を持つレコードがあり、s1 の値は 2 であるためです。

副問い合わせを勉強中なんだけど、これの意味が分からないので教えてください。
select (select s1 from t2) from t1;がselect 2 from t1; ってこと?
それともこのSQL文全体の結果が2になるんだったらselect s1 from t2;と同じじゃ?
395NAME IS NULL:2005/04/19(火) 00:28:14 ID:???
>>394
select 2 from t1 と同じ意味が正解。
今回の例では、select s1 from t2 でも同じ結果が返るけど、t1 に
複数レコードあれば、結果は異なる。
やってみれば判る。
396NAME IS NULL:2005/04/19(火) 05:41:45 ID:???
同様な構造のテーブルに対して行った複数のselectの結果の中から、
全てのselectの結果に含まれるカラムだけを取り出す方法ってありますか?
397NAME IS NULL:2005/04/19(火) 09:24:08 ID:???
>>391
> いきなり電源が落ちてしまった場合は、サーバ立ち上げ時から更新されたデータは飛んでしまうのでしょうか?
そう。

> fedora coreですが、デフォルト状態で使っていても問題ないのでしょうか?
用途による。
セッション情報なんかはいいんじゃない?
ロールバックかけるようなものを入れちゃまずいでしょ。
398NAME IS NULL:2005/04/19(火) 15:46:22 ID:???
>>397
MyISAMじゃなくてHEAP型のことならと一文あった方が、誤解がない
399NAME IS NULL:2005/04/19(火) 16:13:10 ID:???
>>391
MyISAM型はクエリを受け付けるとメモリ上の処理待ちリストに追加され、
クエリー完了結果はディスクに実際に書き込まれてからしか返されないので、
不意の電源断などでアブナイ部分は、DBMSが混んでてそのクエリが処理待ち
リストに入ってる瞬間だね。1行クエリはいいけど、ロックを掛けて複数クエリで
成立する処理をやってる場合は注意した方がいい。

HEAP型はクライアント間で共有ができるので、
>セッション情報なんかはいいんじゃない?
は良い。MyISAMでも充分なスピードだけど。

「不意の電源断」の起こりそうな環境で大切なデータは扱うなよ
400397:2005/04/20(水) 00:03:49 ID:???
>>398
392氏の指摘で十分かと思いはしょりました。。

>>391
399氏の言うとおりです。
テーブルをメモリ上に持つメリットはあるけど、キーバッファや
ディスクキャッシュにメモリを割り当てた方がトータルでは良かったりするかもね。
401NAME IS NULL:2005/04/20(水) 06:23:16 ID:g5cEy3Sy
数値型フィールドから、ある桁のビットが立っているカラムだけを取り出す方法ってありますか?
ビット演算でもインデックスって使われるんでしょうか?
402NAME IS NULL:2005/04/20(水) 09:49:23 ID:???
>>401
立ってるだけでいいなら
where (a.foo * 256) != 0
とかで
403NAME IS NULL:2005/04/21(木) 09:07:56 ID:???
create table geo (geogeo surface);
このSQL文が失敗するのですが、なぜですか?
create table geo (geogeo multipoint);
これは成功します。
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'surface)' at line 1
というエラーメッセージが出ます。
404403:2005/04/21(木) 09:54:44 ID:???
自己解決しました。
405NAME IS NULL:2005/04/21(木) 11:19:09 ID:???
>>404
解決したらな、解決方法を書けよ・・・
406NAME IS NULL:2005/04/21(木) 16:23:36 ID:???
多分、単純にMySQLでサポートしていない型だから
http://dev.mysql.com/doc/mysql/ja/mysql-spatial-datatypes.html
407NAME IS NULL:2005/04/21(木) 23:32:23 ID:???
--with-charset=sjis
sjisでコンパイルしたmysqlへhtmlのform(euc-jp)データをインサートすると
勝手にsjisになるんでしょうか。
408NAME IS NULL:2005/04/21(木) 23:44:56 ID:???
なりません。
409NAME IS NULL:2005/04/22(金) 00:02:02 ID:???
じゃあ意味ないじゃん
410NAME IS NULL:2005/04/22(金) 00:14:24 ID:???
「意味」ってなに?
411NAME IS NULL:2005/04/22(金) 00:31:48 ID:???
charset=sjis 指定する意味だよ。
なんで指定するの?
412NAME IS NULL:2005/04/22(金) 00:54:32 ID:???
>>411
MySQLサーバが中に入ってるデータをsjisのテキストとして扱うため。
指定がなけりゃ、バイナリーなんてどう扱っていいか判らんやん。
413NAME IS NULL:2005/04/22(金) 01:02:45 ID:???
もうちょっと突っ込んで教えてください。
selectしたときに出力されるコードがsjisになるって
ことでしょうか?
414NAME IS NULL:2005/04/22(金) 01:11:10 ID:???
>>413
9 各国キャラクタセットと Unicode
415NAME IS NULL:2005/04/22(金) 01:12:37 ID:???
--with-charset=sjis
したときには、その文字コードで返ってくるんですか?
416NAME IS NULL:2005/04/22(金) 01:56:43 ID:???
--with-charset=sjisつうのは、俺様がsjisとしてデータを投げ込むので
貴様(サーバ)はsjisとして扱い給えという指定。
受け渡しに際して勝手に色々と気をまわすのは俺様に対して失礼である。
また思い込みによって処理を間違える可能性もあるので貴様は他に何もするな。

ということ。

417NAME IS NULL:2005/04/22(金) 03:33:15 ID:???
>>416
ありがとう!
バイナリのインスコはやめたほうがいいな。と妄想
418NAME IS NULL:2005/04/22(金) 03:36:23 ID:L0u67L2B
そもそも文字コード変換は
DBの仕事ではない。
DBは単なるインデックスつきの箱だ。
419403:2005/04/22(金) 04:33:20 ID:???
>>405
>>406の指摘通り、インスタンス化できるかできないかの違いで、
つまりsurface型はそもそも作れないという事でした。

リファレンスの空間機能についての解説が少なすぎる気がする・・
未実装と書かれてる機能が使えたりするし。(contains()とか)
420NAME IS NULL:2005/04/22(金) 19:11:34 ID:???
>>418 なんだが、ソートせれ、とか言い始めると
単純でなくなる。
421NAME IS NULL:2005/04/22(金) 19:17:26 ID:???
>420
LIKE 使うときもな。
文字の切れ目がわからないと困る。
422NAME IS NULL:2005/04/22(金) 22:36:27 ID:???
mysqlインスコしたら
tcp 0 0 *:mysql *:* LISTEN
ここのポートリスンしてるんだがこのままでいいですか?
ここのweb鯖からのリクエストしか応じない場合は
ふさぐべき?
423NAME IS NULL:2005/04/22(金) 23:07:00 ID:???
>>422
skip-networking
424NAME IS NULL:2005/04/23(土) 06:52:57 ID:XvvE8E3e
すみません、どうしても分からないので質問させて下さい。

現在一通りデータを入力し終え、PHPからDBを呼び出すスクリプトまで完成しました。
で、色々と検索テストしていて一つ困った事が出てきました。
それは、入力したデータの中に全角英数文字と半角英数文字が入り乱れている事です。

MySQLの方に全角/半角を区別しないで検索する命令があるだろうと思ってたのですが、
いざ実装しようとすると、探せど探せど情報が見付かりません…
宜しければ何方かやり方をご教示願えませんでしょうか?
425NAME IS NULL:2005/04/23(土) 07:02:30 ID:???
>>424
ないよ、そんな(半/全を同一視)機能。

MSのSQLサーバとかで慣れて欲しいって話があったので、
フロントで吸収するように作った事はあるけど。
426NAME IS NULL:2005/04/23(土) 07:08:04 ID:???
>>425
えぇ〜!そうなんですか!?
う〜ん、最初から分かってればなぁ。
とりあえずデータの方を修正するしかないですね…
しかし、まさか無いとは…orz
427NAME IS NULL:2005/04/23(土) 09:12:32 ID:???
>>426
そう驚くものでもないが。

曖昧一致は便利だし欲しい機能ではあるけどね。
渡辺と渡邊と渡邉を同一視してくれるとか、
1や一、壱、@あたりを同じと見なすとか、
まあRDBMSが担当すべき領域なのかは疑問だが。
428NAME IS NULL:2005/04/23(土) 09:43:31 ID:???
データを修正するよりも、phpで変換した方が速いんじゃない?
いや、パフォーマンスじゃなくって、手間の方が。
429NAME IS NULL:2005/04/23(土) 14:01:33 ID:???
PHPだと、全角半角変換も漢字コード変換も一発だったっけか

登録するデータに一貫性が無いとDBなんて・・・・
430NAME IS NULL:2005/04/23(土) 14:13:51 ID:w8MMk9gw
全角半角とかを統一した、検索用の
カラムかテーブル作ればいいんだよ。
431NAME IS NULL:2005/04/24(日) 15:59:07 ID:???
PHP+MySQLでデータをサイトに表示する以外にメールの送信にも使います。
その為にMySQLにISO-2022-JP(JIS)を使っても問題ないのでしょうか?
サイトもISO-2022-JP(JIS)で構成されているので文字化けはしていないようです。
やっている人に聞いたら「動いているから大丈夫」って事なんですが、
使用する文字コードはEUCかUnicode、
あるいはSJISぐらいしか聞いたこと無いので気になってしまいます。
432NAME IS NULL:2005/04/24(日) 16:51:36 ID:???
>>431
データベースをujisかutf8に設定して、jisでデータを入れたいって話かな。
ただ単純に格納するだけならujis/utf8の設定で、jisデータを入れることは何ら問題ない。
(MySQL4.1以降はエンコードの無用な変換が掛からないように設定等に注意)

先にも色々出ているが、それを日本語のデータとしてDBMSの機能で色々検索など掛けたい場合には駄目。
データベースにあったエンコードに変換して格納、出力に合わせて、メールならjis、
ケータイ向けならsjisなどとフロント側で変換するのが普通。
433NAME IS NULL:2005/04/24(日) 16:56:54 ID:???
あと、ISO-2022-JPで扱えない文字(○囲み数字とか、半角カナとか)が
許されているキャラクターセットからの変換の場合、
その辺を代替または削除する処理もしておく。
434NAME IS NULL:2005/04/24(日) 17:27:18 ID:???
詳しくありがとうございます。
今のところは格納しているだけなんですが、
やはりこれから検索などをかけたくなったときに困るので
言われているように格納はujis等にして
必要に応じて変換して使用するようにしてみます。

半角カナや機種依存文字の問題もありました。
本当に有り難うございます。
435NAME IS NULL:2005/04/25(月) 01:46:24 ID:???
質問です。
4.1.11を再インストールしたら、Config Wizardの最後で
Could not start the service MySQL.Error:0
と表示され失敗します。
sc deleteやったり、WizardにてRemoveし、サービスの中にも
MySQLがないのを確認して再度Wizardを行っても同様です。
メッセージはやや異なりますが、>>344さんと同じでしょうか?
失敗した後でもMySQLサービスが出来ているので、開始させてみると
ローカルコンピュータのMySQLサービスを開始できません。
エラー 1067 プロセスを途中で強制終了しました。
とエラーが表示されます。
解決方法はありますか?よろしくお願いします。
436NAME IS NULL:2005/04/25(月) 18:26:01 ID:???
Oracle触ったことはありますがMySQLは初心者です。
MySQLのバックアップ・リストアについて調べています。
MySQLで稼働中にバックアップをとる方法としてはmysqldumpが提供されていますが、mysqldumpで取得したダンプは参照整合性は保障されているのでしょうか?
複数のテーブルにまたがる更新トランザクション中にmysqldumpが走ると整合性が保障されなくなるような気がします。
メンテナンス時間にアプリケーション側でWrite Lockするような機構を用意するという設計思想なのでしょうか?
437NAME IS NULL:2005/04/25(月) 20:03:59 ID:???
ストアドプロシージャがサポートされるのは、
3系、4系、5系、どのシリーズから?
438NAME IS NULL:2005/04/25(月) 20:43:50 ID:???
>>436
mysqldump --help

mysqlhotcopyもあるよ
439NAME IS NULL:2005/04/25(月) 22:47:48 ID:???
>>437
ストアドは5じゃなかった?
440NAME IS NULL:2005/04/26(火) 00:10:49 ID:???
441NAME IS NULL:2005/04/26(火) 01:46:56 ID:???
>>436
整合性は保障されないのではないでしょうか。
うちの場合は、複数台レプリケーションさせて、
最後の1台だけ、cronでslave stopしてから、
mysqldumpしています。

ダンプ後にslave startすれば、数分後には全台同期します。
やっぱりこれが非同期レプリケーションの利点ですね。
442NAME IS NULL:2005/04/26(火) 02:22:12 ID:???
>>441
オライリにそれについてのいい訳書があるよ
443NAME IS NULL:2005/04/26(火) 04:12:27 ID:???
>>435
エラーログには何か出てないの?
444NAME IS NULL:2005/04/26(火) 16:58:20 ID:???
>>435
Windowsなら参考までに >>339
445NAME IS NULL:2005/04/26(火) 17:47:40 ID:cnxIRR5B
ユーザーIDとグループIDを関連付けるデータテーブルが下記のようにある時に、
useridが1の所属しているグループとピッタリ同じグループに
所属しているuseridを抜き出す方法ってあります?



id | groupid | userid
---+---------+-------
1 | 2 | 1
2 | 3 | 1
3 | 5 | 2
4 | 6 | 3
5 | 6 | 4
6 | 1 | 4
7 | 3 | 4
8 | 8 | 5
9 | 9 | 5
10 | 1 | 5
11 | 2 | 5
12 | 4 | 6
13 | 7 | 7
446NAME IS NULL:2005/04/26(火) 17:54:36 ID:???
>>445
select userid from table where groupid in (select groupid from table where userid=1)
447NAME IS NULL:2005/04/26(火) 17:58:32 ID:???
>>445
2と3を抽出したいって事か?

id | groupid | userid
---+---------+-------
1 | 2 | 1
2 | 3 | 1

448NAME IS NULL:2005/04/26(火) 18:00:11 ID:???
ネストできたっけ?4.0系で
449NAME IS NULL:2005/04/26(火) 18:01:45 ID:???
>>447
userid1と同じグループに属する全てのuseridを抽出でしょ?
450NAME IS NULL:2005/04/26(火) 18:19:51 ID:???
サブクエリは4.1から。サブクエリ使わなければこんな感じ?
SELECT table.userid FROM table
LEFT OUTER JOIN table AS x ON table.groupid=x.groupid
WHERE x.userid=1
451445:2005/04/26(火) 20:01:02 ID:cnxIRR5B
どうもです。実際にテーブル作ってやってみました。
作ったテーブル
mysql> select * from test order by user_id,group_id;
+----+----------+---------+
| id | group_id | user_id |
+----+----------+---------+
| 1 | 1 | 1 |
| 3 | 2 | 1 |
| 2 | 1 | 2 |
| 5 | 3 | 2 |
| 17 | 9 | 2 |
| 9 | 2 | 3 |
| 8 | 4 | 3 |
| 22 | 1 | 4 |
| 10 | 2 | 4 |
| 11 | 1 | 5 |
| 12 | 2 | 5 |
| 18 | 5 | 5 |
| 13 | 1 | 6 |
| 14 | 2 | 6 |
| 4 | 3 | 6 |
| 6 | 4 | 6 |
| 15 | 8 | 6 |
| 20 | 1 | 7 |
| 21 | 2 | 7 |
| 7 | 7 | 8 |
| 19 | 2 | 9 |
| 16 | 8 | 9 |
+----+----------+---------+

>>446 さんのをサブクエリ使えないので二段階で。
mysql> select group_id from test where user_id=1;
+----------+
| group_id |
+----------+
| 1 |
| 2 |
+----------+
2 rows in set (0.00 sec)

mysql> select user_id from test where group_id in (1,2);
+---------+
| user_id |
+---------+
| 1 |
| 2 |
| 1 |
| 3 |
| 4 |
| 5 |
| 5 |
| 6 |
| 6 |
| 9 |
| 7 |
| 7 |
| 4 |
+---------+
13 rows in set (0.00 sec)
452445:2005/04/26(火) 20:04:39 ID:cnxIRR5B
次に、>>450 さんのクエリ。

mysql> SELECT test.user_id FROM test LEFT OUTER JOIN test AS x ON test.group_id=x.group_id WHERE x.user_id=1;
+---------+
| user_id |
+---------+
| 1 |
| 2 |
| 1 |
| 3 |
| 4 |
| 5 |
| 5 |
| 6 |
| 6 |
| 9 |
| 7 |
| 7 |
| 4 |
+---------+
13 rows in set (0.00 sec)

たしかに、450さんの結果は446さんと同じなのでクエリとしては同じなんだけど、求めている結果と違います。

>>449 さんのように結果がほしいので、
+---------+
| user_id |
+---------+
| 1 |
| 4 |
| 7 |
+---------+
と出てきて欲しいのですが。(1はあってもなくても。)
453NAME IS NULL:2005/04/26(火) 20:26:42 ID:???
>>452
> >>449 さんのように結果がほしいので、
> +---------+
> | user_id |
> +---------+
> | 1 |
> | 4 |
> | 7 |
> +---------+
> と出てきて欲しいのですが。(1はあってもなくても。)
シノニムで
454436:2005/04/26(火) 23:31:14 ID:???
>438,441

どうもありがとうございました。ただいまmysqlsnapshotというのも調べているところです。
455NAME IS NULL:2005/04/26(火) 23:33:21 ID:???
DISTINCT ?
456NAME IS NULL:2005/04/26(火) 23:39:17 ID:???
こんな質問したら、全然わかってないことがばれるのですが、
質問させて下さい。

mysql3系で、1つのテーブルの中に、文字列や数字を入れて、SQLで呼び出すぐらいしか知識がありません。

例えば、
・商品テーブル
商品名 単価 配送サイズ
商品A 30,000 80
商品B 50,000 120

・配送料テーブル
サイズ 料金
60 500
80 750
100 1000
120 1250
140 1500
160 1750
みたいなデータがあったとします。

たとえば、商品Aを選んだときに、送料もデータベースから探すことはできるのでしょうか?
こういう2つのテーブルを使えば、送料が変わっても、配送料テーブルだけ書き換えれば助かります。

こういうのをリレーショナルというのでしょうか?
それとも副問い合わせというのでしょうか?
この場合、商品テーブルの配送サイズと、配送料テーブルのサイズをリンク(?)させないといけないですよね?
ここらへんを理解すれば、いろいろな事ができそうなのですが・・・。

そもそもmysqlの3系でこういう事はできるのでしょうか?(myISAM? InnoDB?)
457NAME IS NULL:2005/04/27(水) 00:40:21 ID:???
現在の安定系は4.0だと思うのですが
4.1の話もちらほら見かけます
4.0と4.1のどちらが良く使われているのでしょうか?
phpでmysqliが使えるようになるので
気になっています
458NAME IS NULL:2005/04/27(水) 01:20:56 ID:???
>>458 RDBならできます。mysql3でも。サブクエリいりません。
っていうかもうちょっと勉強しろよ。「結合」か「join」で検索しる。
459NAME IS NULL:2005/04/27(水) 02:21:09 ID:???
>>457
mysqliは、PEAR使ってるなら余りメリットは無い。
(MySQL4.1以降の新機能を使うためには、どの道mysqli経由しかない訳だが)

自分はMySQL4.0.xとMySQL5.x使ってる。
MySQL3.xと互換性の高いMySQL4.0.x、新機能でMySQL5.xの区分け。
460NAME IS NULL:2005/04/27(水) 10:43:17 ID:???
mysql4でポート番号を3306,3307,3308の3つで
1台のサーバで同時起動って可能でしょうか。
461NAME IS NULL:2005/04/27(水) 12:25:12 ID:???
>>460
そこでいう"サーバ"ってのはプロセスのことか?
それともハードウェアのことか?
462NAME IS NULL:2005/04/27(水) 12:35:20 ID:???
ああ、台って書いてあるな。

可能。mysqldを複数動かしてください。
463456:2005/04/27(水) 15:23:43 ID:fOa9uM/D
>>458
left joinってやつですね。
見てみました。ちょっとSQL文が複雑に見えますが勉強してみます。

サブクエリってのは、副問い合わせと同じ意味でしょうか?
464NAME IS NULL:2005/04/27(水) 16:48:36 ID:M5WGj5ur BE:76692645-
同じグループから5件ずつ取り出したいのですが、一度のクエリで抽出可能なのでしょうか?

今まではグループ分けしたものを抽出してから
それをループでグループ毎にクエリして、抽出してましたが
これって効率悪いですよね?
465localhost:2005/04/27(水) 18:06:02 ID:nNNwpcrw
ちょっと教えてください。
テストでDBサーバを分散しているのですが。

条件によってそれをおのおの指定したいのですが、可能でしょうか?

AサーバとBサーバが
ある場合、
どのようにすれば接続できるでしょうか?

PHPはCのWebサーバからアクセスします。

Cのindex.phpで条件がAで「検索」とすればAのDBを見に行き、
Cのindex.phpで条件がBで「検索」とすればBのDBを見に行く。

ってかんじなんですが。
どなたか、ヒントでもいいので教えてください。
m(__)m

466NAME IS NULL:2005/04/27(水) 19:27:42 ID:???
普通にPHPの中でその条件Aとか条件BをIF文とかで分岐させて、
その中で、サーバAかBかを指定して接続すれば良いじゃん。
467NAME IS NULL:2005/04/28(木) 01:44:09 ID:???
>>465
各サーバが同期した負荷分散ならば、
mysql_connectのホストを乱数で切り替えたりするんだけど。

単にテーブルが散らばってるだけなら、
とてもメンテナンスしづらく思えます。
468NAME IS NULL:2005/04/29(金) 00:07:15 ID:???
BASIC認証を使わず、mysqlのユーザ・パスを使って
phpmyadminのトップページでフォームで入力する画面って
config.phpのどこを弄ればいいの?

http://www.sakura.ne.jp/support/manual/rs/images/xoops51.gif
こんな感じにしたいんだけど、

['auth_type']かなと思って、http・cokkieを選んだけど無理ぽ。
469NAME IS NULL:2005/04/29(金) 01:20:18 ID:???
似た様な事を
http://pc8.2ch.net/test/read.cgi/db/1103113155/560-562
にも書いたのですが、もしや MySQL 特有の問題かと思ってこちらにもポストします。
クロスポストごめんなさい。

table hoge {
  ID int(20),
  md5化URL varchar(32),
  その他date, userid, subjectなどなど
}
というテーブルがあって、md5化URLが重複してる項目を探そうとしてます。
前掲のスレ 561 にあるように 直接 “自己結合で where条件に IDが!= かつ md5化URLが= ”
というのはやってみたんですが、empty が帰ってきます。
でも他の column を使って、似ている要素を探し出すと、
明らかに md5化URL 値が重複した row はあるんです。
これって MySQL の varchar の扱いとかそう言う問題でしょうか??
MySQL は 4.1.7 みたいです。
470NAME IS NULL:2005/04/29(金) 01:23:03 ID:???
mysqlとかんけいないじゃん
471NAME IS NULL:2005/04/30(土) 08:19:21 ID:???
すいません、mysqlをインスコしたのですが
具体的にどういうときに使ったら良いものなんでしょうか?

explorer代わりに使えるのでしょうか?
情報処理試験に受かりたいので、使いこなせるようになりたいのですが
472NAME IS NULL:2005/04/30(土) 09:06:43 ID:???
473NAME IS NULL:2005/04/30(土) 09:56:39 ID:???
>explorer代わりに使える
1.ファイラーとして
2.IEのようなブラウザとして
使いこなしまくりだな。
474NAME IS NULL:2005/04/30(土) 11:16:34 ID:???
>>471みたいなのが出てきたのも、やっぱりGWのせい? w
475NAME IS NULL:2005/04/30(土) 13:30:06 ID:???
>>471
まず自分の職業を替えるといいよ
476NAME IS NULL:2005/04/30(土) 14:04:41 ID:???
おまいら、つられんなよ
477NAME IS NULL:2005/04/30(土) 15:24:18 ID:???
大漁ですね
478NAME IS NULL:2005/05/01(日) 08:46:53 ID:EM4XnQsC
MySQLのバージョン3.23.57を使ってるんですが、
NULLを許可してるにも関わらず、INTのカラムにNULLを入れると0になります・・(デフォはNULLに設定)

今使ってるバージョンだとNULLは入らないんでしょうか?
バージョン4以降ならNULLになるんでしょうか?
教えてください。
479NAME IS NULL:2005/05/01(日) 10:07:31 ID:???
>>478
NULLは入ります。
480478:2005/05/01(日) 17:30:44 ID:EM4XnQsC
くわぁぁ〜! なんで出来ないんだろ。
$aaa = NULL で、$aaaを定義してから、それをINSERTしたんですが・・それが方法が駄目なのでしょうかねぇ。
もうちょい試してみるかなぁ
>>479 ありがとございました〜
481NAME IS NULL:2005/05/01(日) 18:00:53 ID:???
>>480
$aaa って PHP でやってるの?
まずは、普通に insert into テーブル名 (カラム名) values(NULL) とやってみて
切り分けてみたら?
482480:2005/05/01(日) 19:22:08 ID:EM4XnQsC
>>481
PHPでやってます。
ifで分岐させて、有効な値が入っている時だけクエリを送信するように書き直しました。
いっこのクエリでサラっと書ければよかったんですけどね・・ とりあえず解消です。

values(NULL)は、これから試してみます。ありがとうございました〜
483NAME IS NULL:2005/05/01(日) 21:22:52 ID:rmxdKpzA
>>480
PHPのNULLとSQLのNULLって違うんじゃないの?

$aa = NULL;
$sql_query = "insert into テーブル名 (カラム名) values($aaa)";

ってしたら$sql_queryの中は

insert into テーブル名 (カラム名) values("")

ってなってNULLとは違ってくるんじゃないの?

$aa = "NULL";
$sql_query = "insert into テーブル名 (カラム名) values($aaa)";

ってやればちゃんと

insert into テーブル名 (カラム名) values(NULL)

ってなってうまく行くんじゃないのかな?
テストしてないんであれだが。
484NAME IS NULL:2005/05/02(月) 01:50:58 ID:9W9A6uDh
Windowsには、MySQL-Frontっていう、便利な管理ツールがありますが、
Linux上に、こういうアプリケーションってありますか??
485NAME IS NULL:2005/05/02(月) 01:59:48 ID:???
mysqladminなりなんなり使えばいい
486NAME IS NULL:2005/05/02(月) 02:12:34 ID:???
487NAME IS NULL:2005/05/02(月) 13:55:55 ID:SbYB5t47 BE:134211375-
id / group / name
1    a     山田
2    a     内藤
3    b     大石
4    b     高田
5    a     馬場
6    b     稲田
7    a     大隈
8    c     岩田
9    b     山口

こんな感じのテーブルから
各グループ(a〜不定数) からランダムに3人以下づつ 取り出したいのですが、

1回のクエリでは不可でしょうか?
488NAME IS NULL:2005/05/02(月) 22:13:23 ID:Z1c1PgWe
MySQL Cluster(4.1.10a)に関する質問なのですが、
あれって、もしかして、複数の"SQL node"において、
テーブルロックをかけることができない仕様なんでしょうか?

同一サーバー内の別プロセスからのアクセスにおいては、
READ、WRITEのロックも動いているようなんですが、
別のサーバーからREAD、WRITEロックされたテーブルに対して、
書き込み出来るんですが…。
489484:2005/05/03(火) 08:53:48 ID:U+cWgmJP
MySQLCCいいですね。使いやすい。 Thanks.
490NAME IS NULL:2005/05/03(火) 12:04:27 ID:???
>>478
order by rand() limit 3
とか?
491ツ& ◆LCinZ00nuc :2005/05/04(水) 17:24:46 ID:jhVtNWyH
LinuxにMySQLをインストールしました。
複数のユーザにcreate, drop権限を与えて使用したいと思っています。
ですが、そうするとcreate database時にデータベース名がかぶってしまうと思うのですが、
どのようにすればよいのでしょうか?
492NAME IS NULL:2005/05/04(水) 18:09:47 ID:???
>>491
LinuxなんだからユーザごとにユーザIDがあるよな?
だったら、MySQLにユーザ名と同じDB名を作って、
ログインしたユーザはそのDBしか使えないようにする。

レン鯖とかそうなってるでしょ。
493& ◆pBmU8j9iQw :2005/05/04(水) 18:41:10 ID:jhVtNWyH
>>492
以下のようにユーザごとにDBを一つ作成しました。

create database [ユーザ名];
grant create, drop, select, insert, update, delete on [ユーザ名].* to [ユーザ名]@localhost identified by '[パスワード]';

このあと、そのユーザで create database 出来てしまいます。
テーブルの作成だけは許可して、データベースの作成は不許可、
というようなことは出来ますでしょうか?
494NAME IS NULL:2005/05/04(水) 18:52:32 ID:???
>>491
DB名にユーザプリフィクスを付けて管理する。username_dbnameとかね。
標準のI/Fを利用するならパッチあてないと駄目だよ。

普通は「複数のユーザにcreate, drop権限を付与」はしないで、
専用の管理I/Fを設けてやってそのI/Fを利用してのみcreate/dropが出来るようにする。
495NAME IS NULL:2005/05/04(水) 19:03:17 ID:???
>>493
できる。権限のレベルと種類を理解して設定汁
http://dev.mysql.com/doc/mysql/ja/grant.html
496NAME IS NULL:2005/05/04(水) 19:05:51 ID:???
>>493
grant usage on *.* to [ユーザー名]@localhost identified by '[パスワード]';
grant all on [ユーザー名].* to [ユーザー名]@localhost;
497NAME IS NULL:2005/05/04(水) 22:06:58 ID:Nf5R0i9b
PerlでMySQLを操作することって可能ですか?
PerlのDBIとMySQLとどっちがいいのでしょうか?
498NAME IS NULL:2005/05/04(水) 22:14:42 ID:zCPBHyvq
http://ex10.2ch.net/test/read.cgi/news4vip/1115145809/
中国2ch攻撃中!田代祭りしてるからみんなカモン!
499NAME IS NULL:2005/05/04(水) 22:44:01 ID:???
>>497
PerlのDBIがどういうものか理解してからきてください。
それはCGIとPHPってどっちがいいのとか、意味不明な質問といっしょ。
それともDBI(+DBD::MySQL)とNet::MySQLの比較?
500NAME IS NULL:2005/05/05(木) 22:23:00 ID:???
perl DBIとC APIについて、MySQLへのqueryの速度比較した人いますか?
Windows上だとVCがないとC APIを使ったプログラムをcompileできないようですが…。
501NAME IS NULL:2005/05/05(木) 23:13:10 ID:???
なぜpearが選択肢にないんだ?
502NAME IS NULL:2005/05/05(木) 23:30:27 ID:???
>>500
いやだからDBI+DBD::MySQL)とDBI+DBD::MySQLPPのどっちよ。
前者はlibmycqlclient(C API)のラッパーで、後者はPerlPortだから
どっちも純粋なC APIよりは、そりゃ速度は遅いよ。
503NAME IS NULL:2005/05/06(金) 05:58:46 ID:???
Cの方が速いにきまってんじゃん
504NAME IS NULL:2005/05/06(金) 11:33:41 ID:???
VB.NET + MyODBC3.51.11 で試しにアプリを作ってます。
設定は相当調べてやってみたが、テーブル名やフィールド名に日本語を使うとコケる。
日本語など使わないほうがいいのはわかっているが、utf8にすれば使えそうな感じもしたので試してます。

キャラセットはこんな感じです。
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+-------+

実験コードはこんな感じ。
DB_Connect.ConnectionString = DSN文字列
DB_Connect.Open()
SqlCmd.CommandText = "Select 名前,年齢 from 名簿;"
SqlCmd.Connection = Connect
SqlCmd.ExecuteNonQuery()
Connect.Close()

.netのString型は内部ではUTF8に変換されてるはずなので、すんなり通ると思ったら駄目。

sql文(String型)をUTF8にエンコードして Byte()配列 に変換、
その後 SqlCmd.CommandText にセットするのかと思ったが、SqlCmd.CommandText は
String型しか受け取らない。
受け取らせるためには、String型に戻す必要がある
(そもそもString型はUTF8なはずじゃなかった?)。

4.0.23では、えらく古い日本語用パッチが当たったMYODBCで開発したときは、漢字も問題なかった。

これはMYODBCの問題なのでしょうか。

知ってる人、ヒントください。無理なら無理と教えてください





505NAME IS NULL:2005/05/06(金) 12:09:36 ID:???
MyODBC3.51(Linux)では特に落ちるなんてことは無かったから、
MyODBC3.51(Windows)で使ってるライブラリの問題かなんかだと思うよ。
506NAME IS NULL:2005/05/06(金) 12:10:26 ID:???
あとWindowsのODBCマネージャか。
507& ◆kgp6eKXx6c :2005/05/06(金) 14:43:25 ID:Jj9pZQuP
>>495
>>496

遅くなりましたが、ちゃんと設定出来ました。
ありがとうございました。
508NAME IS NULL:2005/05/06(金) 16:45:26 ID:???
>>500
まあCの方が速いのは分かって聞いてるんだろうけど、定量的に比較したデータは
見たこと無いな。
509:2005/05/07(土) 00:01:03 ID:???
postfix のデータベースにMySQLを利用したいのだけど、ここをみれば、
構築方法がわかるって言うサイトありますか?google 利用したのですが、いまいちでした。
510NAME IS NULL:2005/05/07(土) 05:48:15 ID:???
ttp://kirb.insanegenius.net/postfix.html で十分だと思うけど
511NAME IS NULL:2005/05/07(土) 07:52:42 ID:???
Thanks for res,

クーリエ imapd ということですが、サイラスあいまっぷディーはつかえないでしょうか?
というのは、後者はカーネギーメロンで開発されており、非常に信頼が高いからです。
512NAME IS NULL:2005/05/07(土) 08:16:45 ID:???
511はかなり頭が悪い
513NAME IS NULL:2005/05/07(土) 23:36:56 ID:hZIl0ldU
テーブル設計について質問です。
例えばレンタル掲示板を作る際、各掲示板ごとにテーブルを作るのか、
それとも全掲示板の管理者・パス・email等をまとめて保持するテーブルと
全投稿記事の記事・投稿者・パス・所属掲示板等をまとめて保持するテーブルの二つのみにするか
どちらが良いのでしょうか?
リファレンスによるとテーブルの乱立は好ましくないと言う様な記載があるし、
外部キーで関係付けるのも書き込み処理などのオーバヘッドになるようです。
しかし投稿記事に所属掲示板情報を付けるというのは、HDDを無駄に使うし
ある掲示板を開いた時にその掲示板IDを持つ記事を全投稿記事から検索するという手間が気になります。
514NAME IS NULL:2005/05/08(日) 00:08:58 ID:???
PHPとMYSQLを理解すれば、中規模級(教えてGOO程度)の
サイトを一人で作成することは可能でしょうか?サーバー知識等は
除いてお願いします。
また、無理かなというときは、できれば具体的な理由もお願いします。
515NAME IS NULL:2005/05/08(日) 00:29:59 ID:???
>>514
可能。無理だとしたらPHP、MySQLを"理解していない"か
そもそもプログラムで使うアルゴリズムを考える力がないかのどちらか。
516NAME IS NULL:2005/05/08(日) 00:39:33 ID:???
>>514
機能的には可能だろうけど、goo並みとなると一人では単純に仕事量がたいへんかな。

それから、負荷軽減のためにメモリ上にコンテンツを保持しなきゃならんとか、サーバ
運用条件からのプログラムへの要求は常にあるからサーバー知識がないと難しいな。
そのへんの知識は切り離せない。
517NAME IS NULL:2005/05/08(日) 08:13:02 ID:???
>>513
テーブル設計はデータの冗長性を出来るだけ少なくする正規化と
処理を出来るだけ軽くする為の冗長化のせめぎ合いで行う物です。

ご自分で色々考えられてるみたいですから、結論も自分でだして行動するのが
(失敗しても上手くいっても)自分自身の血肉になると思いますからやってみるべし
518NAME IS NULL:2005/05/08(日) 14:19:28 ID:DKFDRvPO
create database でデータベースを作るとき、
文字コードをUTF-8に指定するにはどうしたらいいんでしょうか。
519NAME IS NULL:2005/05/08(日) 15:07:22 ID:???
>>518
少しでも調べてみたのかな…
create database テーブル名 character set utf8;
520NAME IS NULL:2005/05/08(日) 15:09:38 ID:???
ttp://dev.mysql.com/doc/mysql/ja/charset-database.html

マニュアルに載ってるから調べてないんじゃない?
521NAME IS NULL:2005/05/08(日) 15:28:28 ID:???
そもそもUFT-8が指定できるMySQLかどうかも怪しい。
522NAME IS NULL:2005/05/08(日) 16:55:21 ID:vHv3cO2w
すいません、質問させてください。最近mysqlを勉強しはじめたものです。
自宅のwin2k + anhttpd + mysql-4.1.4-gamma-winでは
正常に通るのですが
レンタルサーバーのredhat9 + apache2 + MySQL 3.23.32 + PHP 4.3.0
では
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`cat_name` var
このようなエラーがでてしまします。

一応、mysqlのマニュアルに沿って書いたつもりなのですが・・
CREATE TABLE `m_cat` (
`cat_id` varchar(2) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`cat_name` varchar(20) default NULL,
`reg_date` datetime default NULL,
`up_date` datetime default NOT NULL,
`del_flg` char(1) default NULL,
unique (cat_id,cat_name)
) ENGINE=MyISAM;
sql文はこれになります。ご指摘いただければ助かります。
523NAME IS NULL:2005/05/08(日) 17:17:34 ID:???
>>522
ぱっと気づいた部分だと、MySQL 3.23.32なら
ENGINE=MyISAMじゃなくてTYPE=MyISAM
今後のことを考えたらENGINEとすべきだけどね。
あと、varchar(2)なのにUNSIGNEDもオカシイよね。
文字型に正負ってないから。

524523:2005/05/08(日) 17:18:32 ID:???
ああ、varchar(2)でAUTO_INCREMENTも。
525522:2005/05/08(日) 17:50:30 ID:vHv3cO2w
>>523
なるほど、アドバイスありがとうございます。
create table m_cat (
cat_id MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
cat_name VARCHAR(40),
reg_date TIMESTAMP(14) default NULL,
up_date TIMESTAMP(14) NOT NULL,
del_flg char(1) default NULL,
unique (cat_id,cat_name)
) ENGINE=MyISAM;
とりあえずこれで通りました。のちにTYPE=MyISAM でもやってみようと思います。

厚かましくて申し訳ないですがよければもうひとつ質問させてください。

reg_dateはレコードの作成日時 up_dateはレコードの更新日時をいれようと思うですが
up_dateのほうはレコードにアクセスか勝手に日時入れてくれるのでいいのですが
reg_dateのほうはどうやっていいかわからずこんな形にしています。
最初に一レコードが作成されたときにだけ日時を書き込むというのは
どんなやりかたがあるでしょうか?
526NAME IS NULL:2005/05/08(日) 19:57:32 ID:???
>>525
MySQL3.23.32でも使えるか確認した上で
使える適切な関数が見つかる筈
http://dev.mysql.com/doc/mysql/ja/date-and-time-functions.html

サーバ(MySQLサーバ)側の時刻とクライアント(Access)側の時刻は違う可能性が
あるので注意。普通は値をどちらが与えるのか決めて(大抵はサーバ側かな)、それを使う。
同一の端末でC/Sを構成してる場合は関係ないけどね。
(アクセスはAccessと書こう)
527NAME IS NULL:2005/05/08(日) 20:30:32 ID:???
>>525
レコードを操作することをアクセスと言っているのか、Microsoft Accessのことを
言っているのかよく判らないんだけど。
timestamp型カラムが複数存在した場合、自動的に更新されるのは片方だけ。
どのカラムが更新されるのかの条件は忘れた。スマソ
reg_date はレコード作成(insert)時に now() を書き込めばいい。
他のカラムは省略するけど、こんな感じ。
 insert into m_cat (reg_date) values(now());
個人的には、timestamp型ではなく、両方ともdatetime型にして明示的に値を
書くほうが好きデス。
 insert into m_cat (reg_date, up_date) values(now(), now());
 update m_cat set up_date = now() where xxx
528NAME IS NULL:2005/05/08(日) 21:33:38 ID:???
>>527
自動登録は先に定義されたカラムかな。
http://dev.mysql.com/doc/mysql/ja/datetime.html
529NAME IS NULL:2005/05/08(日) 23:26:33 ID:???
以前にも同じ質問が出ていたようなのですが、はっきりとした回答が見あたらなかったので、再質問させてください。
以下のファイルで mysql>source credb.sql; でテーブルを作成して、
use test;
drop table myBlobs;
create table myBlobs(
blobId int auto_increment not null,
blobTitle varchar(50),
blobData longblob,
blobType varchar(50),
primary key(blobId),
unique id(blobId)
);
grant select,insert,update,delete on test.myBlobs to myID@localhost identified by 'myPASSWD';

次のようなPHPプログラムでblobにインサートしようとしています。

$file_upload_size = filesize($file_upload_temp);
$fileHandle = fopen($file_upload_temp, "rb");
if(!is_resource($fileHandle)){ die("FILE(" . $file_upload_temp . ") OPEN ERROR"); }
$fileContent = fread($fileHandle, $file_upload_size);
$mysql_connect_string = "mysql://" . $dbUser . ":" . $dbPass . "@localhost/" . $dbDatabase;
$sConn = DB::connect($mysql_connect_string);
if(DB::isError($sConn)){
print( $mysql_connect_string . "<br>\n" );
die("Couldn't connect to database server:" . $sConn->getMessage() );
}
//テキストBLOBならば、クォートされるべき文字の前にバックスラッシュを挿入する
if ( strpos( $file_upload_type, "text" ) ){
$fileContent = addslashes($fileContent);
}
$dbQuery = "INSERT INTO myBlobs VALUES (0, '$strDesc', '$fileContent', '$file_upload_type')";
$res = $sConn->query($dbQuery);
if(DB::isError($res)){
die("Couldn't add file to database : ". $res->tostring());
}

このPHPプログラムでテキストファイルのINSERTはできるのですが、バイナリファイル(例えばJPG)などはINSERTでエラーになってしまいます。
考えてみれば文字でないようなコードも含まれているわけですから $dbQuery をテキストに展開する時点で文字化けなどが起こるせいではないかと
思っているのですが、では、binaryのデータをPHPで、INSERT文でレコードに追加できないのでしょうか?
PHPとMySQLのバージョンは以下の通りです。
PHP Version => 5.0.3
System => Windows NT xxxxxxxx 5.1 build 2600
Build Date => Dec 15 2004 08:06:41

F:\>mysqladmin version
mysqladmin Ver 8.40 Distrib 4.0.23, for Win95/Win98 on i32
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
Server version 4.0.23-nt
Protocol version 10
530NAME IS NULL:2005/05/09(月) 00:48:10 ID:???
>>529
BLOBで扱うのはBinaryそのものじゃなくて、Binary文字列だし。
Base64とか。
531NAME IS NULL:2005/05/09(月) 01:51:27 ID:???
>>530
ご返答ありがとうございます。
つまり、PHPでbinaryデータをBLOBにinsertするには、いったん文字列に
変換してやらないといけないということですね。
binaryデータをそのままinsertするにはCとかのプログラムでinsertしてやらないと
いけないというわけですね。(どう組むのか未調査ですが)
532531:2005/05/09(月) 02:10:15 ID:???
>>530
追加のお礼。base64でエンコードして、取り出すときにデコードしてやると、
JPEGがちゃんと絵で見られました。PDFもOKでした。
ヒントをありがとうございました。
533NAME IS NULL:2005/05/09(月) 05:42:10 ID:uY7+0bet
サイトのアクセスログを蓄積しているんですが、ただ単にログを追加していってたら、
レコードが100万件を超えてしまいました。このままじゃどうしようもないと思うんですが、
こういう肥大化し続けるモノの場合、設計というか運用というか、どうやって行ったらいいものでしょうか?

月ごとにテーブルを分けていけばいいとか、何万件ごとに分けた方がいいとか、色々あると思いますが、
皆さんならどうしますか?
534NAME IS NULL:2005/05/09(月) 05:48:23 ID:k6lhzE7g
4.1.11を使っているのですが、日本語が使えません。
my.cnfには[mysqld]と[client]のセクションに
default-character-set=utf8を書いています。

mysql> create database 店舗;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '店舗
at line 1

という風になります。
535NAME IS NULL:2005/05/09(月) 06:49:08 ID:???
>>533
トリガをうまく使えば一つのテーブルでもうまくやれると思ったけど、
調べてみたらMySQLでトリガの実装は5.1以降みたい。

となるとアクセス数にもよるけど月/周/日ごとにテーブルを分けるとか
ログを取る条件をチューニングするとかぐらいしか思いつかないなあ。
他の人はどうやってるんだろ?
536NAME IS NULL:2005/05/09(月) 07:25:43 ID:???
MERGE テーブルを使うとうまくいくかも

こんな風に
http://naoya.dyndns.org/~naoya/mt/archives/001565.html
537NAME IS NULL:2005/05/09(月) 11:44:19 ID:+rEk5p0L
複合インデックスとLIKEに関する質問です。

create table A (
type smallint unsigned,
id int unsigned,
value text,

index type_id (type, id)
)

create table B (
type_id char(15),
value text,

index type_id (type_id)
)

B.type_idはzerofillした'A.type + A.id'の連結
A.type = 43, A.id = 52 だった場合
B.type_id は '000430000000052'
# 本来は可能な限りB.type_idを圧縮

以下のクエリを想定

Aの場合
select value from A where type=43 and id=52;
select value as 'values' from A where type=43;

Bの場合
select value from B where type_id like '000430000000052';
select value as 'values' from B where type_id like '00043%';

A, Bどちらのテーブルを使用した方が最適ですか?
(selectのクエリの速度 > テーブル・インデックス サイズ > データ更新 の順番で)
538NAME IS NULL:2005/05/09(月) 12:33:08 ID:???
mysql> create database `店舗`; と囲うべきでは?
http://dev.mysql.com/doc/mysql/ja/legal-names.html

あとMySQL4.1あたりから、データベース名・テーブル名は
UTF-8のファイル名になるからファイルシステムで
UTF-8が使えるのかもチェックしといた方が良い。
(それまで入力したエンコードそのままだった)
539NAME IS NULL:2005/05/10(火) 06:48:57 ID:???
どうもありがとうございました。
ファイルシステムって何が一番いいんでしょうか。
ReiserFSがやっぱり最強なんでしょうか。
540NAME IS NULL:2005/05/10(火) 07:36:21 ID:???
UFS2が最強
541NAME IS NULL:2005/05/10(火) 07:56:17 ID:???
>>539
最強だとは思わないけど、ReiserFS使ってる。
ファイルが大量だと旧式なファイルシステムとは格段の差がでる。
MySQLで使うんだったら、ファイルが沢山出来るわけでもないので
余り拘らなくてもOK。
542NAME IS NULL:2005/05/10(火) 17:51:16 ID:???
MYSQL-5.0.4のインストールで質問です。
初めてDBでMYSQLを触ったので素人質問だと思いますが宣しくお願いします。

ちなみにOSはFedora core 3です。

本を参考にしながらダウンロードを行い手順をふんでるのですが、
コンパイルの為のconfigureを実行しようとすると何故かコケるようです。
コマンドは本を参考に

# ./configure --prefix=/usr/local/mysql --with-charset=ujis --with-extra-charsets=all --with-endedded-server --enable-local-infile --enable-threrd-safe-client --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static

で実行すると以下のメッセージが出て止まりました。

050510 17:45:25 mysqld ended

なにやら/dataに以下のエラーログが出ているようなのですが
私はなんのエラーやら解らない状態です。

050510 17:45:23 mysqld started
050510 17:45:25 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
050510 17:45:25 mysqld ended

何か原因が解れば教えてもらえないでしょうか?
543NAME IS NULL:2005/05/10(火) 19:20:10 ID:???
バイナリ使え
544NAME IS NULL:2005/05/10(火) 19:30:28 ID:???
>>542
>The error means mysqld does not have the access rights to the directory.
>File name ./ibdata1
>File operation call: 'create'.
>Cannot continue operation.
545NAME IS NULL:2005/05/10(火) 20:15:56 ID:???
MySQLって1つのファイルに1つのテーブルを入れるんですか?
546NAME IS NULL:2005/05/10(火) 20:58:36 ID:???
>>545
使用するデータベースエンジンによる。
547NAME IS NULL:2005/05/10(火) 21:58:41 ID:???
MYISAMを使っています。
548NAME IS NULL:2005/05/10(火) 22:23:58 ID:???
予定では200GB程度のテーブルを使います。
私が持っている百万枚のエロ画像をデータベース化したいのです。
549NAME IS NULL:2005/05/10(火) 22:29:21 ID:???
もしこの200GBのテーブルが1つのファイルにまとめられてしまうとすると、
さすがにMySQLでも処理が追いつかないと思うのです。
MySQLというか、OS(Linux)がこんな大きなファイルを使えるのかどうか心配です。
私が持っている本(実践ハイパフォーマンスMySQL)には、
60GBぐらいで急激に処理が遅くなると書いてあります。
200GBのテーブルを扱う最良の方法を教えてください。
本当はMySQL+Linuxがいいのですが、これでは逆立ちしても無理というのであれば
他の環境でもかまいmせん。
550NAME IS NULL:2005/05/10(火) 22:53:26 ID:???
>>549
画像データをテーブルにツッコム必要はないと思うけど。
ま、InnoDB使えば?

ttp://dev.mysql.com/doc/mysql/en/table-size.html
551NAME IS NULL:2005/05/10(火) 23:17:38 ID:???
セキュリティーの観点から全部の画像をMySQLに格納している。
テーブルが壊れたら財産を失うので必死にMySQLを学んでいる。
552NAME IS NULL:2005/05/11(水) 00:02:51 ID:???
>>547
じゃあ、そう。というか1テーブルに対して3ファイル(frm/MYI/MYD)

>>551
司法の手によるもの限定か?<セキュリティ
(嫁限定かも知れん)
553NAME IS NULL:2005/05/13(金) 21:05:37 ID:rq9Q345H
質問です。

PHP+MySQLでスクリプトを書いているのですが、
BLOB型のフィールドに格納することまではできたのですが、
そこから取り出して表示するにはどのようにすればいいのでしょうか?

具体的には、POSTされた画像ファイルをaddslashes($file)として格納しています。
そこから取り出したデータを変数に格納することはできるのですが、
そのデータを(たとえば)<img src="ほにゃらら">という形で使うには
どのようにすればいいでしょうか?

PHPスレで質問するべきだったかな…
554NAME IS NULL:2005/05/13(金) 21:13:02 ID:???
>>553
まぁ、まずは画像ファイルの格納方法から間違ってる。

一般的にはPHP(Javaとかでもそうだけど)でBLOB型にデータを登録するには、
BASE64でエンコードして登録する。
555NAME IS NULL:2005/05/13(金) 21:25:21 ID:???
>>553
BLOBデータが正しく変数に格納できているとして。

方法1
 URLでアクセスできるディレクトリに fopen, fwrite を使って変数の内容を書き出し。
 その後、<img src="書き出したファイル名"> とする。
方法2
 <img src="gerblob.php?抽出条件"> とする。
 getblob.php ではBLOBが格納された変数の内容に header をつけて
 標準出力に書き出し。以下は、jpeg の例。
 header("Content-type: " . 'image/jpg');
 echo 変数

方法1は、書き出したファイルをどのタイミングで消せばよいか検討する必要がある。

>PHPスレで質問するべきだったかな…
禿げしく同意なので、以降はPHPスレで。
556NAME IS NULL:2005/05/13(金) 21:34:18 ID:???
>>555
>header("Content-type: " . 'image/jpg');
>echo 変数

正確には
header("Content-Type: image/jpeg") ;
imagejpeg(変数);
557NAME IS NULL:2005/05/13(金) 21:43:30 ID:???
>>556
嘘吐くんでない。
imagejpegの引数はGDのイメージリソースだよ。
バイナリ(PHP内部では文字列型扱い)を変数に格納してるならechoでOK.
558NAME IS NULL:2005/05/13(金) 22:06:21 ID:???
>>553
"ほにゃらら"にPHPスクリプトのファイル名を指定して、
そのPHPスクリプトにMySQLからデータを取り出して、
画像フォーマットのヘッダーとデータを吐くコードを書く。
<img src="imgread.php?img=001">とかなってるヤツがそう。
559553:2005/05/13(金) 22:27:53 ID:???
>>554
なるほど。
とても参考になりました。
ちらちら見てたサイトに書いてあったものをそのまま使っていました。

>>555-557
ありがとうございます。
header("Content-type: " . 'image/jpg');
というのを参考に検索してみたところ、それらしきサイトに行き当たりました。
echoでいいように書いてありました。

>>558
参考にします。
ありがとうございました。

スレ違いで申し訳ありませんでしたm(_ _)m
560545:2005/05/14(土) 03:37:58 ID:???
私も画像データをMySQLに入れたいのですが、
BASE64ではなく、バイナリのまま入れられないでしょうか?
100万枚近くあるので、できるだけ容量を節約したいんです。
またBASE64のエンコード・デコードにCPUを使いますし。
561NAME IS NULL:2005/05/14(土) 08:06:28 ID:???
>>560
普通に突っ込めるなら、みんな普通に突っ込んでると思わない?
なんでBASE64でエンコードするのか、理由を考えると良いよ。
562NAME IS NULL:2005/05/14(土) 12:44:05 ID:???
普通に突っ込めるけどね>バイナリ
や、PHPのことは良くシランが。
563NAME IS NULL:2005/05/14(土) 13:45:14 ID:???
>>562
MySQLのBLOB型を理解していない奴の典型的な例。
564NAME IS NULL:2005/05/14(土) 14:25:35 ID:???
Postgresの
psql < DB名 〜.sql
はmySQLではどのようにやればよいのでしょうか。

ご教示いただけますと幸いです。
565NAME IS NULL:2005/05/14(土) 14:33:43 ID:???
>>564
要するに、ファイルに書いてあるSQLを実行させたいんだよな?

mysql -uユーザ名 -p < ファイル名

上記コマンド打った後に、パスワード聞かれるから入力すればファイルに書かれた
SQL文が実行される。

ちなみに、DB指定したいなら、SQL書いてあるファイルの先頭に use データベース名; をつける。
566NAME IS NULL:2005/05/14(土) 17:36:32 ID:???
>>563
PHPはよくしらぬが、というあたりからして
Javaなら少なくともそのままバイナリつっこむから
MySQLとしてなら問題ない発言では?
567NAME IS NULL:2005/05/14(土) 17:57:03 ID:???
>>560
BASE64使うのは、BLOBで扱う際にエスケープするのが
楽だから使ってるだけで、本当に必要なのは生のバイナリーを
"バイナリー文字列"にエスケープしてやること。
BASE64はスペース効率でみると余り良くないからね。

Javaでバイナリー突っ込めるって話だけど、JDBCが生のバイナリーを
受け付けるだけで、MySQLのBLOBが受け付けるのはバイナリー文字列だから
必要なエスケープを中の人がやってくれている。貴方が使う言語やI/F、
ライブラリで、その辺の"楽さ"は変わってくるから、あとの環境固有のことは
自分で調べてください。
568NAME IS NULL:2005/05/14(土) 18:11:23 ID:???
>>567
ドライバの中のソースまで見ろというのは酷な話だろ。
APIレベルで生バイナリなら問題ないのでは?
569NAME IS NULL:2005/05/14(土) 18:17:00 ID:???
バージョン3.23.58から4系にバージョンアップしたいのですが
公式マニュアル読んでいたら頭がこんがらがってきました。
データはそのままで、バージョンアップする方法を教えてもらえないですか。
もしくはわかりやすいサイトを教えてください…。
あと、鯖管理ソフトのPlesk7.5が入っています。
570NAME IS NULL:2005/05/14(土) 18:46:39 ID:???
3.23.58から4.0系なら、Plesk7.5のimport/export掛ければいける。
つかPHPMyAdminが入ってるんでないか>Plesk
571569:2005/05/14(土) 19:11:17 ID:???
>>570
ありがとうございます!
ちょっとPleskをいじってみます。
572NAME IS NULL:2005/05/14(土) 23:14:22 ID:???
ちょっと待て、SQLレベルの話をしてるのか?
DBにバイナリで登録する話をしてるんだと思ってたが。
バイナリ文字列にエスケープというよりは
一部の特殊文字をエスケープってのが正しいと思うが。
そうじゃなきゃEUC-JPが通ったりしないべさ。
573NAME IS NULL:2005/05/14(土) 23:49:14 ID:???
>>572
EUC-JPも文字列だが。
7/8bitの観点からだと普通にMySQLは8bit通るし。
7/8bitが関係するBASE64の話が混じってるから
判りづらくなってるのは確かだけど。
574NAME IS NULL:2005/05/15(日) 00:11:52 ID:???
なんでBASE64にするのか理解でき兼る
575NAME IS NULL:2005/05/15(日) 01:08:10 ID:???
>>574
エスケープするのが簡単だから。
576NAME IS NULL:2005/05/15(日) 15:05:32 ID:uYJg+KZt
すみません、質問なんですが
MySQL,JDBCで
Calendar cal = Calendar.getInstance();
java.util.Date day = cal.getTime();

PreparedStatement statement =
connection.prepareStatement("SELECT DAY FROM TEST_TABLE WHERE DAY =?");

statement.setDate(1,day);

とすると、
シンボル: メソッド setDate(int,java.util.Date)
場所 : java.sql.PreparedStatement の インタフェース
statement.setDate(1,date);

が出てしまうのですがどなたか解決策ご存知無いでしょうか?
577NAME IS NULL:2005/05/15(日) 15:16:30 ID:???
java.util.Dateだから
java.sql.Dateと勘違いしてないかね?
578NAME IS NULL:2005/05/15(日) 15:22:05 ID:???
javaスレ池
579NAME IS NULL:2005/05/15(日) 15:23:33 ID:???
Calendarから取り出すjava.util.Date型でSELECTしたいんですが、
それではできないんでしょうか?
またはキャストできるとか。
580NAME IS NULL:2005/05/15(日) 15:24:35 ID:???
javaでパッケージとかクラスをインポートするときに
java.util.*とかjava.sql.*とか指定してないか?
それは現場では絶対にダメ、日曜プログラマなら気にしないかもしれんが
普通はEclipseとかのコード支援使ってクラス単位で
import java.util.Date
というふうにひとつのクラスごとインポートしていく
581NAME IS NULL:2005/05/15(日) 15:34:25 ID:???
importはたしかに
import java.util.*;
import java.sql.*;
とやっていますが、変数宣言時に
java.util.Date day = cal.getTime();
としているので多分大丈夫だと思うのですが、駄目なんでしょうか?
どちらにしても、>>580さんの意見は参考になりました。
ありがとうございます。
582NAME IS NULL:2005/05/15(日) 17:18:15 ID:???
>>581
だからutilじゃダメなんだって
583NAME IS NULL:2005/05/15(日) 17:22:18 ID:???
java.util.DateはJavaで扱う一般の日付

JDBCで使うのはjava.sql.Date

ほかにもJDBCで日付をあらわすのに
java.sql.Timestampやjava.sql.Timeがある

引数が違うのをコンパイルすればエラーが出るのは当たり前
584NAME IS NULL:2005/05/15(日) 17:24:16 ID:???
>>580
そんなのは解決にならんだろ
JDBCでこの辺触っていれば
おそらくJava.sql.Dateとjava.util.Dateが同一の場所にでてくる
どのみち完全修飾名が必須さ
585NAME IS NULL:2005/05/15(日) 18:10:30 ID:???
>>583
すいません、java使い始めて日が浅いもので。
ちなみにキャストしてjava.util.Date型のオブジェクトを
java.sql.Date型に変換したりってできますか?
586surferome:2005/05/15(日) 18:42:47 ID:???
mysqlccについての質問なのですが、mysqlを4.0->4.1に変更したら
mysqlccのレコード数の欄が、FixedとかDynamicだとか表示されるように
なり、正しくレコード数が表示されなくなりました。
レコード数を正しく表示するための何か方法はないでしょうか?
587NAME IS NULL:2005/05/15(日) 18:57:32 ID:???
キャストって魔法の変換だと思ってるの?
その型を持っている場合だけできることだよ

こんな感じ
Object list = new ArrayList();
((List)list).add("ほげ");

ま、まずはjava.sql.Dateのコンストラクタみてみそ
588564:2005/05/15(日) 19:13:05 ID:???
>>565
遅ればせながら、御礼申し上げます。

本当に本当に助かりました。
ご教示有難うございました。
589NAME IS NULL:2005/05/15(日) 19:33:44 ID://RpJC20
rubyで作ったcgiからmysqlにアクセスしているのですが、文字化けしてしまいます。
それが全部の文字が化けるのではなく、化ける文字と化けない文字があります。
文字コードはUTF-8です。
化ける文字は、確認した限りだと「舗、静、松」などです。
これらは、「店舗、静岡、浜松」という組み合わせで入れています。
「店、岡、浜」は化けません。
my.cnfにはdefault-character-set=utf8を書いています。
またhtmlの出力にもcharset=utf-8を書いています。
なぜ化けるのか分かる方いましたら教えてください。
590NAME IS NULL:2005/05/15(日) 20:51:02 ID:???
ちょっと困っていることがるので
ご指導いただければ幸いです。

http://dev.mysql.com/doc/mysql/ja/linux.html
ここにて
1,000 を超える同時接続を予定している場合は、
LinuxThreads にいくつかの変更を加えて再コンパイルし、
新しい libpthread.a を MySQL に再リンクする必要があります。
sysdeps/unix/sysv/linux/bits/local_lim.h の PTHREAD_THREADS_MAX を 4096 に増やし、
linuxthreads/internals.h の STACK_SIZE を 256 KB に減らしてください。
このパスは glibc のルートからの相対パスです。
注意: STACK_SIZE がデフォルト値の 2MB である場合、
MySQL は約 600〜1,000 接続で不安定になります。

とありますが、
linuxのカーネル2.6以降(と RHL9 と RHEL3)は
LinuxThreadを使用していないので、
上にある変更ができないんです。

ABのバイナリはLinuxThreadを無理やり使うようですが、
ソースからコンパイルしたときはどうなんでしょうか?
glibcがNPTLを使用するに書かれているので
NTPLを使うのかなとか思ったり。

RH9で結構な数の接続を開こうと思っているのですが、
どなたか1000より多き接続を受け付けても余裕だよー
とか試した方いらっしゃらないでしょうか?

長文失礼しました。
591589:2005/05/15(日) 21:46:40 ID://RpJC20
今status;を見てみましたが、
Server characterset: utf8
Db characterset: utf8
Client characterset: latin1
Conn. characterset: latin1
という表示でした。
しかしmy.cnfには、[mysqld][mysql][client]の3つのセクションに
default-character-set=utf8を書いています。
なぜclientとconn.がlatin1になるのでしょうか?
592NAME IS NULL:2005/05/15(日) 21:54:41 ID:???
>>591
アプリでデータベース接続した後に以下を実行すればよいかも。
set names utf8

593589:2005/05/15(日) 22:49:50 ID://RpJC20
clientとconn.がlatin1になる問題は、my.cnfを/etcに移したらなくなりました。
でも相変わらず文字化けします。

>>592
それやってみましたが、変わりませんでした。
594589:2005/05/15(日) 23:00:41 ID:???
もしかしたらmysqlではなく、rubyの方に問題があるんでしょうか?
595NAME IS NULL:2005/05/15(日) 23:41:37 ID:???
CからMY SQL使うのってインストールフォルダ内のライブラリとdllをリンクすればいいんですよね?
596NAME IS NULL:2005/05/15(日) 23:49:59 ID:???
Postgresのようにcreatedb -E EUC_JPと文字コードを
明示指定してDB作成する方法はMySQLではどのように
行うのでしょうか
597KUR:2005/05/16(月) 00:47:49 ID:YS2d2CsV
TEXT型に、load data infileの様な感じで読み込むにはどうすればよいか教えてくださいまんせか。
例えば、varchar(20),textの2フィールドがあったとき、CSVから読み込みたい。
(ML logでも、load_fileやtext型で探しましたがうまく見つけられなかった)
598NAME IS NULL:2005/05/16(月) 04:11:52 ID:???
>>589
クライアントプログラムはデフォルトではmy.cnfを読まないよ。
599NAME IS NULL:2005/05/16(月) 04:13:14 ID:???
>>596
create database hogehoge character set ujis;
600NAME IS NULL:2005/05/16(月) 04:14:45 ID:???
>>597
varchar でも text でも変わらん。
601NAME IS NULL:2005/05/16(月) 11:50:47 ID:???
ITmedia エンタープライズ
青野氏激白! サイボウズがMySQLを採用した理由
http://www.itmedia.co.jp/enterprise/articles/0505/12/news007.html
602NAME IS NULL:2005/05/16(月) 11:52:11 ID:???
つか12日に記事だったか...気が付かなかった
603NAME IS NULL:2005/05/16(月) 14:23:00 ID:???
初心者もOK! FreeBSD質問スレッド その61
http://pc8.2ch.net/test/read.cgi/unix/1114101176/811-813

上記から誘導されて来ました。


> 報告あんがと。
> あと、Aテーブルにレコードをインサートできなかったときのエラーメッセージも教えて。

この時には、問題なくインサート出来ます。
ですので、普通にselect したら、インサートした分表示されますが、
myisamchk かけると、下記の状態になってしまします。

Checking MyISAM file: ***.MYI
Data records: 2 Deleted blocks: 0
- check file-size
myisamchk: error: Size of datafile is: 32 Should be: 56
- check key delete-chain
- check record delete-chain
- check index reference
- check data record references index: 1
myisamchk: error: Found key at page 1024 that points to record outside datafile
- check record links
myisamchk: error: Record-count is not ok; is 1 Should be: 2
myisamchk: warning: Found 1 parts Should be: 2 parts
MyISAM-table '***.MYI' is corrupted
Fix it using switch "-r" or "-o"



今現在は、順調に稼動していますので、
すぐに、エラー状況の再現出来ません。
今晩にでも、もう一度再現させてみよう
かと思っていますが・・・。
604NAME IS NULL:2005/05/16(月) 15:11:42 ID:???
>>603
修復が完全でないとか?(コワー

myisamchk に、もっと詳しくチェックするオプションがあるみたいなんで、
それでもチェックしよう。

動いてるのには触らずに済むように、
障害時のデータのコピーを別に作って、そっちで試すべし。

あと、myisamchk -dv database/table_name の出力もカクニーン。
605603:2005/05/17(火) 10:33:33 ID:Jb3z2sEn
>>604

> 動いてるのには触らずに済むように、
> 障害時のデータのコピーを別に作って、そっちで試すべし。
そうですよね。
しかし、実はまだこの障害の根本がどこなのか完全に切り分け出来ていません・・・。
mysqlなのか、OSレベルなのか。

> あと、myisamchk -dv database/table_name の出力もカクニーン。
やってみましたが、なにか解りますでしょうか?
各項目が何を意味しているのか、マニュアルやググッテ調べるとこなのですが、
もし、なにか問題等があれば指摘して頂けるとありがたいです。

MyISAM file: ***.MYI
Record format: Packed
Character set: sjis (13)
File-version: 1
Creation time: 2005-05-15 17:32:12
Recover time: 2005-05-15 17:32:46
Status: changed
Auto increment key: 1 Last value: 31
Data records: 22 Deleted blocks: 0
Datafile parts: 22 Deleted data: 0
Datafile pointer (bytes): 4 Keyfile pointer (bytes): 3
Datafile length: 628 Keyfile length: 2048
Max datafile length: 4294967294 Max keyfile length: 17179868159
Recordlength: 48

table description:
Key Start Len Index Type Rec/key Root Blocksize
1 2 4 unique long 1 1024 1024
606NAME IS NULL:2005/05/17(火) 17:31:36 ID:???
まともな値っぽいね〜。むむう
607NAME IS NULL:2005/05/18(水) 02:35:24 ID:???
経験から言って、データファイル自体がぶっ壊れたことはあんまりない。
インデックスファイルが壊れることは、何度かあったけど。

なので、大体、optimize table か、myisamchk -r で復旧できてます。
まぁ、でも、面倒な場合は、レプリケーションしてる他のマシンから
該当ファイルだけコピって終わりって感じです。
608NAME IS NULL:2005/05/18(水) 03:34:33 ID:???
レプリケーションよりスナップショットの方が省容量な気がする
609NAME IS NULL:2005/05/18(水) 03:48:14 ID:???
MySQLでは、Postgresのage関数のようなものはないのでしょうか。
もしも何かやり方があれば教えてください。お願いします。
610NAME IS NULL:2005/05/18(水) 06:50:21 ID:???
>>609
TIMEDIFF()
611NAME IS NULL:2005/05/18(水) 10:11:36 ID:???
sage()関数の代わりはないですかね
612NAME IS NULL:2005/05/20(金) 02:56:25 ID:???
mysqlっていうユーザ設定情報が入った、databaseを
消してしまったんだが、このmysql自体を再インストしたんだが、
このdatabaseが作られない。 どうなってんだー 
613NAME IS NULL:2005/05/20(金) 03:44:22 ID:???
>>612
mysql_install_dbしなおしたら?
http://dev.mysql.com/doc/mysql/ja/mysql-install-db.html
614NAME IS NULL:2005/05/21(土) 11:43:43 ID:Pqn0ZHf/
JDBC文字化けして困っています。

環境は
WinXP
MySQL4.1.10
mysql-connector-java-3.1.8

DBのキャラクターSETをUTF8,SJIS,UJISなど切り替えて検証していますが
うまくいきません。

public class DbConnection {
public Connection Connect() throws ClassNotFoundException,SQLException{

Class.forName("com.mysql.jdbc.Driver");
Connection connect=DriverManager.getConnection("jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=SJIS","root","root");
return connect;
}
}

日本語文字がすべて??となってしまいます。
615NAME IS NULL:2005/05/21(土) 12:49:37 ID:???
4.1か・・・
と思ったけどすべての日本語がという時点でいつもの症状とは違うようだな

まずDBのキャラクタセットになにを使ってるかだな
616NAME IS NULL:2005/05/21(土) 13:37:23 ID:xh2ntbKK
mysql(ver4.1.x)で行のコピーSQLを教えてください。
そもそも可能なのですか?

+------+-------+-------+-------+
| key1 | data1 | data2 | data3 |
+------+-------+-------+-------+
| 1 | 1 | 2 | 3 |<<<<<この行をコピーしたい
| 2 | 1 | 2 | 3 |
| 3 | 10 | 20 | 30 |
+------+-------+-------+-------+

Key1はauto_incrementでユニークになってます。

宜しくお願いいたします。
617NAME IS NULL:2005/05/21(土) 17:31:55 ID:moxCiqUf
>>615
DBのキャラクタセットも変えているんですけどだめです…
JDBC新しすぎるのかなぁ。
618NAME IS NULL:2005/05/21(土) 18:42:52 ID:???
うちもその環境ですが、
文字化けしません。

SHOW VARIABLE
のエンコードのとこさらしてみて
619NAME IS NULL:2005/05/21(土) 20:25:21 ID:f022Bv91
これっす
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | sjis |
| character_set_results | latin1 |
| character_set_server | sjis |
| character_set_system | utf8 |
| character_sets_dir | F:\MySQL\MySQL4.1\share\charsets/ |
あれ?
ぜんぶSJISになってない…
もしかしてmy.iniに全部書き足さないとだめ??
620NAME IS NULL:2005/05/21(土) 21:28:41 ID:xh2ntbKK
MySQL AB 配布のバイナリは、latin1 が標準です。
直すには
 1.サーバーに接続した後にすぐ、"SET NAMES キャラクターセット名" という SQL 文を実行
 2.libmysql.dll, libmysqlclient のコンパイルし直す
 3.キャラクターセットをbinaryにする
ぐらいかな。
621NAME IS NULL:2005/05/21(土) 23:15:35 ID:???
ううん、もっと超簡単
my.iniの
[mysqld] セクションに

default-character-set = sjis

と書いて、サーバ再起動。
ちなみに、うちではJDBCのURLは

jdbc:mysql://hostname/db_name?autoReconnect=true&useUnicode=true&characterEncoding=windows-31j

とwindows-31jを指定しています。
これは、JDK1.4からwindowsのShit_JISの名前が変わったためです。
一応これで表などの文字化けしちゃう文字も大丈夫でした。
参考までに。
http://www.ingrid.org/java/i18n/encoding/shift_jis.html
622NAME IS NULL:2005/05/22(日) 00:31:50 ID:???
>>620
>2.libmysql.dll, libmysqlclient のコンパイルし直す
Connector/Jの場合はlibmysql, libmysqlclientを利用しない実装だから関係しない。
623NAME IS NULL:2005/05/22(日) 01:12:11 ID:???
>>621
そのURLだと4.1は機種依存文字はダメだよね?
624NAME IS NULL:2005/05/22(日) 01:20:35 ID:???
@とかi-mode絵文字もいけたよ?
↑まるいち
625NAME IS NULL:2005/05/22(日) 05:27:37 ID:l+rjKGlE
4.0系がやっぱ良い。
4.1系はやっぱ駄目だは。
626NAME IS NULL:2005/05/22(日) 11:16:35 ID:12RyQW7D

set character set ujis;
とかを接続直後に実行すればよいんじゃないの?

perl DBIで文字化けしてたときは、これで解決したけど
627NAME IS NULL:2005/05/22(日) 11:38:00 ID:???
>>616
insert into hoge (key1,data1,data2,data3)
select 0,data1,data2,data3 from hoge where key1=1;
628NAME IS NULL:2005/05/22(日) 12:35:09 ID:???
>>624
いつからその設定だけでいけるようになったんだ
新しいバージョン?

default-character-set = sjisがうまく動いてるように見えないし
そもそもWindows版だと環境設定が上書きされる
629NAME IS NULL:2005/05/22(日) 13:00:54 ID:???
え?なんで?全然上書きされないよ?
がっつりメモリ使わせられるし、
書き間違い?
630NAME IS NULL:2005/05/22(日) 13:06:30 ID:???
例の環境設定ツールは無条件で上書きだな。

そもそもmysqlコマンドがマルチランゲージ対応のためにUTF8固定だから
使い勝手が非常にまずい。
631NAME IS NULL:2005/05/22(日) 13:08:41 ID:???
ツール使うとそうなるんだー
手書きで設定しかしたことないや
632NAME IS NULL:2005/05/22(日) 13:21:59 ID:???
>>627
おぉぉ〜できました。
ありがとうございます。
633NAME IS NULL:2005/05/22(日) 13:23:12 ID:???
>>631
セットアップ時に必ずその設定ツールが動くはずだが。
634NAME IS NULL:2005/05/22(日) 13:32:38 ID:???
セットアップ後に編集の話じゃないの?
635NAME IS NULL:2005/05/22(日) 17:14:38 ID:01wogRet
質問です。

JDBCのURLのcharacterEncodingに指定する文字列は、

http://dev.mysql.com/doc/connector/j/en/cj-character-sets.html

Table 1.4. MySQL to Java Encoding Name Translations
Java-Style Character Encoding Nameにあるものを指定しています。

この表にないMySQL Character Set Name、たとえば
dec8 の場合は、characterEncodingには何を指定すればよいのでしょうか。
characterEncodingの設定自体が不要なのでしょうか。
636NAME IS NULL:2005/05/22(日) 19:13:55 ID:???

ドキュメント見るとデフォルトでは
'autodetect'
らしいから無くてもいいかもね。
useUnicodeはつけるかんじかなー
637NAME IS NULL:2005/05/24(火) 16:27:08 ID:???
質問させて下さい。

テーブルにIDというauto_incrementのフィールドがあって、
データのインストール時に勝手にIDが設定されるんですが、
この値を正確に取得するにはどうしたらいいのでしょうか?

不特定多数の人間がインストールしますので、
INSERT句の後にすぐにSELECTでMAXを使って取得しても、
既に他人によってデータ登録された後という可能性もあります。

正確に自分のINSERTしたデータのIDを取得するにはどうしたらいいのでしょう?
638NAME IS NULL:2005/05/24(火) 17:12:11 ID:???
write lockして
insert して
select して
unlock なら取れそうじゃない?
639637:2005/05/24(火) 17:23:50 ID:???
>>638
なるほど、一連の処理が完了するまでは、他人がデータを登録できないようにする訳ですね。
640NAME IS NULL:2005/05/24(火) 17:29:05 ID:???
>>637
LAST_INSERT_ID()
641NAME IS NULL:2005/05/24(火) 17:29:58 ID:???
>>637
INSERT直後に
SELECT LAST_INSERT_ID()
とやれば取れるよ
642641:2005/05/24(火) 17:30:59 ID:???
カブっちまった
643NAME IS NULL:2005/05/24(火) 17:33:08 ID:???
>>637
マニュアルのここにまとまっている。
http://dev.mysql.com/doc/mysql/ja/getting-unique-id.html
644637:2005/05/24(火) 17:59:47 ID:???
ぉぉぅ・・・
こんな機能が。
ありがとうございます。
645NAME IS NULL:2005/05/24(火) 18:10:56 ID:???
こっちのほうが俺のより素敵ね

最後に生成された ID は、接続ごとにサーバに保持されます。
他の接続を使用するクライアントによって変更されることはありません。

てことでpoolに接続返す前なら確実だしね。
646NAME IS NULL:2005/05/24(火) 19:55:22 ID:Q2ACmeBM
phpMyAdminで初めの画面上に現れる設定

MySQLの文字セット: UTF-8 Unicode (utf8)

を EUC に変える方法を教えてください。
647NAME IS NULL:2005/05/25(水) 17:04:44 ID:???
>>640-641
GJ!!

>>645さんの言う通りセッション毎なんでダブル心配はないですね。

勉強になりました。
648NAME IS NULL:2005/05/25(水) 17:15:29 ID:???
MySQLのオートインクリメントの動きってこれでいいの?

>>640>>641の検証してたんだけど、DOS窓2つ上げて、両方とも最初にBEGINする。
そして、片方でINSERTして、もう片方でもINSERTをする。
最初にINSERTしたほうをロールバックして片方をコミットする。

そうすると、見事にオートインクリメントの値が1つ飛ぶんだよね。
649NAME IS NULL:2005/05/25(水) 17:59:12 ID:???
>>648
歯抜けになるのは良いのでは?
650NAME IS NULL:2005/05/25(水) 18:04:17 ID:???
>>648
正しい。以下を参照。
http://dev.mysql.com/doc/mysql/ja/innodb-auto-increment-column.html

歯抜けが困るときは自分で番号管理テーブルを作るけどね。
たいていのRDMSってそうぢゃないのかな。
651NAME IS NULL:2005/05/25(水) 20:37:59 ID:???
以前に実験した時、

autoincrement設定したテーブル作って、
autoincrementカラムに対してはNULLを指定するようにし、残りは別テーブルから取り込むようにinsert from selectかけたんだが、

autoincrementカラムの内容がすべて同じになりやがった。
もう一度同じことをすると、+1された値がずらーっと取り込まれる。

insert1回で+1になってて激しく使い物にならなかった。
652NAME IS NULL:2005/05/25(水) 21:35:13 ID:???
>>651
意味ワカラン。
653NAME IS NULL:2005/05/26(木) 19:38:21 ID:???
mysqldumpでdumpすると下記のテーブルを作成するsqlが作られます。


DROP TABLE IF EXISTS `products`;
CREATE TABLE `products` (
`productID` varchar(30) character set ujis NOT NULL default '',
`makerID` varchar(30) character set ujis NOT NULL default '',
`note` text character set ujis NOT NULL,
PRIMARY KEY (`productID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
^^^^^^^
(一部抜粋)


ここのフィールドはujisになっているのですが、
InnoDBのDEFAULT CHARSET=latin1;になっています。

一応、
/usr/local/mysql/bin/mysqldump --set-charset="ujis".......

これにてdumpしましたが同じ結果です。
問題ありませんでしょうか。
654NAME IS NULL:2005/05/26(木) 22:13:01 ID:680qdAKz
お前ら様、まず sjisでDBを構築してしまったオイラを小一時間なじってくれ。
レプリケーションしたら 5C 問題が勃発し、Masterには書けるものの
バイナリログが変でSlave側でエラーを起こしてはまりました。
エスケープが、バイナリログでは 'ソ\' とかしてしまってね。
default-character-set が双方であってなくて何とかクリアしましたが。
こんなことで悩み無くないしまだ何かあるかも・・
思い切って ujisに変更した方がいいかな?
速度なんかも eucの方が早いのかな?
文字のエンコードは ' と \ ぐらいを気にすればいいのかな?
エロイ人、オレを王道楽同へ導いてください。
あ、java の人です。
655NAME IS NULL:2005/05/26(木) 22:38:10 ID:???
ujisにしなされ。ついでに、4.1系のごたごたへの処方なら
tp://www.mysql.gr.jp/frame/modules/bwiki/?FAQ
を見なされ。
656NAME IS NULL:2005/05/27(金) 03:06:47 ID:???
漏れも文字エンコードで悩んでいて、夜も眠れん。
ujis sjis euc
どれがベストなんでしょう。
657NAME IS NULL:2005/05/27(金) 03:35:48 ID:???
euc-kr
658NAME IS NULL:2005/05/27(金) 04:53:07 ID:???
>>656
utf-8
659NAME IS NULL:2005/05/27(金) 06:12:21 ID:???
>>656
CP932
660NAME IS NULL:2005/05/27(金) 11:24:57 ID:???
>>659
それ4.1じゃ未実装では
661NAME IS NULL:2005/05/27(金) 20:30:28 ID:???
>>660
MySQL4.1.12で追加されてる。
eucjpmsは入ってないが。
662NAME IS NULL:2005/05/27(金) 23:31:08 ID:???
>>661
さんきゅ
やっとまともに日本語とおるようになったのか

でも対話アプリケーションがUTF8ということで全滅か
663NAME IS NULL:2005/05/28(土) 20:12:36 ID:???
漏れはsjisをbase64エンコードして入れてます。
日本語文字列でソートや検索することがないアプリだったから
使える手かも。
664NAME IS NULL:2005/05/28(土) 20:54:01 ID:???
>>663
だったらBLOBにescapeして入れてもいっしょのよーな気も。
665NAME IS NULL:2005/05/29(日) 00:28:19 ID:???
ISO2022(だっけか?)でもいいだろうし、
ISHでもMAJでも・・・・・・・・
666NAME IS NULL:2005/05/29(日) 00:49:40 ID:???
MYSQLで
C:\mysql\bin>mysqladmin -u root -p create kiso
Enter password: *******

でkisoというデータベースを作ろうとすると

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user: 'root@localhost' (Using password: YES)'

とでてエラーになってしまいます。
調べても(Using password: NO)のエラーに関する記述が多く
何が原因かが解りません。どなたかアドバイスお願いします。
667NAME IS NULL:2005/05/29(日) 01:06:46 ID:???
>>666
mysqladmin -u root password [新しく設定するパスワード]
でパスワードを新しく設定されました?

「-p」後はスペースを入れずにパスワードを打ち込まないとエラーが出ます。
668NAME IS NULL:2005/05/29(日) 01:52:02 ID:???
>>667
レスどうもです。
cd c:\mysql\bin
のあとにパスワード設定してしまいrootにパスワードをかけてしまいました

このrootへのパスワードをなくしたいときはどうしたらいいのでしょうか?
C:\mysql\bin>mysql -u usr -p kiso
Enter password: ******

のようにkisoに対してだけパスワードを設定するつもりだったのですが。
669NAME IS NULL:2005/05/29(日) 19:56:40 ID:???
670NAME IS NULL:2005/05/31(火) 00:13:29 ID:j02Is4N7
osxserver+php+mysqlを使っているのですが、phpmyadminをいれて
間違ってMysqlに接続するユーザー(rootも)をなんと削除してしまいました・・・・
これは、どうにか復活させる方法はないでしょうか?
いろいろ調べても、こんなアホは俺だけで事例が見つかりませんでした。
671NAME IS NULL:2005/05/31(火) 01:59:46 ID:???
ヒント:mysql_install_db
672NAME IS NULL:2005/05/31(火) 02:16:01 ID:???
mysqlディレクトリはバックアップしとかないと・・・
673NAME IS NULL:2005/05/31(火) 16:52:36 ID:Uxy2VvqP
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

いつサポートされるんだろう・・・
674NAME IS NULL:2005/05/31(火) 19:34:42 ID:???
質問です

select * from book order by product_id limit 1;
select * from book order by product_id limit 3,2;

これを一つにまとめる書き方を教えてください。
675NAME IS NULL:2005/05/31(火) 20:09:48 ID:???
>>674
UNION
676NAME IS NULL:2005/06/01(水) 00:00:26 ID:???
あからさまに学校の課題だな…
677NAME IS NULL:2005/06/01(水) 00:06:13 ID:???
>>676
ワロタ
678NAME IS NULL:2005/06/01(水) 15:56:30 ID:???
二つ並べてEnterしたら出来ました
679a:2005/06/01(水) 17:27:22 ID:???
Fedora core 3 にパッケージから、 apache とphpとmysqlとpostfix いれたのですが、
下記の通り一部でエラーになります。どうすればうまくいくでしょうか?
Postfix Admin Setup Checker 1.0.0
Running software:
- PHP version 4.3.11
- Apache/2.0.52 (Fedora)
Checking for dependencies:
Warning: Magic Quotes: OFF (using internal function!)
- Depends on: presence config.inc.php - OK
Error: There is no database support in your PHP setup
To install MySQL 3.23 or 4.0 support on FreeBSD:
% cd /usr/ports/databases/php4-mysql/
% make clean install
- or with portupgrade -
% portinstall php4-mysql
To install PostgreSQL support on FreeBSD:

% cd /usr/ports/databases/php4-pgsql/
% make clean install
- or with portupgrade -
% portinstall php4-pgsql
- Depends on: session - OK
- Depends on: pcre - OK
680NAME IS NULL:2005/06/01(水) 17:32:26 ID:???
Error: There is no database support in your PHP setup
To install MySQL 3.23 or 4.0 support on FreeBSD:
681NAME IS NULL:2005/06/01(水) 20:10:40 ID:kES1RqUK
「.sql」ファイルを作成したデータベースにインポートしようとしています。
1Gを超える「.sql」ファイルのインポートには、どういった方法が最適でしょうか?
Windows2000環境、MySQL4.0.13、PHP4.3.2、Apache2.0.46、phpMyAdmin 2.6.2-pl1
682679:2005/06/01(水) 20:33:17 ID:???
MySQL は最新のものが入っています。
683NAME IS NULL:2005/06/01(水) 23:48:42 ID:???
テーブルの1カラム目に、ユニークなTIMESTAMP(10)を入れています。
データを更新するたびに現在の時刻に変わってしまうのですが、
このデータはIDとして扱いたいので、簡単に変わってしまうと厄介です。
これを避ける方法はないのでしょうか?

初心者の質問で恐縮なのですが、
何かご提案ありましたらよろしくお願いします。
684NAME IS NULL:2005/06/02(木) 00:16:32 ID:???
>>682
逆に古いの(MySQL4.1じゃないの)入れてみな。
685NAME IS NULL:2005/06/02(木) 00:52:47 ID:???
>>683
TIMESTAMP型はそういう特性をもったフィールド型です。
日付型のIDを使用するなら、DATETIME型を使います。
http://dev.mysql.com/doc/mysql/ja/datetime.html

としても、TIMESTAMP(10)だと分までの区別しかなかった訳ですが
分でも秒でもIDとして成立(ユニーク)させることを別の所で
処理しないといけない気がしますが。
686NAME IS NULL:2005/06/02(木) 00:59:27 ID:???
>685
ありがとうございます。
マニュアルのそのページを見たときに、
書式以外はDATETIME=TIMESTAMPと思ってしまったところが
間違いだったようですね。。。

ユニークにさせる処理はできているので大丈夫だと思います。
ありがとうございました。
687NAME IS NULL:2005/06/02(木) 09:19:37 ID:???
>>673
ttp://dev.mysql.com/doc/mysql/ja/subquery-errors.html

> ただし、これは、一部の初期のバージョン(MySQL 4.1.1 など)にのみ適用される。
688NAME IS NULL:2005/06/02(木) 10:07:29 ID:???
>>687
それを読んで、
「一部の初期のバージョン(MySQL 4.1.1 など)にのみエラーが出る」
(=それ以外のバージョンではエラーなく実行できる)
と理解したんだけど、間違ってた?
で、最新バージョン(4.1.12)を入れてもエラーになるんでおかしいな、と
689NAME IS NULL:2005/06/02(木) 13:24:43 ID:???
FedoraCoer3ですが、MySQL のヴァージョン4か5の
mysql ,mysql-server のパッケージってあるのでしょうか?
yum install しますと、バージョン3になってしまいます。
690681:2005/06/02(木) 13:31:43 ID:T6Y+YlBS
追記です、特定データベース内のテーブルに対して「.sqlファイル」をインポー
トしたいのですが。
初心者のため分かりやすく教えていただける方、どうぞよろしくお願いします。
691NAME IS NULL:2005/06/02(木) 15:32:48 ID:???
ttp://dev.mysql.com/doc/mysql/en/batch-commands.html >> 690
前にもあったが、日本語doxは糞だからあまり当てにするな。
英語のref manual を嫁。
692NAME IS NULL:2005/06/02(木) 19:48:03 ID:E1fmfaVc
音楽情報を管理するデータベースを作っているのですが、
英語1文字で LIKE 検索をすると関係ないものまで引っ張ってきてしまいます。

mysql> select ARTIST from DATA_TB WHERE ARTIST LIKE '%b%';
+------------------------+
| ARTIST |
+------------------------+
| CRYSTAL KAY |
+------------------------+

文字コード周りをいろいろ調べてみたのですが解決できませんでした。
MySQLのバージョンは 4.1.11-log です。
どなたか解決方法をよろしくお願いします。
693NAME IS NULL:2005/06/02(木) 19:58:19 ID:???
>>692
例えば「zzz」なんかもヒットするって事?
694NAME IS NULL:2005/06/02(木) 20:06:47 ID:E1fmfaVc
>>693
レスありがとうございます。

zzzは引っかからないです。
hex関数の結果をみますと

mysql> select hex('b');
+----------+
| hex('b') |
+----------+
| 62 |
+----------+
1 row in set (0.00 sec)

mysql> select ARTIST, hex(ARTIST) from DATA_TB WHERE ARTIST LIKE '%b%';
+------------------------+----------------------------------------------+
| ARTIST | hex(ARTIST) |
+------------------------+----------------------------------------------+
| CRYSTAL KAY | 826282718278827282738260826B8140826A82608278 |
+------------------------+----------------------------------------------+
1 row in set (0.00 sec)

あくまで予想ですが、「62」ってのに引っかかってるのかなぁって
思っています。
内部的なことは詳しくないので確証は持てないのですが。。。
695NAME IS NULL:2005/06/02(木) 20:14:29 ID:???
>>692
ARTISTフィールドの定義(設定) が
1byte系エンコーディングまたはbinary属性の気がする。
696NAME IS NULL:2005/06/02(木) 20:20:05 ID:E1fmfaVc
ARTISTカラムはblob型で設定してあります。
blob型で設定している限りこの問題は回避できないって事っすかね・・・。

ちなみにDBのcharsetは現在sjisにしてあります。
いろいろ変更してみたのですが結果は変わりませんでした。。。

最終的には大文字、小文字を区別してくれて検索出来ればいいんですけど
そういう時ってどのような環境が最適なんでしょうか?
697NAME IS NULL:2005/06/02(木) 20:58:53 ID:???
>>696
そういう場合はCLOB(TEXT)を使うんでないか?
http://dev.mysql.com/doc/mysql/ja/blob.html
BLOBはあくまでもBinaryLargeOBjectsなんだから。
698NAME IS NULL:2005/06/02(木) 21:16:34 ID:???
>>696
ARTISTカラムをBLOB型で定義する意味って何?
普通にVARCHARで良いように思うけど。
699NAME IS NULL:2005/06/02(木) 21:28:40 ID:E1fmfaVc
レスありがとうございます。
始めはTEXT型で宣言してたんですけどマニュアルに
「TEXT 型は大文字と小文字を区別しない BLOB 型と考えることができます。」
って掛かれてたのでBLOB型で定義しなおしたんです。
で、テストで英語1文字で入れてみたら今のような現象が起こったって訳です。

>> 698
何文字のアーティストがいるか分からないからラージオブジェクトにしたんですが
VARCHARでも事たりますねぇ。。。
700NAME IS NULL:2005/06/02(木) 21:47:07 ID:???
>>699
>「TEXT 型は大文字と小文字を区別しない BLOB 型と考えることができます。」

ああ、それは「大文字と小文字を区別しない」→「ロケールを考慮する」読み替える。
そこで言う「大文字と小文字」は、"日本語"での大文字小文字の区別のことではない。
「ロケールを考慮」すると、英語などのロケールではBINARYもbinaryも同じ意味なので
「大文字と小文字を区別しない」動作をするが、日本語ではそういう動作をしない。
連続したバイナリをエンコーディングに合わせて、"ひとつの文字"として認識するという動作をするだけ。
701NAME IS NULL:2005/06/02(木) 21:59:13 ID:???
test
702681:2005/06/02(木) 22:06:34 ID:1PJ+iiN5
>>691

レスありがとうございます。

コマンドプロンプトからmysqlへ移動しuse databases実行後

mysql> mysql < sqlファイル名;

上記のコマンドを実行しましたが、エラーが表示されてしまいます。

ファイル名のディレクトリ指定方法が間違っているのかもしれませんが、試した物が通りませんでした。
重ねてですが、ご支持いただけると幸いです。
703NAME IS NULL:2005/06/02(木) 22:15:42 ID:???
$query = "SELECT * FROM name WHERE 'ア' <= yomi AND yomi < 'カ' ORDER BY yomi";
50音順でア行〜ワ行を取得したいのですが、
何故か、上のクエリを実行すると、「ギ〜」というヨミのものも入ってきます。
カ行のはずなのに「ビ〜」のヨミや、ハ行のはずなのに「タ〜」のヨミが出てきます。
これは何ででしょうか。
調べてはみましたが、このような事態になってしまって困ってます。

Mysql4.0.24を使ってます
704NAME IS NULL:2005/06/02(木) 22:37:06 ID:???
>>688
5.0.xは?
705NAME IS NULL:2005/06/02(木) 22:54:44 ID:???
>>702
示されたポインター先のマニュアルページを良く嫁。
そこにも書いてるけど、ついでに下も
http://dev.mysql.com/doc/mysql/en/batch-mode.html
706NAME IS NULL:2005/06/02(木) 22:57:28 ID:???
>>703
yomiのエンコーディングが適正に設定されてない。
707706:2005/06/02(木) 22:58:41 ID:???
MySQL4.0.xだから、
MySQLサーバ全体のエンコーディングが適正に設定されてない。
だな
708NAME IS NULL:2005/06/02(木) 23:10:30 ID:???
>>706-707
ありがとうございます。今から調べてみます
709703&708:2005/06/02(木) 23:19:32 ID:???
無事に、正しく動くようになりました。
Mysqlを入れなおした時に設定が戻っていたようで、見落としてました… orz
>>706-707 多謝!
710NAME IS NULL:2005/06/03(金) 00:41:47 ID:???
> 何文字のアーティストがいるか分からないからラージオブジェクトにしたんですが
> VARCHARでも事たりますねぇ。。。
ジュゲムでも入れるのか?
711NAME IS NULL:2005/06/03(金) 02:20:21 ID:???
>>702
>コマンドプロンプトからmysqlへ移動しuse databases実行後
>mysql> mysql < sqlファイル名;
>上記のコマンドを実行しましたが、エラーが表示されてしまいます。

そうじゃないよ、たとえばこのようになる。
$ /usr/local/mysql/bin/mysql -u root -p [DB名] < [ファイル名.sql]

一度、mysqldumpして、内容を良く見てみるといい
712NAME IS NULL:2005/06/03(金) 02:51:08 ID:???
ところで、windows のシェルってリダイレクト使えるの?
すごい昔の知識だけど使えなかった気が。
713NAME IS NULL:2005/06/03(金) 05:42:47 ID:???
>>712
DOSの頃から現在の窓のコマンドプロンプトに至るまで、使える。
714NAME IS NULL:2005/06/03(金) 09:28:10 ID:???
>>704
recommendedでないのは入れたくなかったので試しておりませぬ
715NAME IS NULL:2005/06/03(金) 21:52:45 ID:???
>>714
入れてテストするくらいやればいいのに。。。
別に既存のをリプレースする必要はないんだし。
716NAME IS NULL:2005/06/03(金) 23:47:17 ID:???
>>715
ではよろしくー
717NAME IS NULL:2005/06/04(土) 09:50:36 ID:???
>>716
715じゃないけど、テストコードとデータくれたらいつでもテストするよ。
718NAME IS NULL:2005/06/04(土) 16:52:00 ID:DCaPW79E
create database 00001;
というクエリを実行したのですが、エラーになってしまいます。
何がいけないのか教えてください。
719NAME IS NULL:2005/06/04(土) 18:14:50 ID:???
何のエラーか書けよ
720NAME IS NULL:2005/06/04(土) 18:47:27 ID:???
>create database 00001;

正解はcreate database `00001`;
721NAME IS NULL:2005/06/04(土) 19:25:07 ID:DCaPW79E
mysql> create database 00001;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '00001
' at line 1
722NAME IS NULL:2005/06/04(土) 19:25:45 ID:DCaPW79E
'00001'でも同じエラーです
723NAME IS NULL:2005/06/04(土) 20:02:18 ID:???
>>722
お前は目がおかしいのか?

>>720はシングルクウォーテーションじゃないぞ。
バッククウォートだぞ。
724NAME IS NULL:2005/06/04(土) 22:44:32 ID:DCaPW79E
ありがとうございました。
もう一つ質問です。
在庫管理のシステムを作っており、
出庫・入庫の最新30件を表示したいのですが、
これをどのように作ったらいいか分かりません。
入出庫ログには日付の列もあるのですが、
たくさんレコードがあるのでorder byだと遅くなってしまいます。
入出庫ログの日付へのインデックスを作ればできそうなのですが・・・。
どなたか良い方法を教えてください。
725NAME IS NULL:2005/06/04(土) 23:30:13 ID:???
>入出庫ログの日付へのインデックスを作ればできそうなのですが・・・。
やってみてから質問しろよ馬鹿
726NAME IS NULL:2005/06/04(土) 23:44:50 ID:???
動画ファイルを突っ込むとテーブルが50GBとかなるんですけどどうにかなりま
せんかね?
727NAME IS NULL:2005/06/04(土) 23:48:15 ID:aGSJcONG
MySQL Control Center の使い方の書いた本ってないですか??
ホームページでもいいんですけど。
728NAME IS NULL:2005/06/05(日) 08:57:40 ID:???
>>726
動画データ自身はDBに格納せずに、ファイルシステム上の
ポインター(要はpath)のみ格納して管理する。
729NAME IS NULL:2005/06/05(日) 09:38:33 ID:???
>>728
そんなのわざわざDBに入れる情報ではない罠。
動画データそのものを保護する手段としての格納を考えている。ファイルシス
テムとは別のデータベースへのアクセス権で動画の利用を制限するのが主目的
で検索にプライオリティーを置いていない。でも容量が凄いことになるのでな
んとかなりませんかねっていう疑問。テラ容量クラスが必要。でもそうすると
ハードウェア的に脆弱性が出る。如何ともし難い。
730NAME IS NULL:2005/06/05(日) 10:09:01 ID:???
>>724
OrderByを使うしかない。
そして、30件とデータの取得件数が決まっているならLIMITを仕様して必要な件数だけ取ってくればいい。

それと、遅くなりそうという意見だが、これはチューニング次第。
俺が以前にやったのはOracleだが数千万レコードから1億レコードのデータがあっても、
データ検索に1秒以下で実現できる。
つまりチューニング次第。
731NAME IS NULL:2005/06/05(日) 10:13:18 ID:???
>>729
DBに格納するにしろ、そのままディレクトリに置くにしろ変わらなくないか?
確かにDBに格納する場合、若干ファイル容量が増えるが、
テラ容量必要って言ってるんだからそのまま置くにしてもテラ容量必要だろ。

結局は、ハードウェア的に対応するしかないんじゃない?
HDDをRAIDにして尚且つDATテープ装置で週1回のフルバックアップと
毎日の差分バックアップするとかね。
732NAME IS NULL:2005/06/05(日) 10:56:42 ID:???
>>729
ああ、DBで管理が前提な訳ね。
だったらDBが膨れるのはなんともならない。当たり前。
で、DBが膨れることでデータファイルのサイズが
ファイルシステム的に大きなサイズになって困るということなら
InnoDBを使って小さなファイルサイズに分割された状態になるようにしとけば良い。
勿論DBを複数のディスク/ディレクトリに分散することも可能。

俺はやっぱりポインタだけで管理することを薦めるがね。
>動画データそのものを保護する手段としての格納を考えている。
>ファイルシステムとは別のデータベースへのアクセス権で動画の
>利用を制限するのが主目的
なんだよな。ファイルシステム上のデータに対して、
MySQLで管理するアカウント(MySQLのユーザアカウントでも良いし、動画データ用の専用の
アカウント管理をしても良い)で、アクセスしか出来ない様な仕組みを提供する方が簡単。
仮想メールアカウント/ボックスをMySQLで管理するのと同じような方法。
自分はそんな感じで、多連でDVD-RAMに格納してやってるよ。
733NAME IS NULL:2005/06/05(日) 19:30:17 ID:kv1snlcr
MySQLに限った話ではないかもしれないんですが
クエリの実行速度を簡単に計測するツールって無いですか?
DOS窓で実行すれば時間は表示されるんですが、あんまりDOSでSQL文をいじるのがめんどうくさいので、、
734NAME IS NULL:2005/06/05(日) 20:36:58 ID:???
phpMyAdminでも入れたら
735733:2005/06/05(日) 21:03:11 ID:kv1snlcr
レスどうもです。
試してみます
736NAME IS NULL:2005/06/05(日) 21:10:21 ID:K/EM+lbV
俺はDBのベンチは全部perlで書くよ。
Time::HiResモジュール使えばマイクロ秒(0.000001秒)まで計測可能。

use Time::HiRes qw(gettimeofday);
$start = gettimeofday();
#処理
$elapsed = gettimeofday() - $start;
printf "elapsed :%7.3f msec\n", 1000 * $elapsed;
737NAME IS NULL:2005/06/05(日) 21:24:41 ID:???
>329
と同じ症状です。
MySQL4.1.12aでかねやんからアクセスすると

サーバのキャラクタセット ->
クライアントのキャラクタセット -> sjis

と、サーバのキャラクタセットが空白に表示され、CSVからのデータのインポートに失敗します。
my.iniを見てもちゃんとsjisに設定されています。
とりあえずインポートを成功させたいのですがよい方法はないでしょうか。
738NAME IS NULL:2005/06/05(日) 21:27:22 ID:???
かねやんは4.1系やめたほうがええ
739NAME IS NULL:2005/06/05(日) 23:46:44 ID:kFSH5fCZ
俺は全部rubyで書くよ。
740NAME IS NULL:2005/06/05(日) 23:48:30 ID:???
>>733
super-smackってのがいいよ。
日本語ドキュメント内から今使い方をblogで公開しようと
必死で書いてる。
もう少し待ってね

と、さっきデートしてほぼふられることが確定した俺が言ってますよ・・・
741NAME IS NULL:2005/06/06(月) 01:19:43 ID:???
後ついでに皆さんテストの時にはスレッドいくつまで走らせてテストしますか?
一応俺は10〜2000くらいまではテストするんですが
2000発行するとクライアントのCPU使用率おかしくなりません?
742NAME IS NULL:2005/06/06(月) 07:41:36 ID:???
sqlを列挙したテキストを書く。
time mysql -u ユーザ名 -ppassword < テキストファイル名
743NAME IS NULL:2005/06/06(月) 21:08:57 ID:BC3hoVn0
インターネットから自宅のMySQLサーバに接続しようとしたら、
Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server
と言われて接続できません。xxx.xxx.xxx.xxxはクライアントのIPアドレスです。
hosts.allowには一時的な対策としてALL:ALLを書いてあります。
何がいけないのか、教えてください。
744NAME IS NULL:2005/06/06(月) 21:13:57 ID:???
>>743
1つ聞いていい?
自宅のサーバはちゃんと外部からアクセスできるようにしてあるんだよね?
というのは、そういったスキルがあるなら、こういった質問は出てこないから。
745NAME IS NULL:2005/06/06(月) 21:18:35 ID:BC3hoVn0
はい。見抜かれてるので正直に書きます。
my.cnfかどこかに書く場所があるとは思うんですが、
調べるのが面倒なんですよ。。。
746NAME IS NULL:2005/06/06(月) 21:23:03 ID:???
>>745
そういう事じゃないのね。
MySQLとかそういった話以前に、外部から自宅にアクセスできるのかって言うのを聞いてるの。

それに、外部から繋ぐのに、my.cnfとか殆ど関係無い。
鯖が外部からアクセスできるなら、殆どの問題はクリアしている。

調べれば分かるけど、自宅の鯖を外部に公開するってのは結構大変な作業。
747740:2005/06/06(月) 21:45:40 ID:???
super-smack の使い方を書きました
http://nullpo.2log.net/home/pcijiri/archives/blog/main/2005/06/06_185852.html

おかしなところとかありましたら、指摘お願いします。
と言うかおかしなところだらけですw
748NAME IS NULL:2005/06/06(月) 23:05:01 ID:f0IBjb/5
Windows XP で 4.1.12a をインストールしたんだけど
show tables すると 8つあるテーブルのうち 5つ分しか表示されない
他の人はこんなことない?

Linuxだとちゃんと全部表示された。
PCがおかしいのかな?
749NAME IS NULL:2005/06/07(火) 02:49:12 ID:???
>>743
mysqlがエラー吐いてるなら、port3306でつながっているんででしょう。
なので、ただ単に、localhostからの接続しか許してないんでしょう。

grant all on *.* to root@"%" identified by "hogehoge"
みたいなみたいな。
select * from mysql.userして調べて見ましょう。
750NAME IS NULL:2005/06/07(火) 03:55:03 ID:???
設定変えて再起動してないに一票とかMySQLを全く知らないのにレスしてみたり
751NAME IS NULL:2005/06/07(火) 08:27:42 ID:???
ユーザ権限変更に再起動は必要無い。
grant使わずにupdate/insert/deleteで操作した場合はflushする必要がある
752NAME IS NULL:2005/06/07(火) 12:01:31 ID:???
>>748
単純にWin/Linuxで設定やアカウントがことなってるからじゃないか?
show tablesして見えるテーブルの権限が、そのアカウントにあるか確認。
753748:2005/06/07(火) 19:51:04 ID:t7JDRBy2
>>752
GRANT ALL ON *.*
TO root@localhost IDENTIFIED BY xxxx';
した root で show tablesしてもダメだった

とりあえず、これは置いといて

別の問題で

GRANT SELECT,INSERT,UPDATE,DELETE,LOCK TABLES ON *.*
TO member@localhost IDENTIFIED BY 'memberber'

GRANT SELECT,INSERT,UPDATE,DELETE,LOCK TABLES ON restriction.*
TO member@localhost;

use restriction;

REVOKE DELETE
ON `採番`
FROM member@localhost;

を実行すると

ERROR 1147 (42000) at line 18: There is no such grant defined for user 'member'
on host 'localhost' on table '採番'

ってなるんだけど、GRANT,REVOKEの使い方が間違ってる?
754NAME IS NULL:2005/06/07(火) 19:59:06 ID:blI7rnNl
現在FreeBSD4でMySQL4.0.18をPackageでインストールして使用しています。

今度、max connectionsの値を変更したいのでmy.cnfを検索したところ、locateでもfindでも見つけることができなくて変更できずにいます。

どこのファイルからこの値を変更できますか?どなたか教えてください。お願いします。
755かなり初心者です:2005/06/07(火) 21:51:57 ID:SKY8l8Cj
primary key として設定して、さらに auto_increment を設定した列があります。
このテーブルにデータが10個くらいいれてあります。

このテーブルに、primary keyが4のレコードを入れて、
今までprimary keyが4だったレコードを5へ、
primary keyが5だったレコードを6へ、
primary keyが6だったレコードを7へ、
………

という風にしたいんですが、どういう風に書けばいいでしょうか?
教えてください。
756NAME IS NULL:2005/06/07(火) 22:12:17 ID:???
もう1個テーブル作ってそっちにデータ移す。
で、件のテーブルをdrop、後create。
データをうまいこと入れなおせばできるんでない?

sqlだけでやれるのかしら?
757NAME IS NULL:2005/06/07(火) 22:13:07 ID:???
>>755
できれば、その4とか5...の値を保持するカラムを別に設けたほうが良いと思う。
auto_incrementでprimary keyカラムの値を変更するのはあまりお勧めしないけど。。。
primary keyのカラムが id とした場合、こんな感じ。

UPDATE table SET id = id + 1 WHERE id >= 4;
INSERT INTO table (id,...) VALUES(4, ...);
758755:2005/06/07(火) 23:00:22 ID:SKY8l8Cj
>>757
別のカラムを設けることにします。(orderというカラム)
そこのカラムでも、
UPDATE table SET id = id + 1 WHERE id >= 4;
INSERT INTO table (id,...) VALUES(4, ...);
こういうことをするには、auto_incrementって設定しない方がいいですか?
設定すると、どういう時に、おかしくなる心配があるか、教えてもらえませんか??
759755:2005/06/07(火) 23:01:39 ID:SKY8l8Cj
>UPDATE table SET id = id + 1 WHERE id >= 4;
>INSERT INTO table (id,...) VALUES(4, ...);
↓↓
UPDATE table SET order = order + 1 WHERE order >= 4;
INSERT INTO table (order,...) VALUES(4, ...);

この間違いです。
760NAME IS NULL:2005/06/07(火) 23:08:52 ID:???
>>753
文法的には合ってるんだが、
グローバルレベル:GRANT 〜 ON *.*
データベースレベル:GRANT 〜 ON restriction.*
テーブルレベル:REVOKE 〜 ON `採番`
でそれぞれ管理レベルが異なる。
http://dev.mysql.com/doc/mysql/ja/grant.html

REVOKEで権限を抜けるのは同じ管理レベルにおいて
既に権限が設定されてるものに対してだから、
テーブルレベルでGRANTで権限が設定されていないと駄目。

最終的な権限はそれぞれのレベルの論理和(or)だから、
ある特定のテーブルに対して"だけ"権限を与えたくない
というパターンの場合は、正直設定が面倒くさいね。
管理ツールとかユーティリティだと操作が楽になってるけど。
761757:2005/06/08(水) 00:04:04 ID:???
>>758 759
auto_increment はテーブルに一つしか設定できないので、元のカラムを残して
order カラムに auto_increment は設定できない。
ぢゃあ、元のカラムを消して、order カラムに auto_increment を設定する?
という話になるとそれはやめた方がいい。
元の auto_increment、primary key のカラムはそのレコードを特定する値として
残しておく。そして一度、設定されたら変更しない。
他のテーブルと結合したりする時、結合相手がころころと変わると大変だから。
今回、他のテーブルと結合するかどうかは知らないけど、常にレコードを特定する
値は何?ということは頭に置いておくべき。

order は単に表示順序を決める値なので、おまいさんが都度都度、設定して
必要に応じて振り直しをした方がいいよ。
どういう風に設定、振り直しをするかはおまいさんのやりたいことをもう少し
聞かなきゃ判らんけど。
762755:2005/06/08(水) 00:35:51 ID:???
なるほど。どうもありがとうございます。
Ruby on RailsっていうWebアプリケーションのフレームワークを使い始めて、
今まで触ったことのないSQLを使い始めています。
Railsでは、tebleにはidカラムが必須なので、
それとは別に、データの取り出し順序を指定するorderカラムを作ることにします。
それで、このカラムには、auto_incrementとかは使えない。
データを入れるときにRubyスクリプトでうまく設定します。

時間があれば、SQLの勉強もしないといけないですね。>おれ
763NAME IS NULL:2005/06/08(水) 02:30:11 ID:???
>>754
無いのが普通。
|ソースディストリビューションがあれば、my-xxxx.cnf という名前の
|設定ファイルのサンプルが support-files ディレクトリに含まれています。
|バイナリディストリビューションの場合は、DIR/support-files ディレクトリにあります。
|ここで、DIR は MySQL インストールディレクトリのパスです(通常、C:\mysql または /usr/local/mysql)。
|現在、小、中、大、および特大システム用のサンプル設定ファイルが用意されています。
|my-xxxx.cnf を自分のホームディレクトリにコピーして、名前を .my.cnf に変更し、このファイルを
|使用してみてください
http://dev.mysql.com/doc/mysql/ja/option-files.html
764NAME IS NULL:2005/06/08(水) 02:37:35 ID:???
Win版のMySQL4.1のデータをLinux版のMySQL4.1へ移行したいのですが、うまく行きません。
文字コードはSJISを使っています。
mysqldumpコマンドでダンプし、それをLinuxのMySQLサーバへリストアしたのですが、LinuxのMySQLインタプリタでデータを見ると文字化けしてます。
ダンプファイルをエディタで直接開いても、よく分からない文字コードになってます。
ただし、WindowsのMySQLインタプリタでLinuXのMySQLサーバにつないでみると、文字は化けていません。
次に、backup tableコマンドを試したのですが、ダンプはできましたが、LinuxのMySQL4.1サーバへリストアすると、.frmファイルでエラーが起きます。
select into outfileでスキーマなしのデータ部分だけエキスポートすると、問題なくSJISのファイルが出来るのですが…。
mysqldumpコマンドでダンプ・リストアする方法がわかる人はいますでしょうか?
765NAME IS NULL:2005/06/08(水) 05:55:42 ID:???
>>765
4.1系ならmysqldumpの引数に --default-character-set=sjis をつけてやってみたら
いけるんぢゃない?
バックアップする時とリストアする時の両方ね。
766NAME IS NULL:2005/06/08(水) 12:53:39 ID:???
>>763
ありがとうございます!
767NAME IS NULL:2005/06/08(水) 14:19:40 ID:c/qUh/E8
mysqlでのパラーメータクエリの使用法を教えてください
c#からodbc経由で接続しています
768NAME IS NULL:2005/06/08(水) 15:15:25 ID:NDa4ljVF
質問です。
auto_incrementの項目があるとき、INSERT文の中で、その時に振られた番号を取得する事は出来るでしょうか?
具体的には、auto_incrementで振られたNoを含む文字列を、同じレコードの別のフィールドに保存したいのです。
今はINSERT文のあとに、直前のNoを検索して、UPDATEしているのですが、Noが分かることが出来るのか知りたくて質問しました。
769NAME IS NULL:2005/06/08(水) 15:16:23 ID:???
改めて読んだら読点が多すぎた…。
770NAME IS NULL:2005/06/08(水) 15:18:51 ID:???
>>768
SELECT LAST_INSERT_ID()
771NAME IS NULL:2005/06/08(水) 15:44:46 ID:???
>>768
回答は770が正解&過去ログ>>637- 嫁
772NAME IS NULL:2005/06/09(木) 01:42:06 ID:???
リッチテキストのデータを保存したいのですが、どういう風に保存するのがいいでしょうか??
検索することとかも考えています。
773NAME IS NULL:2005/06/09(木) 02:29:54 ID:???
>>772
リッチテキストっても一杯種類があるんだが。
MSのWordPadなんかで使うrtfは、DBには格納せずに
そのままファイルの状態で管理した方が良いよ。
その方が検索ツールの適応度も高い。
774NAME IS NULL:2005/06/10(金) 11:43:32 ID:???
Windows2000 MySQL 5.0.6-beta を使用しています。

mediawikiをインストール中、データベース作成時に下記のエラーが表示されました。

'Specified key was too long; max key length is 1024 bytes'

このエラーを解消する方法(キーの長さ制限を増やす?)を教えてください。
ちなみにこのURLを見ていましたが、いまいち内容が掴めませんでした。

http://64.233.187.104/search?q=cache:gS8sbkXozsoJ:dev.mysql.com/doc/mysql/ja/error-returns.html+Specified+key+was+too+long%3B+max+key+length+is+1024+bytes&hl=ja&lr=lang_ja
http://64.233.187.104/search?q=cache:k6NRDUcLYQ0J:jira.atlassian.com/browse/CONF-2783%3Fpage%3Dall+Specified+key+was+too+long%3B+max+key+length+is+1024+bytes&hl=ja

775NAME IS NULL:2005/06/10(金) 13:45:38 ID:???
>>774
>>256 で同様の質問
>>258-259 >>268 で理由の説明

MySQL4.1.1以降で仕様が変わったので、アプリ側が
対応してなければ自分で弄って対応させるか、
古いMySQL3.xや4.0.xを使う。因みにアプリ製作者が
シングルバイト圏の人だと気づきにくいところ。
本人の環境だと変化ないから。
776774:2005/06/10(金) 14:10:45 ID:E0hIbgFr
>>775

過去レスをよく読むべきでした、回答ありがとうございます。

ちなみにアプリ側の対応のさせ方というのはご存知の方いらっしゃいますか?

777& ◆R7PNoCmXUc :2005/06/11(土) 06:06:02 ID:FHUWJIVm
FreeBSDからMySQLを使っています。

今度、システムを新しくしようと思ってるんですが、
MySQLのデータベースっていうのは、どこに保存されているのでしょうか?
システムを新しくしていく時に、保存しておくべきファイルってどれでしょうか??
778NAME IS NULL:2005/06/11(土) 07:57:03 ID:???
>>777 そんなこと質問してるようじゃ、どうせ大したデータも
無かろうからシステム更新ごとに全部消しちまっても大差ないべ、
というのは置いといて、/usr/local/mysql/data あたりだ。
一応。
779NAME IS NULL:2005/06/11(土) 08:01:48 ID:???
780NAME IS NULL:2005/06/11(土) 12:31:24 ID:???
>>777
まあ、>>778で正解だろうと思うけど、
SHOW VARIABLES LIKE 'datadir';
SHOW VARIABLES LIKE 'innodb_data_file_path';
SHOW VARIABLES LIKE 'innodb_data_home_dir';
して場所を確認。あと必要ならlog絡みも。

システム刷新するならバイナリでバックアップするんじゃなくて、
dumpでやっといた方が良いと思う。
781NAME IS NULL:2005/06/11(土) 14:24:59 ID:FHUWJIVm
MySQLに新しくユーザを加えるときに、
192.168.1.* からのログインのみ許可するようなユーザにしたいのですが、
こういう書き方って可能ですか??
782NAME IS NULL:2005/06/11(土) 14:55:23 ID:???
>>781
[4.3.9. アクセス制御の段階 1: 接続確認]
http://dev.mysql.com/doc/mysql/ja/connection-access.html
783781:2005/06/11(土) 15:05:42 ID:FHUWJIVm
>>782
ピンポイントです。Thanks!
784NAME IS NULL:2005/06/11(土) 15:40:17 ID:???
データベースの主キーを昇順に並べて、それを1行目から順に
主キーを1,2,3,・・・と再振り分けしたいのですが、
そういったことはどのようにやればいいのでしょうか?

直接MySQLを操作してるわけではなく、JDBCから操作しています。
よろしくお願いします。

785NAME IS NULL:2005/06/11(土) 19:03:19 ID:???
設定が固まっていないんだけどデータがどんどん溜ってくるので
その都度alterでカラムの変更をしてる。それも毎日。
これって異常なのか?
786NAME IS NULL:2005/06/11(土) 21:01:36 ID:???
>>785
設定が固まってないのなら仕方がないけど、データベースの使い方としては特異。
毎日データの格納・取り出しが変わってたら定型作業にならないやん。
使う人が複数いれば、その連絡とかどうすんの。毎日やるわけ?
787NAME IS NULL:2005/06/11(土) 21:12:53 ID:???
ALTERで名前変える程度ならまだしも、
テーブル構造を変えると、内部処理では
「一度新規テーブル作ってデータコピーして旧テーブル消す」
ということを行っている。

つまり、実行中はそのテーブルへのアクセスが一切出来ない(排他処理で待たされる)し、
万オーダーを超えたあたりから、ALTER激重になってくる。

気をつけたほうがいいぞ。
10万オーダー超えると、アクセスするプログラムによっては変換中にタイムアウトになるかもしれん。
788NAME IS NULL:2005/06/12(日) 16:48:22 ID:???
ちょい質問
なんらかの問題で、レプリケーションマスタを入れ替える場合は、
マスタのバイナリログが使えなくなるわけだから、
一度レプリケーション解除して、再度レプリケーション構築するような手順になると思うんだが、
具体的手法や手順の参考になるような資料は無いだろうか?
おそらく、master.infoとslave.infoと旧マスタからコピーしたバイナリログを
レプリケーションスレーブから消せばいいんだと思うんだが・・・・・・
789NAME IS NULL:2005/06/13(月) 00:07:02 ID:???
今回はじめてMySQLをインストールしたのですが、新しいデータベースを追加するところで
つまづいています(Windows環境です)

mysqladmin -u root -p create catalog
Enter password: *****

エラーが出ないので作れていると思うのですが、mysqlshowで表示させても出てきません。
↓表示されるのはこれだけです。
+-----------+
| Databases |
+-----------+
| test |
+-----------+

仕方ないのでもう一度同じものを作成しようとすると、下記のエラーが出ます。
メッセージからすると、既に同名のデータベースがあるのでつくれないという旨のようです。

mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'catalog'. Database exists'

表示させるにはどうしたら良いでしょうか?
790NAME IS NULL:2005/06/13(月) 00:24:38 ID:???
>>789
mysqlshowで指定するユーザに対して、対象となるデータベースの
SHOW DATABASES権限をGRANTする。
791NAME IS NULL:2005/06/13(月) 11:49:41 ID:???
>>788
>具体的手法や手順の参考になるような資料は無いだろうか?
私は公式のマニュアル以外、一切見ていませんが、
マスタが死んだ場合は、再構築する手順とほぼ同じですね。

master.infoにどこまでbinlogを読んだかが記録されているので、
残していると、レプリケーションが狂います。

なので、マスタ側は、スレーブの/data以下をコピーしたものを用意して、
binlogを全て削除する。スレーブ側は、master.infoを削除する。
あとは、my.cnfの設定を再確認して全台起動、という流れでしょうか。
792NAME IS NULL:2005/06/16(木) 00:44:46 ID:???
映画のDBをmysqlで作るときにテーブルを

タイトル 主役 共演者

とした時に俳優Aが主演した映画の共演者の中で、別の映画で主役を
得た俳優を求めることは可能ですか?
793NAME IS NULL:2005/06/16(木) 09:37:09 ID:???
可能です
794NAME IS NULL:2005/06/17(金) 01:36:41 ID:???
3.23.58で使える、クエリの実行時間を制限する、設定方法を教えてください。

も、一つ。
tableA NATURAL JOIN tableB NATURAL JOIN tableC …(合計6個結合する)
ってやると、えらい時間が掛かってしまうんですが、何が悪いんでしょうか?
795NAME IS NULL:2005/06/17(金) 05:28:19 ID:???
2000レコードぐらいあるテーブルに1つフィールドを増やして
そのフィールドに1から連番でナンバリングしたいんですけど
いい方法はありますか。
796NAME IS NULL:2005/06/18(土) 00:08:16 ID:???
リファレンスマニュアルの日本語版ってダウンロードできるのでしょうか?
日本語の「このマニュアルについて」からダウンロード先にいったけど
落とせるのは日本語のみの様子・・・。
どなたかご存知でしょうか?
797NAME IS NULL:2005/06/18(土) 00:24:25 ID:???
>>796
その日本語が良く判らん
798NAME IS NULL:2005/06/18(土) 02:07:26 ID:???
>>794
EXPLAIN
799NAME IS NULL:2005/06/19(日) 14:54:17 ID:n9q/trAx
あまのじゃくのオレとしては、MYSQL使ってなんとしてでもORACLEにパフォーマンスで勝ちたいんですが
両DBMSの比較してる良いサイトありますか?
800NAME IS NULL:2005/06/20(月) 13:03:50 ID:???
質問のあとで間が悪いようですがこちらも質問。
mysqlシェル上で

mysql> create table file (id int, data blob);
mysql> insert into file
->values (1, load_file
->('/home/fuga/1.gif'));

として
mysql> select data INTO DUMPFILE
->'/home/fuga/2.gif' from file where id=1;

とやると(ここまでは本まるうつし)
ERROR 1: Can't create/write to file '/home/fuga/2.gif' (Errcode: 13)
となります。mysql -u rootで入っても同様です。
MySQLプロセスのユーザーとシステムのユーザーがちがうので
書き込み権で撥ねられたのだと見当はつくのですが
どうすればよいんでしょうか?
801NAME IS NULL:2005/06/20(月) 14:20:12 ID:???
chown mysql:mysql -R /home/fuga/
or
chmod go+w -R /home/fuga/
802NAME IS NULL:2005/06/21(火) 01:25:04 ID:kGdVNVy8
XP Proにインストールした場合、やはり接続可能クライアントは10台までなのですか?
とれともトランザクションが同時に10までということなのですか?
803NAME IS NULL:2005/06/21(火) 01:52:07 ID:???
>>802
ライセンスの話なのか、機能の話なのかはっきりさせようじゃないか。

端的に言えばWinXP ProにApache入れた時といっしょ。
804NAME IS NULL:2005/06/21(火) 09:46:27 ID:???
>>802
どの様な使い方をされるんですか?
805NAME IS NULL:2005/06/21(火) 12:16:35 ID:rzUU6lJJ
solaris9でMySQL4.0.21使ってみたんですけど
mysql_install_dbやったら

mysql_install_db: /usr/local/bin/hostname: 見つかりません

って言われるんですけど
どこを見て/usr/local/bin/にhostnameがあるって設定になってるんでしょうか
よろしくお願いします。
806NAME IS NULL:2005/06/21(火) 12:56:51 ID:???
>>805
134 # Try to determine the hostname
135 hostname=`/usr/bin/hostname`
136
素人はバイナリ使えよ。
807NAME IS NULL:2005/06/22(水) 04:33:03 ID:E8U4gjYm
CSVからテーブルにデータを流し込みたいんですけど

LOAD DATA LOCAL INFILE '○○'

この部分をどうすればいいのかわかりません。
ローカル側から読み込ませたいんですが
具体的にどこにCSVファイルを置いて
どんなふうにそのファイルまでアドレスを指定したらいいのか
わかんなくて困ってます・・・。
808NAME IS NULL:2005/06/22(水) 05:44:00 ID:???
>>807
普通に期待したとおりローカルのカレントディレクトリから読み込むよ。
http://dev.mysql.com/doc/mysql/ja/load-data.html
http://dev.mysql.com/doc/mysql/ja/load-data-local.html
809800:2005/06/22(水) 13:35:29 ID:???
>>801
超遅レス申し訳ない。できました。あんがと。
810807:2005/06/22(水) 15:08:09 ID:NCTTdtQe
>>808
カレントディレクトリってコマンドプロンプトで調べられるやつですよね?

C:\Documents and Settings\Hoge
これがでてきたので、この階層にtest.csvを置いて

LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE `test`
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'

このSQL文を送ったのですが読み込めませんでした。
もしかしてやり方間違ってますか?
811NAME IS NULL:2005/06/22(水) 16:58:49 ID:???
>>810
>読み込めませんでした。
が、どう読み込めなかったのか不明なのでなんとも。
普通成功/不成功ともにエラーが出てるもんでしょ。

まあ、ローカルファイルが探せなくて読み込めない風な
ことだったので、その点については、
C:\Documents and Settings\Hoge\test.csvが存在して、
C:\Documents and Settings\Hogeディレクトリに移動した上で
mysql.exeを起動(パスが通ってなければフルパスで指定)して、
USE DATABASEしてtestというテーブルが存在するデータベースを選択後、
LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE `test`;
でC:\Documents and Settings\Hoge\test.csvが読み込めないというのはオカシイ。
読み込めなかったとすれば、ファイルの権限ぐらいだろうが、この場合は考えられんね。

FIELDS 〜以下の指定についてはCSVファイルの形式による。
指定の仕方はちょっと判りづらいかと思うので、ググるなりで勉強してください。
812NAME IS NULL:2005/06/22(水) 17:03:02 ID:???
>>810
あ、あとかなり古いバージョンのMySQLでは、インストーラが
スペース混在のディレクトリ名に対応してなかったこともあるので
ユーティリティの一部機能にも似たようなことがある可能性がある。
"Documents and Settings"などのディレクトリ以外で一応チェックして。
「mysql Ver 14.10 Distrib 5.0.6-beta, for Win32 (ia32)」では問題なかった。
813NAME IS NULL:2005/06/22(水) 17:06:47 ID:???
MyISAMしか使ったことない僕に教えてください。

ib_logfile0
ib_logfile1

ibdata1

これらのファイルは何をするものなんですか?

ib_logfile*はログファイルっぽいのですが、
レプリケーションしなければログは要らないのかなと、

ibdata1はデータファイルのようですが、
--innodb-file-per-table=1
を指定して別のところにデータファイルを作る設定をしても
自動で作られる・・・

よくわからないです、どなたかお願いします。
814NAME IS NULL:2005/06/22(水) 19:03:50 ID:???
>>813
InnoDB用のファイル。
MyISAMしか使わないのなら関係ありません。
InnoDBを使うのならマニュアルの解説を読んで理解すること。

MyISAMしか使わないのに、InnoDB用のファイルがあるのは
インストール時に「トランザクション機能が必要」としたためと思われ。
他には中身を理解せずにmy.cnfで設定を記述したか。
815NAME IS NULL:2005/06/22(水) 22:13:50 ID:???
>>811
カレントディレクトリがなんたるかをわかってないようなので、
変なツール使ってて、そのツールのカレントディレクトリになってるんじゃないか?

上げてる時点で疑うべき場所を非常識レベルに変えたほうがよさげ
816NAME IS NULL:2005/06/22(水) 22:37:28 ID:???
>>814
ありがとうございます。
もちろんInnoDBで使われることはわかっています。
InnoDBを使おうとして、skip-innodbのコメントをはずし、
4.1から利用可能な--innodb-file-per-tableを使って、
データファイルをMyISAMテーブルのように扱いたいと思ったわけです。
インストールはソースからのコンパイルですので、
トランザクション機能が必要とか、聞かれませんでした。
817NAME IS NULL:2005/06/23(木) 00:57:06 ID:???
OK。これから初めてInnoDBを使いたいわけね。
まず当たり前だがマニュアルには一通り目を通すこと。
http://dev.mysql.com/doc/mysql/ja/innodb.html
その上で、
http://dev.mysql.com/doc/mysql/ja/multiple-tablespaces.html
を読めば、何故ibdataファイル(ibdata1)が存在するのか判ると思います。

ib_logfile0, ib_logfile1については、これはInnoDBログファイルです。
操作履歴やレプリケーションに関わるMySQLのログとは性質が異なります。
これはInnoDBの自動修復に利用されるログで、何んらかの理由で電源断などが起きた場合等で
データベースの整合が取れなくなった際に、整合性修復のためにシステムにより利用されるログです。
複数あるのはログローテーションしているため。

InnoDBの設定を変えたり、InnoDBを利用しているデータベースやテーブルの
内容や構成を変更したのにibdataファイルの数や容量が減ったりしないのはInnoDBの仕様です。
(固定的に場所を確保しているので変更に強い(スピードが速い)と言えます)
設定を変更の際にはバッアップを取って、設定変更後にリストアする手間が必要になります。
ツール類を使えばそんなに大変ではないですけどね。一度決まれば、設定変更なんて頻繁にあるものでもないですし。
818NAME IS NULL:2005/06/23(木) 10:53:07 ID:V/LYOwCQ
>>813 >>816

ib_logfile0とib_logfile1はREDOログ用のファイル、この2つのファイルは循環して上書き使用される。

ibdata1というのはテーブルスペース用のファイル。

innodbの"テーブルスペース"にはREDOログ以外の全ての情報が書かれていると思ってよい。

インデックス、テーブルデータ、データディクショナリあたりかな。

--innodb-file-per-table=1にしてもデータディクショナリはibdata1に残るんじゃない?

あとUNDOログがバッファ上でいっぱいになってしまった場合に書き出されるのも
このファイル上なんじゃないのかな?←これは推測。

あと、--innodb-file-per-table=1にした場合、以前から存在するテーブルはibdata0に
残ったままで、別ファイルには切り出されない。

--innodb-file-per-table=1を使いたいという意見は聞くけど、どうしても特定のテーブルだけ
シンボリックリンクで別のディスクにおきたいとかいう話で無い限り、パフォーマンスも
ほとんど変わらないし、使う意味無いよ。

819NAME IS NULL:2005/06/23(木) 16:33:06 ID:y4Qkh/o7
mysql 3.23.58 の環境で、どうしても、mysqladmin のコマンドが通りません。
教えてくださいませ。

/usr/bin/mysqladmin -u *** -p ping など、いろいろユーザーやコマンドを変えてみても、
---このようなHELPメッセージ?が表示されてしまいます。
mysqladmin: unrecognized option `--default-character-set=ujis'
mysqladmin Ver 8.23 Distrib 3.23.58, for redhat-linux-gnu on i386
.....
.....

mysql へは入れます。ユーザも確認しましたが、間違ってません。

よろしくお願いしますです。
820NAME IS NULL:2005/06/23(木) 17:52:09 ID:???
>>819
エラー嫁
>mysqladmin: unrecognized option `--default-character-set=ujis'

大方、my.cnfで[client] セクションか[mysqladmin]セクションに
unrecognized optionを設定していると思われ。
821NAME IS NULL:2005/06/23(木) 18:29:00 ID:y4Qkh/o7
>>820
あ、有難うございますた。

ご指摘のとおり、[client]の 'default-character-set=ujis' を取り除いたら解決しました。
2日間悩み続けたのが、一発で解決しました。
感謝、雨あられです。

このエラーのについて、いろいろ検索をかけたのですが、全然ヒットしませんでした。
マニュアルもそれらしい部分を当たってみたのですが、解りませんでした。
本屋にいってみても、参考になるようなものは見つかりませんでした。
やはり、マニュアルを精読しないとだめなんでしょうか。

もし、よろしければ、アドバイスをおながいしまつ。
822NAME IS NULL:2005/06/23(木) 19:01:10 ID:???
>>821
つ[http://myna2.mysql.gr.jp/mysqlml/mysql/msg/6658]

アドバイスとしては、
・英語だからとエラーやログを自分で読まないのは愚の骨頂
("出来る"人も多くは英和辞書や翻訳ツールのお世話になっているものだ)
・検索を掛けるときは完全な検索結果を求めるのではなく、
緩めの検索ワードに抑えて、出てきた多数の検索結果を自分で辿り
答えを見つけようと努力すること。余り機械(プログラム)を信じない。
googleでさえも完璧じゃないので、他のサーチを併用するぐらいで丁度良い。
・日本語で見つからなければ、せめて英語のコンテンツにも検索を広げてみること。
・MLのアーカイブはGoogle検索に引っかからないものもあるので、
ML専用のアーカイブ検索も利用してみること。
・Webにあがってる情報というのは、情報の中の一部であることを念頭に置くこと。
(紙媒体に目をやれば、実は直に見つかったとか)

ということを全部やるのは大変だが、特殊なケースだと自分が先陣を切って
答えを見つけるしかないので、そういった能力を磨いていく必要がある。
(コンピュータ関連はWebある情報が膨大なので、まだマシ)

まあ、これで後進は2chのスレ検索でも答えが見つかるようになった訳だ。
823NAME IS NULL:2005/06/23(木) 20:19:54 ID:???
> アドバイスとしては
・MySQL のソースコードを読む
が欠落しているよ。
これが全て。
824NAME IS NULL:2005/06/23(木) 20:55:04 ID:???
>>823
そこまでボックス化が不完全な商品ではないよ>MySQL
825NAME IS NULL:2005/06/23(木) 22:25:30 ID:QrM5IyNb
PHPでmysql_pconnectを使用しているのですが、phpMyAdminで見ると、いつもSleepコマンドになったプロセスが大量にできています。
なんとか、Sleep状態のタイムアウトを設定したいのですが、どの変数を変えればよいのでしょうか?

MySQL 4.0.18を使用しています。
826NAME IS NULL:2005/06/24(金) 00:05:20 ID:w5PKWUDM
>>822 >>823 >>824
有難うございます。努力しますです。
>>820
も一度、有難うございました。
827NAME IS NULL:2005/06/24(金) 06:02:58 ID:???
質問です。
Windows版で、scriptsにあるスクリプトを実行するにはどうしたら良いのでしょうか?
具体的には、dataディレクトリを別ドライブにしたいので、mysql_install_db を
実行したいのですが。(←なにか根本的に間違っていたらすいません)
元のdata/mysqlを新しいdataディレクトリにコピーすればOKでしたが、
scriptsにmysql_install_dbがあるならこれもやってみたいと思いまして。
http://dev.mysql.com/doc/mysql/ のマニュアルの記述箇所だけでも結構です。
WindowsXP、MySQL4.1.12、です。初歩的な質問で申し訳ないですがよろしくお願いします。
828NAME IS NULL:2005/06/24(金) 10:09:24 ID:/UUySs3P
>>827

Windowsのバイナリ配布版にscriptsディレクトリ自体ないと思うが。
829NAME IS NULL:2005/06/24(金) 10:14:52 ID:/UUySs3P
>>827

Windowsでdataディレクトリを別ドライブ上にする方法
http://dev.mysql.com/doc/mysql/ja/windows-symbolic-links.html
830NAME IS NULL:2005/06/24(金) 14:37:17 ID:QXFZJ7Kt
MySQLユーザの方はPostgreSQLと比べて
MySQLを選んだ理由はなんでしょうか?
MySQLの方がライセンス的には面倒な感じで
機能的には最近はあまり差がないように思います。
PHPの書籍だとたいていMySQLがセットで説明されるように
なってるのを見てちょっと疑問に思ったのです。
831NAME IS NULL:2005/06/24(金) 14:50:32 ID:RIYPr3zX
>>830

日本企業からするとオープンソースと言いつつもサポートなしってのは採用しにくい。
そういう意味でPostgreSQLは今ひとつこれまで商用DBの代替としての押しが弱かった。
もちろん日本では以前からSRAがPowerGresっていうPostgreSQLの商用版、
最近は海外ではEnterpriseDBっていうPostgreSQLの商用版があるけどね。

MySQLは既に開発者が会社を立ち上げて有償サポートとかもやってる。
その辺の体制が評価されたのが1つ。

あと実は世界全体でのオープンソースRDBMSというとMySQLが最も古くからメジャー。
日本は言語の壁があったので普及が遅れていたのがMySQLが日本で出遅れた
理由の一つ。最近は書籍等も充実、日本語マニュアルもあり問題はなくなった。

最後に、いくつかの性能評価レポートを見ればわかるけど、
アプリケーションサーバからのアクセスなどのマルチスレッド環境では、
MySQLの方が圧倒的に限界スループットが高い。

つまりWEBシステムで高アクセスになった際により耐えれるのはMySQL。

そんなとこ。
832NAME IS NULL:2005/06/24(金) 18:29:26 ID:???
>>830
・速い(最適化)
・従順(プロンプト)
・海豚 ;-D
833NAME IS NULL:2005/06/24(金) 19:48:44 ID:???
>>831
4.0まではそうだったという感じ
4.1で日本語ボロボロにして離れたユーザー大量に見てきたよ

ちょうどPostgres8がWindows版発表したりパフォーマンスを大幅に改善したりして面白いことになったが
834NAME IS NULL:2005/06/24(金) 20:07:22 ID:???
Solaris 版のバイナリ使っているんですが、バージョンアプってどうやればよいんでしょぷか。
835NAME IS NULL:2005/06/24(金) 22:16:43 ID:???
>>833
4.1のアレなんとかならんのかねえ……。
2ヶ月前くらいからDBが必要になって触り始めてるけど、
未だにどちらのバージョンを本番に使うか悩んでる。
836NAME IS NULL:2005/06/24(金) 22:18:34 ID:???
>>830
個人的にはデータとかクライアントの互換性かな。
PostgreSQLはバージョンが0.1上がっただけで互換性がないのが続いたので、
(データもクライアントも)
うざかったのでやめた。
今はどうかしらないけどね。

まあ、MySQLも4.1でアレだったわけだが、
んでもPostgreSQLの時よりは
(個人的には)
手間がかからんかったのでそんなに問題とは思わなかった。

他にはDBエンジンが自由に選べるトコとか
(後付けは5.1からなのが残念だけど)
ソースが追いやすいとかかなぁ。
837NAME IS NULL:2005/06/25(土) 00:43:54 ID:???
MySQLの日本語がアレ問題はEUCのほうはまだなんとか動かせる範囲内で問題が少なかったけど
MS932のほうはこれがでてくるまでまったく対処できなかったからねぇ

MySQLはやっぱりWindows版もあって開発をWindowsでできたというのが大きなアドバンテージだったけど
今じゃPostgreSQLも大丈夫だし、むしろPostgreSQLのほうがMysqlより小さいんだよね

速度的なメリットもInnoDBとPostgreSQL8とじゃあんまかわらんし
MySQL4.1は改革しすぎてせっかくのサブクエリーやSQLで細かくバグもっていたり現場はめちゃくちゃ
混乱してるぞ

俺も3.xからずっとみてきたが、MySQL4.1とPostgreSQL8とどちらもはじめてさわるユーザーに
薦めるという場合PostgreSQLかなぁ
PGAdmin3とかJDBC等各種ドライバとか綺麗にはいってくれるので後出しの割りに
Windowsユーザーは触りやすいような気がする
MySQLも4.1からGUIツールつくといってたからどーなるかとおもったらとんでもねえぇものだったしなぁ
がっくし
838831:2005/06/25(土) 01:05:56 ID:5fXlIrGM
>>833

MySQL 4.1.12 あるいは MySQL 5.0.3 で日本語問題なくなったじゃん。

パフォーマンス>>831については、MySQL 5.0.7とPostgreSQL8.0.3とかの最新版の情報でてるよ。

Linux上ではMySQLの圧勝。Windows上では低負荷時はPostgreSQLのがレスポンスが早い、
Windows上での高負荷時はやっぱりMySQL。

839830:2005/06/25(土) 05:43:14 ID:???
皆さん、レスありがとうございます。
ライセンスとかはあまり気にならないようですね
840NAME IS NULL:2005/06/25(土) 06:36:18 ID:lAVQPOOq
>>839
企業ユーザ、特に大企業だと以前は商用ライセンスを買いたがる傾向があった。今もまだあるかな?

MySQL Networkっていう年間サブスクリプション型のサポートサービス(ライセンス権利含む)が
発表されてからは、こちらへ推移している。

MySQL ABによるマーケティングメッセージの決め文句は「TOCの削減」

大企業にとってはライセンス料金を0にできるかどうか、という話よりも
トータルコストの削減てことかねえ。
841NAME IS NULL:2005/06/25(土) 06:45:23 ID:lTBXpALr
>>840
TCOじゃね?
842NAME IS NULL:2005/06/25(土) 06:53:50 ID:???
>>839
部門内サーバのような用途なら、CMLの価格は全然気にならない。
GPLに使用という気は逆にないな。LGPL/BSDライセンスだったら...
多分そうであってもCMLを採用すると思う。
Web+DBの場合、ウチは自分ところのはCML使ってるけど
ISPのような会社だとGPL使ってるんじゃないかね。
別に不都合はないし。安く抑えることが優先でしょうからね。

ただ1人1本のような用途の場合は、ライセンス体系は
ネックにならないこともない。いやネックになる。

>>840
年間サブスクリプション型のサポートサービスで、
GPLのMySQLにサポート付いた奴があるでしょ。
CMLでなくて良いところは、あれを使うべきなのか...微妙。
843840:2005/06/25(土) 07:22:20 ID:lAVQPOOq
>>841
typoでした「TCO」・・・Total Cost of Ownershipと言いたかった。スマソ。

>>842
MySQL Networkはデフォルトは商用利用OKなGPLだけど、MySQL ABに言えば
CMLに変更してくれる。変更にお金はかからない。単に依頼するだけ。

あとね、海外の事例とかだと組み込み系で過去に大量ライセンス数採用とかあって、
そいういう時は「CMLだけど大幅値引き」とかもあったとか。

一応OracleとかDB2に比べてTCOが1/10になりますって謳っているわけだしね。
844NAME IS NULL:2005/06/25(土) 09:15:31 ID:???
話は変わりますが、
クエリキャッシュって期待ほどじゃなくて切ないです。

テーブルの少しだけでも変更されたら、今までのキャッシュが無効になるのね。
行レベルでキャッシュとかしてくれないかな〜
そしたらまじ愛してあげれるのに。
845NAME IS NULL:2005/06/25(土) 12:04:58 ID:???
Windows版って需要あるんだな。
正直言って、Windows版使うってのが信じられんが。
846827:2005/06/25(土) 12:12:14 ID:???
お話のところ割り込んですいませんが、


>>828
インストーラ無しのzip版でした。
こちらにはscriptsディレクトリとスクリプトファイルがありました。

>>829
シンボリックリンクという方法しかありませんか。

要はwindows\my.ini に

[mysqld]
datadir=D:/data

と記述してあるので、D:\data\mysqlにgrant tableというのを作りたいのですが。
先にも書いたように、元の(インストール先の)data\mysqlをD:\data\mysqlに
コピーすればMySQLサービスはエラーなく起動します。
Unix版の方はgrant tablesをmysql_install_dbスクリプトで作るみたいですね。
(そういえばVC++でソースからビルドした場合はgrant tableというのは
どうするんでしょうか。元のdata\mysqlは無いのではないんでしょうか)
まあ何故そんな事がしたいんだとお思いでしょうがもちろん実務ではなく自分の
趣味と言うか学習用途です。英語マニュアルを無理矢理読んでいるので
理解不足で根本的に勘違いをしてるかもしれません。よろしくお願いします。
847NAME IS NULL:2005/06/25(土) 12:19:30 ID:???
Perl+MySQLで2chのようなスレッドフロート型掲示板を作っています。
共用レンタル鯖で使いたいのですが、データベースのアカウントが5つで内2つ使っているので、1アカウントに抑える必要が出てきました。
そこで、1テーブルで1つの板全部のスレをおさめる形になったのですが、(板の数は5、板にはスレが約30、レスが約500と過程して)鯖負荷的には大丈夫なのでしょうか?重すぎますか?
848NAME IS NULL:2005/06/25(土) 12:26:19 ID:???
>>845
Windows上にApache+MySQL+Perlの開発環境を入れて、
晒すときはLinux/BSD、とかは良くやってた。

>>884
いやだってテーブル更新されたらWHEREで選択される結果が変わるだろ?
849NAME IS NULL:2005/06/25(土) 12:28:56 ID:5fXlIrGM
>>846

おまいさんが結局何を知りたいのか、読んでいてわけがわからなくなったぞ。

確かに、mysqlはbasedirとかdatadirで位置の指定ができる。

Windowsでの擬似シンボリックは、バイナリログ(dataディレクトリに出力される)と
テーブルデータそのもの(普通はdataディレクトリ内)を別のディスクにおいて、
IOの分散を図ったり、1つのHDD障害でこうむる被害を小さくする、
といったために使われるものだ。

権限データベースであるmysqlデータベースはMyISAMを使っているので、
適当にコピペしてOKだ。

MyISAMストレージエンジンを使っているテーブルは、勝手に切り貼りしても
壊れないだけでなく、プラットフォーム非依存だからUNIXから持ってきた
MyISAMテーブルをWindows上にコピペしても動く。

おれが知っているのはこれくらいだ。
850NAME IS NULL:2005/06/25(土) 12:37:01 ID:5fXlIrGM
>>847
>鯖負荷的には大丈夫なのでしょうか?重すぎますか?

俺に同じようなのを作った経験があればさらっと答えられそうだが、残念ながらそうではないので。

データ量は1テーブルでどれくらいになりそうなのか、主キーはint型でいけるのかvarcharにしようとしているのか。
カラムサイズはどれくらいなのか、1行はどれくらいのサイズなのか。
同時アクセス数はどれくらいを見込んでいるのか。鯖のマシンスペックはどれくらいなのか。

変数が多すぎて何とも言えない。もう少し具体的に。
851827:2005/06/25(土) 12:49:17 ID:???
>>849

> Windowsでの擬似シンボリックは、バイナリログ(dataディレクトリに出力される)と
> テーブルデータそのもの(普通はdataディレクトリ内)を別のディスクにおいて、
> IOの分散を図ったり、1つのHDD障害でこうむる被害を小さくする、
> といったために使われるものだ。

なるほど、そういう事でしたか。

ドライブを分ける理由は・・・、自分は出来るだけプログラムやアプリ本体をC:に、
My Documentsを初めデータファイル類はD:に置いているのです。
デフラグを効果的にとの目的ですが、確かに他の人から見ると意味不明ですね・・・。

MySQLはもう少し勉強してから質問するようにします!
852NAME IS NULL:2005/06/25(土) 13:05:48 ID:5fXlIrGM
>>851さんへの補足&自己レス

>>850とは言うものの、ディスクを複数用意してバイナリログだけ別にする、
とかいうよりも一回り大きいアーキテクチャのところで、

レプリケーションが簡単なのでレプリケーションをバックアップ代わりに使いましょう

というのがMySQL。

ちなみにレプリケーションでマスタからスレーブへ渡されるのはバイナリログそのものと考えて良い。

まあ気軽に質問してよ。答えられないかもだけどw

853NAME IS NULL:2005/06/25(土) 13:06:49 ID:5fXlIrGM
>>852>>850といっているのは>>849の間違い。
854847:2005/06/25(土) 16:06:59 ID:???
>>850
レスありがとうございます。
鯖はXREA広告免除(Athlon3100+、1GB Mem、PHP5.0.4&4.3.10、MySQL 4.0)、LoadAverage0.7

キーはintでAUTO INCREMENTです。
id(key)、スレ番号(int#10byte)、レス番号(int#4)、Name(varchar#50)、本文(varchar#2048)、専用番号(int#10)、host(varchar#192)
1000〜10000cols変動
最大で800アクセス/時、3000/日
今のBBSはこれで運用しています。
855NAME IS NULL:2005/06/25(土) 17:33:49 ID:???
>>848
例えばwhere句を監視してて、where id=x のクエリの結果が、
insert .... (id) values (y) or update ..... where id=y が
元々の where id=x の結果に影響を及ぼさないと思うわけなんだけどさ、
表現が違うかもしれないけど、行レベルとはそんな感じを言いたかったの
856NAME IS NULL:2005/06/25(土) 17:34:33 ID:???
やべ、日本語変だw
汲み取っておくんなまし
857NAME IS NULL:2005/06/25(土) 18:44:07 ID:5fXlIrGM
>>854さんへ

情報カキコどうも。

>1000〜10000cols変動
というのは行数のことですか?

共用マシンのようですね。とりあえず専用で使えた場合の限界スペックと予想を書きます。

今回のような場合、使用されるクエリ、テーブル構造はシンプルな部類だと思いますので、
基本性能に近いスループットが出るでしょう。

テーブルの使われ方としては、SELECTとINSERTしか基本的に発生しない、トランザクション不要で
あることからストレージエンジンはMyISAMを使うのが良いと思います。

PentiumM1.7GHzのマシンで単純なベンチマークテストを行った場合、10000クエリ/秒以上の
スループットがMyISAMの場合でています。

今回の行サイズから考えると、ベンチマークの結果の1/4くらいは悪くとも出そうです。

一方で、リクエストは800回/時間とのことですから、1回のリクエストで複数回のクエリを発行したとしても
平均すると1秒間に発行されるクエリ数は1未満。

だいたい2500倍以上の余裕がありますから、共用マシンで他のどのプロセスによる圧迫があるか
予想できないとはいえ、MySQLが現時点でボトルネックになることは無いでしょう。

ちゃんとインデックス張って下さいね。
858847:2005/06/25(土) 21:06:00 ID:???
わわ、こんなに詳しいレスが返ってくるとは思ってもみませんでした。
MySQLは非常に軽いのですね。これで行こうと思います。
MyISAMについても調べる良い機会になりました。
ありがとうございました。
859NAME IS NULL:2005/06/25(土) 22:01:56 ID:???
ハイパフォーマンスMySQLに掲示板はMyISAMと書いてありました。
それだけです、はい。
860NAME IS NULL:2005/06/25(土) 23:12:26 ID:???
偽者臭プンプン
861NAME IS NULL:2005/06/25(土) 23:49:32 ID:???
>>855
んなのいちいちチェックしてたらオーバーヘッドが大きくなって全体的な速度が落ちるっしょや。
何やりたいのかしらんが、アプリ側でのキャッシュも考えておけばいいんじゃね?
そもそもクエリキャッシュを気にする前に気にするべきことがいろいろある気がするし。

クエリキャッシュってINSERTやUPDATEが少なくてSELECTが多い、
例えばCMSで動的に生成してるページ向けのオマケ的な機能のような気がするんだけど。
862NAME IS NULL:2005/06/26(日) 00:15:13 ID:???
先ほどmysql4.1.7をインストールしてみました。
mysqladmin.exe で、ルートのパスワード設定しようとしたらノートン君が反応。
どうやらDNS探しに外に出て行こうとしてるみたいです。

とりあえず遮断しときましたけど、スパイウェアの類が紛れてたりするのでしょうか・・・
ちなみにad-awareではmysql絡みの物は反応しませんでした。
ちょっと怖いです
863NAME IS NULL:2005/06/26(日) 01:12:29 ID:???
んじゃ、DNS使わない設定にしておけば?
ホスト名で権限付けれなくなるけど、問題ないっしょ。
864NAME IS NULL:2005/06/26(日) 01:14:51 ID:???
>>862
ネットワーク越しの接続を必要とする設定になってる場合、
認証他で普通にDNSでの名前解決が必要(ということがマニュアルに書いてある)
またドメイン名でなくてIPアドレスのみで良いのなら、DNS引かせないような
設定も出来る(ということがマニュアルに書いてある)
怖い怖い言うなら、ちゃんとマニュアル読めば?
不明な得体の知らない怖さには"知る"ことが大事。
865NAME IS NULL:2005/06/26(日) 08:16:37 ID:???
>>861
更新や削除、挿入のときのみのチェックだとしたら、
それほどのオーバーヘッドはないと思うんだけどなぁー

例えば
update ..... where id=x が実行されたときには、
クエリの文字列で id=xを持つもののみを古いキャッシュとして削除
みたいな
id=yを持つものは削除せずに維持てなかんじ。

ところでアプリ側のキャッシュをするとき、
データが更新されたことを複数サーバが知るのにいい作戦ある?

サーバ側でデータベースから読み込んだ時間を保持しておいて、
データが更新された時間を持つサーバから最終更新時間を取得して
アプリ側のほうが古い場合、リロードしに行くとか?
866NAME IS NULL:2005/06/26(日) 11:54:39 ID:???
いやだってさ、まずそのwhere句にあるものがprimaryだけなのか判別しなくちゃいけないでしょ?
で、そのprimaryが更新したかどうかのためにそのprimary分のメモリも確保しなくちゃいけないわけで。
あまり効率がいい方法だとは思えないんだけど。

つか、出来ると思うんならソース書き換えればいいじゃん。
あるいは「こうすればいいんじゃね?」ってMLとかで提案するとかさ。
867NAME IS NULL:2005/06/27(月) 01:30:30 ID:d2SMieRB
>>837
>> 速度的なメリットもInnoDBとPostgreSQL8とじゃあんまかわらんし
正確にはInnoDBはMyISAMよりスループットに優れているがINSERT,DELETEは
Archive Engineが一番早い
868NAME IS NULL:2005/06/28(火) 01:21:38 ID:???
MySQLで "INSERT INTO names (name) VALUES (@name); "+ "SELECT ID = SCOPE_IDENTITY() ";
と100%等価なQueryはどのように書けば実現できるのでしょうか?
869NAME IS NULL:2005/06/28(火) 01:40:20 ID:IojFoIwU
初歩的な質問ですみません。
Windows版のMySQL4.0.23なのですが、ユーザの作成について。

--データベースとユーザを追加
mysql> CREATE DATABASE test;
mysql> GRANT ALL ON test.* TO testadmin IDENTIFIED BY 'admin';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

その後、DOSプロンプトより
mysql -u testdmin -p admin
と入力すると、
ERROR 1045: Access denied for user: 'testadmin@localhost' (Using password: YES)
というエラーメッセージがでてログインで来ません。
userテーブルをみると、それっぽいレコードはできていいるのですが・・・
何がいけないのでしょうか?
870NAME IS NULL:2005/06/28(火) 08:34:36 ID:???
>>869
GRANT ALL ON test.* TO testadmin IDENTIFIED BY 'admin'
 ↓
GRANT ALL ON test.* TO testadmin@localhost IDENTIFIED BY 'admin'
871NAME IS NULL:2005/06/28(火) 08:43:35 ID:???
>>869
GRANT ALL ON test.* TO testadmin@localhost IDENTIFIED BY 'admin';

だと思う。あと、アクセス拒否とは関係ないけど、パスワード指定
は --password=admin か、-padmin でしょ。
872NAME IS NULL:2005/06/28(火) 09:02:54 ID:???
>>868
何をやりたいのかさっぱりわかんないけど、
SELECT last_insert_id()
でなんとかなるんじゃね?
873869:2005/06/28(火) 10:52:44 ID:???
>>870, >>871さん
ありがとうございます。@localhostが抜けていました。
874NAME IS NULL:2005/06/28(火) 15:01:26 ID:???
4.1にして丸一日無駄にした!
初心者のくせにうちのサイト全部UTF-8仕様にしてやるぜ
とかいらんこと考えて即死亡。
人生の貴重な一日を無駄にしました。ありがとう4.1
875NAME IS NULL:2005/06/28(火) 15:25:21 ID:???
貴重な経験とも言えるw
876NAME IS NULL:2005/06/28(火) 16:41:39 ID:Hbs9ooet
877NAME IS NULL:2005/06/28(火) 20:08:37 ID:???
mysqlで電話帳みたいな
あ〜お
か、が〜こ、ご
・・・・
のような感じでsqlで引っ掛けることって可能ですか?
878NAME IS NULL:2005/06/28(火) 20:59:05 ID:???
>>877
文字コードが並んでる部分についてはバイナリーとみなして
範囲を指定できたと思う。
879NAME IS NULL:2005/06/28(火) 21:38:04 ID:???
同じデータベース内にある二つテーブルを結合して検索するのと
違うデータベースにある二つのテーブルを結合して検索するのと
速度の違いが結構ありですか?
880NAME IS NULL:2005/06/28(火) 23:08:14 ID:???
>>879

そのくらい、自分でテストしてくり。

結果を公表したければ、話は読もう。
881NAME IS NULL:2005/06/29(水) 01:32:25 ID:PKUDSWFf
>>879

その質問は、

use test;
select * from mysql.user;

use mysql;
select * from user;

この2つに速度の違いはあるのか?と聞いているのと同じと思われ。

違いは結構あるのか?と言われれば、はっきりいって全く違いなしといっていいくらい同じだろう。
882NAME IS NULL:2005/06/29(水) 02:09:26 ID:???
>>878
あんがと。
883NAME IS NULL:2005/07/01(金) 18:03:35 ID:IHWB0Ybs
MySQL4.1系にあわせて作ったCGI・perlを
MySQL3.23系用に作り直さないといけなくなりました。

どんな点に注意すれば良いですか?
あとサブクエリを使っているので、これを3.23系用に書き直す方法を教えてください

よろしくお願いします
884NAME IS NULL:2005/07/02(土) 02:34:04 ID:kYLJnUX/
>>883

そもそもダウングレードなんてするべきじゃない。

サブクエリに関しては、

CREATE TEMPORARY t1 ...

で代用。

あとchar(N)とかvarchar(N)の数え方が違うはず。

対応しているコネクタのバージョンもチェック。

この辺を手がかりに調べてみるべし。
885883:2005/07/02(土) 12:48:00 ID:Lpd4QfJS
>>884
そうですよねー 自分も3.23じゃない方が良いと思うんですけどね

CREATE TEMPORARY t1 ...
 ↓
INSERT INTO t1 SELECT ....
 ↓
SELECT FROM t1

こんな感じですか?


char(n)とかにも注意してみます

886NAME IS NULL:2005/07/03(日) 14:26:46 ID:WcUY5ifW
すみません、ちょっと教えてください。
いまMYSQLを使用してデータベースをいじっているのですが、
昨日までデータの修正、変更等ができていたのに、
今朝から使用不可能になってしまいました。
具体的にどのようなことかというと、昨日まで存在していたデータベースが
なくなってしまって、データの操作ができない状態です。

自分が知らないうちに消したのかと思って、もう一度CREATE文で
データベースを作成しようとしたところ、

'1044(42000):access denied for user ''@'%' to database 'mysql''

というエラーメッセージが出て作成することが出来ません。
お分かりになる方、教えていただけないでしょうか?
887NAME IS NULL:2005/07/03(日) 14:44:46 ID:???
昨日ときょうの間に何をやったのかを教えてくれないのか。。
エスパー募集は別板でやってくれ。
888NAME IS NULL:2005/07/03(日) 14:51:56 ID:???
昨日行った作業は、PHPと連携させて、データの追加をおこなった
だけで、テーブル自体の削除等はしておりません。

それで、今日コマンドプロンプトからテーブルの中身を確認しようと
したところ、テーブルが、というより、データベース自体が
なくなっていたのです。データベースをもう一回作り直そうと
すると上記のようなエラーがでてしまい、作り直しもできません。
まったく見当がつかない状態です・゚・(ノД`)・゚・。
889NAME IS NULL:2005/07/03(日) 15:31:52 ID:???
>PHPと連携させて、データの追加をおこなっただけ
詳しく
890NAME IS NULL:2005/07/03(日) 15:42:02 ID:???
現在ウェブページを作成中で、ページのテキストボックスに入力した
文字がデータベースに登録されるような簡単なものです。

mysqlに入るときに、 -u root を使って、管理者権限で入っているのですが、
>>886にあるエラーメッセージの

access denied for user ''@'%' to database 'mysql''

が関係しているのではないかと思います。
この「user ''@'%'」が示すことって、rootで入っていない
っていうことですかね?
891NAME IS NULL:2005/07/03(日) 16:03:53 ID:???
>>890
まぁ、確かにユーザ指定すれば@の前にユーザ名が入るよな。

でも、@の後ろのホスト名が%になってるけど、
普通に設定するとrootはlocalhostからしか繋がらないようになってるよな・・・
892NAME IS NULL:2005/07/03(日) 18:09:17 ID:+Ny1BKUA
>>890

rootでのログインもできなくなって中身の状態が分からなくなった場合には、

--skip-grant-tables

オプションをつけてサーバを一時的に権限チェック無しで起動。

とりあえず現状どうなっているのかをさぐれ。
893NAME IS NULL:2005/07/03(日) 18:46:47 ID:h2WJoq/G
Windows版の4.0.24のWinMySQLAdminiの最初の起動時に入力するユーザ名とパスワードって
一体何に使われるのですか?
894NAME IS NULL:2005/07/03(日) 20:58:42 ID:???
>>890
PHP経由でSQLインジェクションをくらったとか。
ひょっとしてアプリもrootで接続していたとかそういうことはないよね。
895NAME IS NULL:2005/07/03(日) 22:48:16 ID:???
>>891 >>892 >>894

アドバイスアリガトウございました。
なんとか解決したみたいです。
っていうか、こんなことが原因だったとは・・・_| ̄|○
ありがとうございました・゚・(ノД`)・゚・。
896NAME IS NULL:2005/07/04(月) 01:33:17 ID:???
>>893
WinMySQLAdmin(iはいらない)のためのデフォルトアカウントの設定。
WinMySQLAdmin以外のmysql/mysqldump等のクライアントユーティリティには関与しない。

>>895
他の人のために「こんなこと」を具体的に書いてくれ。
897NAME IS NULL:2005/07/04(月) 01:58:19 ID:???
>>893
具体的に言うとmy.iniが存在しない場合(最初の起動時という訳ではない。起動前に
my.iniを手動で書いていれば出ない)に、システムディレクトリにmy.iniに雛形を作り、
その[WinMySQLadmin]セクションに

[WinMySQLadmin]
Server=mysqlをインストールしたpath/bin/mysqld-nt.exe(mysqldは違う種類の場合あり)
user=winmysqladminuser
password=winmysqladminpass

を作る。

実際にMySQLサーバに管理権限のあるMySQLユーザとして
winmysqladminuserというユーザが存在するかしないかは別問題。
勝手にwinmysqladminuserというユーザは作らない。インストール時に
勝手に作るのはrootという管理権限のあるユーザ(パスワードはなし)。
898NAME IS NULL:2005/07/04(月) 04:08:44 ID:???
auto_incrementでカウントアップされたカウンタを戻すことって出来ます?
例えば3000ぐらいまで行ったのを200の戻したいです。。

宜しくお願いします。
899NAME IS NULL:2005/07/04(月) 15:22:04 ID:Vq1NTXNC
mysqlに
mysql> show variables > "/tmp/hoge.txt";
という感じで、ファイルに出力する方法ってありますか?
900NAME IS NULL:2005/07/04(月) 15:26:26 ID:???
>>899
mysql -uユーザー名 -pパスワード -e "show variables" > /tmp/hoge.txt
901NAME IS NULL:2005/07/04(月) 15:44:55 ID:???
>>898
AUTO_INCREMENTカラムの値が200以上のレコードが
存在しない状態にしてから、以下を実行されたし。

alter table テーブル名 auto_increment=200;
902NAME IS NULL:2005/07/04(月) 18:36:35 ID:???
>>901
ありがとうございます。

mysql> alter table test_table auto_increment=0;
Query OK, 30 rows affected (0.30 sec)
レコード数: 30 重複数: 0 Warnings: 0

ってするとリセットされました。

ただプロパティーのインクリメントカウンタはリセットされないんですね。。。
903NAME IS NULL:2005/07/04(月) 18:43:41 ID:???
画像・音声・動画のようなバイナリファイルそのものを
格納して管理している人にそのコツを伝授されたし

# やっぱりメタデータだけをDBにつっこむ方のがいいのかなぁ・・
904NAME IS NULL:2005/07/04(月) 19:14:17 ID:i+O5YFuY
  ★★★★★ニュー速VIPより支援要請です。★★★★★
    本日7月4日、下記スレを拠点に支那反日サイトへ一斉に
    田代砲を発射し、 これを破壊します。参加者はいかのスレ
    に参加してください。 野蛮なる支那人へ、日本の義憤を
    見せつけましょう! 今夜8時に作戦会議がBARギコで開かれ
    ますので、有志のみなさんは是非、お集まりください!

    なお、BARギコの会議で決まったことについては、随時
    このスレに書き込みます。


    ★拠点
   【織姫と】中国バカーVS日本ビパー【彦星が呆れてる】part105
    http://ex11.2ch.net/test/read.cgi/news4vip/1120396339/l50

★BARギコ
http://cgi36.plala.or.jp/bargiko/multithread/bargiko.cgi?roomID=1120318128674

   ★詳細情報のサイト(文字化けしているので、修正して見てください)
   http://vvipper.e-city.tv/1.htm

   ★まとめサイト
   http://vipmomizi.jog.buttobi.net/

905NAME IS NULL:2005/07/04(月) 22:14:04 ID:???
script kiddle …
906NAME IS NULL:2005/07/05(火) 11:56:33 ID:lemCV/LY
1ヶ月以内に登録したデータから新しいものを15件取り出して
その中からランダムに5件取得したいのですが、

SELECT * FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_added) <= 30 ORDER BY RAND(), date_added desc LIMIT 15

こうすると、1ヶ月以内のデータをランダムしたものしかでてきません。。

逆に
SELECT * FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_added) <= 30 ORDER BY date_added desc, RAND() LIMIT 15

こうすると、新しい物順に並び、同じ日付のものはランダムになってしまうだけのようです。

1つのクエリで上記の事はできないんでしょうか?
907NAME IS NULL:2005/07/05(火) 22:34:45 ID:veoPzi6O
>>906 一ヶ月以内,新しいもの,ランダムの3つを自己結合すればできるんじゃないかな。
908NAME IS NULL:2005/07/05(火) 22:52:45 ID:???
>>906
こんな感じでできると思う。未テスト。。。
SELECT table.* FROM table
 INNER JOIN (SELECT date_added FROM test
       WHERE TO_DAYS(NOW()) - TO_DAYS(date_added) ORDER BY date_added DESC LIMIT 15)
  AS x ON table.date_added = x.date_added
ORDER BY RAND() LIMIT 5;
909NAME IS NULL:2005/07/06(水) 03:12:01 ID:???
>>906
ザクッと取得してプログラムでやったほうが良い希ガス。
何故そこまでSQLに拘るのか良く分かりませんが。。
910NAME IS NULL:2005/07/06(水) 05:02:48 ID:qLbhtRo3
>>906

まあ無茶なSQL文1つになりそうだったら、"CREATE TEMPORARY TABLE..."構文を使って
複数回に分けた方がいいよ。
911NAME IS NULL:2005/07/06(水) 10:39:19 ID:???
言えてる・・・・・・
「一ヶ月以内」という条件で、取得行数をある程度絞り込んで取得して、
あとはプログラム的に処理した方がいい気がする。

ヘボいプログラムしか書けないならSQLの方が速いだろうけど。
912NAME IS NULL:2005/07/06(水) 10:59:38 ID:???
MySQL 4.0 系と 4.1 系って Join のしかたが違うんですか?
例えば以下の SQL 文は 4.1 でしか出来ないんですけれども…

SELECT * FROM `labels` as B
join (
  SELECT * FROM `users` WHERE `uid` = '10'
) as A
on (
  A.users_label_id = B.label_id
);

こういう JOIN って 4.0 ではどうすればいいんですかね?
テーブル設計やり直し、は避けたいです。
913912:2005/07/06(水) 11:19:17 ID:???
解決しました。
SELECT A.*, B.*
FROM `users` as A, `labels` as B
WHERE A.uid = 10
AND A.users_label_id = B.label_id

ですね。
914NAME IS NULL:2005/07/06(水) 12:17:26 ID:2Z06LCQ5
接続するときに

$ ./mysql -u root -ppassword

ってするけど、このとき
-uの後ろとかにはスペースありでもなしでもいいのに
-pの後ろだけはスペース入れちゃいけない、
っていう仕様はなんか理由があるのかい?

なんかいつも気持ち悪い。
915NAME IS NULL:2005/07/06(水) 12:57:38 ID:b01Oo33D
表示する際に枠線を消す方法ってありませんか?
\Gではなくて、

これを
mysql> show status;
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| Aborted_clients | 0 |
| Aborted_connects | 0 |

こんな感じにしたいです。
mysql> show status;
Variable_name Value
Aborted_clients 0
Aborted_connects 0

宜しくお願いします。
916NAME IS NULL:2005/07/06(水) 15:09:52 ID:BdQEHxsk
>>914
ヒント:Usage: mysql [OPTIONS] [database]
917NAME IS NULL:2005/07/06(水) 19:50:35 ID:???
>>915

マニュアルくらい嫁。

4.9.2. mysql(コマンドラインツール)

mysql は、以下のオプションをサポートします。
-B, --batch

結果をタブで区切り、各レコードが 1 行になるように出力する。ヒストリファイルでは使用しないこと。

918NAME IS NULL:2005/07/06(水) 23:03:57 ID:???
AUTO_INCREMENTを指定したカラムを0からカウント始めるって事は可能ですか?
必ず1からスタートしてますが、そこを0からのスタートにしたいです。

宜しくお願いします。
919NAME IS NULL:2005/07/06(水) 23:28:04 ID:???
>>918

できません。どうしても必要なら SELECT した値から -1 してください。
920NAME IS NULL:2005/07/07(木) 02:39:26 ID:???
>>919
了解!
ありがとうございます。
921NAME IS NULL:2005/07/07(木) 14:57:03 ID:???
すみません、
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_38 の記述を今
になって知ったのですが、この、default-character-setって途中で変更しても
問題無いでしょうか?使用しているバージョンは
mysql-standard-4.0.21-sun-solaris2.9-sparc です。
922NAME IS NULL:2005/07/07(木) 21:17:58 ID:???
>>921

既定値(default)が変わるだけなので、
変更後に作成するデータベースのキャラセットが変わる。

変更しただけでは問題ないが、
以前のデータベースはEUCでした。
ある時から、作成したデータベースはUTF-8です。
では、どこかで問題が生じるので、
よく考えてから、設定するべし。
923NAME IS NULL:2005/07/07(木) 21:19:28 ID:???
>>921
書くセクションによって意味が違ってくるわけだが...
まあMySQL4.0.xなら、サーバやクライアントがエンコードの変換を
行う訳ではないので、途中で変えてデータが変な風になることはないよ。
924NAME IS NULL:2005/07/08(金) 01:54:04 ID:???
自前でsocketを開いてMySQLdと直接お話ししてみたいのですが、
どんな風に会話をすすめていけばよいでしょうか?
そこらへんのプロトコルもドキュメント化されていたりするんでしょうか?
それともソース嫁ということになるんでしょうか?
925NAME IS NULL:2005/07/08(金) 02:39:37 ID:56uVMvCR
>>924
February 2005 (MySQL 4.1.9)の時点の資料
http://www.redferni.uklinux.net/mysql/MySQL-Protocol.html

ver4.0までとver4.1からとでユーザ認証のプロトコルが違うので、この資料はver4.1以上が対象と見るのがよいかも。
926NAME IS NULL:2005/07/08(金) 07:31:16 ID:???
最近問題のSQLインジェクション対策

http://www.pahoo.org/e-soul/privacy/atwork/atwork-012-01.shtm
927NAME IS NULL:2005/07/08(金) 12:13:53 ID:???
>>924
公式のクライアントライブラリも勿論参考にしたけど、libmysqlcを使わない
PurePerlで実装されたNet::MySQLつうモジュールがあって、そのソースは大いに
参考にさせて貰った。Perlが余り読めなくても、読んでみる価値があるよ。
928NAME IS NULL:2005/07/08(金) 13:41:02 ID:xH8O0jAT
すいません、質問してもよろしいでしょうか?
jdbcをつかってMySQLにアクセスしています。j-connectorは正常に機能して
いて、データベースへの接続はうまくいくのですが、select文を実行すると
java.sql.SQLException: Illegal operation on empty result set.
at com.mysql.jdbc.ResultSet.checkRowPos(ResultSet.java:659)
at com.mysql.jdbc.ResultSet.getNativeInt(ResultSet.java:3636)
at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:2338)
at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:2353)
at test.<init>(test.java:121)
at test.main(test.java:496)
というエラーが発生してしまいます。
どなたか解決方法ご教授願えないでしょうか?
929U ◆CZtFsGiu0c :2005/07/08(金) 14:16:33 ID:???
>>928
nextを実行せずにgetIntしたとか?
どちらにしてもコードがないとわからないよ。
930NAME IS NULL:2005/07/08(金) 14:17:09 ID:Ea/nAz46
>>928
ヒント:java.sql.SQLException: Illegal operation on empty result set.
                              ~~~~~~~~~~~~~~~~~~~~
                                    ↑
                                  ここに注目!

931NAME IS NULL:2005/07/08(金) 16:08:12 ID:???
どういうコード書いたかさらさないでさすがに答えれないなぁ・・・
932930:2005/07/08(金) 16:55:41 ID:Ea/nAz46
>>929>>931
いや単にSELECTの結果が0件なのにgetIntしちゃっているとか、
要するにnext()をちゃんと使えていないだけの話な希ガス

わざとそういうコード書いて走らせると同じエラーメッセージ、同じスタックトレースでるし。
933929:2005/07/08(金) 17:10:29 ID:BrFVObAD
next()を呼ぶより前のexecuteQuery()でエラーがでていることまでは
突き止めたのですよ。

rs = statement.executeQuery();

どうも上のステートメントでエラーが起こっているみたい。

rs.next();

そして、これは実行されていないみたい。
934NAME IS NULL:2005/07/08(金) 18:02:58 ID:???
>>933
だから>>931の言うようにさらせよ。クエリ含めてな。
憶測言っててもしょうがないだろ?
935NAME IS NULL:2005/07/08(金) 18:33:45 ID:???
そういやMySQL自体のバージョンもさらしてないし
ドライバも何を使ってるかさらしてないな
コネクターJだけでもいくつかあるし
936929:2005/07/08(金) 18:50:02 ID:kPMHhPk+
MySQLのバージョンは4.1です。
ソースはかなり長いので一部抜粋。
ちなみにこのプログラム、別の環境では動作確認済みです。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.*;
import java.sql.*;
import java.util.*;

Class.forName("org.gjt.mm.mysql.Driver");
String url = "jdbc:mysql://localhost/RFID?useUnicode=true&characterEncoding=sjis";
String user = "hogehoge";
String pass = "hogehogehoge";
Connection con = DriverManager.getConnection(url,user,pass);
String get_test = "SELECT TEST FROM TEST_TABLE";
PreparedStatement statement = con.prepareStatement(get_test);
ResultSet rs = statement.executeQuery();
937929:2005/07/08(金) 18:53:37 ID:kPMHhPk+
要点だけ晒すと、>>936みたいになります。
ここまででエラーが出てることがブレークポイントを使ってわかっています。
j-connectorのバージョンは今、ちょっとマシンが手元になくて申し訳ないで
すが調べられません。
938NAME IS NULL:2005/07/08(金) 19:09:04 ID:???
まず汎用SJISになってるけどこれはWindows-31Jではないかな

PreparedStatementを使ってパラメータがないというあたりが疑問だけれども
ここなんか省いてるとかはない?

ドライバは古いタイプのほうを使っているね
でも、エラーメッセージは新しいほうになってるな

つーかあなたは本当に929なの?
939929:2005/07/08(金) 21:11:43 ID:rdoWizAO
>>938
今投稿しているのは自宅なのでIDが変わってしまったみたいですが929です。
このあとにもこのPreparedStatement使いまわしているので、パラメータは
たまたまとっていません。

他の設定のマシンではこのプログラムは動いたので、憶測ですがMySQLの設定
がおかしいのではないかと思います。
以下はmy.iniの内容です。
940929:2005/07/08(金) 21:13:19 ID:rdoWizAO
[mysqld]
default-character-set=sjis
default-table-type=InnoDB
basedir=C:/mysql

#bind-address=192.168.0.4
datadir=C:/mysql/data
#language=C:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
port=3306
#set-variable=key_buffer=16M
[WinMySQLadmin]
Server=C:/mysql/bin/mysqld-nt.exe
user=root
password=hogehoge
941NAME IS NULL:2005/07/09(土) 00:53:07 ID:wvc0k73q
さっきから929と名乗っている方はたぶん928さんなんじゃないかと・・・・

929の人は928へ回答を試みようとしたコテハンの人だし。
942NAME IS NULL:2005/07/09(土) 01:01:36 ID:wvc0k73q
>>938
文字コードの話は本件とは関係ないよ。

でもMySQL4.1.12以上ならConnector/J3.1.9以上と組み合わせて
WINDOWS-31Jを使った方が幸せになれるのは確か。

>>928>>933>>936>>936>>937>>940

なんでPreparedStatement.executeQueryでエラーが発生しているとか思ったん?

>>928のスタックトレースにはgetIntの呼び出しでエラーが発生していると示されているよ。

なんかもうぐちゃぐちゃになってない? 

まずは落ち着いて整理して情報をだしてくれ〜。

943929もとい928:2005/07/09(土) 01:45:21 ID:oAtPXrFY
>>942
お騒がせして申し訳ないです。
解決しました。
どうやら自分のあほなミスのせいでした。
理由はただ単に、カラのテーブルにselectをかけてそこにgetIntをかけて
いたようです。
といか、もろにerror文に書いてありますね。
返信くれた方々申し訳ない
首つってきます。orz
944NAME IS NULL:2005/07/09(土) 02:18:16 ID:Q7BBoWAa
>>943
ともあれ解決できてなにより。
一度首つってたらまた帰っておいでね〜。ノシ
945929& ◆Ut.f.i5r3w :2005/07/09(土) 18:44:46 ID:B2iYrnUL
>>944
サンクス
・゚・(ノД`)
946NAME IS NULL:2005/07/11(月) 15:32:58 ID:???
>>928
>>930がすぐに答えてくれていたみたいだね。
まあ俺もそういうことがあったが、パニックの時はしかたないかもな。
ドンマイ。
947924:2005/07/11(月) 16:39:28 ID:???
>>925
遅くなりましたが、ありがとうございました。目的を果たせました。
あとPerlのNet::Mysqlあたりがすごく参考になりました。
948NAME IS NULL:2005/07/11(月) 21:02:59 ID:???

>>731

MySQLで差分パックアップができるんですか?
今までmysqldumpで全部ダンプしてました。

949NAME IS NULL:2005/07/11(月) 22:17:02 ID:???
binlog使えよ。
950NAME IS NULL:2005/07/12(火) 01:34:32 ID:6P02ZkBP
>>948

mysqldumpはデータそのもののフルバックアップを行いときに使う。
バイナリログ(--binlog)は常時行う差分バックアップとして使う。

大規模ならレプリケーションもバックアップの手段の1つとして使うと良いよ。
951NAME IS NULL:2005/07/12(火) 22:19:15 ID:???
>>950
レプリケーションって、バックアップという観点では、
ハードトラブルのための冗長化でないの?
バグとかのソフト系の障害では全滅と思うけど。
952NAME IS NULL:2005/07/13(水) 01:16:23 ID:aWcHVZvA
>>951
MasterでInnoDBなテーブルをSlaveではMyISAMで保持したりとか、
レプリケーションのバックアップとしての利用は奥が深い。

ストレージエンジン固有の -例えばInnoDBHotBackupとか- バックアップツールというのも
あるわけだが、MySQLは全ての更新情報をbinlogとしてログを残すことができるというのが
大きな特徴でもある。

いわゆる「フルバックアップ+差分バックアップ」の考え方でいくと、単にbinlogを保存するだけだと
フルバックアップに相当するものがないけど、レプリケーションを使えば補える。

レプリケーションも、常時レプリケーションをさせるだけでなく、定期的にレプリケーションを
稼動させることで、「binlogという差分をフルバックアップに当てる」というようなやり方もできる。

MasterでInnoDBだったテーブルをSlaveでMyISAMにすることで、さらにそこから
バックアップを取ったりするのも容易になる。

↑ちょっとあまりまとまってないけれども、米国Yahoo!comとかのMySQLユーザ大手企業では
レプリケーションを中心に据えたバックアップ運用をしてるとか聞いた。

953NAME IS NULL:2005/07/13(水) 08:05:30 ID:lDu7Hvfy
>>951
レプリケーションの最大の弱点は、Masterに対するDBAのオペレーティングミス。
間違えてTableをDropしちゃったりすると、もちろんそれがSlaveにも反映されてしまう。

そ、そ、そんなばかなー!!
954NAME IS NULL:2005/07/13(水) 15:33:11 ID:???
( ゚д゚)?
955NAME IS NULL:2005/07/13(水) 20:57:04 ID:???
>>952-953
俺も>>953のを想像したんだが、>>952の言う
間欠的にレプリケーションをさせるというのは、
俺的には新しい観点で、Masterの運用に影響もなく、
いいのかもしれないね。
956NAME IS NULL:2005/07/13(水) 23:58:26 ID:B1MsBXgZ
RedHatLinux 9.0 にMySql5.0.7 beta を入れたいのですが、どれをダウンロードすればよいのでしょうか。
957NAME IS NULL:2005/07/14(木) 02:44:15 ID:j1+loLdd
>>956
お前さんが使っているマシン(CPUアーキテクチャ)などによるのでそれだけじゃ何とも言えないね。

でもまあ、普通の32bit CPUにRedhat9.0入れているだけで、特に深い意味はない質問です、
というのなら、これなんてどうでしょう。

Linux (x86, glibc-2.2, static, gcc)

漏れ的にはRPM版よりもtar.gz版がお勧め。展開して/usr/loca/mysqlからシンボリックリンクを張れ。

958957:2005/07/14(木) 05:38:43 ID:j1+loLdd
>>957
× /usr/loca/mysql
○ /usr/local/mysql

orz...
959NAME IS NULL:2005/07/14(木) 06:12:13 ID:???
>>957
アップグレードはどうやるの?
960957:2005/07/14(木) 10:31:59 ID:j1+loLdd
>>959
/usr/local/mysql-x-xx-xxxx
/usr/local/mysql-y-yy-yyyy
/usr/local/mysql-z-zz-zzzz

という風にバージョンごとに実体は置いておく。

今現在使いたいMySQLに対して /usr/local/mysql -> /usr/local/mysql-x-xx-xxxx という風にシンボリックリンクを張り、
基本的にはこのシンボリックリンクの切り替えだけで、どんなバージョン、あるいはどんなMySQLのセットも1発で切り替え。

PATHは/usr/local/mysql/binに通しておく。

my.cnfは/usr/local/mysql-x-xx-xxxx/dataそれぞれに書いておく。

/usr/local/mysql/data/my.cnfを読んでくれるバイナリならそれだけでOK。

/etc/my.cnfじゃないと駄目なバイナリ対策として、さらに /etc/my.cnf -> /usr/local/mysql/data/my.cnf へシンボリックリンク。

このやり方にしてから、まあ検証環境がメインだけどしょっちゅう稼動バージョン変更だとかそういうのも一発でできてるお。

この手のノウハウについては英語圏ではいろいろ本とか記事?とかでてるみたいよ。
961NAME IS NULL:2005/07/14(木) 10:57:32 ID:???
>>960
で、データーベースの移行はどうやるの?
962956:2005/07/14(木) 12:34:34 ID:???
>>957
どうもでありがとうです。 
どこ見ても説明がみつからんもんで・・・。

CPUすんません。おっしゃるとおりで、Celeronです。
963NAME IS NULL:2005/07/14(木) 13:54:35 ID:???
SQLの書き方で困っています

TBL1
+----+----+----+
|FLD1|FLD2|FLD3|
+----+----+----+
|1001|1AAA|1BBB|
|1002|2AAA|2BBB|
|1003|3AAA|3BBB|

TBL2
+----+----+----+
|FLD4|FLD5|FLD1|
+----+----+----+
|2001|1CCC|1001|
|2002|2CCC|1002|
|2003|3CCC|1002|
|2004|2CCC|1003|
|2005|3CCC|1003|

TBL2.FLD5 の 2CCC で検索した時に

Result
+----+----+----+----+----+
|FLD4|FLD5|FLD1|FLD2|FLD3|
+----+----+----+----+----+
|2002|2CCC|1002|2AAA|2BBB|
|2003|3CCC|1002|2AAA|2BBB|
|2004|2CCC|1003|3AAA|3BBB|
|2005|3CCC|1003|3AAA|3BBB|

のような感じでレコードを抽出したいんです

SELECT * FROM TBL1,TBL2
WHERE (TBL1.FLD1 = TBL2.FLD1)
AND
(TBL1.FLD1 = (SELECT FLD1 FROM TBL2 WHERE FLD5 LIKE "2CCC"))

と書いてみたんですが駄目でした
SQLをどのように書けばいいのでしょうか?

さくらのレンタルサーバー使用でMySQLのバージョンは4.0.20です
964NAME IS NULL:2005/07/14(木) 14:30:31 ID:???
>>963
MySQL4.0.x系はサブクエリが使えないからツライね。
手元に4.0.x系がないので動くかどうか判らないけど、こんなもんでどうだろうか。

SELECT DISTINCT
tbl2.fld4, tbl2.fld5, tbl2.fld1, tbl1.fld2, tbl1.fld3
FROM tbl2
LEFT OUTER JOIN tbl1 ON tbl2.fld1 = tbl1.fld1
LEFT OUTER JOIN tbl2 AS t ON tbl2.fld1 = t.fld1
WHERE tbl2.fld5 = '2CCC' OR t.fld5 = '2CCC'
965802:2005/07/14(木) 16:08:19 ID:bLVhDXNB
初歩で申し訳ないですが...
not null を指定してても、insertなどでそのカラムを指定し忘れた場合でもエラーが出ません。

create table test(
 i int not null,
 c char(1) not null,
 v varchar(10)
);

insert into test(v) value("a"); # エラーは出ない。

こういった場合にはエラーが出るようにテーブルを作るにはどのようにしたら良いのでしょうか?
966NAME IS NULL:2005/07/14(木) 16:29:43 ID:???
>>965
え〜と思って調べてみたらその動作は正しいみたいだね。知らんかった。。。
MySQLのビルド時に指定しておかないとダメっぽいね。
この辺りを参照してみてくだされ。
http://dev.mysql.com/doc/mysql/ja/constraint-not-null.html

MySQL5.0.2以降はmysqldの起動パラメータで設定できるみたいだけど、
現状ではアプリケーション側で対処するしかないみたいだね。
967NAME IS NULL:2005/07/14(木) 19:40:08 ID:???
>>963
これってつまり何をやってるん?
968965:2005/07/14(木) 20:01:22 ID:bLVhDXNB
>>966
有難う御座います。そうなんですね...。
アプリ側で考えます。
969963:2005/07/14(木) 20:06:38 ID:???
>>964さん

ありがとうございます
JOINを使って結合していくんですね
うまく抽出が出来ました

>>967さん
人事関係のデータベースで個人情報の部分のテーブルと取得資格のテーブルが分かれていて
○○の資格を持っている人の一覧だけなら取得資格のテーブルとの結合だけで良いんですが
○○の資格を持っている人は他にどんな資格を持っているかも表示を行いたかったんです

資格○○を持っている人の情報
<NAME>□□□</NAME><SKIL1>○○</SKIL1><SKIL2>▽▽</SKIL2>
<NAME>▲▲</NAME><SKIL1>○○</SKIL1>

こんな感じです(^-^;
970NAME IS NULL:2005/07/14(木) 20:19:28 ID:???
>>969
どーでもよい話だが人事関係のDBをさくらのレンサバに預けるのも
ある意味凄いな。怖くないか?
971NAME IS NULL:2005/07/14(木) 22:52:11 ID:???
>>961
本番データは、MySQL本体とは別の共通ディレクトリに
置けばいいじゃん。
972NAME IS NULL:2005/07/15(金) 02:06:21 ID:0pzFxJt7
>>961
データとサーバのバージョンは分けて考える。>>971のいうように共通ディレクトリがいいのかも。

4.0系から4.1系にあげるときのようにファイルフォーマットが代わる場合には新しいディレクトリが必要。
(確か変わるよね?)
973NAME IS NULL:2005/07/15(金) 09:19:06 ID:???
んー、4.0から4.1にするんなら同じデータ使えるよ。
逆だとあんまり良くないけど。
974NAME IS NULL:2005/07/15(金) 12:02:10 ID:???
4.0と4.1ってめちゃくちゃかわってるとおもわれ
975NAME IS NULL:2005/07/15(金) 21:27:08 ID:y8eO46wK
csvのデータをDBに保存するのですが、どうせなら利用しやすくしようと思って、
カラムごとに作ってみたのですが、

create table csv(
 _1 varchar(255),
 _2 varchar(255),
 _3 varchar(255),
 ・・・
);

と、どんどん増やして sql を発行したら以下のように怒られてしまいました。

ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs

まあ、そりゃそうだなという感じなのですが、csvを保存するのに何か良い案は無いでしょうか?
(mysql 4.1.11)
976NAME IS NULL:2005/07/15(金) 22:04:56 ID:???
誤り1118(42000): 大き過ぎる状態でサイズをこいでください。 BLOBsを数えないで、
中古のテーブルタイプに、最大の列のサイズは65535です。 あなたはいくつかのコラムを
TEXTかBLOBsに変えなければなりません。
977NAME IS NULL:2005/07/15(金) 22:31:21 ID:???
コラム吹いた
978NAME IS NULL:2005/07/15(金) 22:42:50 ID:???
>>974
ん? 現に使ってますが。
ISAM形式の奴が残ってて、それだけは駄目だったけど。
(コンパイルオプションに入れなかったから)

ま、いまさらISAMなテーブルが残ってるほうが問題ですが。

979NAME IS NULL:2005/07/15(金) 22:52:40 ID:???
>>977
野暮なツッコミで申し訳ないがcolumnをコラムと読もうがカラムと読もうがどっちでもいい。
DB界隈ではカラムと読む方が一般的だけど。
980NAME IS NULL:2005/07/15(金) 23:13:58 ID:???
4.1って強制UTF8のせいで
マルチバイトキャラクタがテーブル名や列名にはいると互換性なくなってなかったか?
981NAME IS NULL:2005/07/15(金) 23:21:23 ID:???
>>979
読む場合はどっちでもいいけど、書くときはコラムだと嫌だな
982NAME IS NULL:2005/07/16(土) 01:09:44 ID:???
そろそろ次スレの季節ですね

■関連スレは
http://find.2ch.net/index.php?BBS=ALL&TYPE=TITLE&STR=MySQL&COUNT=50

で手抜きしていいんでないの
983NAME IS NULL:2005/07/16(土) 03:21:45 ID:???
phpmyadminにある「次の行を編集する」みたいに、
自動的に次のレコードを表示させる・・・ような関数って無い?
984NAME IS NULL:2005/07/16(土) 09:39:37 ID:???
テーブル名や列名をascii以外にはしない。
コーディングするとき面倒くさいから。
985NAME IS NULL:2005/07/16(土) 14:23:36 ID:???
毎日 row がある程度増えて行くんですが、unique 性があればいいのは一定時間だけなんです。
こう言う場合は primal key ってどうすればいいんでしょうか?
Oracle 使いに聞いたら、循環する int を使えと言われたんですが、
MySQL にそんなのありますか??
986NAME IS NULL:2005/07/16(土) 16:18:24 ID:GKvS+qiJ
>>985
auto_incrementを使う
987985:2005/07/16(土) 16:30:00 ID:???
>>986
ネタ?
ちなみに mysql では 各column の値が定義領域を超えると、
最大値に丸められます。
988NAME IS NULL:2005/07/16(土) 18:00:31 ID:???
なにこいつ
989NAME IS NULL:2005/07/16(土) 23:19:48 ID:NbSXfESe
MySQL4.1で、文字コードを「ujis_japanese_ci」にして、PHPからEUC-JPの文字列を
登録したら、データが壊れて登録してしまいます。

どのようにデータを登録すればいいのでしょうか?
990NAME IS NULL:2005/07/16(土) 23:23:47 ID:???
>>989
どのようなデータを登録すると、どのように壊れたデータが
登録されたのかを書きなはれ。世の中エスパーばかりでは
ないんで。
991NAME IS NULL:2005/07/16(土) 23:31:06 ID:???
985がネタだろ
992NAME IS NULL:2005/07/16(土) 23:32:32 ID:???
つか>>987がネタ。
嘘つくな。
993NAME IS NULL:2005/07/16(土) 23:33:07 ID:???
んー、
CREATE TABLE example (
date date not null,
uid int unsigned not null auto_increment,
unique (date, uid)
)

とかは?
994989:2005/07/16(土) 23:35:02 ID:???
失礼。

文字列(文字コードEUC-JP)
「東京都|大阪府|愛知県」

SELECTで表示させたデータ(文字コードEUC-JP)
「東??」

ブラウザで見ると、?と黒い菱形の中に?があるものが所々ある。
単純に文字コードがEUCではなくて、UTFとかで入っているのかと
思ったけど、そうではないみたい(色んな文字コードに変換してみたけど駄目だった)
995NAME IS NULL:2005/07/17(日) 01:25:40 ID:???
Update で join って出来る?
996990:2005/07/17(日) 06:08:59 ID:???
>>994
MySQLサーバーとクライアント間の文字コードが合っていないと
思われ。
PHPでMySQLに接続後、SET NAMES UJISを送る処理を追加すれば
直ると思うよ。
997NAME IS NULL:2005/07/17(日) 09:46:26 ID:???
998NAME IS NULL:2005/07/17(日) 12:34:49 ID:???
998
999NAME IS NULL:2005/07/17(日) 12:42:18 ID:k8NW5frL
999
1000NAME IS NULL:2005/07/17(日) 12:42:55 ID:???
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。