5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

MySQL 総合 Part4

1 :NAME IS NULL:05/02/11 21:24:15 ID:???
快速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/

2 :NAME IS NULL:05/02/11 21:25:15 ID:???
■ MySQL支援ソフト
phpMyAdmin http://www.phpmyadmin.net/
MySQLCC http://www.mysql.com/products/mysqlcc/
GMysqlCC http://gmysqlcc.thepozer.net/
MySQL Designer http://www.alhem.net/dbdesigner/

■ MySQL書籍リスト
http://www.mysql.com/portal/books/
http://www.mysql.gr.jp/books.html

■ MySQL解説記事
快速MySQLでデータベースアプリ!
http://www.atmarkit.co.jp/flinux/index/indexfiles/mysqlindex.html

■ 関連スレ
mysql ヘルプ! http://pc2.2ch.net/test/read.cgi/php/1011683282/
MySQL vs PostgreSQL http://pc5.2ch.net/test/read.cgi/db/1056943680/

3 :NAME 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 の正規表現

4 :NAME IS NULL:05/02/11 22:03:18 ID:???
テンプレ以上

5 :NAME IS NULL:05/02/11 22:18:19 ID:???
ttp://www.mysqlfront.de/

6 :NAME IS NULL:05/02/11 22:23:30 ID:???
>>2s/pc2/pc5/


7 :NAME IS NULL:05/02/12 02:53:24 ID:pNOCDTMn
誰か MySQL++ と MySQL(4.0|4.1|5.0) の定量的に性能比較した人いませんか・・・(´・ω・`)
ttp://tangentsoft.net/mysql++/

8 :NAME IS NULL:05/02/12 03:29:44 ID:???
前スレかわいいのが1000とったな

9 :NAME IS NULL:05/02/12 16:09:29 ID:???
>>7
++ですか。
使ってる人ってどれくらいいるんだろ?

10 :NAME IS NULL:05/02/12 18:10:17 ID:???
maxっとmaxじゃないやつってなにが違うんでしょうか?

11 :NAME IS NULL:05/02/12 18:26:47 ID:???
>>9

C++ のドライバだろ。


12 :NAME IS NULL:05/02/12 18:40:52 ID:???
>>10
MAXは地域限定。MAXは糖度が高い。

もちっと、どのMAXか限定してよ。

13 :NAME IS NULL:05/02/12 18:47:58 ID:???
>>11
いや分かっているわけだが。

14 :NAME 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)
(^^;

15 :NAME IS NULL:05/02/13 11:30:27 ID:???
>14
mkdir bin-log
でフォルダを作ったからでは?
フォルダ=DB という仕様です。

16 :NAME IS NULL:05/02/13 21:36:16 ID:???
バイナリファイルをMYDに格納するとそれ自体で圧縮されますか?
それとも事前に圧縮して格納した方がいいんですか?
あとmyisampack-myisamchkの圧縮率は一般的に効果的ですか?

17 :NAME IS NULL:05/02/14 00:09:00 ID:BtBlqqvx
>>16
圧縮はされない、効率的にレイアウトされる程度
(ファイルシステム/テーブルタイプによるが)
必要ならIn/OutにGZIP等を噛ます。

18 :NAME IS NULL:05/02/14 01:33:29 ID:???
Bツリーインデックスなデータベースだから
ファイルシステムもBツリーなReiserFS4を採用。

19 :NAME IS NULL:05/02/14 09:53:25 ID:???
mysqlccってかなり使えるね!

20 :NAME 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です。

21 :NAME 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との違い」というのは合ってます。

22 :20:05/02/14 12:52:53 ID:???
>>21
なるほど!丁寧な解説ありがとうございます。
じゃあ、4.0.22の場合だと、maxを使用することで、BerkeleyDBが使用できるようになるということですか。

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

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

こんなもんでしょうか?


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


24 :20:05/02/14 15:19:32 ID:???
>>23
解説、ありがとうございます。
MyISAMは、InnoDBと比べて高速という利点があるわけですが、
InnoDBではなく、BDBを使う機会はあまりないんでしょうかね。

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

25 :NAME 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とどー違うん?

何がどー違うんでしょ・・・(´・ω・`)?


26 :NAME 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;

27 :NAME IS NULL:05/02/14 19:09:00 ID:???
PHP+MySQLだと行末のセミコロンはダメじゃなかったかな
PostgreSQLならOKだったはず

28 :NAME IS NULL@25:05/02/14 19:59:32 ID:???
どうもです。
とりあえず、" "(半角空白)を入れておけば間違い無さそうですね。
どこかのページで「常識」なんて書かれてあったので、驚いていました!
(聞いてねぇよ〜状態!)

お手数をお掛けしました。ありがとうございました。 m(_ _)m


29 :NAME IS NULL:05/02/14 20:25:01 ID:???
PHP+MySQLでも行末セミコロン通るぞ。

だからといって、
・PHPの行末セミコロン
・シェルスクリプトの行末セミコロン
・C言語の行末セミコロン
・SQLの行末セミコロン
が全て共通の規約だと思っている時点でオワッテルと思うが。


30 :NAME IS NULL:05/02/14 20:45:29 ID:???
MySQLが実装する";"を解釈するパーサジェネレータのソースコードを見れば即解消だな

31 :NAME IS NULL:05/02/14 20:49:53 ID:???
MySQLが動作しない環境ってありますか?

32 :NAME IS NULL:05/02/14 21:09:59 ID:???
>>31
SEE MySQL Reference Manual 2.2.6 and 2.6

33 :NAME IS NULL:05/02/14 21:14:42 ID:???
>>31
ある。少なくてもウチのポケコンでは動かない。

34 :NAME IS NULL:05/02/14 21:16:09 ID:???
>>29
そういうことじゃなくて、複数行クエリには対応して
いないんじゃない?ってことを言いたいのだと思う。

35 :NAME 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サイトがあれば教えてください。
(公式はなんだかごちゃごちゃして分かりづらいです)


36 :NAME IS NULL:05/02/14 23:30:19 ID:???
phpMyAdminでググれば君の疑問は解消されるであろう

37 :NAME IS NULL:05/02/14 23:38:54 ID:???
>>35
>どなたか、ご存知の方既存のテーブルにレコードを追加する方法を
データベース選択して、テーブル選択すると
一番上に「追加」ってリンクメニューが出てくるでしょ

>それと phpMyAdmin 2.6.1の解説書やWebサイトがあれば教えてください。
ない。いじり回して体で覚えなさい。
phpMyAdminはバージョンアップの頻度が高いから、解説書いてもすぐに古くなってしまう。

38 :NAME IS NULL:05/02/15 00:17:06 ID:s+Y66ik4
phpMyAdminの特権につきましてお願いいたします。
ローカルサーバーにphpMyAdmin-2.5.7-pl1をインストールして
テストしていたところ「特権無し」と表示されデーターベースの
新規作成ができなくなってしまいました。
apache、phpMyAdminとも再インストールしましたがダメでした。
どこを再設定すればよいのでしょうか。
環境はwin2000 service Pack4です。
よろしくお願いいたします。




39 :NAME IS NULL:05/02/15 00:49:54 ID:???
>>38
phpMyAdminのconfig.inc.phpファイルを開いて
$cfg['Servers'][$i]['user']に「root」
$cfg['Servers'][$i]['password']にrootのパスワード
を指定しなさい

40 :NAME IS NULL:05/02/15 01:21:36 ID:???
>>37
>phpMyAdminはバージョンアップの頻度が高いから、
>解説書いてもすぐに古くなってしまう。

だよね。俺も初心者向けに(自分じゃ使ってもいないのに、仕方なしに)
スクリーンショット貼り貼りの資料作ったんだけど、あっという間に陳腐化した。

41 :NAME IS NULL:05/02/15 01:49:37 ID:???
note that DO 'chmod 400 config.inc.php'.

42 :NAME IS NULL:05/02/15 02:24:09 ID:???
>>41
>環境はwin2000 service Pack4です。

43 :NAME 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
アドバイスよろしくお願いいいたします。

44 :NAME IS NULL:05/02/15 03:42:43 ID:qoH68y+6
基本的なことで悪いが
まぁ初心者でレン鯖使ってる奴はくれぐれも生パス情報書いてある
設定ファイルのパーミッションを間違いないようにしろよ。

特に問題ないならconfは600ぐらいにしとくべし。

45 :NAME IS NULL:05/02/15 04:25:22 ID:???
>>43
> MySQL 4(細かいverは?です。どこで確認できるのでしょうか)
% mysql --version

46 :NAME IS NULL:05/02/15 07:34:27 ID:???
cygwin 版って無いのか……
ググって集めた情報で make してみたが、どうにも作れなかった orz

47 :NAME IS NULL:05/02/15 20:24:48 ID:???
>>43
間違いなくrootのアカウントを指定したんですよね?
rootなら自分の権限を自分自身で変えられるはずだけど…

phpMyAdminの初期画面に「特権」てあるでしょ?
そこ見てrootの権限書き換えてみたら?

48 :NAME IS NULL:05/02/15 23:33:46 ID:???
4.1.10

49 :NAME IS NULL:05/02/16 01:43:21 ID:???
4.0最高!
4.1はバカ!

50 :NAME IS NULL:05/02/16 05:42:15 ID:???
>>49
まぁ、同意

51 :NAME IS NULL:05/02/16 09:07:48 ID:wZt+xKmc
php4.2.2
mysql4.0.23
phpMyAdmin2.6.1で
「扱えない拡張子のファイルです 」
と出てきてしまいます。
phpmyadminをおいてあるディレクトリでphpinfoとかは表示させられるので
原因がよくわかりません。よろしくお願いします。



52 :NAME 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の簡素化/低価格化の方だって...

53 :NAME IS NULL:05/02/16 11:21:23 ID:???
法人向けにGPL用意したってのはねぇ・・・

54 :NAME 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?


55 :NAME IS NULL:05/02/16 12:53:32 ID:???
一応社内のみのシステムならOKだけれども、GPLのソフトが社外に
持ち出されるのを止めれるのかどうかとか問題は多い希ガス

56 :54:05/02/16 13:20:45 ID:???
>>55
>一応社内のみのシステムならOKだけれども、
それは、
>>例えば、これが自社内システムならGPLでOK?
こっちのことに対するOKですか?

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

もちろん、仮想のケースを書いているだけなので、
あなたに「ライセンス違反じゃないよね?」って確認と責任を求めているわけではなく、
見解を聞きたいだけなのですが。

57 :NAME IS NULL:05/02/16 13:22:37 ID:???
現在postgresを会社で使用しているのですが
社長命令でMySQLも入れろといわれてしまいました_| ̄|○
で、いれようと思うのですが、postgresが既に入っている
サーバーにmySQLをいれて、同時に起動させてた際に
問題になる事や弊害はなにか有るのでしょうか?
googleなどで調べてみたのですが、それらしいサイトを
見つけることが出来ませんでした…(多分調べ方がわるいんだろうな)
そこでどなたか、そういうことをやられた事がある方
もしくは該当するようなサイトを教えてもらえませんか?

58 :NAME IS NULL:05/02/16 13:29:24 ID:luFECCIC
>同時に起動させてた際に
>問題になる事や弊害はなにか有るのでしょうか?
ない
ポスグレとMySQLのメモリ使用料だけ頭にいれとけ

59 :NAME IS NULL:05/02/16 13:41:00 ID:???
phpMyAdmin のドキュメントってコレ?
http://www.phpmyadmin.net/pma_localized_docs/Documentation_ja.html

60 :NAME IS NULL:05/02/16 14:07:43 ID:???
>>57
別に問題ないよ。
外からPort使って繋げるなら重ならないように注意するぐらい。
まあ、それも両方ともデフォルトなら重なることもない。

61 :NAME IS NULL:05/02/16 14:11:22 ID:???
>>54
どうやってMySQLに繋がってるかが不明。そこのところが重要。
あと最新のクライアントライブラリはPDS/LGPLじゃなくて、GPLだってことも。



62 :54: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接続も同様。 こんな考えはどうなんでしょうか?

63 :NAME IS NULL:05/02/16 14:54:53 ID:???
>>58
>>60
ありがとうございます
これで心起きなく使用できます。

64 :NAME 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を使うべきでは?

65 :NAME IS NULL:05/02/16 19:05:42 ID:???
素直に買うべき、とも言える罠

66 :NAME IS NULL:05/02/16 19:26:01 ID:???
にしても、新規の案件っぽいのに4.0を前提に作るっていうのは
いまさらどうよ。いくら4.1がアレだからといって、5.0でも今の
仕様は受け継がれていくわけで。

67 :54:05/02/16 19:53:33 ID:???
>>64
なるほどありがとう。

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

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

サンクスです。

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

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

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


ライセンスに関しては、具体的事例を示して解説するページくらい作って欲しいな。公式に。
まぁ、高いなら高いで他DBも視野に入って来るから、そんな無茶な話にはならないとも思うが。


69 :NAME IS NULL:05/02/17 01:12:35 ID:???
>>68
windows版で4.1、5.0使うのはチャレンジャーつか人柱だとだけ。

70 :NAME IS NULL:05/02/17 01:34:09 ID:???
5.0はまだ開発途上ベータ版でしょ
4.1は5.0の機能を一部先取りバージョン
4.0は安定した枯れたバージョン

71 :NAME 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



72 :71: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




73 :71:05/02/17 08:20:48 ID:???
すいません。自己解決しました。
http://sourceforge.net/tracker/index.php?func=detail&aid=1111855&group_id=23067&atid=377408
ここに載っていました。

74 :NAME IS NULL:05/02/17 11:29:57 ID:???
>>72-73
MySQL4.0→MySQL4.1での文字コート絡みの変更で
phpMyAdminの場合、結果としてそんなエラーとして現れるんだね。
改修されたみたいだけど、覚えとこ。

75 :NAME 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


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

ちゃんと書いて出直してきます…。

77 :75: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環境で使えている方がいらっしゃいましたら
設定方法等ご教授いただきたく、お願いいたします。

78 :NAME IS NULL:05/02/19 15:31:06 ID:???
FedoraはOSの標準文字コードがUTF8じゃなかったか?
サーバ側のプロンプトから入力して正常ってことは、UTF8の文字コードをDBに放り込んでる可能性が高い。
しかも、mysqlの設定がUTF8になっていない。

二重・三重に文字コードの扱いを間違ってるに一票。


79 :NAME IS NULL:05/02/19 15:45:44 ID:???
>>78
それは設定しなおしてるみたいだから、他へ影響は置いておけば
MySQL絡みのところとは関連しないと思うよ。

MySQL4.1.xのサーバとクライアント間のエンコーディング変換の
問題が関係してると思う。MyNAのFAQ参照して設定してみては?


80 :NAME IS NULL:05/02/19 16:37:54 ID:???
むしろMySQL4.1はUTF8が楽なんだけどな

81 :78:05/02/19 16:59:01 ID:???
あ、ほんとだ。
i18n書き換えているのか。
見落としていたスマン。


82 :75:05/02/19 17:22:31 ID:N/12/J4L
>>78-81

レスdクスです。

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

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

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

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

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

後で結果報告しに来ます!ありがとうございました!

83 :NAME IS NULL:05/02/19 20:11:50 ID:???
QueryBrowser自身はUTF8固定。
WinのIMEがquery browserに
どういうコードを送っているんだろうか? sjisか?
だったらsjisをutf8として扱う時点でQBはアウト。
つかえねー

84 :NAME IS NULL:05/02/19 22:14:37 ID:???
Navicatは単にblob,texgtを(MEMO)って表示にしてるだけじゃない?
コピペしたら値がわかるけど。
鯖がujisならnavicatのエンコードはEUCね。


85 :75: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にして
送ってるってことなのかな?

ってなわけで、ご報告でした。皆さんありがとうございました。


86 :NAME IS NULL:05/02/20 22:27:46 ID:???
現在、MySqlとPerlとに奮闘中なんです。

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

さて、付随する掲示板とか日記とか作るとしたら、
パフォーマンスを考えた場合、
それらのデータもDBに突っ込むべきか、
それともテキストファイルに書いて、読み出すコードを書いたほうがいいか悩んでます。
DBに突っ込むと、余計な処理のために重くなりそうな気がしてます。
どうでしょう?


87 :NAME IS NULL:05/02/20 23:22:05 ID:???
DBI::mysql

88 :NAME IS NULL:05/02/21 16:54:30 ID:???
>>86
まず、WebサーバとMySQLサーバは同じマシンなのか、
自鯖なのかレンタルか、
さらにmod_perlは使うのかどうか、
書いてくれ。

89 :NAME IS NULL:05/02/21 22:34:17 ID:???
1つのデータベースにたくさんテーブルがあるとして、
そのなかから、あるフィールドをもつテーブルを抽出するにはどうすんの?




90 :NAME IS NULL:05/02/21 23:54:24 ID:???
>>89
>>1

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

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

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

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

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




92 :NAME IS NULL:05/02/22 15:23:56 ID:???
>>91
DB がその程度で重くなるわけないっしょ。安心しろ。
重ければそれは設計か、コードがおかしい。

93 :NAME IS NULL:05/02/22 15:52:06 ID:???
>>91
>ほとんどテキストデータである掲示板や日記まで
>DBに突っ込んでもよいものかと

じゃぁ、何を突っ込む気だ?

94 :NAME IS NULL:05/02/22 16:46:54 ID:???
ロリポかさくらだろ

95 :86:05/02/22 22:20:08 ID:???
>>92
今んとこその件数だからそのとおり。
将来はかなり増やす予定。

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

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

>>94
鋭い。


96 :NAME IS NULL:05/02/22 22:53:08 ID:???
Windows版 4.1 の mysqld-max-nt のスレッド数が1万5千以上もあるんだけど、これって普通?

97 :NAME IS NULL:05/02/22 23:39:30 ID:???
>>96
それは全然普通じゃないが、そのスレッド数ってのは
どうやって調べた(コマンドやその結果の何から)の?

98 :NAME IS NULL:05/02/23 00:46:22 ID:???
>>97
タスクマネージャで見れるやつでないか?

99 :96:05/02/23 02:23:01 ID:???
>>98 のおっしゃる通りタスクマネージャです。
立ち上げただけでその数になるので、ちょっと気になったので質問しました。

……普通なのかな?

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

因みにWindowsはNT/2000/XPの何?
再現確認できるようならやってみるので。

101 :NAME 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' ;

102 :NAME IS NULL:05/02/23 12:00:16 ID:???
>>100
タスクマネージャで列を設定すれば、プロセスに対するスレッド数が見れる

103 :NAME IS NULL:05/02/23 16:29:59 ID:???
>>95
>DBに入れたいのは、メンバーの情報。複数のテーブルをJOINしたいから。
>テキストでやろうと思っているのは、掲示板や日記。

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

まぁ、結局どうやってデータ保持しようが、
フロントの作りがタコなら、結局はこける。

104 :NAME IS NULL:05/02/23 16:43:18 ID:???
えぇと、レコード毎に被問い合わせの数を記録しておいて
任意の期間でその数の多さでテーブルをリファクタリングしたい。
具体的にはURLのカラムを対象にして踏んだ数のランキング100ごとの
テーブルを自動生成する。このSQL文の例で助言求む。MyISAMで。

105 :NAME IS NULL:05/02/23 18:17:50 ID:???
>>104
前提として存在するテーブルはなんなんだ?

106 :NAME IS NULL:05/02/23 20:25:59 ID:???
>>102
さんきゅ。そんな設定で見られるとは知らなかった。

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

どっちにしても起動直後から相当な数が上がってるというのは
異常としか思えない。

107 :106:05/02/23 20:26:53 ID:???
試したのは、WindowsXP PRO SP1

108 :96:05/02/23 20:41:55 ID:???
>>106
どうもです。
間違えてました。スレッドじゃなくてハンドルの方でした m(_ _)m
4.1.9-nt-max + Win2kprosp4 です。
OS ごと再起動しても、毎回 15,461 以上になります (情報が小出しになっちゃってすみません)
使ってて問題なさそうなので、とりあえず気にしないことにします。

109 :NAME IS NULL:05/02/23 22:58:57 ID:???
SQL*Plusをインストールしたんですが、改行が変なとこでされてて非常に見えにくいです。
どうやったら直せるんですかね?
トライアル版では無理なんでしょうか。
ご存知の方いたら教えて下さい。お願いします。

110 :86: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倍に増やしたいと考え中。
いかがなもんでしょうか?


111 :NAME IS NULL:05/02/23 23:06:22 ID:???
その程度でDBが重くなると考えるのはあふぉだな

112 :NAME IS NULL:05/02/24 00:17:39 ID:???
数百万件くらい余裕

113 :NAME IS NULL:05/02/24 00:29:40 ID:???
まぁ、2chはテキスト保存だったりするわけだが…

114 :86:05/02/24 00:31:25 ID:???
上の「◇メンバー情報」のデータで今まさにテストしてるんですが、
一瞬で帰ってくるときもあれば、数秒待たされるときもあります。
だから気にしてます。
DBが共用だから待たされてるってことなのかな。


115 :NAME IS NULL:05/02/24 00:39:58 ID:???
>>114
ユーザー毎にCPUパワーまでパーティショニングして運用しているわけじゃないだろうから、
その辺はある程度はしょうがないでそ。

116 :NAME IS NULL:05/02/24 01:03:18 ID:???
たのユーザーのSQLがインデックスはってなくて全件検索はいってるとかあるとこわいな

117 :NAME IS NULL:05/02/24 01:22:55 ID:???
同人を一冊一冊MySQLに入れたいのですがどういったテーブルを作ればいいのでしょうか?
同人は平均150KBのjpgファイルが10-50枚が1単位(冊)です。見るときはこの1単位毎にします。

118 :NAME IS NULL:05/02/24 01:31:33 ID:???
普通にディレクトリ掘ってファイルシステムに入れとけ

119 :NAME IS NULL:05/02/24 01:38:06 ID:???
どうしてもMySQLに突っ込みたいのです。パスもかけれますし…
バラの(jpg|gif|png)とかもMySQLにいれて保護したいのです。
MD5のユニークインデックス使えば複重を弾けるらしいので(=゚д゚)ウマー

120 :NAME IS NULL:05/02/24 02:27:53 ID:???
本箱テーブル:(本ID、ページ番号、画像データ) 主キー(本ID、ページ番号)
使いたければ、MD5ハッシュも入れろ。

121 :NAME IS NULL:05/02/24 12:23:55 ID:???
バイナリデータ入れたら、入れるときも、見るときも
プログラムでも使わないとだめだから、面倒だと思うけど。(クエリじゃ無理だよな?)

他のデータと共に一元管理したいなら分かるけどさ、(ユーザ情報+顔写真とか)

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

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

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

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

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

という結果を得たいのです。
MySQL のバージョンは 4.0.23 です。
よろしくお願いします。

123 :NAME IS NULL:05/02/24 14:56:09 ID:???
五郎君の好物で「うまい」ものはテンどんだけか。
カワイソウ(´;ω;`)ウッ…

内容ないのでsage

124 :NAME IS NULL:05/02/24 15:58:26 ID:???
どこの食堂も同じメニューが必ずあるのか?


125 :NAME IS NULL:05/02/24 17:01:31 ID:???
日替わり定食=残飯処理

126 :NAME 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以外も増えそうだから別テーブルにした方がいいよね。


127 :NAME IS NULL:05/02/24 20:32:43 ID:???
Perl や PHP を使わずにバイナリデータをテーブル(のBlob型カラム)に挿入できますか?

128 :NAME IS NULL:05/02/24 21:24:58 ID:???
WinXP+MySQL4.0.23なのですが、レプリケーションのスレーブを設定すると
OSのイベントビューアにエラーが出ます。
シャットダウンと起動とレプリケーション起動のフツーのメッセージが、
例の赤いバッテンとともに追加されてくんですが、これって普通ですか?
・全ての動作は異常ない(レプリケーションもちゃんとしてできてる)
・レプリケーションを殺すとエラーが出なくなる。
・MySQLの再インストールしても変わらん。
・マスター側はイベントビューアには全然ログを出さない。
うーむ・・・


129 :NAME IS NULL:05/02/24 21:54:56 ID:???
>>127
できないこともない。


130 :NAME IS NULL:05/02/24 22:07:00 ID:???
>>129
是非とも教えてください
ググってもありませんでした

131 :NAME IS NULL:05/02/24 22:10:47 ID:???
>>127
できる


132 :SQLビギナー: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;

よろしくお願いします。


133 :NAME IS NULL:05/02/24 23:25:26 ID:???
>>132
お前の仕事の手伝いなんぞ嫌だ

134 :NAME IS NULL:05/02/25 00:08:36 ID:???
>>132
何この丸投げ

135 :NAME IS NULL:05/02/25 01:02:22 ID:???
>>122
は、
>>126
も言っているとおり、正規化すべきだと思う。

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

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


>>132
教授は頂けない。


136 :NAME IS NULL:05/02/25 01:07:26 ID:???
正規化ってどうするの?
属性別にテーブル設けて各テーブルにインデックスカラムを付けるだけなの?

137 :NAME IS NULL:05/02/25 01:25:35 ID:???
>>136 プログラマ的に気持ちよく分割されてればおk

138 :NAME IS NULL:05/02/25 01:40:58 ID:???
>>136
http://hccweb1.bai.ne.jp/~hdg93401/sad/db/seikika.html

食堂テーブルにある、ジャンルはメニューに従属しているから、分割とか。

139 :122:05/02/25 13:14:06 ID:z4T9Kjr8
>>123 >>124
まぁ例えなんで深くは考えずに

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

>>135
アドバイスありがとうございます。
参考にさせていただきます。

140 :NAME IS NULL:05/02/26 00:07:27 ID:jOGQTQaN
ASP.NETでウェブ・アプリ作ってる方に聞きたいんですが、
MySQLに接続するために必要なAPIあれば教えてください。
ASP.NET on IIS with MySQL (or PostgreSQL) という構成です。

141 :NAME IS NULL:05/02/26 00:32:18 ID:???
>>140
http://www.mysql.com/products/connector/net/

142 :NAME IS NULL:05/02/27 00:36:56 ID:w+A6RWPj
ファイルにdrop文とcreate文を書いて実行したいのですが、
drop文で「Unknown table 'テーブル名'」と言われてしまい次のcreate文に移りません。
確かにそんなテーブル無いのですが、再作成のために書いておきたいのですがどうしたらいいですか?

143 :NAME IS NULL:05/02/27 01:13:49 ID:???
そこで止まることは無いと思うが。

144 :142: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ではエラーが出ても続行されたんですが・・・。
しょうがないんですかね。

145 :NAME IS NULL:05/02/27 01:26:59 ID:IfrbtRcK
>>142

IF EXISTS

http://dev.mysql.com/doc/mysql/ja/drop-table.html


146 :142:05/02/27 03:51:35 ID:w+A6RWPj
>>145
おお、これだ。
リファレンス本しか読んでなかったのがいけなかったみたいです。
反省します。ありがとうございました。

147 :NAME IS NULL :05/02/27 12:20:00 ID:mWXh/ugo
こんにちは。
PHP5+MySQLで練習をかねて資産管理を作っています。
まだ、登録・修正&削除・一覧表示をPHPで出来る所までしか
来ていないのですが・・・。
5つあるテーブルの4つまでは、何の問題もなく上記3つの
PHPページが出来たのですが、最後の一つのテーブルだけ
PHPから削除・一覧表示は出来たのですが、登録・修正だけが
MySQLのデーターベーステーブルに反映されません・・・。
コピペで作っているので、盆ミスでもなさそうな雰囲気なのです。

もしかして、カラム名に使ってはいけない文字ってありますか?
英小字一文字だと、駄目とかありますか?
よろしくお願いいたします。

148 :147:05/02/27 14:25:16 ID:mWXh/ugo
自己レスです。
すみません。
UNIQUE制約が邪魔していたみたいです。
お騒がせいたしました

149 :NAME 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しています。
どなたかお助けください。

150 :NAME IS NULL:05/02/28 22:57:31 ID:s2lgItl0
Windows上のC++でODBCを使わずにMySQLをいじるには何が必要でしょうか?
(かねやんMySQLみたいな奴)

151 :NAME IS NULL:05/02/28 23:50:39 ID:???
>>150
MySQL++ってWindowsでも使えないんだっけ?


152 :NAME IS NULL:05/03/01 00:16:48 ID:???
>>151
使える。が、別に使わなくても繋げるしね。
もっと言えばDBMSぽく繋がないんだったら、
素のC++だけで、後は自前で作ってもなんとでもなるよ。

>かねやんMySQLみたいな
繋がりが良く判らん

153 :NAME IS NULL:05/03/01 00:32:00 ID:r4T/MZvg
MySQLのクライアント・サーバー間のプロトコルって公開されてるの?

154 :NAME IS NULL:05/03/01 00:56:41 ID:???
>>153
特に「プロトコル」って公開はされてはいないが
クライアントもサーバもソースは公開されてますんで
全然隠蔽されてませんよ。要するにアンドキュメントなだけ。

SSL通せば隠蔽はされますが、それとは別の話。

155 :NAME IS NULL:05/03/01 01:20:36 ID:???
>>153
see 4.2.3

156 :NAME IS NULL:05/03/01 13:16:51 ID:???
>>146

きちんとしたリファレンス本にはきちんと書いてあるぞ

157 :NAME IS NULL:05/03/01 13:27:54 ID:???
blobカラムに画像ファイルデータを挿入したんですけど
mysqlプロンプトから任意の画像ファイルデータを問い合わせて
任意の画像ビュアーにそのデータを渡して画像を閲覧するようなクエリをお教え下さいませ

158 :NAME IS NULL:05/03/01 14:51:32 ID:???
php.ini において、magic_quotes_gcp = on にしていれば、
SQLインジェクションに対して安全でしょうか?

やはり
mysql_real_escape_string() とか mysql_escape_string() とか addslashes を
使うべきでしょうか?

159 :NAME IS NULL:05/03/01 15:50:47 ID:???
そりゃPHPスレで聞くもんだべ

160 :NAME IS NULL:05/03/01 17:01:18 ID:4KnrU+VK
MySQLにてテーブルの形式だけを取り出したいのですが
mysqldump データベース名 > ファイル名
だとテーブルのデータもくっついてくるのでこれを取り除く方法はないのでしょうか?

161 :NAME IS NULL:05/03/01 17:34:14 ID:???
【環境】
RedHatLinux WS2.1
mysql-4.0.23(INNODB)

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



162 :NAME IS NULL:05/03/01 17:35:22 ID:???
>>160
マニュアルくらい読めよ
http://dev.mysql.com/doc/mysql/ja/mysqldump.html


163 :NAME IS NULL:05/03/01 17:45:58 ID:???
>>157
mysqlプロンプトはバイナリーセーフではない作りの気がする。
よって何らかのプログラムを組んでやらないと駄目かと。

164 :160:05/03/01 17:48:41 ID:4KnrU+VK
>>162
失礼いたしました。

別ページを見たらレコード削除するとか書いてたので^^;
ありがとうございました。

165 :NAME IS NULL:05/03/01 17:49:06 ID:???
ああ、あと入力側に256文字制限/プロンプト入力があるような話を
MLで見かけた気もする。出力側にも何らかの制限がある可能性も。

166 :NAME 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文の中でできる?できない??

167 :150:05/03/01 23:48:23 ID:???
皆様、ありがとうございました。
まず、テンプレートの使い方から勉強させていただくことにしました。

168 :NAME IS NULL:05/03/02 11:51:54 ID:b2z/H3G1
どなたかご教授下さい。
フィールドの並び順を CREATE TABLE コマンドで定義した順番から変更する方法はありますか?
もう一度 CREATE TABLE をやり直すしかないのでしょうか?

169 :NAME IS NULL:05/03/02 12:30:16 ID:???
>>168
定義上のフィールドの並び順を気にする時点で、
データベースを理解してないと思われ。

ま、ALTERでもして鯉

170 :NAME IS NULL:05/03/02 12:39:41 ID:???
>>168
気になる気持ちは、わからんでもないけどさ。
一旦別の名前に変えて(HOGE→HOGE2)
create table HOGE select ...... from HOGE2
とでもしたら?


171 :NAME IS NULL:05/03/02 13:06:50 ID:???
PDFファイルをMySQLで管理したいのですが
もともとの個々のファイルのタイムスタンプとは別に(でもこのタイムスタンプも埋め込む)
テーブルに格納された日時のタイムスタンプをIDの代りにしたいのですが
どういうコマンドライン?

172 :NAME IS NULL:05/03/02 14:28:16 ID:???
>168>>170
ALTER TABLE tbl_name
ADD column_name INT UNSIGNED AFTER defined_column_nane

173 :NAME IS NULL:05/03/02 19:09:20 ID:???
>>171
mysql > format c:

174 :168:05/03/03 09:30:39 ID:YOiMc7ef
>>172
できました。ありがとうございます!!

175 :170:05/03/03 09:57:27 ID:???
>>174
いい加減な回答ですまんかった。
>>172
そんなことができるとは知らんかったよ

176 :NAME IS NULL:05/03/03 12:27:42 ID:???
>>173
ありがとうございました!

177 :NAME IS NULL:05/03/04 22:54:45 ID:???
>>169
並び順って、開発効率を上げる面では重要だと思うけど。
リリース後の追加っていうなら分かるが。


178 :NAME IS NULL:05/03/05 09:44:08 ID:???
>>177
開発環境によってはそんなものは簡単に隠蔽できちゃうでしょ。


179 :NAME IS NULL:05/03/05 12:55:10 ID:???
だからといって、隠蔽できる開発環境を選べというのは違う気がする。

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

項目順を予め入れ替えておくだけで解決できるなら、それはそれでやっておくべきだと思うぞ。


180 :NAME IS NULL:05/03/05 14:30:12 ID:???
項目数が数百ってギャグ?

181 :NAME IS NULL:05/03/05 14:55:47 ID:???
カタログスペックに挑戦してるんじゃね?

182 :NAME IS NULL:05/03/05 20:39:05 ID:???
>>179
いや、隠蔽しても別に1つ1つ指定する必要はないけど?
SELECT * しても、カラム名でアクセスすればイイだけの話だし。




183 :NAME IS NULL:05/03/08 01:39:30 ID:???
RedHatのクラスタでmySQLの社内システムを組もうと思うのですが
実際に運用されているかた、気をつけることとかありますか?

184 :NAME IS NULL:05/03/08 03:05:49 ID:???
GPLとか

185 :NAME IS NULL:05/03/08 04:04:59 ID:???
>>183
HAクラスタだよね。なら特に気にすることはなかったと思う。


186 :NAME IS NULL:05/03/08 09:08:52 ID:???
社内なら GPL も関係ないしね

187 :NAME IS NULL:05/03/08 09:30:53 ID:???
>>186
日本語は正確に
×:社内なら GPLも関係ない
○:社内なら GPLでも関係ない(ことが多い)

188 :NAME IS NULL:05/03/08 11:36:18 ID:???
問題はGPLなコードを社外に持ち出すことをとめることが出来るのかどうか

189 :NAME IS NULL:05/03/08 12:12:06 ID:s4x3oOUv
>>188
ごめん、よく分かってないんで、教えて欲しいんだけど。
コードを持ち出すってどういうこと?

>>183のようなシステム作って、それを他に売ることをとめられるかってこと?
それ防ぐことは、別に難しいことじゃないと思う。
それとも、作ったシステムを、社外から使うのを防げるかってこと?
社外から使っても、別にいいんじゃないの?

190 :NAME IS NULL:05/03/08 22:04:44 ID:???
GPLだし、これ持ち出して自分で改良して売ってみようかな〜

191 :NAME IS NULL:05/03/08 23:22:38 ID:???
>>190
なるほど。そういうことですか。
内部の人がパクって売ってしまうことを防げないということですね。

192 :NAME IS NULL:05/03/08 23:55:39 ID:???
会社(法人格)がGPLでライセンスされてるからといって、
従業員にGPLで公開されてると見なせるのだろうか?
その前提なしに従業員がパクったら横領だよ。
勿論コード以外の資料を添付または流用したら確実に、
他にも会社の技術を勝手に転用されたと訴えられるだろう。

流用・転用は裁判の結果がでないと判断できないけど、
個人で裁判を受けて立つメリットデメリットを考えると
俺にはそこまで商才はないのでやらない。

193 :NAME IS NULL:05/03/09 00:20:20 ID:???
んじゃーやっぱり、>>188のようなことは、あり得ないよな。

194 :NAME IS NULL:05/03/09 00:40:17 ID:???
なんにせよグレーゾーン
おとなしく商用ライセンス買えと
7万くらいだっけ?

195 :NAME IS NULL:05/03/09 02:18:22 ID:???
>>194
>なんにせよグレーゾーンおとなしく商用ライセンス買えと
え?話がずれてきてない?

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

ってことだろ。社内でも(リスク度外視でコード盗むやつを止められないから)
グダグダ言ってないで商用ライセンス買えってことかい?

196 :192:05/03/09 03:21:07 ID:???
>>195
俺もちと話がずれてると思う。
別に会社でGPLのを使うのはグレーでもなんでもない。
(MySQL AB的には、恒久的に常用するならCML買えよが本音)

197 :NAME IS NULL:05/03/09 10:48:01 ID:???
社内で GPL なのは公開する必要なし
それを社外に持ち出して公開するのも GPL では問題なし
ただし、GPL 以外の問題があります

198 :NAME 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です。
よろしくお願いします。


199 :NAME 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側のレプリケーションは停止しないでしょうか。

200 :NAME IS NULL:05/03/10 15:01:11 ID:???
サーバとクライアントの通信を暗号化するにはどうすればいいのでしょうか?

201 :NAME IS NULL:05/03/10 15:34:15 ID:???
>>200
MySQLとSSLでググれ


202 :NAME IS NULL:05/03/11 03:12:51 ID:???
>>199

slaveはrelayログでレプリケーションするので、
relayログがあるならmaster側のバイナリログを削除しても大丈夫。
レプリケーションの仕組みはMYSQL全機能リファレンスに詳しく書いてある。


203 :NAME 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の話も聞けると思う。

204 :NAME IS NULL:05/03/11 13:47:22 ID:lHD/WJDj
mysq-4.0.20-3と
mysql-Max-4.0.20-3の違いを教えてください。

この二つの用途の違いが知りたいです

205 :NAME IS NULL:05/03/11 13:55:34 ID:???
maxの方はBDBが使える。以上。

206 :NAME IS NULL:05/03/11 14:59:03 ID:???
ふたりはプリキュア と ふたりはプリキュアマックスハートの違い

207 :NAME IS NULL:05/03/11 16:50:26 ID:???
ヲタにしかワカラン解説 w

208 :Super初心者:05/03/11 23:02:55 ID:YNcJrtR5
場違いな質問していいですか?

209 :NAME IS NULL:05/03/11 23:06:51 ID:???
>>208

ダメです。あきらめてください。


210 :Super初心者:05/03/11 23:11:48 ID:YNcJrtR5
やはり...。
データベースの件なら許してもらえますか?

211 :NAME IS NULL:05/03/11 23:21:41 ID:???
大変大変!ライセンスが糞なんだけどどうしたらいい?
PostgreSQLに逃げると幸せになれる?

212 :Super初心者:05/03/11 23:30:51 ID:YNcJrtR5
MySQLを使って、販売管理したいのですが可能ですか?
最終的には本支店間の物ですが?

213 :NAME IS NULL:05/03/11 23:32:39 ID:xptNNxFG
googleの検索みたいに、検索数と検索にかかった時間をphpで出したいんだけど、
そんなことできる?

1 row in set (0.26 sec)

この「1」と「0.26」の数値の変数ってphpから利用出来る?

214 :NAME IS NULL:05/03/11 23:42:02 ID:???
>>211
残念ながらなれる

3.xからずっと使ってきてそれなりに納得してきたのだが
4.1の糞さがなおらないままなのでPostgresに移行しちまった

215 :NAME IS NULL:05/03/12 00:06:28 ID:???
>>213
popenでmysql呼び出して標準入出力をやり取り


216 :213:05/03/12 00:13:22 ID:cnkhU+30
>>215
oh! サンクス!

217 :NAME IS NULL:05/03/12 03:33:43 ID:???
>>212
その「販売管理」の内容にもよる。

そもそもDBMSもいらず、Excelのファイルを
バッティングしなよいように共有する程度のことでも
良いのかもしれんしな。

218 :NAME 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行はワンセットで使うおまじないみたいなものと考えていいのでしょうか?

219 :NAME IS NULL:05/03/12 05:05:56 ID:???
そうだよ

220 :NAME 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になってしまうので、
余りその箇所の記述は鵜呑みにはしないこと。結構適当。

221 :218:05/03/12 06:13:52 ID:q3r/NSYl
>>219,220
ありがとうございます。ちょっとふっきれましたです。

222 :Super初心者:05/03/12 13:03:24 ID:PFGNYZwI
>>217
現在、死語かも知れませんが、
Lotusアプローチで管理していますが、
クライアントサーバ型で構築したいのです。
お金を掛けて市販ソフトを使用すれと良いのですが、
弱小企業の為、予算が出ません。
参考になる様な書籍など教えて頂けましたら幸いです。

223 :NAME IS NULL:05/03/12 16:02:47 ID:???
初心者といって免罪符とはならん
逆に初心者と書かれるとレスしたくないと言う人もいるから、そういう名前は付けてほしくない
現在の管理データからMySQLに移行するっていうのならそう難しくないんじゃないか?
ライセンスとかは私はわからんが

224 :NAME IS NULL:05/03/12 16:56:41 ID:???
メールから情報をMySQLに登録するのに何か良い方法はない
ですかね?参考になる書籍とか知っている方がいたら教えて
欲しいです。



225 :NAME 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

226 :NAME IS NULL:05/03/12 19:00:58 ID:???
mysqlが起動してなかったりして・・・

227 :NAME IS NULL:05/03/12 19:50:00 ID:???
>>226
え?今までは自動で起動してたんで問題なく使えてたんですけど
起動コマンド教えてくださいm(__)m

228 :NAME IS NULL:05/03/12 20:04:30 ID:???
とてつもなく頭の悪いのが紛れ込んできたな。

229 :225:05/03/12 21:33:10 ID:???
解決しました
>>228
ごめんなさいm(__)m

230 :NAME IS NULL:05/03/13 11:10:02 ID:???
4.1.10aと4.0.24キタ━(゚∀゚)━!!!

231 :NAME IS NULL:05/03/13 14:53:54 ID:DgyjN9xh
テーブル名に日本語使ったらヤバイ?


232 :NAME IS NULL:05/03/13 17:43:19 ID:???
あるフィールドを降順で並び変えて記録する句があれば教えてください。今は表示する時にGRANTで並び変えて表示しています。

233 :NAME IS NULL:05/03/13 19:55:25 ID:Vyou6TzA
内容が80桁の数字or80字の文字列のレコードが200万くらいあったら
そこから検索するのにどれくらいのスペックで何秒くらいかかるだろうか?
この内容のレコードでなくても数十万数百万のレコードについての例があったらスペックとレスポンスを教えて欲しい。

234 :NAME 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エラーを調べてみたけれどよく分かりませんでした。

どうかエラーの意味を教えて下さい。

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

>>232
意味ワカメ

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

まあそのエラー番号がphpMyAdmin固有なのかPHP固有なのかMySQL固有なのか
オレには分からんな。エスパーじゃないし。それにエラーメッセージとか
エラーの出た行のデータぐらい貼ってみそ。

237 :232: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で並べ変えるしかないのでしょうか。

238 :NAME IS NULL:05/03/13 23:26:23 ID:???
>>237
order by

239 :NAME IS NULL:05/03/13 23:42:29 ID:???
>>237
>5、10、12、31、44となるように並べかえて「記録保存」
そんなことは出来ない。仮に5、10、12、31、44の順でINSERTを掛けたとして
ORDERを掛けずにSELECTしたら、その順序で取れたとしよう(まあ取れると思うが)。
しかし「いつも、その順序で取れるという保証」はどこにもない。

240 :237:05/03/14 00:26:06 ID:???
なるほど…ありがとうございました

241 :NAME IS NULL:05/03/14 00:30:53 ID:???
>>237
内部的な記録のされ方に何故こだわるのか?
ORDERをかけて正しく取り出せればいいと思うのだが。


242 :NAME IS NULL:05/03/14 01:15:41 ID:???
>>240
得心いかないかもしれないけど、一般的にRDBとはそういうものだから納得しる。

243 :237:05/03/14 14:43:48 ID:???
共有鯖を使っていて、出来るだけ負荷を減らしたかったのです。ただでさえ重い鯖なんで…
Excelのような感じだと思っていましたが、少し違うようですね

244 :NAME IS NULL:05/03/14 15:31:34 ID:???
>>243
負荷って「ORDER BY」を記述する手間のこと?
んなわけないな。

RDBの中の実装は詳しく知らないけど、
もしも、RDBで並び順を保持できたら、INSERTのときに、隙間に入れなければならないし、
UPDATEしただけでデータを移動しなけりゃならない。それこと無駄が多いだろ?
代わりに、そうやって順序をよく保持できるのが、インデックスであって
インデックスがはってあれば、ORDER BYしてもソートの負荷は少ないんでないの?


245 :NAME IS NULL:05/03/14 16:39:18 ID:???
>>237にSQLは合わないと思うな
なんか考え方的に

246 :NAME IS NULL:05/03/14 23:38:47 ID:???
テーブル作成時にchar(80)と指定したフィールドが
show tablesで確認するとvarcharになってしまうんですが仕様なんでしょうか?
バージョンは4.1です。

247 :NAME IS NULL:05/03/14 23:56:30 ID:???
>>246
仕様。「暗黙の型変換」で調べてミソ
(個人的にはちとキモチの悪い仕様)

248 :NAME IS NULL:05/03/15 00:04:11 ID:???
>>246
http://dev.mysql.com/doc/mysql/ja/silent-column-changes.html

249 :NAME 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


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

例えば

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

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

251 :NAME IS NULL:05/03/16 16:18:27 ID:???
>>250
CONCATとか

Welcome to this crazy time 〜♪

252 :NAME IS NULL:05/03/16 16:23:19 ID:g2s40+lA
>>251
>CONCATとか
調べてみました。
文字列結合なんてできるんですね。
ありがとうございます!

253 :NAME IS NULL :05/03/19 17:58:09 ID:NyWmAKIj
質問です。4.0.22使用しています。

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

どうぞご教授ください。

254 :NAME IS NULL:05/03/19 22:39:04 ID:???
ググってみたのかと子一時間

255 :NAME 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での運用
やメンテで同様の症状が発生して解決した方いらっしゃらないでしょうか?


256 :NAME 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
なのですか?

257 :NAME IS NULL:2005/03/24(木) 04:47:30 ID:???
「restart失敗すると、当然apacheも落ちる」これ変。
MySQL以前にOS(例えばSWAP)とか、ハードウェアを疑った方がいい。

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

これら運用している2台の関係はクラスタリング?

258 :NAME IS NULL:2005/03/24(木) 04:56:43 ID:???
>>256
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_35

マニュアル等の公式ドキュメントでの記述が見つからんかった。
判ったら教えてくれ。

259 :NAME 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.

メインのリファレンスには記述がない(古いのだけ)ので、見落とし&判りづらいな。


260 :NAME IS NULL:2005/03/24(木) 10:15:38 ID:z8myW0oh
>>259
ありがとうございます
jamesのレポジトリをmysqlでやろうとおもってたんだけど
コンパイルしなおして2000bytesくらいにします

261 :NAME IS NULL:2005/03/24(木) 15:06:24 ID:???
MYSQLのテーブルのデータをエクセル形式で出力したいのですけど、どういうやり方でやるのでしょうか?

262 :NAME IS NULL:2005/03/24(木) 20:12:07 ID:???
エクセルから接続してエクセルにコピーするVBAを使うとか?

263 :NAME 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で出力するので良いと思うけどね。


264 :NAME IS NULL:2005/03/26(土) 01:08:16 ID:I+g70oVB
どなたか知っているかたがいたら教えてください。

PHP+MYSQLでbooklistというテーブルがあります。
その中のコラムのひとつに”description”があり
その中のデータの最後はいつも"Weight ****g"と
いう文で終わります。この"Weight ****g"を抜き出して
他のテーブルの"weight"というコラムにIDを元に移動させ
たいのですが何かいい方法はあるでしょうか?
板違いでしたらすみません。

265 :NAME IS NULL:2005/03/26(土) 01:44:03 ID:???
>>264
PHPを既にインストールしてMySQLを操作してんなら、
そういう動作を行うスクリプトを組んだらよかろう。
データ(文字列)を後ろから検索掛けて"Weight"って単語の
位置を調べて、そこからEODまでを切り出し。
切り出したの使ってINSERT

266 :NAME IS NULL:2005/03/26(土) 08:20:57 ID:I+g70oVB
>>265
ご回答ありがとうございます。
早速やってみます。

267 :NAME IS NULL:2005/03/26(土) 10:29:30 ID:???
最近の若い世代の考える能力が低下しているというのは本当なんだな

268 :NAME 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
には記載がない。

269 :NAME 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

ていうのが出るようになったけど、コレて何?

270 :NAME IS NULL:2005/03/28(月) 20:32:38 ID:???
>>269
このスレの15レス前ぐらいからの話題に関連。


271 :NAME 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)が入ったのが目新しいとこかね。

272 :NAME IS NULL:2005/03/29(火) 01:38:47 ID:???
cp932やっときたか!

でも回り見ても新規案件全部postgresにいっちまった・・・

273 :NAME IS NULL:2005/03/29(火) 02:02:02 ID:???
>>272
ライセンス形式ががMySQLよりもシンプルですからね・・・

274 :NAME IS NULL:2005/03/29(火) 02:40:54 ID:???
いやいや、ライセンスは買えばいいのでWEB鯖方面ならMySQL使っていたんだ

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

逆にPostgresはWindows正式対応しちゃったし、C/Sでは
MySQLはライセンス料金お話にならないのでどんどんにげてるっぽ


275 :NAME IS NULL:2005/03/29(火) 03:00:36 ID:???
>>273
PostgreSQLもMySQLもライセンスは別に変わってませんが?

でも自分の場合、InnoDB使うようになってきたので費用面ではちとキツイ。


276 :NAME IS NULL:2005/03/29(火) 03:15:09 ID:???
うちはGPLで済む用途なんだけど、MySQL4.1はまだ"待ち"かな。
現状でMySQL4.0またはPostgreSQLなんで新機能待ちではなくて、
MySQL4.0がもう終わりかなぐらいで、MySQL4.1にのれればいい
という感じなので、互換度が一番重要でそれの待ち。

277 :NAME IS NULL:2005/03/29(火) 22:10:44 ID:???
MySQLのライセンスって読み方捉え方次第で有料か無料の判断が分かれる。。。
PostgreSQLは商用も無料でシンプル。

278 :NAME IS NULL:2005/03/29(火) 22:32:03 ID:???
>PostgreSQLは商用も無料でシンプル。
には特に異論はない。

279 :NAME IS NULL:2005/03/30(水) 02:49:48 ID:???
いまからSQLの勉強をはじめる人にはMySQLよりPostgreSQLを薦めますか?

280 :NAME IS NULL:2005/03/30(水) 04:11:50 ID:DxhulZk7
mysql3系は、複数CPUをサポートしていますか?
RHELだと3系なんで、できればこれを使いたいと思ってます。
poestgreSQL7系も複数CPUをサポートしていますでしょうか?

281 :NAME IS NULL:2005/03/30(水) 09:34:06 ID:???
>>280
「自分で調べろ」というレベルにすら達してない段階。


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

はぁ.... orz

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


latin1でつかってますけど・・

283 :NAME 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.

284 :271:2005/03/31(木) 04:08:46 ID:???
5.0.3-betaの目玉、
Stored Procedures, Triggers, Viewをすっかり見落としてた...

いや実際のところ余り興味ないんだけけどね。
(トリガーはちょこっとだけあり)

285 :C-route:2005/03/31(木) 12:39:30 ID:y/Tz8Og2
すいません。

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

このデータファイル自体に対して、euc にエンコードする方法があれば
ご教示いただきたいのですが、先達にお心当たりはありませんでしょうか?


286 :NAME 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する
クライアントツールはあるので、探してそれを使ってもいい。

287 :NAME IS NULL:2005/03/31(木) 18:26:58 ID:???
ふつうはバックアップファイルとかわたすよなぁ

288 :NAME 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
</チラシの裏>

289 :NAME IS NULL:2005/03/31(木) 23:16:05 ID:???
>>285
最悪バイナリを解析すれば?
割に簡単にできるよ。

290 :NAME IS NULL:皇紀2665/04/01(金) 00:35:33 ID:???
MySQLをiccでコンパイルしている人いますか?

291 :NAME IS NULL:2005/04/02(土) 16:07:58 ID:???
>>286
基本的に上位互換だったと思うが。
つか、sjisからeucに変換するスクリプト書いてupdateすればいいだけでしょ。


292 :NAME IS NULL:2005/04/02(土) 23:23:03 ID:???
>>291
4.1はプログラムのバイナリ書き換えない限りファイルシステムレベルでの
ファイルは強制UTF8だから問題は多いよ


293 :NAME IS NULL:2005/04/03(日) 01:49:37 ID:???
うん? ファイル名(テーブル名)にマルチバイト使ってるの?
それは多少厳しいかもだが、リネームすれば大丈夫じゃね?

294 :NAME IS NULL:2005/04/03(日) 13:18:28 ID:???
ファイルの中もデータはeucとかでもその他の項目とかはutf8固定

295 :NAME IS NULL:2005/04/04(月) 08:52:15 ID:???
ああ、フィールド名とかか。
フィールド名はasciiにしてるから気にしてなかったよ。


296 :285: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を使用しています。
よろしくお願い致します。



298 :NAME 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させて無視していますが、
なにか納得できない気分です。



300 :NAME IS NULL:2005/04/05(火) 14:35:40 ID:???
そんな致命的なバグがパッチも出てないとは考えにくいなぁ


301 :NAME 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 といった項目は存在しません。

文字化けを解消する方法をご存知の方がいらっしゃったら
ご教授ください。
よろしくお願いします。

302 :NAME IS NULL:2005/04/05(火) 20:22:23 ID:???
>>301
昔、俺もはまったっけなぁ
http://www.mysql.gr.jp/frame/modules/bwiki/index.php?cmd=read&page=FAQ#content_1_32

303 :NAME IS NULL:2005/04/06(水) 10:29:57 ID:???
MySQL4.1に20〜40万程度のレコードを、一気に入力するのに最適な方法は何でしょうか?
元となるデータは単なる文字列で、これをPerl/PHPなどで整形し、入力用データにする予定です。
整形する際にSQL文にするのが良いか、PHPとかで1行ずつクエリ実行するのが良いか迷ってます。

304 :303:2005/04/06(水) 11:06:21 ID:???
あ、すいません。今、データを整形するスクリプトを組んで実験していたら
整形するのに時間がかかって、20〜40万程度だったら入力自体には
そんなに時間がかかりませんでした。
正規表現のスキル不足でした orz

305 :NAME 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は使えないのでこまっております。
どうぞご教授よろしくお願いいたします。


306 :NAME 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

307 :NAME IS NULL:2005/04/06(水) 18:09:57 ID:YxlG0gex
>>306

308 :NAME IS NULL:2005/04/06(水) 18:10:25 ID:???
>>306 
間違えましたすみません。

そのやり方で解決しましたありがとうございました!!


309 :NAME 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ではどうなの?

310 :NAME IS NULL:2005/04/07(木) 14:25:13 ID:qOmyg27t ?#
いま Windows で MySQL 4.1.5 を使っています。
最新の 4.1.11 にバージョンアップしたいのですが、
上書きインストールしてしまっていいものでしょうか?

311 :NAME IS NULL:2005/04/07(木) 15:00:12 ID:DtwT39/7
テーブルのエクスポートのやりかたが分かりません
どうするのでしょう?

312 :NAME IS NULL:2005/04/07(木) 15:25:48 ID:???
>>310
自分は一応アンインストールしています。

>>311
mysqldump

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

また、マスタにデータ追加時に、アイテムテーブルに存在しないアイテムが出て来た場合、動的にアイテムテーブルにレコードを追加する、ってことも出来るんしょうか?

314 :NAME IS NULL:2005/04/07(木) 17:12:50 ID:???
アイテムテーブルって一般的な言葉なのか?


315 :NAME IS NULL:2005/04/07(木) 19:50:28 ID:EqrEf0eT
MySQLの空間を扱うデータベースについて、リファレンスを読んでも
何のことやらさっぱり分からないんだけど
これについて解説した書籍を知っていたら教えて欲しい。

316 :313:2005/04/07(木) 21:22:07 ID:???
>>314
"item"というテーブルだと思ってください。

317 :NAME IS NULL:2005/04/07(木) 21:26:54 ID:???
>>315
そりゃ貴方がGIS(OpenGIS規格)について知識がないからやがな。

318 :NAME IS NULL:2005/04/07(木) 23:42:48 ID:???
別に広い意味での地理情報だけの仕様でもないでしょう。
例えば二次元情報の時間軸次元付加に空間ベクトルを使っても興味深い。
例えばリレーショナルデータベースという二次元情報の時系列データとして使えば
それ自体で差分スナップショットのできあがり〜

319 :NAME IS NULL:2005/04/07(木) 23:55:56 ID:???
>>315
国土地理院のデータ2003年度版を47都道府県ぶち込んだんですが
DBがサイズ1.5Gになった・・・


320 :NAME IS NULL:2005/04/08(金) 01:03:00 ID:???
1.5Gなら使いやすいサイズなのでは?

てっきり20Gとか40Gになるのかと・・・・・

321 :NAME IS NULL:2005/04/08(金) 04:50:51 ID:???
20Gって2億レコード強ってとこか。。。

Mysqlで最高80億レコードまでは実績あるそうなんで
まーメチャな数字はないが現実的じゃないな。


322 :NAME IS NULL:2005/04/08(金) 09:11:24 ID:???
MySQLデータベース分だけで250GB割当ててますが何か?
CVS/SVN分以外のデータを全部格納する予定

323 :NAME 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が出てきません

ネットや本で見ると上の手順で簡単にインストールできるようなのですが
できません
おしえてくださいお願いします

324 :NAME IS NULL:2005/04/08(金) 10:13:29 ID:???
ドライバのインストールがインストール完了してない感じだけど
systemdrive:\WINNT\System32\myodbc3.dll
とかちゃんと入ってる?なけりゃ失敗してるんだろうけど原因は知らん。
何かシステムログとかに出てないか




325 :NAME IS NULL:2005/04/08(金) 10:22:05 ID:???
>>319
素朴な疑問。
国土地理院のデータフォーマットってOpenGISなの?
あと、なんでデータをDBにいれたの?


326 :NAME IS NULL:2005/04/08(金) 11:28:17 ID:Dnu5jh4x
>>324
アドバイスありがとうございます
インストールも正常に終わって
WINNT\System32\myodbc3.dll
もあるのですが、ODBCに追加できません
どなたか分かる方いらっしゃいませんか


327 :NAME 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通りなんだけど、どうしてだろう?

328 :NAME IS NULL:2005/04/08(金) 13:13:00 ID:???
>>326
うーん、だとしたらODBCマネージャが腐ってるのか。
望み薄いけどexeのやつアンインストールしてmsiのやつ入れたらどう?
ぢっちみち中身同じだけど。あとMySQL4.1と組み合わせるのはちょっと
どうかと思うがMyODBC2.5系を入れたらどうなるか試す。

329 :NAME 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

というメッセージが出るんですけど。


330 :NAME IS NULL:2005/04/08(金) 20:32:33 ID:???
>329

ODBC 経由で接続しているのなら、ODBC のデータソース設定で
Connect Options タブ → Initial Statement に set names sjis
を設定してみれば?


331 :329: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が出たのを確認、
サービスを再起動しテストしましたが、駄目でした。


332 :NAME IS NULL:2005/04/08(金) 21:16:17 ID:???
>331
接続文字列が、それだと ODBC の設定が使用されてないよ〜
以下のようにしないと。
P_CNString = "DSN=myodbc"


333 :329:2005/04/08(金) 21:26:35 ID:???
どうも指摘有難うございます。
修正後実行し、コマンドプロンプトで見たら文字化けは直りました。
またこれかもよろしくお願いします。


334 :NAME IS NULL:2005/04/08(金) 22:20:48 ID:???
>>327
データベースのテーブルタイプはもちろんMyISAMなんだよね?
InnoDBだと駄目だった気がするよ。
ttp://dev.mysql.com/doc/mysql/ja/fulltext-restrictions.html

マニュアルくらい読もうZe

335 :NAME IS NULL:2005/04/08(金) 22:21:23 ID:???
>>327
ああごめ、MyISAMって書いてあるじゃん。
MySQLのバージョンは?


336 :NAME IS NULL:2005/04/09(土) 12:03:39 ID:???
>>335
バージョンは4.1.1で、Windowsでやってエラー発生。
テーブルタイプはデフォルトのままだからMyISAMのはず。

337 :NAME IS NULL:2005/04/09(土) 12:09:43 ID:???
>>336
それはデフォルトがInnoDBになってると思われ。
試しにType=MyISAMを追加してみそ。


338 :NAME 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

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



340 :NAME IS NULL:2005/04/10(日) 18:10:30 ID:???
>>339 たしかに訳若布だが、
なぜにversion下げる?

341 :NAME IS NULL:2005/04/10(日) 22:49:19 ID:???
Mac OSXにmysqlをインストールしたんですが、システム起動時に立ち上がってしまうのを止めたいんです。どうしたらいいでしょうか?

342 :NAME IS NULL:2005/04/11(月) 14:38:16 ID:???
>>341
ttp://dev.mysql.com/doc/mysql/en/mac-os-x-installation.html

343 :341:2005/04/11(月) 19:21:04 ID:???
>>342
ありがとうございます。助かりました!

344 :134: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

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

以前のバージョンが残っているとインストールが途中で止まるとの事なので
残らず削除しましたが、やはり完全にはインストールができません。


345 :NAME IS NULL:2005/04/12(火) 15:16:51 ID:/8uXX3jw
MYSQLのテーブルをACCESSにリンク付けしたいのですが、
MYODBCの設定で各種パラメータ設定後、
test data sourceボタン押下時に、
アクセス拒否の旨のメッセージが出力されます。
どう対応していいのか分かりません。誰かエロイ人
教えてください。お願いします。

バージョンは以下のとおりです。
MYSQL:4.0.14
MYODBC:3.51.8

346 :NAME IS NULL:2005/04/12(火) 15:38:45 ID:???
そのMySQLログインユーザはODBC操作を許可してるかい?

347 :NAME IS NULL:2005/04/12(火) 16:01:47 ID:/8uXX3jw
>>346
ご返答ありがとうございます。
たぶんしてないと思います。MYSQL関連のサイトを拝見したのですが
いまいち分からなくて・・・
ODBC操作の許可ってどうやるんでしょう
なんせ初心者なので・・・



348 :NAME IS NULL:2005/04/12(火) 16:15:37 ID:???
ttp://www.google.com/search?num=50&hl=ja&q=MySQL+MyODBC&lr=lang_ja
ガンガレ

349 :NAME 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を書けば宜しいでしょうか。
考えたけど、よく分かりませんでした。
使うべき関数だけでもご教授お願いします。

350 :NAME IS NULL:2005/04/12(火) 19:09:28 ID:???
select a, min(b) from てーぶる group by a


351 :fla2404-061.wind.ne.jp/~ss.jpg:2005/04/12(火) 19:26:41 ID:???
え ぇ け っ し と る の ぉ(*´Д`)ハァハァ


うはっwwwおkwwwうえっうえっwww??


352 :NAME IS NULL:2005/04/12(火) 19:39:20 ID:yaYL03P4
345の者です。やっぱりうまくいかないです。一番最初のMYSQL起動時にユーザ名とパスワードを入力しなかったのがまずかったのでしょうか?ちなみにアンインストールの後インストールし直してもユーザ名とパスワード入力画面が出ません。今回、サーバ環境作るの初めてなもので…

353 :NAME IS NULL:2005/04/12(火) 20:58:03 ID:???
>>350
なんか出来そうな感じです、有難う御座いました。

354 :NAME IS NULL:2005/04/13(水) 02:57:35 ID:AvWiAUcm
SELECT * from tables; で出てくる順番において

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

テストデータで何千件も番号の羅列のデータがあるので、
実際に使うデータを見かけ上、2番目にもってきたいという理由です。

355 :flets-a-west-16-32.dsn.jp:2005/04/13(水) 03:31:35 ID:???
えぇけっしとるのぉ(*´Д`)ハァハァ


うはっwwwおkwwwうえっwww??


356 :NAME IS NULL:2005/04/13(水) 08:47:29 ID:???
>>354
んなもんクライアント側で適当にやれや

357 :NAME IS NULL:2005/04/13(水) 11:15:48 ID:1z1gdUmS
参照制約について質問です。
MySQLでは同一テーブル内での自己参照制約を作成することは可能でしょうか?

同一テーブル内で、子ID・親IDを持ち、親IDは子IDを必ず参照するといった
制約をつくりたいのですが、別テーブルにわけないと実現不可能でしょうか。

358 :357:2005/04/13(水) 11:40:18 ID:???
自己解決しました。
作成できますね・・・。

359 :NAME 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は・・・ってのは置いといて。


360 :354:2005/04/13(水) 19:12:25 ID:???
mysql側でできないんですか・・・。
一応phpmyadminはあるのですが、これをつかってでも無理ですか?

361 :NAME IS NULL:2005/04/13(水) 19:58:14 ID:???
>>360
order by とかつけてないなら、
それは「たまたま」二番目に出てくるだけであって、
必ず二番目に出てくる保証はない。

362 :NAME IS NULL:2005/04/13(水) 22:09:12 ID:???
>>359
ttp://bugs.mysql.com/bug.php?id=8363
じゃね?

バージョン下げれば大丈夫っぽ。


363 :NAME IS NULL:2005/04/13(水) 22:10:43 ID:???
>>360
RDBMSって基本的に順番は保持してないんだヨ。
RDBMSについて勉強してみましょう。



364 :NAME IS NULL:2005/04/13(水) 23:40:40 ID:???
固定長文字列の中から、
ある文字列を指定した桁に含むレコードを検索したいんだけど、
通常インデックスと全文インデックスどちらでやってもlike '__abc'と言う様な検索が凄く遅いんです。
文字列はスペースの区切りが無いのでmatch()against()では1件もヒットしません。
何か良い方法ってありませんか?

365 :NAME IS NULL:2005/04/14(木) 04:56:53 ID:mAlafAcg
正規化されていないテーブルを、あとから切り分けたい場合、どうしたらいいんでしょうか?
・対象のフィールドで重複しないレコードを抽出して、新たに作ったテーブルに入れていく。
・新たに出来たテーブルにauto_incrementで振られた数字をプライマリキーとし、
元のテーブルのぉ…うわああああわかんね!!

366 :359:2005/04/14(木) 08:57:12 ID:???
>>362
thx
古いやつは、utf8書くのにちゃんちやってくれなかった覚えが
あるから、とりあえず中に書いてあった3.51.11-2ってので試してみるわ。

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

>>365
漏れもわかんね。もっと詳しく

367 :359:2005/04/14(木) 10:21:27 ID:???
3.51.11-2で今のところ問題なし。
ついでにset names sjisとか書かなくても、日本語ちゃんとでるよ

368 :NAME IS NULL:2005/04/14(木) 17:50:12 ID:???
>>366
取り出す桁の位置が固定ならsubstring()使った関数インデックス作っとくとよさげやね。
それか元のテーブルの主キーと検索に必要な桁だけのテーブルを別に作っといてJOINするとか。

>>364
LIKE '_xxx' や LIKE '%xxx' みたいな式はインデックス効かないよ。

369 :NAME 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
で、あります。

370 :NAME IS NULL:2005/04/15(金) 09:27:11 ID:???
>>369
binaryにsjis突っ込んでるとか?
わざわざsjisにしたい理由がわからない

371 :NAME IS NULL:2005/04/15(金) 10:28:50 ID:E+fJ7AX5
質問させて下さい。
WinMySQLadmin1.4 にて Databasesタブに、作成したテーブルが表示されないのですが
どうすれば見れるようになるでしょうか?
何回かアンインストールを繰り返しているのですが、WinMySQLadmin画面では前の履歴が
残ってい居るようです、(my.ini 設定など)。


WindowsXP MySQL4.0.21 環境です。

372 :NAME IS NULL:2005/04/15(金) 10:56:39 ID:KrN68DWh
質問です。

MYSQLにはフィールドロックはあるのでしょうか?
Google先生に頼んでも、普通のLockTableしか見当たらず、もしかしたら無いのかとコマっております。


373 :NAME IS NULL:2005/04/15(金) 11:33:56 ID:???
age

374 :NAME IS NULL:2005/04/15(金) 11:43:43 ID:???
>>372
フィールドロックって何?
レコードロックのことなら以下で。
 SELECT … FROM … WHERE ロックしたいレコードの抽出条件 FOR UPDATE

抽出条件の対象カラムが PRIMARY KEY でないとテーブルロックになるので注意。
テーブルタイプは InnoDB でないとレコードロックは使用できなかったはず。


375 :NAME IS NULL:2005/04/15(金) 11:47:58 ID:???
Mysqlってテーブルロックだけじゃなかったでしたっけ?

376 :muro c119201.tctv.ne.jp/:2005/04/15(金) 11:58:44 ID:???
え     っ     る     ハ     
  ぇ     し     の    ァ ハ  
    け     と     ぉ     ァ 
うはっwww夢がひろがりんぐwwwwww   


377 :NAME IS NULL:2005/04/15(金) 13:07:08 ID:???
>>374
すいません、用語が間違ってました
レコードロックというんですね。Google先生でもひっかかります。
ありがとうございました。

378 :NAME IS NULL:2005/04/15(金) 13:19:27 ID:???
>>375
選択したストレージエンジンによる。

379 :NAME IS NULL:2005/04/15(金) 13:59:17 ID:???
>>378
dクス。

380 :muro YahooBB220029188143.bbtec.net/:2005/04/15(金) 14:06:58 ID:???
え     っ     る     ハ     
  ぇ     し     の    ァ ハ  
    け     と     ぉ     ァ 
うはっwww夢がひろがりんぐwwwwww   


381 :muro 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


383 :NAME IS NULL:2005/04/16(土) 10:33:21 ID:zFHNc9CJ
質問です。

フィールドの位置を移動させるにはどうすればいいのでしょうか?


384 :NAME 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 '%キーワード%'で、作成されている方、みえませんかねぇ?



386 :NAME 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を外して、解決。
はー。
ようやく、あちこちに書いてあった意味が、繋がった...
今夜は良く眠れます。

388 :NAME 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という事は知ってるんだけど。

389 :NAME IS NULL:2005/04/16(土) 22:46:53 ID:???
全文インデックスをつけたboolean検索って、emptyになる場合がそうでない場合に比べて極端に遅くない?
なぜこうなるのかちょっと不思議。

390 :NAME IS NULL:2005/04/16(土) 23:56:13 ID:zFHNc9CJ
>>384
thx
とても助かりました。



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

392 :NAME IS NULL:2005/04/17(日) 15:01:18 ID:???
>>387
R-TreeっていうのはたしかB-Treeを多次元に拡張したもののはず。

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


そういえば、senna の日本語全文検索機能を組み込んで使ってる人はいる?
会社名が怪しすぎるから試していなかったけど、ちょっとやってみるかな。

393 :NAME 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

394 :NAME 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;と同じじゃ?

395 :NAME IS NULL:2005/04/19(火) 00:28:14 ID:???
>>394
select 2 from t1 と同じ意味が正解。
今回の例では、select s1 from t2 でも同じ結果が返るけど、t1 に
複数レコードあれば、結果は異なる。
やってみれば判る。


396 :NAME IS NULL:2005/04/19(火) 05:41:45 ID:???
同様な構造のテーブルに対して行った複数のselectの結果の中から、
全てのselectの結果に含まれるカラムだけを取り出す方法ってありますか?

397 :NAME IS NULL:2005/04/19(火) 09:24:08 ID:???
>>391
> いきなり電源が落ちてしまった場合は、サーバ立ち上げ時から更新されたデータは飛んでしまうのでしょうか?
そう。

> fedora coreですが、デフォルト状態で使っていても問題ないのでしょうか?
用途による。
セッション情報なんかはいいんじゃない?
ロールバックかけるようなものを入れちゃまずいでしょ。

398 :NAME IS NULL:2005/04/19(火) 15:46:22 ID:???
>>397
MyISAMじゃなくてHEAP型のことならと一文あった方が、誤解がない

399 :NAME IS NULL:2005/04/19(火) 16:13:10 ID:???
>>391
MyISAM型はクエリを受け付けるとメモリ上の処理待ちリストに追加され、
クエリー完了結果はディスクに実際に書き込まれてからしか返されないので、
不意の電源断などでアブナイ部分は、DBMSが混んでてそのクエリが処理待ち
リストに入ってる瞬間だね。1行クエリはいいけど、ロックを掛けて複数クエリで
成立する処理をやってる場合は注意した方がいい。

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

「不意の電源断」の起こりそうな環境で大切なデータは扱うなよ


400 :397:2005/04/20(水) 00:03:49 ID:???
>>398
392氏の指摘で十分かと思いはしょりました。。

>>391
399氏の言うとおりです。
テーブルをメモリ上に持つメリットはあるけど、キーバッファや
ディスクキャッシュにメモリを割り当てた方がトータルでは良かったりするかもね。

401 :NAME IS NULL:2005/04/20(水) 06:23:16 ID:g5cEy3Sy
数値型フィールドから、ある桁のビットが立っているカラムだけを取り出す方法ってありますか?
ビット演算でもインデックスって使われるんでしょうか?

402 :NAME IS NULL:2005/04/20(水) 09:49:23 ID:???
>>401
立ってるだけでいいなら
where (a.foo * 256) != 0
とかで

403 :NAME 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
というエラーメッセージが出ます。

404 :403:2005/04/21(木) 09:54:44 ID:???
自己解決しました。

405 :NAME IS NULL:2005/04/21(木) 11:19:09 ID:???
>>404
解決したらな、解決方法を書けよ・・・

406 :NAME IS NULL:2005/04/21(木) 16:23:36 ID:???
多分、単純にMySQLでサポートしていない型だから
http://dev.mysql.com/doc/mysql/ja/mysql-spatial-datatypes.html

407 :NAME IS NULL:2005/04/21(木) 23:32:23 ID:???
--with-charset=sjis
sjisでコンパイルしたmysqlへhtmlのform(euc-jp)データをインサートすると
勝手にsjisになるんでしょうか。

408 :NAME IS NULL:2005/04/21(木) 23:44:56 ID:???
なりません。

409 :NAME IS NULL:2005/04/22(金) 00:02:02 ID:???
じゃあ意味ないじゃん

410 :NAME IS NULL:2005/04/22(金) 00:14:24 ID:???
「意味」ってなに?

411 :NAME IS NULL:2005/04/22(金) 00:31:48 ID:???
charset=sjis 指定する意味だよ。
なんで指定するの?

412 :NAME IS NULL:2005/04/22(金) 00:54:32 ID:???
>>411
MySQLサーバが中に入ってるデータをsjisのテキストとして扱うため。
指定がなけりゃ、バイナリーなんてどう扱っていいか判らんやん。

413 :NAME IS NULL:2005/04/22(金) 01:02:45 ID:???
もうちょっと突っ込んで教えてください。
selectしたときに出力されるコードがsjisになるって
ことでしょうか?

414 :NAME IS NULL:2005/04/22(金) 01:11:10 ID:???
>>413
9 各国キャラクタセットと Unicode

415 :NAME IS NULL:2005/04/22(金) 01:12:37 ID:???
--with-charset=sjis
したときには、その文字コードで返ってくるんですか?

416 :NAME IS NULL:2005/04/22(金) 01:56:43 ID:???
--with-charset=sjisつうのは、俺様がsjisとしてデータを投げ込むので
貴様(サーバ)はsjisとして扱い給えという指定。
受け渡しに際して勝手に色々と気をまわすのは俺様に対して失礼である。
また思い込みによって処理を間違える可能性もあるので貴様は他に何もするな。

ということ。



417 :NAME IS NULL:2005/04/22(金) 03:33:15 ID:???
>>416
ありがとう!
バイナリのインスコはやめたほうがいいな。と妄想

418 :NAME IS NULL:2005/04/22(金) 03:36:23 ID:L0u67L2B
そもそも文字コード変換は
DBの仕事ではない。
DBは単なるインデックスつきの箱だ。

419 :403:2005/04/22(金) 04:33:20 ID:???
>>405
>>406の指摘通り、インスタンス化できるかできないかの違いで、
つまりsurface型はそもそも作れないという事でした。

リファレンスの空間機能についての解説が少なすぎる気がする・・
未実装と書かれてる機能が使えたりするし。(contains()とか)

420 :NAME IS NULL:2005/04/22(金) 19:11:34 ID:???
>>418 なんだが、ソートせれ、とか言い始めると
単純でなくなる。

421 :NAME IS NULL:2005/04/22(金) 19:17:26 ID:???
>420
LIKE 使うときもな。
文字の切れ目がわからないと困る。


422 :NAME IS NULL:2005/04/22(金) 22:36:27 ID:???
mysqlインスコしたら
tcp 0 0 *:mysql *:* LISTEN
ここのポートリスンしてるんだがこのままでいいですか?
ここのweb鯖からのリクエストしか応じない場合は
ふさぐべき?

423 :NAME IS NULL:2005/04/22(金) 23:07:00 ID:???
>>422
skip-networking

424 :NAME IS NULL:2005/04/23(土) 06:52:57 ID:XvvE8E3e
すみません、どうしても分からないので質問させて下さい。

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

MySQLの方に全角/半角を区別しないで検索する命令があるだろうと思ってたのですが、
いざ実装しようとすると、探せど探せど情報が見付かりません…
宜しければ何方かやり方をご教示願えませんでしょうか?

425 :NAME IS NULL:2005/04/23(土) 07:02:30 ID:???
>>424
ないよ、そんな(半/全を同一視)機能。

MSのSQLサーバとかで慣れて欲しいって話があったので、
フロントで吸収するように作った事はあるけど。

426 :NAME IS NULL:2005/04/23(土) 07:08:04 ID:???
>>425
えぇ〜!そうなんですか!?
う〜ん、最初から分かってればなぁ。
とりあえずデータの方を修正するしかないですね…
しかし、まさか無いとは…orz

427 :NAME IS NULL:2005/04/23(土) 09:12:32 ID:???
>>426
そう驚くものでもないが。

曖昧一致は便利だし欲しい機能ではあるけどね。
渡辺と渡邊と渡邉を同一視してくれるとか、
1や一、壱、@あたりを同じと見なすとか、
まあRDBMSが担当すべき領域なのかは疑問だが。

428 :NAME IS NULL:2005/04/23(土) 09:43:31 ID:???
データを修正するよりも、phpで変換した方が速いんじゃない?
いや、パフォーマンスじゃなくって、手間の方が。

429 :NAME IS NULL:2005/04/23(土) 14:01:33 ID:???
PHPだと、全角半角変換も漢字コード変換も一発だったっけか

登録するデータに一貫性が無いとDBなんて・・・・


430 :NAME IS NULL:2005/04/23(土) 14:13:51 ID:w8MMk9gw
全角半角とかを統一した、検索用の
カラムかテーブル作ればいいんだよ。

431 :NAME IS NULL:2005/04/24(日) 15:59:07 ID:???
PHP+MySQLでデータをサイトに表示する以外にメールの送信にも使います。
その為にMySQLにISO-2022-JP(JIS)を使っても問題ないのでしょうか?
サイトもISO-2022-JP(JIS)で構成されているので文字化けはしていないようです。
やっている人に聞いたら「動いているから大丈夫」って事なんですが、
使用する文字コードはEUCかUnicode、
あるいはSJISぐらいしか聞いたこと無いので気になってしまいます。


432 :NAME IS NULL:2005/04/24(日) 16:51:36 ID:???
>>431
データベースをujisかutf8に設定して、jisでデータを入れたいって話かな。
ただ単純に格納するだけならujis/utf8の設定で、jisデータを入れることは何ら問題ない。
(MySQL4.1以降はエンコードの無用な変換が掛からないように設定等に注意)

先にも色々出ているが、それを日本語のデータとしてDBMSの機能で色々検索など掛けたい場合には駄目。
データベースにあったエンコードに変換して格納、出力に合わせて、メールならjis、
ケータイ向けならsjisなどとフロント側で変換するのが普通。

433 :NAME IS NULL:2005/04/24(日) 16:56:54 ID:???
あと、ISO-2022-JPで扱えない文字(○囲み数字とか、半角カナとか)が
許されているキャラクターセットからの変換の場合、
その辺を代替または削除する処理もしておく。

434 :NAME IS NULL:2005/04/24(日) 17:27:18 ID:???
詳しくありがとうございます。
今のところは格納しているだけなんですが、
やはりこれから検索などをかけたくなったときに困るので
言われているように格納はujis等にして
必要に応じて変換して使用するようにしてみます。

半角カナや機種依存文字の問題もありました。
本当に有り難うございます。

435 :NAME 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 プロセスを途中で強制終了しました。
とエラーが表示されます。
解決方法はありますか?よろしくお願いします。

436 :NAME IS NULL:2005/04/25(月) 18:26:01 ID:???
Oracle触ったことはありますがMySQLは初心者です。
MySQLのバックアップ・リストアについて調べています。
MySQLで稼働中にバックアップをとる方法としてはmysqldumpが提供されていますが、mysqldumpで取得したダンプは参照整合性は保障されているのでしょうか?
複数のテーブルにまたがる更新トランザクション中にmysqldumpが走ると整合性が保障されなくなるような気がします。
メンテナンス時間にアプリケーション側でWrite Lockするような機構を用意するという設計思想なのでしょうか?


437 :NAME IS NULL:2005/04/25(月) 20:03:59 ID:???
ストアドプロシージャがサポートされるのは、
3系、4系、5系、どのシリーズから?

438 :NAME IS NULL:2005/04/25(月) 20:43:50 ID:???
>>436
mysqldump --help

mysqlhotcopyもあるよ

439 :NAME IS NULL:2005/04/25(月) 22:47:48 ID:???
>>437
ストアドは5じゃなかった?


440 :NAME IS NULL:2005/04/26(火) 00:10:49 ID:???
>>437
ホレ
http://www.atmarkit.co.jp/flinux/special/mysql5/mysql5b.html

441 :NAME IS NULL:2005/04/26(火) 01:46:56 ID:???
>>436
整合性は保障されないのではないでしょうか。
うちの場合は、複数台レプリケーションさせて、
最後の1台だけ、cronでslave stopしてから、
mysqldumpしています。

ダンプ後にslave startすれば、数分後には全台同期します。
やっぱりこれが非同期レプリケーションの利点ですね。

442 :NAME IS NULL:2005/04/26(火) 02:22:12 ID:???
>>441
オライリにそれについてのいい訳書があるよ

443 :NAME IS NULL:2005/04/26(火) 04:12:27 ID:???
>>435
エラーログには何か出てないの?


444 :NAME IS NULL:2005/04/26(火) 16:58:20 ID:???
>>435
Windowsなら参考までに >>339

445 :NAME 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


446 :NAME IS NULL:2005/04/26(火) 17:54:36 ID:???
>>445
select userid from table where groupid in (select groupid from table where userid=1)


447 :NAME IS NULL:2005/04/26(火) 17:58:32 ID:???
>>445
2と3を抽出したいって事か?

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



448 :NAME IS NULL:2005/04/26(火) 18:00:11 ID:???
ネストできたっけ?4.0系で

449 :NAME IS NULL:2005/04/26(火) 18:01:45 ID:???
>>447
userid1と同じグループに属する全てのuseridを抽出でしょ?

450 :NAME 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

451 :445: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)

452 :445: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はあってもなくても。)

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

454 :436:2005/04/26(火) 23:31:14 ID:???
>438,441

どうもありがとうございました。ただいまmysqlsnapshotというのも調べているところです。

455 :NAME IS NULL:2005/04/26(火) 23:33:21 ID:???
DISTINCT ?

456 :NAME 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?)

457 :NAME IS NULL:2005/04/27(水) 00:40:21 ID:???
現在の安定系は4.0だと思うのですが
4.1の話もちらほら見かけます
4.0と4.1のどちらが良く使われているのでしょうか?
phpでmysqliが使えるようになるので
気になっています

458 :NAME IS NULL:2005/04/27(水) 01:20:56 ID:???
>>458 RDBならできます。mysql3でも。サブクエリいりません。
っていうかもうちょっと勉強しろよ。「結合」か「join」で検索しる。

459 :NAME 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の区分け。

460 :NAME IS NULL:2005/04/27(水) 10:43:17 ID:???
mysql4でポート番号を3306,3307,3308の3つで
1台のサーバで同時起動って可能でしょうか。

461 :NAME IS NULL:2005/04/27(水) 12:25:12 ID:???
>>460
そこでいう"サーバ"ってのはプロセスのことか?
それともハードウェアのことか?

462 :NAME IS NULL:2005/04/27(水) 12:35:20 ID:???
ああ、台って書いてあるな。

可能。mysqldを複数動かしてください。

463 :456:2005/04/27(水) 15:23:43 ID:fOa9uM/D
>>458
left joinってやつですね。
見てみました。ちょっとSQL文が複雑に見えますが勉強してみます。

サブクエリってのは、副問い合わせと同じ意味でしょうか?

464 :NAME IS NULL:2005/04/27(水) 16:48:36 ID:M5WGj5ur ?
同じグループから5件ずつ取り出したいのですが、一度のクエリで抽出可能なのでしょうか?

今まではグループ分けしたものを抽出してから
それをループでグループ毎にクエリして、抽出してましたが
これって効率悪いですよね?

465 :localhost: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



466 :NAME IS NULL:2005/04/27(水) 19:27:42 ID:???
普通にPHPの中でその条件Aとか条件BをIF文とかで分岐させて、
その中で、サーバAかBかを指定して接続すれば良いじゃん。

467 :NAME IS NULL:2005/04/28(木) 01:44:09 ID:???
>>465
各サーバが同期した負荷分散ならば、
mysql_connectのホストを乱数で切り替えたりするんだけど。

単にテーブルが散らばってるだけなら、
とてもメンテナンスしづらく思えます。


468 :NAME 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を選んだけど無理ぽ。

469 :NAME 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 みたいです。

470 :NAME IS NULL:2005/04/29(金) 01:23:03 ID:???
mysqlとかんけいないじゃん

471 :NAME IS NULL:2005/04/30(土) 08:19:21 ID:???
すいません、mysqlをインスコしたのですが
具体的にどういうときに使ったら良いものなんでしょうか?

explorer代わりに使えるのでしょうか?
情報処理試験に受かりたいので、使いこなせるようになりたいのですが

472 :NAME IS NULL:2005/04/30(土) 09:06:43 ID:???
>>471
>>1

473 :NAME IS NULL:2005/04/30(土) 09:56:39 ID:???
>explorer代わりに使える
1.ファイラーとして
2.IEのようなブラウザとして
使いこなしまくりだな。


474 :NAME IS NULL:2005/04/30(土) 11:16:34 ID:???
>>471みたいなのが出てきたのも、やっぱりGWのせい? w

475 :NAME IS NULL:2005/04/30(土) 13:30:06 ID:???
>>471
まず自分の職業を替えるといいよ


476 :NAME IS NULL:2005/04/30(土) 14:04:41 ID:???
おまいら、つられんなよ

477 :NAME IS NULL:2005/04/30(土) 15:24:18 ID:???
大漁ですね

478 :NAME IS NULL:2005/05/01(日) 08:46:53 ID:EM4XnQsC
MySQLのバージョン3.23.57を使ってるんですが、
NULLを許可してるにも関わらず、INTのカラムにNULLを入れると0になります・・(デフォはNULLに設定)

今使ってるバージョンだとNULLは入らないんでしょうか?
バージョン4以降ならNULLになるんでしょうか?
教えてください。

479 :NAME IS NULL:2005/05/01(日) 10:07:31 ID:???
>>478
NULLは入ります。

480 :478:2005/05/01(日) 17:30:44 ID:EM4XnQsC
くわぁぁ〜! なんで出来ないんだろ。
$aaa = NULL で、$aaaを定義してから、それをINSERTしたんですが・・それが方法が駄目なのでしょうかねぇ。
もうちょい試してみるかなぁ
>>479 ありがとございました〜

481 :NAME IS NULL:2005/05/01(日) 18:00:53 ID:???
>>480
$aaa って PHP でやってるの?
まずは、普通に insert into テーブル名 (カラム名) values(NULL) とやってみて
切り分けてみたら?

482 :480:2005/05/01(日) 19:22:08 ID:EM4XnQsC
>>481
PHPでやってます。
ifで分岐させて、有効な値が入っている時だけクエリを送信するように書き直しました。
いっこのクエリでサラっと書ければよかったんですけどね・・ とりあえず解消です。

values(NULL)は、これから試してみます。ありがとうございました〜

483 :NAME 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)

ってなってうまく行くんじゃないのかな?
テストしてないんであれだが。

484 :NAME IS NULL:2005/05/02(月) 01:50:58 ID:9W9A6uDh
Windowsには、MySQL-Frontっていう、便利な管理ツールがありますが、
Linux上に、こういうアプリケーションってありますか??

485 :NAME IS NULL:2005/05/02(月) 01:59:48 ID:???
mysqladminなりなんなり使えばいい

486 :NAME IS NULL:2005/05/02(月) 02:12:34 ID:???
>>484
>>2
>>5

487 :NAME IS NULL:2005/05/02(月) 13:55:55 ID:SbYB5t47 ?
id / group / name
1    a     山田
2    a     内藤
3    b     大石
4    b     高田
5    a     馬場
6    b     稲田
7    a     大隈
8    c     岩田
9    b     山口

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

1回のクエリでは不可でしょうか?

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

同一サーバー内の別プロセスからのアクセスにおいては、
READ、WRITEのロックも動いているようなんですが、
別のサーバーからREAD、WRITEロックされたテーブルに対して、
書き込み出来るんですが…。

489 :484:2005/05/03(火) 08:53:48 ID:U+cWgmJP
MySQLCCいいですね。使いやすい。 Thanks.

490 :NAME 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時にデータベース名がかぶってしまうと思うのですが、
どのようにすればよいのでしょうか?

492 :NAME 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 出来てしまいます。
テーブルの作成だけは許可して、データベースの作成は不許可、
というようなことは出来ますでしょうか?

494 :NAME IS NULL:2005/05/04(水) 18:52:32 ID:???
>>491
DB名にユーザプリフィクスを付けて管理する。username_dbnameとかね。
標準のI/Fを利用するならパッチあてないと駄目だよ。

普通は「複数のユーザにcreate, drop権限を付与」はしないで、
専用の管理I/Fを設けてやってそのI/Fを利用してのみcreate/dropが出来るようにする。


495 :NAME IS NULL:2005/05/04(水) 19:03:17 ID:???
>>493
できる。権限のレベルと種類を理解して設定汁
http://dev.mysql.com/doc/mysql/ja/grant.html

496 :NAME IS NULL:2005/05/04(水) 19:05:51 ID:???
>>493
grant usage on *.* to [ユーザー名]@localhost identified by '[パスワード]';
grant all on [ユーザー名].* to [ユーザー名]@localhost;

497 :NAME IS NULL:2005/05/04(水) 22:06:58 ID:Nf5R0i9b
PerlでMySQLを操作することって可能ですか?
PerlのDBIとMySQLとどっちがいいのでしょうか?

498 :NAME IS NULL:2005/05/04(水) 22:14:42 ID:zCPBHyvq
http://ex10.2ch.net/test/read.cgi/news4vip/1115145809/
中国2ch攻撃中!田代祭りしてるからみんなカモン!


499 :NAME IS NULL:2005/05/04(水) 22:44:01 ID:???
>>497
PerlのDBIがどういうものか理解してからきてください。
それはCGIとPHPってどっちがいいのとか、意味不明な質問といっしょ。
それともDBI(+DBD::MySQL)とNet::MySQLの比較?

500 :NAME IS NULL:2005/05/05(木) 22:23:00 ID:???
perl DBIとC APIについて、MySQLへのqueryの速度比較した人いますか?
Windows上だとVCがないとC APIを使ったプログラムをcompileできないようですが…。

501 :NAME IS NULL:2005/05/05(木) 23:13:10 ID:???
なぜpearが選択肢にないんだ?

502 :NAME IS NULL:2005/05/05(木) 23:30:27 ID:???
>>500
いやだからDBI+DBD::MySQL)とDBI+DBD::MySQLPPのどっちよ。
前者はlibmycqlclient(C API)のラッパーで、後者はPerlPortだから
どっちも純粋なC APIよりは、そりゃ速度は遅いよ。

503 :NAME IS NULL:2005/05/06(金) 05:58:46 ID:???
Cの方が速いにきまってんじゃん

504 :NAME 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の問題なのでしょうか。

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







505 :NAME IS NULL:2005/05/06(金) 12:09:36 ID:???
MyODBC3.51(Linux)では特に落ちるなんてことは無かったから、
MyODBC3.51(Windows)で使ってるライブラリの問題かなんかだと思うよ。

506 :NAME IS NULL:2005/05/06(金) 12:10:26 ID:???
あとWindowsのODBCマネージャか。

507 :& ◆kgp6eKXx6c :2005/05/06(金) 14:43:25 ID:Jj9pZQuP
>>495
>>496

遅くなりましたが、ちゃんと設定出来ました。
ありがとうございました。

508 :NAME IS NULL:2005/05/06(金) 16:45:26 ID:???
>>500
まあCの方が速いのは分かって聞いてるんだろうけど、定量的に比較したデータは
見たこと無いな。

509 ::2005/05/07(土) 00:01:03 ID:???
postfix のデータベースにMySQLを利用したいのだけど、ここをみれば、
構築方法がわかるって言うサイトありますか?google 利用したのですが、いまいちでした。

510 :NAME IS NULL:2005/05/07(土) 05:48:15 ID:???
ttp://kirb.insanegenius.net/postfix.html で十分だと思うけど

511 :NAME IS NULL:2005/05/07(土) 07:52:42 ID:???
Thanks for res,

クーリエ imapd ということですが、サイラスあいまっぷディーはつかえないでしょうか?
というのは、後者はカーネギーメロンで開発されており、非常に信頼が高いからです。

512 :NAME IS NULL:2005/05/07(土) 08:16:45 ID:???
511はかなり頭が悪い

513 :NAME IS NULL:2005/05/07(土) 23:36:56 ID:hZIl0ldU
テーブル設計について質問です。
例えばレンタル掲示板を作る際、各掲示板ごとにテーブルを作るのか、
それとも全掲示板の管理者・パス・email等をまとめて保持するテーブルと
全投稿記事の記事・投稿者・パス・所属掲示板等をまとめて保持するテーブルの二つのみにするか
どちらが良いのでしょうか?
リファレンスによるとテーブルの乱立は好ましくないと言う様な記載があるし、
外部キーで関係付けるのも書き込み処理などのオーバヘッドになるようです。
しかし投稿記事に所属掲示板情報を付けるというのは、HDDを無駄に使うし
ある掲示板を開いた時にその掲示板IDを持つ記事を全投稿記事から検索するという手間が気になります。

514 :NAME IS NULL:2005/05/08(日) 00:08:58 ID:???
PHPとMYSQLを理解すれば、中規模級(教えてGOO程度)の
サイトを一人で作成することは可能でしょうか?サーバー知識等は
除いてお願いします。
また、無理かなというときは、できれば具体的な理由もお願いします。

515 :NAME IS NULL:2005/05/08(日) 00:29:59 ID:???
>>514
可能。無理だとしたらPHP、MySQLを"理解していない"か
そもそもプログラムで使うアルゴリズムを考える力がないかのどちらか。


516 :NAME IS NULL:2005/05/08(日) 00:39:33 ID:???
>>514
機能的には可能だろうけど、goo並みとなると一人では単純に仕事量がたいへんかな。

それから、負荷軽減のためにメモリ上にコンテンツを保持しなきゃならんとか、サーバ
運用条件からのプログラムへの要求は常にあるからサーバー知識がないと難しいな。
そのへんの知識は切り離せない。

517 :NAME IS NULL:2005/05/08(日) 08:13:02 ID:???
>>513
テーブル設計はデータの冗長性を出来るだけ少なくする正規化と
処理を出来るだけ軽くする為の冗長化のせめぎ合いで行う物です。

ご自分で色々考えられてるみたいですから、結論も自分でだして行動するのが
(失敗しても上手くいっても)自分自身の血肉になると思いますからやってみるべし


518 :NAME IS NULL:2005/05/08(日) 14:19:28 ID:DKFDRvPO
create database でデータベースを作るとき、
文字コードをUTF-8に指定するにはどうしたらいいんでしょうか。

519 :NAME IS NULL:2005/05/08(日) 15:07:22 ID:???
>>518
少しでも調べてみたのかな…
create database テーブル名 character set utf8;

520 :NAME IS NULL:2005/05/08(日) 15:09:38 ID:???
ttp://dev.mysql.com/doc/mysql/ja/charset-database.html

マニュアルに載ってるから調べてないんじゃない?

521 :NAME IS NULL:2005/05/08(日) 15:28:28 ID:???
そもそもUFT-8が指定できるMySQLかどうかも怪しい。

522 :NAME 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文はこれになります。ご指摘いただければ助かります。

523 :NAME IS NULL:2005/05/08(日) 17:17:34 ID:???
>>522
ぱっと気づいた部分だと、MySQL 3.23.32なら
ENGINE=MyISAMじゃなくてTYPE=MyISAM
今後のことを考えたらENGINEとすべきだけどね。
あと、varchar(2)なのにUNSIGNEDもオカシイよね。
文字型に正負ってないから。



524 :523:2005/05/08(日) 17:18:32 ID:???
ああ、varchar(2)でAUTO_INCREMENTも。

525 :522: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のほうはどうやっていいかわからずこんな形にしています。
最初に一レコードが作成されたときにだけ日時を書き込むというのは
どんなやりかたがあるでしょうか?

526 :NAME 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と書こう)

527 :NAME 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

528 :NAME IS NULL:2005/05/08(日) 21:33:38 ID:???
>>527
自動登録は先に定義されたカラムかな。
http://dev.mysql.com/doc/mysql/ja/datetime.html

529 :NAME 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


530 :NAME IS NULL:2005/05/09(月) 00:48:10 ID:???
>>529
BLOBで扱うのはBinaryそのものじゃなくて、Binary文字列だし。
Base64とか。


531 :NAME IS NULL:2005/05/09(月) 01:51:27 ID:???
>>530
ご返答ありがとうございます。
つまり、PHPでbinaryデータをBLOBにinsertするには、いったん文字列に
変換してやらないといけないということですね。
binaryデータをそのままinsertするにはCとかのプログラムでinsertしてやらないと
いけないというわけですね。(どう組むのか未調査ですが)


532 :531:2005/05/09(月) 02:10:15 ID:???
>>530
追加のお礼。base64でエンコードして、取り出すときにデコードしてやると、
JPEGがちゃんと絵で見られました。PDFもOKでした。
ヒントをありがとうございました。

533 :NAME IS NULL:2005/05/09(月) 05:42:10 ID:uY7+0bet
サイトのアクセスログを蓄積しているんですが、ただ単にログを追加していってたら、
レコードが100万件を超えてしまいました。このままじゃどうしようもないと思うんですが、
こういう肥大化し続けるモノの場合、設計というか運用というか、どうやって行ったらいいものでしょうか?

月ごとにテーブルを分けていけばいいとか、何万件ごとに分けた方がいいとか、色々あると思いますが、
皆さんならどうしますか?

534 :NAME 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

という風になります。

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

となるとアクセス数にもよるけど月/周/日ごとにテーブルを分けるとか
ログを取る条件をチューニングするとかぐらいしか思いつかないなあ。
他の人はどうやってるんだろ?

536 :NAME IS NULL:2005/05/09(月) 07:25:43 ID:???
MERGE テーブルを使うとうまくいくかも

こんな風に
http://naoya.dyndns.org/~naoya/mt/archives/001565.html

537 :NAME 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のクエリの速度 > テーブル・インデックス サイズ > データ更新 の順番で)

538 :NAME 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が使えるのかもチェックしといた方が良い。
(それまで入力したエンコードそのままだった)

539 :NAME IS NULL:2005/05/10(火) 06:48:57 ID:???
どうもありがとうございました。
ファイルシステムって何が一番いいんでしょうか。
ReiserFSがやっぱり最強なんでしょうか。

540 :NAME IS NULL:2005/05/10(火) 07:36:21 ID:???
UFS2が最強

541 :NAME IS NULL:2005/05/10(火) 07:56:17 ID:???
>>539
最強だとは思わないけど、ReiserFS使ってる。
ファイルが大量だと旧式なファイルシステムとは格段の差がでる。
MySQLで使うんだったら、ファイルが沢山出来るわけでもないので
余り拘らなくてもOK。

542 :NAME 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

何か原因が解れば教えてもらえないでしょうか?

543 :NAME IS NULL:2005/05/10(火) 19:20:10 ID:???
バイナリ使え

544 :NAME 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.

545 :NAME IS NULL:2005/05/10(火) 20:15:56 ID:???
MySQLって1つのファイルに1つのテーブルを入れるんですか?

546 :NAME IS NULL:2005/05/10(火) 20:58:36 ID:???
>>545
使用するデータベースエンジンによる。

547 :NAME IS NULL:2005/05/10(火) 21:58:41 ID:???
MYISAMを使っています。

548 :NAME IS NULL:2005/05/10(火) 22:23:58 ID:???
予定では200GB程度のテーブルを使います。
私が持っている百万枚のエロ画像をデータベース化したいのです。

549 :NAME IS NULL:2005/05/10(火) 22:29:21 ID:???
もしこの200GBのテーブルが1つのファイルにまとめられてしまうとすると、
さすがにMySQLでも処理が追いつかないと思うのです。
MySQLというか、OS(Linux)がこんな大きなファイルを使えるのかどうか心配です。
私が持っている本(実践ハイパフォーマンスMySQL)には、
60GBぐらいで急激に処理が遅くなると書いてあります。
200GBのテーブルを扱う最良の方法を教えてください。
本当はMySQL+Linuxがいいのですが、これでは逆立ちしても無理というのであれば
他の環境でもかまいmせん。

550 :NAME IS NULL:2005/05/10(火) 22:53:26 ID:???
>>549
画像データをテーブルにツッコム必要はないと思うけど。
ま、InnoDB使えば?

ttp://dev.mysql.com/doc/mysql/en/table-size.html

551 :NAME IS NULL:2005/05/10(火) 23:17:38 ID:???
セキュリティーの観点から全部の画像をMySQLに格納している。
テーブルが壊れたら財産を失うので必死にMySQLを学んでいる。

552 :NAME IS NULL:2005/05/11(水) 00:02:51 ID:???
>>547
じゃあ、そう。というか1テーブルに対して3ファイル(frm/MYI/MYD)

>>551
司法の手によるもの限定か?<セキュリティ
(嫁限定かも知れん)

553 :NAME IS NULL:2005/05/13(金) 21:05:37 ID:rq9Q345H
質問です。

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

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

PHPスレで質問するべきだったかな…


554 :NAME IS NULL:2005/05/13(金) 21:13:02 ID:???
>>553
まぁ、まずは画像ファイルの格納方法から間違ってる。

一般的にはPHP(Javaとかでもそうだけど)でBLOB型にデータを登録するには、
BASE64でエンコードして登録する。

555 :NAME 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スレで。

556 :NAME IS NULL:2005/05/13(金) 21:34:18 ID:???
>>555
>header("Content-type: " . 'image/jpg');
>echo 変数

正確には
header("Content-Type: image/jpeg") ;
imagejpeg(変数);


557 :NAME IS NULL:2005/05/13(金) 21:43:30 ID:???
>>556
嘘吐くんでない。
imagejpegの引数はGDのイメージリソースだよ。
バイナリ(PHP内部では文字列型扱い)を変数に格納してるならechoでOK.

558 :NAME IS NULL:2005/05/13(金) 22:06:21 ID:???
>>553
"ほにゃらら"にPHPスクリプトのファイル名を指定して、
そのPHPスクリプトにMySQLからデータを取り出して、
画像フォーマットのヘッダーとデータを吐くコードを書く。
<img src="imgread.php?img=001">とかなってるヤツがそう。

559 :553:2005/05/13(金) 22:27:53 ID:???
>>554
なるほど。
とても参考になりました。
ちらちら見てたサイトに書いてあったものをそのまま使っていました。

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

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

スレ違いで申し訳ありませんでしたm(_ _)m


560 :545:2005/05/14(土) 03:37:58 ID:???
私も画像データをMySQLに入れたいのですが、
BASE64ではなく、バイナリのまま入れられないでしょうか?
100万枚近くあるので、できるだけ容量を節約したいんです。
またBASE64のエンコード・デコードにCPUを使いますし。

561 :NAME IS NULL:2005/05/14(土) 08:06:28 ID:???
>>560
普通に突っ込めるなら、みんな普通に突っ込んでると思わない?
なんでBASE64でエンコードするのか、理由を考えると良いよ。

562 :NAME IS NULL:2005/05/14(土) 12:44:05 ID:???
普通に突っ込めるけどね>バイナリ
や、PHPのことは良くシランが。

563 :NAME IS NULL:2005/05/14(土) 13:45:14 ID:???
>>562
MySQLのBLOB型を理解していない奴の典型的な例。

564 :NAME IS NULL:2005/05/14(土) 14:25:35 ID:???
Postgresの
psql < DB名 〜.sql
はmySQLではどのようにやればよいのでしょうか。

ご教示いただけますと幸いです。


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

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

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

ちなみに、DB指定したいなら、SQL書いてあるファイルの先頭に use データベース名; をつける。

566 :NAME IS NULL:2005/05/14(土) 17:36:32 ID:???
>>563
PHPはよくしらぬが、というあたりからして
Javaなら少なくともそのままバイナリつっこむから
MySQLとしてなら問題ない発言では?


567 :NAME IS NULL:2005/05/14(土) 17:57:03 ID:???
>>560
BASE64使うのは、BLOBで扱う際にエスケープするのが
楽だから使ってるだけで、本当に必要なのは生のバイナリーを
"バイナリー文字列"にエスケープしてやること。
BASE64はスペース効率でみると余り良くないからね。

Javaでバイナリー突っ込めるって話だけど、JDBCが生のバイナリーを
受け付けるだけで、MySQLのBLOBが受け付けるのはバイナリー文字列だから
必要なエスケープを中の人がやってくれている。貴方が使う言語やI/F、
ライブラリで、その辺の"楽さ"は変わってくるから、あとの環境固有のことは
自分で調べてください。

568 :NAME IS NULL:2005/05/14(土) 18:11:23 ID:???
>>567
ドライバの中のソースまで見ろというのは酷な話だろ。
APIレベルで生バイナリなら問題ないのでは?

569 :NAME IS NULL:2005/05/14(土) 18:17:00 ID:???
バージョン3.23.58から4系にバージョンアップしたいのですが
公式マニュアル読んでいたら頭がこんがらがってきました。
データはそのままで、バージョンアップする方法を教えてもらえないですか。
もしくはわかりやすいサイトを教えてください…。
あと、鯖管理ソフトのPlesk7.5が入っています。

570 :NAME IS NULL:2005/05/14(土) 18:46:39 ID:???
3.23.58から4.0系なら、Plesk7.5のimport/export掛ければいける。
つかPHPMyAdminが入ってるんでないか>Plesk

571 :569:2005/05/14(土) 19:11:17 ID:???
>>570
ありがとうございます!
ちょっとPleskをいじってみます。

572 :NAME IS NULL:2005/05/14(土) 23:14:22 ID:???
ちょっと待て、SQLレベルの話をしてるのか?
DBにバイナリで登録する話をしてるんだと思ってたが。
バイナリ文字列にエスケープというよりは
一部の特殊文字をエスケープってのが正しいと思うが。
そうじゃなきゃEUC-JPが通ったりしないべさ。


573 :NAME IS NULL:2005/05/14(土) 23:49:14 ID:???
>>572
EUC-JPも文字列だが。
7/8bitの観点からだと普通にMySQLは8bit通るし。
7/8bitが関係するBASE64の話が混じってるから
判りづらくなってるのは確かだけど。

574 :NAME IS NULL:2005/05/15(日) 00:11:52 ID:???
なんでBASE64にするのか理解でき兼る

575 :NAME IS NULL:2005/05/15(日) 01:08:10 ID:???
>>574
エスケープするのが簡単だから。

576 :NAME 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);

が出てしまうのですがどなたか解決策ご存知無いでしょうか?

577 :NAME IS NULL:2005/05/15(日) 15:16:30 ID:???
java.util.Dateだから
java.sql.Dateと勘違いしてないかね?


578 :NAME IS NULL:2005/05/15(日) 15:22:05 ID:???
javaスレ池

579 :NAME IS NULL:2005/05/15(日) 15:23:33 ID:???
Calendarから取り出すjava.util.Date型でSELECTしたいんですが、
それではできないんでしょうか?
またはキャストできるとか。

580 :NAME IS NULL:2005/05/15(日) 15:24:35 ID:???
javaでパッケージとかクラスをインポートするときに
java.util.*とかjava.sql.*とか指定してないか?
それは現場では絶対にダメ、日曜プログラマなら気にしないかもしれんが
普通はEclipseとかのコード支援使ってクラス単位で
import java.util.Date
というふうにひとつのクラスごとインポートしていく

581 :NAME IS NULL:2005/05/15(日) 15:34:25 ID:???
importはたしかに
import java.util.*;
import java.sql.*;
とやっていますが、変数宣言時に
java.util.Date day = cal.getTime();
としているので多分大丈夫だと思うのですが、駄目なんでしょうか?
どちらにしても、>>580さんの意見は参考になりました。
ありがとうございます。

582 :NAME IS NULL:2005/05/15(日) 17:18:15 ID:???
>>581
だからutilじゃダメなんだって


583 :NAME IS NULL:2005/05/15(日) 17:22:18 ID:???
java.util.DateはJavaで扱う一般の日付

JDBCで使うのはjava.sql.Date

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

引数が違うのをコンパイルすればエラーが出るのは当たり前

584 :NAME IS NULL:2005/05/15(日) 17:24:16 ID:???
>>580
そんなのは解決にならんだろ
JDBCでこの辺触っていれば
おそらくJava.sql.Dateとjava.util.Dateが同一の場所にでてくる
どのみち完全修飾名が必須さ


585 :NAME IS NULL:2005/05/15(日) 18:10:30 ID:???
>>583
すいません、java使い始めて日が浅いもので。
ちなみにキャストしてjava.util.Date型のオブジェクトを
java.sql.Date型に変換したりってできますか?

586 :surferome:2005/05/15(日) 18:42:47 ID:???
mysqlccについての質問なのですが、mysqlを4.0->4.1に変更したら
mysqlccのレコード数の欄が、FixedとかDynamicだとか表示されるように
なり、正しくレコード数が表示されなくなりました。
レコード数を正しく表示するための何か方法はないでしょうか?


587 :NAME IS NULL:2005/05/15(日) 18:57:32 ID:???
キャストって魔法の変換だと思ってるの?
その型を持っている場合だけできることだよ

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

ま、まずはjava.sql.Dateのコンストラクタみてみそ


588 :564:2005/05/15(日) 19:13:05 ID:???
>>565
遅ればせながら、御礼申し上げます。

本当に本当に助かりました。
ご教示有難うございました。

589 :NAME 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を書いています。
なぜ化けるのか分かる方いましたら教えてください。

590 :NAME 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より多き接続を受け付けても余裕だよー
とか試した方いらっしゃらないでしょうか?

長文失礼しました。

591 :589: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になるのでしょうか?

592 :NAME IS NULL:2005/05/15(日) 21:54:41 ID:???
>>591
アプリでデータベース接続した後に以下を実行すればよいかも。
set names utf8



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

>>592
それやってみましたが、変わりませんでした。

594 :589:2005/05/15(日) 23:00:41 ID:???
もしかしたらmysqlではなく、rubyの方に問題があるんでしょうか?

595 :NAME IS NULL:2005/05/15(日) 23:41:37 ID:???
CからMY SQL使うのってインストールフォルダ内のライブラリとdllをリンクすればいいんですよね?

596 :NAME IS NULL:2005/05/15(日) 23:49:59 ID:???
Postgresのようにcreatedb -E EUC_JPと文字コードを
明示指定してDB作成する方法はMySQLではどのように
行うのでしょうか

597 :KUR:2005/05/16(月) 00:47:49 ID:YS2d2CsV
TEXT型に、load data infileの様な感じで読み込むにはどうすればよいか教えてくださいまんせか。
例えば、varchar(20),textの2フィールドがあったとき、CSVから読み込みたい。
(ML logでも、load_fileやtext型で探しましたがうまく見つけられなかった)


598 :NAME IS NULL:2005/05/16(月) 04:11:52 ID:???
>>589
クライアントプログラムはデフォルトではmy.cnfを読まないよ。

599 :NAME IS NULL:2005/05/16(月) 04:13:14 ID:???
>>596
create database hogehoge character set ujis;

600 :NAME IS NULL:2005/05/16(月) 04:14:45 ID:???
>>597
varchar でも text でも変わらん。

601 :NAME IS NULL:2005/05/16(月) 11:50:47 ID:???
ITmedia エンタープライズ
青野氏激白! サイボウズがMySQLを採用した理由
http://www.itmedia.co.jp/enterprise/articles/0505/12/news007.html

602 :NAME IS NULL:2005/05/16(月) 11:52:11 ID:???
つか12日に記事だったか...気が付かなかった

603 :NAME 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"



今現在は、順調に稼動していますので、
すぐに、エラー状況の再現出来ません。
今晩にでも、もう一度再現させてみよう
かと思っていますが・・・。

604 :NAME IS NULL:2005/05/16(月) 15:11:42 ID:???
>>603
修復が完全でないとか?(コワー

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

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

あと、myisamchk -dv database/table_name の出力もカクニーン。


605 :603: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

606 :NAME IS NULL:2005/05/17(火) 17:31:36 ID:???
まともな値っぽいね〜。むむう


607 :NAME IS NULL:2005/05/18(水) 02:35:24 ID:???
経験から言って、データファイル自体がぶっ壊れたことはあんまりない。
インデックスファイルが壊れることは、何度かあったけど。

なので、大体、optimize table か、myisamchk -r で復旧できてます。
まぁ、でも、面倒な場合は、レプリケーションしてる他のマシンから
該当ファイルだけコピって終わりって感じです。

608 :NAME IS NULL:2005/05/18(水) 03:34:33 ID:???
レプリケーションよりスナップショットの方が省容量な気がする

609 :NAME IS NULL:2005/05/18(水) 03:48:14 ID:???
MySQLでは、Postgresのage関数のようなものはないのでしょうか。
もしも何かやり方があれば教えてください。お願いします。

610 :NAME IS NULL:2005/05/18(水) 06:50:21 ID:???
>>609
TIMEDIFF()

611 :NAME IS NULL:2005/05/18(水) 10:11:36 ID:???
sage()関数の代わりはないですかね

612 :NAME IS NULL:2005/05/20(金) 02:56:25 ID:???
mysqlっていうユーザ設定情報が入った、databaseを
消してしまったんだが、このmysql自体を再インストしたんだが、
このdatabaseが作られない。 どうなってんだー 

613 :NAME IS NULL:2005/05/20(金) 03:44:22 ID:???
>>612
mysql_install_dbしなおしたら?
http://dev.mysql.com/doc/mysql/ja/mysql-install-db.html

614 :NAME 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;
}
}

日本語文字がすべて??となってしまいます。

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

まずDBのキャラクタセットになにを使ってるかだな


616 :NAME 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でユニークになってます。

宜しくお願いいたします。

617 :NAME IS NULL:2005/05/21(土) 17:31:55 ID:moxCiqUf
>>615
DBのキャラクタセットも変えているんですけどだめです…
JDBC新しすぎるのかなぁ。

618 :NAME IS NULL:2005/05/21(土) 18:42:52 ID:???
うちもその環境ですが、
文字化けしません。

SHOW VARIABLE
のエンコードのとこさらしてみて

619 :NAME 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に全部書き足さないとだめ??

620 :NAME IS NULL:2005/05/21(土) 21:28:41 ID:xh2ntbKK
MySQL AB 配布のバイナリは、latin1 が標準です。
直すには
 1.サーバーに接続した後にすぐ、"SET NAMES キャラクターセット名" という SQL 文を実行
 2.libmysql.dll, libmysqlclient のコンパイルし直す
 3.キャラクターセットをbinaryにする
ぐらいかな。


621 :NAME 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

622 :NAME IS NULL:2005/05/22(日) 00:31:50 ID:???
>>620
>2.libmysql.dll, libmysqlclient のコンパイルし直す
Connector/Jの場合はlibmysql, libmysqlclientを利用しない実装だから関係しない。

623 :NAME IS NULL:2005/05/22(日) 01:12:11 ID:???
>>621
そのURLだと4.1は機種依存文字はダメだよね?


624 :NAME IS NULL:2005/05/22(日) 01:20:35 ID:???
@とかi-mode絵文字もいけたよ?
↑まるいち

625 :NAME IS NULL:2005/05/22(日) 05:27:37 ID:l+rjKGlE
4.0系がやっぱ良い。
4.1系はやっぱ駄目だは。

626 :NAME IS NULL:2005/05/22(日) 11:16:35 ID:12RyQW7D

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

perl DBIで文字化けしてたときは、これで解決したけど

627 :NAME 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;

628 :NAME IS NULL:2005/05/22(日) 12:35:09 ID:???
>>624
いつからその設定だけでいけるようになったんだ
新しいバージョン?

default-character-set = sjisがうまく動いてるように見えないし
そもそもWindows版だと環境設定が上書きされる


629 :NAME IS NULL:2005/05/22(日) 13:00:54 ID:???
え?なんで?全然上書きされないよ?
がっつりメモリ使わせられるし、
書き間違い?

630 :NAME IS NULL:2005/05/22(日) 13:06:30 ID:???
例の環境設定ツールは無条件で上書きだな。

そもそもmysqlコマンドがマルチランゲージ対応のためにUTF8固定だから
使い勝手が非常にまずい。

631 :NAME IS NULL:2005/05/22(日) 13:08:41 ID:???
ツール使うとそうなるんだー
手書きで設定しかしたことないや

632 :NAME IS NULL:2005/05/22(日) 13:21:59 ID:???
>>627
おぉぉ〜できました。
ありがとうございます。

633 :NAME IS NULL:2005/05/22(日) 13:23:12 ID:???
>>631
セットアップ時に必ずその設定ツールが動くはずだが。


634 :NAME IS NULL:2005/05/22(日) 13:32:38 ID:???
セットアップ後に編集の話じゃないの?

635 :NAME 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の設定自体が不要なのでしょうか。

636 :NAME IS NULL:2005/05/22(日) 19:13:55 ID:???

ドキュメント見るとデフォルトでは
'autodetect'
らしいから無くてもいいかもね。
useUnicodeはつけるかんじかなー

637 :NAME IS NULL:2005/05/24(火) 16:27:08 ID:???
質問させて下さい。

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

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

正確に自分のINSERTしたデータのIDを取得するにはどうしたらいいのでしょう?

638 :NAME IS NULL:2005/05/24(火) 17:12:11 ID:???
write lockして
insert して
select して
unlock なら取れそうじゃない?

639 :637:2005/05/24(火) 17:23:50 ID:???
>>638
なるほど、一連の処理が完了するまでは、他人がデータを登録できないようにする訳ですね。

640 :NAME IS NULL:2005/05/24(火) 17:29:05 ID:???
>>637
LAST_INSERT_ID()

641 :NAME IS NULL:2005/05/24(火) 17:29:58 ID:???
>>637
INSERT直後に
SELECT LAST_INSERT_ID()
とやれば取れるよ

642 :641:2005/05/24(火) 17:30:59 ID:???
カブっちまった

643 :NAME IS NULL:2005/05/24(火) 17:33:08 ID:???
>>637
マニュアルのここにまとまっている。
http://dev.mysql.com/doc/mysql/ja/getting-unique-id.html

644 :637:2005/05/24(火) 17:59:47 ID:???
ぉぉぅ・・・
こんな機能が。
ありがとうございます。

645 :NAME IS NULL:2005/05/24(火) 18:10:56 ID:???
こっちのほうが俺のより素敵ね

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

てことでpoolに接続返す前なら確実だしね。

646 :NAME IS NULL:2005/05/24(火) 19:55:22 ID:Q2ACmeBM
phpMyAdminで初めの画面上に現れる設定

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

を EUC に変える方法を教えてください。

647 :NAME IS NULL:2005/05/25(水) 17:04:44 ID:???
>>640-641
GJ!!

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

勉強になりました。

648 :NAME IS NULL:2005/05/25(水) 17:15:29 ID:???
MySQLのオートインクリメントの動きってこれでいいの?

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

そうすると、見事にオートインクリメントの値が1つ飛ぶんだよね。

649 :NAME IS NULL:2005/05/25(水) 17:59:12 ID:???
>>648
歯抜けになるのは良いのでは?

650 :NAME IS NULL:2005/05/25(水) 18:04:17 ID:???
>>648
正しい。以下を参照。
http://dev.mysql.com/doc/mysql/ja/innodb-auto-increment-column.html

歯抜けが困るときは自分で番号管理テーブルを作るけどね。
たいていのRDMSってそうぢゃないのかな。

651 :NAME IS NULL:2005/05/25(水) 20:37:59 ID:???
以前に実験した時、

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

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

insert1回で+1になってて激しく使い物にならなかった。


652 :NAME IS NULL:2005/05/25(水) 21:35:13 ID:???
>>651
意味ワカラン。

653 :NAME 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しましたが同じ結果です。
問題ありませんでしょうか。

654 :NAME IS NULL:2005/05/26(木) 22:13:01 ID:680qdAKz
お前ら様、まず sjisでDBを構築してしまったオイラを小一時間なじってくれ。
レプリケーションしたら 5C 問題が勃発し、Masterには書けるものの
バイナリログが変でSlave側でエラーを起こしてはまりました。
エスケープが、バイナリログでは 'ソ\' とかしてしまってね。
default-character-set が双方であってなくて何とかクリアしましたが。
こんなことで悩み無くないしまだ何かあるかも・・
思い切って ujisに変更した方がいいかな?
速度なんかも eucの方が早いのかな?
文字のエンコードは ' と \ ぐらいを気にすればいいのかな?
エロイ人、オレを王道楽同へ導いてください。
あ、java の人です。

655 :NAME IS NULL:2005/05/26(木) 22:38:10 ID:???
ujisにしなされ。ついでに、4.1系のごたごたへの処方なら
tp://www.mysql.gr.jp/frame/modules/bwiki/?FAQ
を見なされ。

656 :NAME IS NULL:2005/05/27(金) 03:06:47 ID:???
漏れも文字エンコードで悩んでいて、夜も眠れん。
ujis sjis euc
どれがベストなんでしょう。


657 :NAME IS NULL:2005/05/27(金) 03:35:48 ID:???
euc-kr

658 :NAME IS NULL:2005/05/27(金) 04:53:07 ID:???
>>656
utf-8

659 :NAME IS NULL:2005/05/27(金) 06:12:21 ID:???
>>656
CP932

660 :NAME IS NULL:2005/05/27(金) 11:24:57 ID:???
>>659
それ4.1じゃ未実装では

661 :NAME IS NULL:2005/05/27(金) 20:30:28 ID:???
>>660
MySQL4.1.12で追加されてる。
eucjpmsは入ってないが。

662 :NAME IS NULL:2005/05/27(金) 23:31:08 ID:???
>>661
さんきゅ
やっとまともに日本語とおるようになったのか

でも対話アプリケーションがUTF8ということで全滅か

663 :NAME IS NULL:2005/05/28(土) 20:12:36 ID:???
漏れはsjisをbase64エンコードして入れてます。
日本語文字列でソートや検索することがないアプリだったから
使える手かも。

664 :NAME IS NULL:2005/05/28(土) 20:54:01 ID:???
>>663
だったらBLOBにescapeして入れてもいっしょのよーな気も。


665 :NAME IS NULL:2005/05/29(日) 00:28:19 ID:???
ISO2022(だっけか?)でもいいだろうし、
ISHでもMAJでも・・・・・・・・


666 :NAME 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)のエラーに関する記述が多く
何が原因かが解りません。どなたかアドバイスお願いします。

667 :NAME IS NULL:2005/05/29(日) 01:06:46 ID:???
>>666
mysqladmin -u root password [新しく設定するパスワード]
でパスワードを新しく設定されました?

「-p」後はスペースを入れずにパスワードを打ち込まないとエラーが出ます。

668 :NAME 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に対してだけパスワードを設定するつもりだったのですが。


669 :NAME IS NULL:2005/05/29(日) 19:56:40 ID:???
>>668
ここらをまず参照されたし。
http://www.softagency.co.jp/mysql/Manual/4.1.1/html-split/manual.html

670 :NAME IS NULL:2005/05/31(火) 00:13:29 ID:j02Is4N7
osxserver+php+mysqlを使っているのですが、phpmyadminをいれて
間違ってMysqlに接続するユーザー(rootも)をなんと削除してしまいました・・・・
これは、どうにか復活させる方法はないでしょうか?
いろいろ調べても、こんなアホは俺だけで事例が見つかりませんでした。

671 :NAME IS NULL:2005/05/31(火) 01:59:46 ID:???
ヒント:mysql_install_db

672 :NAME IS NULL:2005/05/31(火) 02:16:01 ID:???
mysqlディレクトリはバックアップしとかないと・・・

673 :NAME IS NULL:2005/05/31(火) 16:52:36 ID:Uxy2VvqP
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

いつサポートされるんだろう・・・


674 :NAME 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;

これを一つにまとめる書き方を教えてください。

675 :NAME IS NULL:2005/05/31(火) 20:09:48 ID:???
>>674
UNION

676 :NAME IS NULL:2005/06/01(水) 00:00:26 ID:???
あからさまに学校の課題だな…

677 :NAME IS NULL:2005/06/01(水) 00:06:13 ID:???
>>676
ワロタ

678 :NAME IS NULL:2005/06/01(水) 15:56:30 ID:???
二つ並べてEnterしたら出来ました

679 :a: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

680 :NAME 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:

681 :NAME 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

682 :679:2005/06/01(水) 20:33:17 ID:???
MySQL は最新のものが入っています。

683 :NAME IS NULL:2005/06/01(水) 23:48:42 ID:???
テーブルの1カラム目に、ユニークなTIMESTAMP(10)を入れています。
データを更新するたびに現在の時刻に変わってしまうのですが、
このデータはIDとして扱いたいので、簡単に変わってしまうと厄介です。
これを避ける方法はないのでしょうか?

初心者の質問で恐縮なのですが、
何かご提案ありましたらよろしくお願いします。

684 :NAME IS NULL:2005/06/02(木) 00:16:32 ID:???
>>682
逆に古いの(MySQL4.1じゃないの)入れてみな。

685 :NAME 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として成立(ユニーク)させることを別の所で
処理しないといけない気がしますが。

686 :NAME IS NULL:2005/06/02(木) 00:59:27 ID:???
>685
ありがとうございます。
マニュアルのそのページを見たときに、
書式以外はDATETIME=TIMESTAMPと思ってしまったところが
間違いだったようですね。。。

ユニークにさせる処理はできているので大丈夫だと思います。
ありがとうございました。

687 :NAME IS NULL:2005/06/02(木) 09:19:37 ID:???
>>673
ttp://dev.mysql.com/doc/mysql/ja/subquery-errors.html

> ただし、これは、一部の初期のバージョン(MySQL 4.1.1 など)にのみ適用される。

688 :NAME IS NULL:2005/06/02(木) 10:07:29 ID:???
>>687
それを読んで、
「一部の初期のバージョン(MySQL 4.1.1 など)にのみエラーが出る」
(=それ以外のバージョンではエラーなく実行できる)
と理解したんだけど、間違ってた?
で、最新バージョン(4.1.12)を入れてもエラーになるんでおかしいな、と

689 :NAME IS NULL:2005/06/02(木) 13:24:43 ID:???
FedoraCoer3ですが、MySQL のヴァージョン4か5の
mysql ,mysql-server のパッケージってあるのでしょうか?
yum install しますと、バージョン3になってしまいます。

690 :681:2005/06/02(木) 13:31:43 ID:T6Y+YlBS
追記です、特定データベース内のテーブルに対して「.sqlファイル」をインポー
トしたいのですが。
初心者のため分かりやすく教えていただける方、どうぞよろしくお願いします。

691 :NAME IS NULL:2005/06/02(木) 15:32:48 ID:???
ttp://dev.mysql.com/doc/mysql/en/batch-commands.html >> 690
前にもあったが、日本語doxは糞だからあまり当てにするな。
英語のref manual を嫁。

692 :NAME 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 です。
どなたか解決方法をよろしくお願いします。


693 :NAME IS NULL:2005/06/02(木) 19:58:19 ID:???
>>692
例えば「zzz」なんかもヒットするって事?

694 :NAME 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」ってのに引っかかってるのかなぁって
思っています。
内部的なことは詳しくないので確証は持てないのですが。。。

695 :NAME IS NULL:2005/06/02(木) 20:14:29 ID:???
>>692
ARTISTフィールドの定義(設定) が
1byte系エンコーディングまたはbinary属性の気がする。


696 :NAME IS NULL:2005/06/02(木) 20:20:05 ID:E1fmfaVc
ARTISTカラムはblob型で設定してあります。
blob型で設定している限りこの問題は回避できないって事っすかね・・・。

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

最終的には大文字、小文字を区別してくれて検索出来ればいいんですけど
そういう時ってどのような環境が最適なんでしょうか?


697 :NAME IS NULL:2005/06/02(木) 20:58:53 ID:???
>>696
そういう場合はCLOB(TEXT)を使うんでないか?
http://dev.mysql.com/doc/mysql/ja/blob.html
BLOBはあくまでもBinaryLargeOBjectsなんだから。

698 :NAME IS NULL:2005/06/02(木) 21:16:34 ID:???
>>696
ARTISTカラムをBLOB型で定義する意味って何?
普通にVARCHARで良いように思うけど。

699 :NAME IS NULL:2005/06/02(木) 21:28:40 ID:E1fmfaVc
レスありがとうございます。
始めはTEXT型で宣言してたんですけどマニュアルに
「TEXT 型は大文字と小文字を区別しない BLOB 型と考えることができます。」
って掛かれてたのでBLOB型で定義しなおしたんです。
で、テストで英語1文字で入れてみたら今のような現象が起こったって訳です。

>> 698
何文字のアーティストがいるか分からないからラージオブジェクトにしたんですが
VARCHARでも事たりますねぇ。。。


700 :NAME IS NULL:2005/06/02(木) 21:47:07 ID:???
>>699
>「TEXT 型は大文字と小文字を区別しない BLOB 型と考えることができます。」

ああ、それは「大文字と小文字を区別しない」→「ロケールを考慮する」読み替える。
そこで言う「大文字と小文字」は、"日本語"での大文字小文字の区別のことではない。
「ロケールを考慮」すると、英語などのロケールではBINARYもbinaryも同じ意味なので
「大文字と小文字を区別しない」動作をするが、日本語ではそういう動作をしない。
連続したバイナリをエンコーディングに合わせて、"ひとつの文字"として認識するという動作をするだけ。

701 :NAME IS NULL:2005/06/02(木) 21:59:13 ID:???
test

702 :681:2005/06/02(木) 22:06:34 ID:1PJ+iiN5
>>691

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

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

mysql> mysql < sqlファイル名;

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

ファイル名のディレクトリ指定方法が間違っているのかもしれませんが、試した物が通りませんでした。
重ねてですが、ご支持いただけると幸いです。

703 :NAME IS NULL:2005/06/02(木) 22:15:42 ID:???
$query = "SELECT * FROM name WHERE 'ア' <= yomi AND yomi < 'カ' ORDER BY yomi";
50音順でア行〜ワ行を取得したいのですが、
何故か、上のクエリを実行すると、「ギ〜」というヨミのものも入ってきます。
カ行のはずなのに「ビ〜」のヨミや、ハ行のはずなのに「タ〜」のヨミが出てきます。
これは何ででしょうか。
調べてはみましたが、このような事態になってしまって困ってます。

Mysql4.0.24を使ってます

704 :NAME IS NULL:2005/06/02(木) 22:37:06 ID:???
>>688
5.0.xは?


705 :NAME IS NULL:2005/06/02(木) 22:54:44 ID:???
>>702
示されたポインター先のマニュアルページを良く嫁。
そこにも書いてるけど、ついでに下も
http://dev.mysql.com/doc/mysql/en/batch-mode.html

706 :NAME IS NULL:2005/06/02(木) 22:57:28 ID:???
>>703
yomiのエンコーディングが適正に設定されてない。

707 :706:2005/06/02(木) 22:58:41 ID:???
MySQL4.0.xだから、
MySQLサーバ全体のエンコーディングが適正に設定されてない。
だな

708 :NAME IS NULL:2005/06/02(木) 23:10:30 ID:???
>>706-707
ありがとうございます。今から調べてみます

709 :703&708:2005/06/02(木) 23:19:32 ID:???
無事に、正しく動くようになりました。
Mysqlを入れなおした時に設定が戻っていたようで、見落としてました… orz
>>706-707 多謝!

710 :NAME IS NULL:2005/06/03(金) 00:41:47 ID:???
> 何文字のアーティストがいるか分からないからラージオブジェクトにしたんですが
> VARCHARでも事たりますねぇ。。。
ジュゲムでも入れるのか?


711 :NAME 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して、内容を良く見てみるといい

712 :NAME IS NULL:2005/06/03(金) 02:51:08 ID:???
ところで、windows のシェルってリダイレクト使えるの?
すごい昔の知識だけど使えなかった気が。

713 :NAME IS NULL:2005/06/03(金) 05:42:47 ID:???
>>712
DOSの頃から現在の窓のコマンドプロンプトに至るまで、使える。

714 :NAME IS NULL:2005/06/03(金) 09:28:10 ID:???
>>704
recommendedでないのは入れたくなかったので試しておりませぬ


715 :NAME IS NULL:2005/06/03(金) 21:52:45 ID:???
>>714
入れてテストするくらいやればいいのに。。。
別に既存のをリプレースする必要はないんだし。

716 :NAME IS NULL:2005/06/03(金) 23:47:17 ID:???
>>715
ではよろしくー

717 :NAME IS NULL:2005/06/04(土) 09:50:36 ID:???
>>716
715じゃないけど、テストコードとデータくれたらいつでもテストするよ。


718 :NAME IS NULL:2005/06/04(土) 16:52:00 ID:DCaPW79E
create database 00001;
というクエリを実行したのですが、エラーになってしまいます。
何がいけないのか教えてください。

719 :NAME IS NULL:2005/06/04(土) 18:14:50 ID:???
何のエラーか書けよ

720 :NAME IS NULL:2005/06/04(土) 18:47:27 ID:???
>create database 00001;

正解はcreate database `00001`;

721 :NAME 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

722 :NAME IS NULL:2005/06/04(土) 19:25:45 ID:DCaPW79E
'00001'でも同じエラーです

723 :NAME IS NULL:2005/06/04(土) 20:02:18 ID:???
>>722
お前は目がおかしいのか?

>>720はシングルクウォーテーションじゃないぞ。
バッククウォートだぞ。

724 :NAME IS NULL:2005/06/04(土) 22:44:32 ID:DCaPW79E
ありがとうございました。
もう一つ質問です。
在庫管理のシステムを作っており、
出庫・入庫の最新30件を表示したいのですが、
これをどのように作ったらいいか分かりません。
入出庫ログには日付の列もあるのですが、
たくさんレコードがあるのでorder byだと遅くなってしまいます。
入出庫ログの日付へのインデックスを作ればできそうなのですが・・・。
どなたか良い方法を教えてください。

725 :NAME IS NULL:2005/06/04(土) 23:30:13 ID:???
>入出庫ログの日付へのインデックスを作ればできそうなのですが・・・。
やってみてから質問しろよ馬鹿

726 :NAME IS NULL:2005/06/04(土) 23:44:50 ID:???
動画ファイルを突っ込むとテーブルが50GBとかなるんですけどどうにかなりま
せんかね?

727 :NAME IS NULL:2005/06/04(土) 23:48:15 ID:aGSJcONG
MySQL Control Center の使い方の書いた本ってないですか??
ホームページでもいいんですけど。

728 :NAME IS NULL:2005/06/05(日) 08:57:40 ID:???
>>726
動画データ自身はDBに格納せずに、ファイルシステム上の
ポインター(要はpath)のみ格納して管理する。

729 :NAME IS NULL:2005/06/05(日) 09:38:33 ID:???
>>728
そんなのわざわざDBに入れる情報ではない罠。
動画データそのものを保護する手段としての格納を考えている。ファイルシス
テムとは別のデータベースへのアクセス権で動画の利用を制限するのが主目的
で検索にプライオリティーを置いていない。でも容量が凄いことになるのでな
んとかなりませんかねっていう疑問。テラ容量クラスが必要。でもそうすると
ハードウェア的に脆弱性が出る。如何ともし難い。

730 :NAME IS NULL:2005/06/05(日) 10:09:01 ID:???
>>724
OrderByを使うしかない。
そして、30件とデータの取得件数が決まっているならLIMITを仕様して必要な件数だけ取ってくればいい。

それと、遅くなりそうという意見だが、これはチューニング次第。
俺が以前にやったのはOracleだが数千万レコードから1億レコードのデータがあっても、
データ検索に1秒以下で実現できる。
つまりチューニング次第。

731 :NAME IS NULL:2005/06/05(日) 10:13:18 ID:???
>>729
DBに格納するにしろ、そのままディレクトリに置くにしろ変わらなくないか?
確かにDBに格納する場合、若干ファイル容量が増えるが、
テラ容量必要って言ってるんだからそのまま置くにしてもテラ容量必要だろ。

結局は、ハードウェア的に対応するしかないんじゃない?
HDDをRAIDにして尚且つDATテープ装置で週1回のフルバックアップと
毎日の差分バックアップするとかね。

732 :NAME IS NULL:2005/06/05(日) 10:56:42 ID:???
>>729
ああ、DBで管理が前提な訳ね。
だったらDBが膨れるのはなんともならない。当たり前。
で、DBが膨れることでデータファイルのサイズが
ファイルシステム的に大きなサイズになって困るということなら
InnoDBを使って小さなファイルサイズに分割された状態になるようにしとけば良い。
勿論DBを複数のディスク/ディレクトリに分散することも可能。

俺はやっぱりポインタだけで管理することを薦めるがね。
>動画データそのものを保護する手段としての格納を考えている。
>ファイルシステムとは別のデータベースへのアクセス権で動画の
>利用を制限するのが主目的
なんだよな。ファイルシステム上のデータに対して、
MySQLで管理するアカウント(MySQLのユーザアカウントでも良いし、動画データ用の専用の
アカウント管理をしても良い)で、アクセスしか出来ない様な仕組みを提供する方が簡単。
仮想メールアカウント/ボックスをMySQLで管理するのと同じような方法。
自分はそんな感じで、多連でDVD-RAMに格納してやってるよ。

733 :NAME IS NULL:2005/06/05(日) 19:30:17 ID:kv1snlcr
MySQLに限った話ではないかもしれないんですが
クエリの実行速度を簡単に計測するツールって無いですか?
DOS窓で実行すれば時間は表示されるんですが、あんまりDOSでSQL文をいじるのがめんどうくさいので、、

734 :NAME IS NULL:2005/06/05(日) 20:36:58 ID:???
phpMyAdminでも入れたら

735 :733:2005/06/05(日) 21:03:11 ID:kv1snlcr
レスどうもです。
試してみます

736 :NAME 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;

737 :NAME IS NULL:2005/06/05(日) 21:24:41 ID:???
>329
と同じ症状です。
MySQL4.1.12aでかねやんからアクセスすると

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

と、サーバのキャラクタセットが空白に表示され、CSVからのデータのインポートに失敗します。
my.iniを見てもちゃんとsjisに設定されています。
とりあえずインポートを成功させたいのですがよい方法はないでしょうか。

738 :NAME IS NULL:2005/06/05(日) 21:27:22 ID:???
かねやんは4.1系やめたほうがええ

739 :NAME IS NULL:2005/06/05(日) 23:46:44 ID:kFSH5fCZ
俺は全部rubyで書くよ。

740 :NAME IS NULL:2005/06/05(日) 23:48:30 ID:???
>>733
super-smackってのがいいよ。
日本語ドキュメント内から今使い方をblogで公開しようと
必死で書いてる。
もう少し待ってね

と、さっきデートしてほぼふられることが確定した俺が言ってますよ・・・

741 :NAME IS NULL:2005/06/06(月) 01:19:43 ID:???
後ついでに皆さんテストの時にはスレッドいくつまで走らせてテストしますか?
一応俺は10〜2000くらいまではテストするんですが
2000発行するとクライアントのCPU使用率おかしくなりません?

742 :NAME IS NULL:2005/06/06(月) 07:41:36 ID:???
sqlを列挙したテキストを書く。
time mysql -u ユーザ名 -ppassword < テキストファイル名


743 :NAME 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を書いてあります。
何がいけないのか、教えてください。

744 :NAME IS NULL:2005/06/06(月) 21:13:57 ID:???
>>743
1つ聞いていい?
自宅のサーバはちゃんと外部からアクセスできるようにしてあるんだよね?
というのは、そういったスキルがあるなら、こういった質問は出てこないから。

745 :NAME IS NULL:2005/06/06(月) 21:18:35 ID:BC3hoVn0
はい。見抜かれてるので正直に書きます。
my.cnfかどこかに書く場所があるとは思うんですが、
調べるのが面倒なんですよ。。。

746 :NAME IS NULL:2005/06/06(月) 21:23:03 ID:???
>>745
そういう事じゃないのね。
MySQLとかそういった話以前に、外部から自宅にアクセスできるのかって言うのを聞いてるの。

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

調べれば分かるけど、自宅の鯖を外部に公開するってのは結構大変な作業。

747 :740:2005/06/06(月) 21:45:40 ID:???
super-smack の使い方を書きました
http://nullpo.2log.net/home/pcijiri/archives/blog/main/2005/06/06_185852.html

おかしなところとかありましたら、指摘お願いします。
と言うかおかしなところだらけですw

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

Linuxだとちゃんと全部表示された。
PCがおかしいのかな?

749 :NAME 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して調べて見ましょう。

750 :NAME IS NULL:2005/06/07(火) 03:55:03 ID:???
設定変えて再起動してないに一票とかMySQLを全く知らないのにレスしてみたり

751 :NAME IS NULL:2005/06/07(火) 08:27:42 ID:???
ユーザ権限変更に再起動は必要無い。
grant使わずにupdate/insert/deleteで操作した場合はflushする必要がある


752 :NAME IS NULL:2005/06/07(火) 12:01:31 ID:???
>>748
単純にWin/Linuxで設定やアカウントがことなってるからじゃないか?
show tablesして見えるテーブルの権限が、そのアカウントにあるか確認。

753 :748: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の使い方が間違ってる?


754 :NAME 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へ、
………

という風にしたいんですが、どういう風に書けばいいでしょうか?
教えてください。

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

sqlだけでやれるのかしら?

757 :NAME 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, ...);

758 :755: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って設定しない方がいいですか?
設定すると、どういう時に、おかしくなる心配があるか、教えてもらえませんか??

759 :755: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, ...);

この間違いです。

760 :NAME 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)だから、
ある特定のテーブルに対して"だけ"権限を与えたくない
というパターンの場合は、正直設定が面倒くさいね。
管理ツールとかユーティリティだと操作が楽になってるけど。

761 :757:2005/06/08(水) 00:04:04 ID:???
>>758 759
auto_increment はテーブルに一つしか設定できないので、元のカラムを残して
order カラムに auto_increment は設定できない。
ぢゃあ、元のカラムを消して、order カラムに auto_increment を設定する?
という話になるとそれはやめた方がいい。
元の auto_increment、primary key のカラムはそのレコードを特定する値として
残しておく。そして一度、設定されたら変更しない。
他のテーブルと結合したりする時、結合相手がころころと変わると大変だから。
今回、他のテーブルと結合するかどうかは知らないけど、常にレコードを特定する
値は何?ということは頭に置いておくべき。

order は単に表示順序を決める値なので、おまいさんが都度都度、設定して
必要に応じて振り直しをした方がいいよ。
どういう風に設定、振り直しをするかはおまいさんのやりたいことをもう少し
聞かなきゃ判らんけど。

762 :755:2005/06/08(水) 00:35:51 ID:???
なるほど。どうもありがとうございます。
Ruby on RailsっていうWebアプリケーションのフレームワークを使い始めて、
今まで触ったことのないSQLを使い始めています。
Railsでは、tebleにはidカラムが必須なので、
それとは別に、データの取り出し順序を指定するorderカラムを作ることにします。
それで、このカラムには、auto_incrementとかは使えない。
データを入れるときにRubyスクリプトでうまく設定します。

時間があれば、SQLの勉強もしないといけないですね。>おれ


763 :NAME 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

764 :NAME 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コマンドでダンプ・リストアする方法がわかる人はいますでしょうか?

765 :NAME IS NULL:2005/06/08(水) 05:55:42 ID:???
>>765
4.1系ならmysqldumpの引数に --default-character-set=sjis をつけてやってみたら
いけるんぢゃない?
バックアップする時とリストアする時の両方ね。

766 :NAME IS NULL:2005/06/08(水) 12:53:39 ID:???
>>763
ありがとうございます!

767 :NAME IS NULL:2005/06/08(水) 14:19:40 ID:c/qUh/E8
mysqlでのパラーメータクエリの使用法を教えてください
c#からodbc経由で接続しています

768 :NAME IS NULL:2005/06/08(水) 15:15:25 ID:NDa4ljVF
質問です。
auto_incrementの項目があるとき、INSERT文の中で、その時に振られた番号を取得する事は出来るでしょうか?
具体的には、auto_incrementで振られたNoを含む文字列を、同じレコードの別のフィールドに保存したいのです。
今はINSERT文のあとに、直前のNoを検索して、UPDATEしているのですが、Noが分かることが出来るのか知りたくて質問しました。

769 :NAME IS NULL:2005/06/08(水) 15:16:23 ID:???
改めて読んだら読点が多すぎた…。

770 :NAME IS NULL:2005/06/08(水) 15:18:51 ID:???
>>768
SELECT LAST_INSERT_ID()

771 :NAME IS NULL:2005/06/08(水) 15:44:46 ID:???
>>768
回答は770が正解&過去ログ>>637- 嫁

772 :NAME IS NULL:2005/06/09(木) 01:42:06 ID:???
リッチテキストのデータを保存したいのですが、どういう風に保存するのがいいでしょうか??
検索することとかも考えています。

773 :NAME IS NULL:2005/06/09(木) 02:29:54 ID:???
>>772
リッチテキストっても一杯種類があるんだが。
MSのWordPadなんかで使うrtfは、DBには格納せずに
そのままファイルの状態で管理した方が良いよ。
その方が検索ツールの適応度も高い。

774 :NAME 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



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

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

776 :774:2005/06/10(金) 14:10:45 ID:E0hIbgFr
>>775

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

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



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

今度、システムを新しくしようと思ってるんですが、
MySQLのデータベースっていうのは、どこに保存されているのでしょうか?
システムを新しくしていく時に、保存しておくべきファイルってどれでしょうか??

778 :NAME IS NULL:2005/06/11(土) 07:57:03 ID:???
>>777 そんなこと質問してるようじゃ、どうせ大したデータも
無かろうからシステム更新ごとに全部消しちまっても大差ないべ、
というのは置いといて、/usr/local/mysql/data あたりだ。
一応。

779 :NAME IS NULL:2005/06/11(土) 08:01:48 ID:???
>>776
ttp://www.mysql.gr.jp/frame/modules/bwiki/?FAQ

780 :NAME 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でやっといた方が良いと思う。

781 :NAME IS NULL:2005/06/11(土) 14:24:59 ID:FHUWJIVm
MySQLに新しくユーザを加えるときに、
192.168.1.* からのログインのみ許可するようなユーザにしたいのですが、
こういう書き方って可能ですか??


782 :NAME IS NULL:2005/06/11(土) 14:55:23 ID:???
>>781
[4.3.9. アクセス制御の段階 1: 接続確認]
http://dev.mysql.com/doc/mysql/ja/connection-access.html

783 :781:2005/06/11(土) 15:05:42 ID:FHUWJIVm
>>782
ピンポイントです。Thanks!

784 :NAME IS NULL:2005/06/11(土) 15:40:17 ID:???
データベースの主キーを昇順に並べて、それを1行目から順に
主キーを1,2,3,・・・と再振り分けしたいのですが、
そういったことはどのようにやればいいのでしょうか?

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



785 :NAME IS NULL:2005/06/11(土) 19:03:19 ID:???
設定が固まっていないんだけどデータがどんどん溜ってくるので
その都度alterでカラムの変更をしてる。それも毎日。
これって異常なのか?

786 :NAME IS NULL:2005/06/11(土) 21:01:36 ID:???
>>785
設定が固まってないのなら仕方がないけど、データベースの使い方としては特異。
毎日データの格納・取り出しが変わってたら定型作業にならないやん。
使う人が複数いれば、その連絡とかどうすんの。毎日やるわけ?

787 :NAME IS NULL:2005/06/11(土) 21:12:53 ID:???
ALTERで名前変える程度ならまだしも、
テーブル構造を変えると、内部処理では
「一度新規テーブル作ってデータコピーして旧テーブル消す」
ということを行っている。

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

気をつけたほうがいいぞ。
10万オーダー超えると、アクセスするプログラムによっては変換中にタイムアウトになるかもしれん。


788 :NAME IS NULL:2005/06/12(日) 16:48:22 ID:???
ちょい質問
なんらかの問題で、レプリケーションマスタを入れ替える場合は、
マスタのバイナリログが使えなくなるわけだから、
一度レプリケーション解除して、再度レプリケーション構築するような手順になると思うんだが、
具体的手法や手順の参考になるような資料は無いだろうか?
おそらく、master.infoとslave.infoと旧マスタからコピーしたバイナリログを
レプリケーションスレーブから消せばいいんだと思うんだが・・・・・・

789 :NAME 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'

表示させるにはどうしたら良いでしょうか?

790 :NAME IS NULL:2005/06/13(月) 00:24:38 ID:???
>>789
mysqlshowで指定するユーザに対して、対象となるデータベースの
SHOW DATABASES権限をGRANTする。

791 :NAME IS NULL:2005/06/13(月) 11:49:41 ID:???
>>788
>具体的手法や手順の参考になるような資料は無いだろうか?
私は公式のマニュアル以外、一切見ていませんが、
マスタが死んだ場合は、再構築する手順とほぼ同じですね。

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

なので、マスタ側は、スレーブの/data以下をコピーしたものを用意して、
binlogを全て削除する。スレーブ側は、master.infoを削除する。
あとは、my.cnfの設定を再確認して全台起動、という流れでしょうか。

792 :NAME IS NULL:2005/06/16(木) 00:44:46 ID:???
映画のDBをmysqlで作るときにテーブルを

タイトル 主役 共演者

とした時に俳優Aが主演した映画の共演者の中で、別の映画で主役を
得た俳優を求めることは可能ですか?

793 :NAME IS NULL:2005/06/16(木) 09:37:09 ID:???
可能です

794 :NAME IS NULL:2005/06/17(金) 01:36:41 ID:???
3.23.58で使える、クエリの実行時間を制限する、設定方法を教えてください。

も、一つ。
tableA NATURAL JOIN tableB NATURAL JOIN tableC …(合計6個結合する)
ってやると、えらい時間が掛かってしまうんですが、何が悪いんでしょうか?

795 :NAME IS NULL:2005/06/17(金) 05:28:19 ID:???
2000レコードぐらいあるテーブルに1つフィールドを増やして
そのフィールドに1から連番でナンバリングしたいんですけど
いい方法はありますか。

796 :NAME IS NULL:2005/06/18(土) 00:08:16 ID:???
リファレンスマニュアルの日本語版ってダウンロードできるのでしょうか?
日本語の「このマニュアルについて」からダウンロード先にいったけど
落とせるのは日本語のみの様子・・・。
どなたかご存知でしょうか?

797 :NAME IS NULL:2005/06/18(土) 00:24:25 ID:???
>>796
その日本語が良く判らん

798 :NAME IS NULL:2005/06/18(土) 02:07:26 ID:???
>>794
EXPLAIN

799 :NAME IS NULL:2005/06/19(日) 14:54:17 ID:n9q/trAx
あまのじゃくのオレとしては、MYSQL使ってなんとしてでもORACLEにパフォーマンスで勝ちたいんですが
両DBMSの比較してる良いサイトありますか?

800 :NAME 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プロセスのユーザーとシステムのユーザーがちがうので
書き込み権で撥ねられたのだと見当はつくのですが
どうすればよいんでしょうか?

801 :NAME IS NULL:2005/06/20(月) 14:20:12 ID:???
chown mysql:mysql -R /home/fuga/
or
chmod go+w -R /home/fuga/

802 :NAME IS NULL:2005/06/21(火) 01:25:04 ID:kGdVNVy8
XP Proにインストールした場合、やはり接続可能クライアントは10台までなのですか?
とれともトランザクションが同時に10までということなのですか?


803 :NAME IS NULL:2005/06/21(火) 01:52:07 ID:???
>>802
ライセンスの話なのか、機能の話なのかはっきりさせようじゃないか。

端的に言えばWinXP ProにApache入れた時といっしょ。

804 :NAME IS NULL:2005/06/21(火) 09:46:27 ID:???
>>802
どの様な使い方をされるんですか?

805 :NAME 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があるって設定になってるんでしょうか
よろしくお願いします。

806 :NAME IS NULL:2005/06/21(火) 12:56:51 ID:???
>>805
134 # Try to determine the hostname
135 hostname=`/usr/bin/hostname`
136
素人はバイナリ使えよ。

807 :NAME IS NULL:2005/06/22(水) 04:33:03 ID:E8U4gjYm
CSVからテーブルにデータを流し込みたいんですけど

LOAD DATA LOCAL INFILE '○○'

この部分をどうすればいいのかわかりません。
ローカル側から読み込ませたいんですが
具体的にどこにCSVファイルを置いて
どんなふうにそのファイルまでアドレスを指定したらいいのか
わかんなくて困ってます・・・。

808 :NAME 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


809 :800:2005/06/22(水) 13:35:29 ID:???
>>801
超遅レス申し訳ない。できました。あんがと。

810 :807: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文を送ったのですが読み込めませんでした。
もしかしてやり方間違ってますか?

811 :NAME 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ファイルの形式による。
指定の仕方はちょっと判りづらいかと思うので、ググるなりで勉強してください。

812 :NAME 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)」では問題なかった。

813 :NAME IS NULL:2005/06/22(水) 17:06:47 ID:???
MyISAMしか使ったことない僕に教えてください。

ib_logfile0
ib_logfile1

ibdata1

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

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

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

よくわからないです、どなたかお願いします。

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

MyISAMしか使わないのに、InnoDB用のファイルがあるのは
インストール時に「トランザクション機能が必要」としたためと思われ。
他には中身を理解せずにmy.cnfで設定を記述したか。

815 :NAME IS NULL:2005/06/22(水) 22:13:50 ID:???
>>811
カレントディレクトリがなんたるかをわかってないようなので、
変なツール使ってて、そのツールのカレントディレクトリになってるんじゃないか?

上げてる時点で疑うべき場所を非常識レベルに変えたほうがよさげ


816 :NAME IS NULL:2005/06/22(水) 22:37:28 ID:???
>>814
ありがとうございます。
もちろんInnoDBで使われることはわかっています。
InnoDBを使おうとして、skip-innodbのコメントをはずし、
4.1から利用可能な--innodb-file-per-tableを使って、
データファイルをMyISAMテーブルのように扱いたいと思ったわけです。
インストールはソースからのコンパイルですので、
トランザクション機能が必要とか、聞かれませんでした。

817 :NAME 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の仕様です。
(固定的に場所を確保しているので変更に強い(スピードが速い)と言えます)
設定を変更の際にはバッアップを取って、設定変更後にリストアする手間が必要になります。
ツール類を使えばそんなに大変ではないですけどね。一度決まれば、設定変更なんて頻繁にあるものでもないですし。

818 :NAME 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を使いたいという意見は聞くけど、どうしても特定のテーブルだけ
シンボリックリンクで別のディスクにおきたいとかいう話で無い限り、パフォーマンスも
ほとんど変わらないし、使う意味無いよ。



819 :NAME 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 へは入れます。ユーザも確認しましたが、間違ってません。

よろしくお願いしますです。

820 :NAME IS NULL:2005/06/23(木) 17:52:09 ID:???
>>819
エラー嫁
>mysqladmin: unrecognized option `--default-character-set=ujis'

大方、my.cnfで[client] セクションか[mysqladmin]セクションに
unrecognized optionを設定していると思われ。


821 :NAME IS NULL:2005/06/23(木) 18:29:00 ID:y4Qkh/o7
>>820
あ、有難うございますた。

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

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

もし、よろしければ、アドバイスをおながいしまつ。


822 :NAME 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のスレ検索でも答えが見つかるようになった訳だ。

823 :NAME IS NULL:2005/06/23(木) 20:19:54 ID:???
> アドバイスとしては
・MySQL のソースコードを読む
が欠落しているよ。
これが全て。

824 :NAME IS NULL:2005/06/23(木) 20:55:04 ID:???
>>823
そこまでボックス化が不完全な商品ではないよ>MySQL


825 :NAME IS NULL:2005/06/23(木) 22:25:30 ID:QrM5IyNb
PHPでmysql_pconnectを使用しているのですが、phpMyAdminで見ると、いつもSleepコマンドになったプロセスが大量にできています。
なんとか、Sleep状態のタイムアウトを設定したいのですが、どの変数を変えればよいのでしょうか?

MySQL 4.0.18を使用しています。

826 :NAME IS NULL:2005/06/24(金) 00:05:20 ID:w5PKWUDM
>>822 >>823 >>824
有難うございます。努力しますです。
>>820
も一度、有難うございました。

827 :NAME 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、です。初歩的な質問で申し訳ないですがよろしくお願いします。

828 :NAME IS NULL:2005/06/24(金) 10:09:24 ID:/UUySs3P
>>827

Windowsのバイナリ配布版にscriptsディレクトリ自体ないと思うが。

829 :NAME IS NULL:2005/06/24(金) 10:14:52 ID:/UUySs3P
>>827

Windowsでdataディレクトリを別ドライブ上にする方法
http://dev.mysql.com/doc/mysql/ja/windows-symbolic-links.html

830 :NAME IS NULL:2005/06/24(金) 14:37:17 ID:QXFZJ7Kt
MySQLユーザの方はPostgreSQLと比べて
MySQLを選んだ理由はなんでしょうか?
MySQLの方がライセンス的には面倒な感じで
機能的には最近はあまり差がないように思います。
PHPの書籍だとたいていMySQLがセットで説明されるように
なってるのを見てちょっと疑問に思ったのです。

831 :NAME 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。

そんなとこ。

832 :NAME IS NULL:2005/06/24(金) 18:29:26 ID:???
>>830
・速い(最適化)
・従順(プロンプト)
・海豚 ;-D

833 :NAME IS NULL:2005/06/24(金) 19:48:44 ID:???
>>831
4.0まではそうだったという感じ
4.1で日本語ボロボロにして離れたユーザー大量に見てきたよ

ちょうどPostgres8がWindows版発表したりパフォーマンスを大幅に改善したりして面白いことになったが

834 :NAME IS NULL:2005/06/24(金) 20:07:22 ID:???
Solaris 版のバイナリ使っているんですが、バージョンアプってどうやればよいんでしょぷか。

835 :NAME IS NULL:2005/06/24(金) 22:16:43 ID:???
>>833
4.1のアレなんとかならんのかねえ……。
2ヶ月前くらいからDBが必要になって触り始めてるけど、
未だにどちらのバージョンを本番に使うか悩んでる。

836 :NAME IS NULL:2005/06/24(金) 22:18:34 ID:???
>>830
個人的にはデータとかクライアントの互換性かな。
PostgreSQLはバージョンが0.1上がっただけで互換性がないのが続いたので、
(データもクライアントも)
うざかったのでやめた。
今はどうかしらないけどね。

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

他にはDBエンジンが自由に選べるトコとか
(後付けは5.1からなのが残念だけど)
ソースが追いやすいとかかなぁ。


837 :NAME 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ツールつくといってたからどーなるかとおもったらとんでもねえぇものだったしなぁ
がっくし


838 :831: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。



839 :830:2005/06/25(土) 05:43:14 ID:???
皆さん、レスありがとうございます。
ライセンスとかはあまり気にならないようですね


840 :NAME IS NULL:2005/06/25(土) 06:36:18 ID:lAVQPOOq
>>839
企業ユーザ、特に大企業だと以前は商用ライセンスを買いたがる傾向があった。今もまだあるかな?

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

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

大企業にとってはライセンス料金を0にできるかどうか、という話よりも
トータルコストの削減てことかねえ。

841 :NAME IS NULL:2005/06/25(土) 06:45:23 ID:lTBXpALr
>>840
TCOじゃね?

842 :NAME 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でなくて良いところは、あれを使うべきなのか...微妙。


843 :840: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になりますって謳っているわけだしね。

844 :NAME IS NULL:2005/06/25(土) 09:15:31 ID:???
話は変わりますが、
クエリキャッシュって期待ほどじゃなくて切ないです。

テーブルの少しだけでも変更されたら、今までのキャッシュが無効になるのね。
行レベルでキャッシュとかしてくれないかな〜
そしたらまじ愛してあげれるのに。

845 :NAME IS NULL:2005/06/25(土) 12:04:58 ID:???
Windows版って需要あるんだな。
正直言って、Windows版使うってのが信じられんが。

846 :827: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は無いのではないんでしょうか)
まあ何故そんな事がしたいんだとお思いでしょうがもちろん実務ではなく自分の
趣味と言うか学習用途です。英語マニュアルを無理矢理読んでいるので
理解不足で根本的に勘違いをしてるかもしれません。よろしくお願いします。

847 :NAME IS NULL:2005/06/25(土) 12:19:30 ID:???
Perl+MySQLで2chのようなスレッドフロート型掲示板を作っています。
共用レンタル鯖で使いたいのですが、データベースのアカウントが5つで内2つ使っているので、1アカウントに抑える必要が出てきました。
そこで、1テーブルで1つの板全部のスレをおさめる形になったのですが、(板の数は5、板にはスレが約30、レスが約500と過程して)鯖負荷的には大丈夫なのでしょうか?重すぎますか?

848 :NAME IS NULL:2005/06/25(土) 12:26:19 ID:???
>>845
Windows上にApache+MySQL+Perlの開発環境を入れて、
晒すときはLinux/BSD、とかは良くやってた。

>>884
いやだってテーブル更新されたらWHEREで選択される結果が変わるだろ?


849 :NAME 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上にコピペしても動く。

おれが知っているのはこれくらいだ。

850 :NAME IS NULL:2005/06/25(土) 12:37:01 ID:5fXlIrGM
>>847
>鯖負荷的には大丈夫なのでしょうか?重すぎますか?

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

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

変数が多すぎて何とも言えない。もう少し具体的に。


851 :827:2005/06/25(土) 12:49:17 ID:???
>>849

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

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

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

MySQLはもう少し勉強してから質問するようにします!

852 :NAME IS NULL:2005/06/25(土) 13:05:48 ID:5fXlIrGM
>>851さんへの補足&自己レス

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

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

というのがMySQL。

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

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



853 :NAME IS NULL:2005/06/25(土) 13:06:49 ID:5fXlIrGM
>>852>>850といっているのは>>849の間違い。

854 :847: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はこれで運用しています。

855 :NAME 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 の結果に影響を及ぼさないと思うわけなんだけどさ、
表現が違うかもしれないけど、行レベルとはそんな感じを言いたかったの

856 :NAME IS NULL:2005/06/25(土) 17:34:33 ID:???
やべ、日本語変だw
汲み取っておくんなまし

857 :NAME 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が現時点でボトルネックになることは無いでしょう。

ちゃんとインデックス張って下さいね。

858 :847:2005/06/25(土) 21:06:00 ID:???
わわ、こんなに詳しいレスが返ってくるとは思ってもみませんでした。
MySQLは非常に軽いのですね。これで行こうと思います。
MyISAMについても調べる良い機会になりました。
ありがとうございました。

859 :NAME IS NULL:2005/06/25(土) 22:01:56 ID:???
ハイパフォーマンスMySQLに掲示板はMyISAMと書いてありました。
それだけです、はい。

860 :NAME IS NULL:2005/06/25(土) 23:12:26 ID:???
偽者臭プンプン


861 :NAME IS NULL:2005/06/25(土) 23:49:32 ID:???
>>855
んなのいちいちチェックしてたらオーバーヘッドが大きくなって全体的な速度が落ちるっしょや。
何やりたいのかしらんが、アプリ側でのキャッシュも考えておけばいいんじゃね?
そもそもクエリキャッシュを気にする前に気にするべきことがいろいろある気がするし。

クエリキャッシュってINSERTやUPDATEが少なくてSELECTが多い、
例えばCMSで動的に生成してるページ向けのオマケ的な機能のような気がするんだけど。


862 :NAME IS NULL:2005/06/26(日) 00:15:13 ID:???
先ほどmysql4.1.7をインストールしてみました。
mysqladmin.exe で、ルートのパスワード設定しようとしたらノートン君が反応。
どうやらDNS探しに外に出て行こうとしてるみたいです。

とりあえず遮断しときましたけど、スパイウェアの類が紛れてたりするのでしょうか・・・
ちなみにad-awareではmysql絡みの物は反応しませんでした。
ちょっと怖いです

863 :NAME IS NULL:2005/06/26(日) 01:12:29 ID:???
んじゃ、DNS使わない設定にしておけば?
ホスト名で権限付けれなくなるけど、問題ないっしょ。


864 :NAME IS NULL:2005/06/26(日) 01:14:51 ID:???
>>862
ネットワーク越しの接続を必要とする設定になってる場合、
認証他で普通にDNSでの名前解決が必要(ということがマニュアルに書いてある)
またドメイン名でなくてIPアドレスのみで良いのなら、DNS引かせないような
設定も出来る(ということがマニュアルに書いてある)
怖い怖い言うなら、ちゃんとマニュアル読めば?
不明な得体の知らない怖さには"知る"ことが大事。

865 :NAME IS NULL:2005/06/26(日) 08:16:37 ID:???
>>861
更新や削除、挿入のときのみのチェックだとしたら、
それほどのオーバーヘッドはないと思うんだけどなぁー

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

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

サーバ側でデータベースから読み込んだ時間を保持しておいて、
データが更新された時間を持つサーバから最終更新時間を取得して
アプリ側のほうが古い場合、リロードしに行くとか?

866 :NAME IS NULL:2005/06/26(日) 11:54:39 ID:???
いやだってさ、まずそのwhere句にあるものがprimaryだけなのか判別しなくちゃいけないでしょ?
で、そのprimaryが更新したかどうかのためにそのprimary分のメモリも確保しなくちゃいけないわけで。
あまり効率がいい方法だとは思えないんだけど。

つか、出来ると思うんならソース書き換えればいいじゃん。
あるいは「こうすればいいんじゃね?」ってMLとかで提案するとかさ。


867 :NAME IS NULL:2005/06/27(月) 01:30:30 ID:d2SMieRB
>>837
>> 速度的なメリットもInnoDBとPostgreSQL8とじゃあんまかわらんし
正確にはInnoDBはMyISAMよりスループットに優れているがINSERT,DELETEは
Archive Engineが一番早い

868 :NAME IS NULL:2005/06/28(火) 01:21:38 ID:???
MySQLで "INSERT INTO names (name) VALUES (@name); "+ "SELECT ID = SCOPE_IDENTITY() ";
と100%等価なQueryはどのように書けば実現できるのでしょうか?

869 :NAME 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テーブルをみると、それっぽいレコードはできていいるのですが・・・
何がいけないのでしょうか?

870 :NAME 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'

871 :NAME IS NULL:2005/06/28(火) 08:43:35 ID:???
>>869
GRANT ALL ON test.* TO testadmin@localhost IDENTIFIED BY 'admin';

だと思う。あと、アクセス拒否とは関係ないけど、パスワード指定
は --password=admin か、-padmin でしょ。


872 :NAME IS NULL:2005/06/28(火) 09:02:54 ID:???
>>868
何をやりたいのかさっぱりわかんないけど、
SELECT last_insert_id()
でなんとかなるんじゃね?


873 :869:2005/06/28(火) 10:52:44 ID:???
>>870, >>871さん
ありがとうございます。@localhostが抜けていました。

874 :NAME IS NULL:2005/06/28(火) 15:01:26 ID:???
4.1にして丸一日無駄にした!
初心者のくせにうちのサイト全部UTF-8仕様にしてやるぜ
とかいらんこと考えて即死亡。
人生の貴重な一日を無駄にしました。ありがとう4.1

875 :NAME IS NULL:2005/06/28(火) 15:25:21 ID:???
貴重な経験とも言えるw

876 :NAME IS NULL:2005/06/28(火) 16:41:39 ID:Hbs9ooet
>>874
参考まで http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_32

877 :NAME IS NULL:2005/06/28(火) 20:08:37 ID:???
mysqlで電話帳みたいな
あ〜お
か、が〜こ、ご
・・・・
のような感じでsqlで引っ掛けることって可能ですか?

878 :NAME IS NULL:2005/06/28(火) 20:59:05 ID:???
>>877
文字コードが並んでる部分についてはバイナリーとみなして
範囲を指定できたと思う。

879 :NAME IS NULL:2005/06/28(火) 21:38:04 ID:???
同じデータベース内にある二つテーブルを結合して検索するのと
違うデータベースにある二つのテーブルを結合して検索するのと
速度の違いが結構ありですか?

880 :NAME IS NULL:2005/06/28(火) 23:08:14 ID:???
>>879

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

結果を公表したければ、話は読もう。

881 :NAME IS NULL:2005/06/29(水) 01:32:25 ID:PKUDSWFf
>>879

その質問は、

use test;
select * from mysql.user;

use mysql;
select * from user;

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

違いは結構あるのか?と言われれば、はっきりいって全く違いなしといっていいくらい同じだろう。

882 :NAME IS NULL:2005/06/29(水) 02:09:26 ID:???
>>878
あんがと。

883 :NAME IS NULL:2005/07/01(金) 18:03:35 ID:IHWB0Ybs
MySQL4.1系にあわせて作ったCGI・perlを
MySQL3.23系用に作り直さないといけなくなりました。

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

よろしくお願いします


884 :NAME IS NULL:2005/07/02(土) 02:34:04 ID:kYLJnUX/
>>883

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

サブクエリに関しては、

CREATE TEMPORARY t1 ...

で代用。

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

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

この辺を手がかりに調べてみるべし。

885 :883:2005/07/02(土) 12:48:00 ID:Lpd4QfJS
>>884
そうですよねー 自分も3.23じゃない方が良いと思うんですけどね

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

こんな感じですか?


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



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

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

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

というエラーメッセージが出て作成することが出来ません。
お分かりになる方、教えていただけないでしょうか?

887 :NAME IS NULL:2005/07/03(日) 14:44:46 ID:???
昨日ときょうの間に何をやったのかを教えてくれないのか。。
エスパー募集は別板でやってくれ。

888 :NAME IS NULL:2005/07/03(日) 14:51:56 ID:???
昨日行った作業は、PHPと連携させて、データの追加をおこなった
だけで、テーブル自体の削除等はしておりません。

それで、今日コマンドプロンプトからテーブルの中身を確認しようと
したところ、テーブルが、というより、データベース自体が
なくなっていたのです。データベースをもう一回作り直そうと
すると上記のようなエラーがでてしまい、作り直しもできません。
まったく見当がつかない状態です・゚・(ノД`)・゚・。


889 :NAME IS NULL:2005/07/03(日) 15:31:52 ID:???
>PHPと連携させて、データの追加をおこなっただけ
詳しく

890 :NAME IS NULL:2005/07/03(日) 15:42:02 ID:???
現在ウェブページを作成中で、ページのテキストボックスに入力した
文字がデータベースに登録されるような簡単なものです。

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

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

が関係しているのではないかと思います。
この「user ''@'%'」が示すことって、rootで入っていない
っていうことですかね?

891 :NAME IS NULL:2005/07/03(日) 16:03:53 ID:???
>>890
まぁ、確かにユーザ指定すれば@の前にユーザ名が入るよな。

でも、@の後ろのホスト名が%になってるけど、
普通に設定するとrootはlocalhostからしか繋がらないようになってるよな・・・


892 :NAME IS NULL:2005/07/03(日) 18:09:17 ID:+Ny1BKUA
>>890

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

--skip-grant-tables

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

とりあえず現状どうなっているのかをさぐれ。

893 :NAME IS NULL:2005/07/03(日) 18:46:47 ID:h2WJoq/G
Windows版の4.0.24のWinMySQLAdminiの最初の起動時に入力するユーザ名とパスワードって
一体何に使われるのですか?

894 :NAME IS NULL:2005/07/03(日) 20:58:42 ID:???
>>890
PHP経由でSQLインジェクションをくらったとか。
ひょっとしてアプリもrootで接続していたとかそういうことはないよね。

895 :NAME IS NULL:2005/07/03(日) 22:48:16 ID:???
>>891 >>892 >>894

アドバイスアリガトウございました。
なんとか解決したみたいです。
っていうか、こんなことが原因だったとは・・・_| ̄|○
ありがとうございました・゚・(ノД`)・゚・。

896 :NAME IS NULL:2005/07/04(月) 01:33:17 ID:???
>>893
WinMySQLAdmin(iはいらない)のためのデフォルトアカウントの設定。
WinMySQLAdmin以外のmysql/mysqldump等のクライアントユーティリティには関与しない。

>>895
他の人のために「こんなこと」を具体的に書いてくれ。

897 :NAME 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という管理権限のあるユーザ(パスワードはなし)。

898 :NAME IS NULL:2005/07/04(月) 04:08:44 ID:???
auto_incrementでカウントアップされたカウンタを戻すことって出来ます?
例えば3000ぐらいまで行ったのを200の戻したいです。。

宜しくお願いします。

899 :NAME IS NULL:2005/07/04(月) 15:22:04 ID:Vq1NTXNC
mysqlに
mysql> show variables > "/tmp/hoge.txt";
という感じで、ファイルに出力する方法ってありますか?

900 :NAME IS NULL:2005/07/04(月) 15:26:26 ID:???
>>899
mysql -uユーザー名 -pパスワード -e "show variables" > /tmp/hoge.txt

901 :NAME IS NULL:2005/07/04(月) 15:44:55 ID:???
>>898
AUTO_INCREMENTカラムの値が200以上のレコードが
存在しない状態にしてから、以下を実行されたし。

alter table テーブル名 auto_increment=200;

902 :NAME 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

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

ただプロパティーのインクリメントカウンタはリセットされないんですね。。。

903 :NAME IS NULL:2005/07/04(月) 18:43:41 ID:???
画像・音声・動画のようなバイナリファイルそのものを
格納して管理している人にそのコツを伝授されたし

# やっぱりメタデータだけをDBにつっこむ方のがいいのかなぁ・・

904 :NAME 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/



905 :NAME IS NULL:2005/07/04(月) 22:14:04 ID:???
script kiddle …

906 :NAME 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つのクエリで上記の事はできないんでしょうか?

907 :NAME IS NULL:2005/07/05(火) 22:34:45 ID:veoPzi6O
>>906 一ヶ月以内,新しいもの,ランダムの3つを自己結合すればできるんじゃないかな。


908 :NAME 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;

909 :NAME IS NULL:2005/07/06(水) 03:12:01 ID:???
>>906
ザクッと取得してプログラムでやったほうが良い希ガス。
何故そこまでSQLに拘るのか良く分かりませんが。。

910 :NAME IS NULL:2005/07/06(水) 05:02:48 ID:qLbhtRo3
>>906

まあ無茶なSQL文1つになりそうだったら、"CREATE TEMPORARY TABLE..."構文を使って
複数回に分けた方がいいよ。

911 :NAME IS NULL:2005/07/06(水) 10:39:19 ID:???
言えてる・・・・・・
「一ヶ月以内」という条件で、取得行数をある程度絞り込んで取得して、
あとはプログラム的に処理した方がいい気がする。

ヘボいプログラムしか書けないならSQLの方が速いだろうけど。


912 :NAME 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 ではどうすればいいんですかね?
テーブル設計やり直し、は避けたいです。

913 :912: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

ですね。

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

$ ./mysql -u root -ppassword

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

なんかいつも気持ち悪い。

915 :NAME 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

宜しくお願いします。

916 :NAME IS NULL:2005/07/06(水) 15:09:52 ID:BdQEHxsk
>>914
ヒント:Usage: mysql [OPTIONS] [database]

917 :NAME IS NULL:2005/07/06(水) 19:50:35 ID:???
>>915

マニュアルくらい嫁。

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

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

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



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

宜しくお願いします。

919 :NAME IS NULL:2005/07/06(水) 23:28:04 ID:???
>>918

できません。どうしても必要なら SELECT した値から -1 してください。

920 :NAME IS NULL:2005/07/07(木) 02:39:26 ID:???
>>919
了解!
ありがとうございます。

921 :NAME 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 です。


922 :NAME IS NULL:2005/07/07(木) 21:17:58 ID:???
>>921

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

変更しただけでは問題ないが、
以前のデータベースはEUCでした。
ある時から、作成したデータベースはUTF-8です。
では、どこかで問題が生じるので、
よく考えてから、設定するべし。


923 :NAME IS NULL:2005/07/07(木) 21:19:28 ID:???
>>921
書くセクションによって意味が違ってくるわけだが...
まあMySQL4.0.xなら、サーバやクライアントがエンコードの変換を
行う訳ではないので、途中で変えてデータが変な風になることはないよ。


924 :NAME IS NULL:2005/07/08(金) 01:54:04 ID:???
自前でsocketを開いてMySQLdと直接お話ししてみたいのですが、
どんな風に会話をすすめていけばよいでしょうか?
そこらへんのプロトコルもドキュメント化されていたりするんでしょうか?
それともソース嫁ということになるんでしょうか?


925 :NAME 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以上が対象と見るのがよいかも。


926 :NAME IS NULL:2005/07/08(金) 07:31:16 ID:???
最近問題のSQLインジェクション対策

http://www.pahoo.org/e-soul/privacy/atwork/atwork-012-01.shtm


927 :NAME IS NULL:2005/07/08(金) 12:13:53 ID:???
>>924
公式のクライアントライブラリも勿論参考にしたけど、libmysqlcを使わない
PurePerlで実装されたNet::MySQLつうモジュールがあって、そのソースは大いに
参考にさせて貰った。Perlが余り読めなくても、読んでみる価値があるよ。

928 :NAME 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)
というエラーが発生してしまいます。
どなたか解決方法ご教授願えないでしょうか?

929 :U ◆CZtFsGiu0c :2005/07/08(金) 14:16:33 ID:???
>>928
nextを実行せずにgetIntしたとか?
どちらにしてもコードがないとわからないよ。

930 :NAME IS NULL:2005/07/08(金) 14:17:09 ID:Ea/nAz46
>>928
ヒント:java.sql.SQLException: Illegal operation on empty result set.
                              ~~~~~~~~~~~~~~~~~~~~
                                    ↑
                                  ここに注目!



931 :NAME IS NULL:2005/07/08(金) 16:08:12 ID:???
どういうコード書いたかさらさないでさすがに答えれないなぁ・・・

932 :930:2005/07/08(金) 16:55:41 ID:Ea/nAz46
>>929>>931
いや単にSELECTの結果が0件なのにgetIntしちゃっているとか、
要するにnext()をちゃんと使えていないだけの話な希ガス

わざとそういうコード書いて走らせると同じエラーメッセージ、同じスタックトレースでるし。

933 :929:2005/07/08(金) 17:10:29 ID:BrFVObAD
next()を呼ぶより前のexecuteQuery()でエラーがでていることまでは
突き止めたのですよ。

rs = statement.executeQuery();

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

rs.next();

そして、これは実行されていないみたい。

934 :NAME IS NULL:2005/07/08(金) 18:02:58 ID:???
>>933
だから>>931の言うようにさらせよ。クエリ含めてな。
憶測言っててもしょうがないだろ?

935 :NAME IS NULL:2005/07/08(金) 18:33:45 ID:???
そういやMySQL自体のバージョンもさらしてないし
ドライバも何を使ってるかさらしてないな
コネクターJだけでもいくつかあるし

936 :929: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();

937 :929:2005/07/08(金) 18:53:37 ID:kPMHhPk+
要点だけ晒すと、>>936みたいになります。
ここまででエラーが出てることがブレークポイントを使ってわかっています。
j-connectorのバージョンは今、ちょっとマシンが手元になくて申し訳ないで
すが調べられません。


938 :NAME IS NULL:2005/07/08(金) 19:09:04 ID:???
まず汎用SJISになってるけどこれはWindows-31Jではないかな

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

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

つーかあなたは本当に929なの?

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

他の設定のマシンではこのプログラムは動いたので、憶測ですがMySQLの設定
がおかしいのではないかと思います。
以下はmy.iniの内容です。

940 :929: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

941 :NAME IS NULL:2005/07/09(土) 00:53:07 ID:wvc0k73q
さっきから929と名乗っている方はたぶん928さんなんじゃないかと・・・・

929の人は928へ回答を試みようとしたコテハンの人だし。

942 :NAME 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の呼び出しでエラーが発生していると示されているよ。

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

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



943 :929もとい928:2005/07/09(土) 01:45:21 ID:oAtPXrFY
>>942
お騒がせして申し訳ないです。
解決しました。
どうやら自分のあほなミスのせいでした。
理由はただ単に、カラのテーブルにselectをかけてそこにgetIntをかけて
いたようです。
といか、もろにerror文に書いてありますね。
返信くれた方々申し訳ない
首つってきます。orz

944 :NAME IS NULL:2005/07/09(土) 02:18:16 ID:Q7BBoWAa
>>943
ともあれ解決できてなにより。
一度首つってたらまた帰っておいでね〜。ノシ

945 :929& ◆Ut.f.i5r3w :2005/07/09(土) 18:44:46 ID:B2iYrnUL
>>944
サンクス
・゚・(ノД`)

946 :NAME IS NULL:2005/07/11(月) 15:32:58 ID:???
>>928
>>930がすぐに答えてくれていたみたいだね。
まあ俺もそういうことがあったが、パニックの時はしかたないかもな。
ドンマイ。

947 :924:2005/07/11(月) 16:39:28 ID:???
>>925
遅くなりましたが、ありがとうございました。目的を果たせました。
あとPerlのNet::Mysqlあたりがすごく参考になりました。

948 :NAME IS NULL:2005/07/11(月) 21:02:59 ID:???

>>731

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



949 :NAME IS NULL:2005/07/11(月) 22:17:02 ID:???
binlog使えよ。


950 :NAME IS NULL:2005/07/12(火) 01:34:32 ID:6P02ZkBP
>>948

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

大規模ならレプリケーションもバックアップの手段の1つとして使うと良いよ。

951 :NAME IS NULL:2005/07/12(火) 22:19:15 ID:???
>>950
レプリケーションって、バックアップという観点では、
ハードトラブルのための冗長化でないの?
バグとかのソフト系の障害では全滅と思うけど。

952 :NAME 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ユーザ大手企業では
レプリケーションを中心に据えたバックアップ運用をしてるとか聞いた。



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

そ、そ、そんなばかなー!!

954 :NAME IS NULL:2005/07/13(水) 15:33:11 ID:???
( ゚д゚)?

955 :NAME IS NULL:2005/07/13(水) 20:57:04 ID:???
>>952-953
俺も>>953のを想像したんだが、>>952の言う
間欠的にレプリケーションをさせるというのは、
俺的には新しい観点で、Masterの運用に影響もなく、
いいのかもしれないね。


956 :NAME IS NULL:2005/07/13(水) 23:58:26 ID:B1MsBXgZ
RedHatLinux 9.0 にMySql5.0.7 beta を入れたいのですが、どれをダウンロードすればよいのでしょうか。


957 :NAME 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からシンボリックリンクを張れ。



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

orz...

959 :NAME IS NULL:2005/07/14(木) 06:12:13 ID:???
>>957
アップグレードはどうやるの?

960 :957: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 へシンボリックリンク。

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

この手のノウハウについては英語圏ではいろいろ本とか記事?とかでてるみたいよ。


961 :NAME IS NULL:2005/07/14(木) 10:57:32 ID:???
>>960
で、データーベースの移行はどうやるの?

962 :956:2005/07/14(木) 12:34:34 ID:???
>>957
どうもでありがとうです。 
どこ見ても説明がみつからんもんで・・・。

CPUすんません。おっしゃるとおりで、Celeronです。


963 :NAME 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です

964 :NAME 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'

965 :802: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"); # エラーは出ない。

こういった場合にはエラーが出るようにテーブルを作るにはどのようにしたら良いのでしょうか?

966 :NAME 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の起動パラメータで設定できるみたいだけど、
現状ではアプリケーション側で対処するしかないみたいだね。

967 :NAME IS NULL:2005/07/14(木) 19:40:08 ID:???
>>963
これってつまり何をやってるん?

968 :965:2005/07/14(木) 20:01:22 ID:bLVhDXNB
>>966
有難う御座います。そうなんですね...。
アプリ側で考えます。

969 :963:2005/07/14(木) 20:06:38 ID:???
>>964さん

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

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

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

こんな感じです(^-^;

970 :NAME IS NULL:2005/07/14(木) 20:19:28 ID:???
>>969
どーでもよい話だが人事関係のDBをさくらのレンサバに預けるのも
ある意味凄いな。怖くないか?

971 :NAME IS NULL:2005/07/14(木) 22:52:11 ID:???
>>961
本番データは、MySQL本体とは別の共通ディレクトリに
置けばいいじゃん。

972 :NAME IS NULL:2005/07/15(金) 02:06:21 ID:0pzFxJt7
>>961
データとサーバのバージョンは分けて考える。>>971のいうように共通ディレクトリがいいのかも。

4.0系から4.1系にあげるときのようにファイルフォーマットが代わる場合には新しいディレクトリが必要。
(確か変わるよね?)

973 :NAME IS NULL:2005/07/15(金) 09:19:06 ID:???
んー、4.0から4.1にするんなら同じデータ使えるよ。
逆だとあんまり良くないけど。


974 :NAME IS NULL:2005/07/15(金) 12:02:10 ID:???
4.0と4.1ってめちゃくちゃかわってるとおもわれ

975 :NAME 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)

976 :NAME IS NULL:2005/07/15(金) 22:04:56 ID:???
誤り1118(42000): 大き過ぎる状態でサイズをこいでください。 BLOBsを数えないで、
中古のテーブルタイプに、最大の列のサイズは65535です。 あなたはいくつかのコラムを
TEXTかBLOBsに変えなければなりません。

977 :NAME IS NULL:2005/07/15(金) 22:31:21 ID:???
コラム吹いた

978 :NAME IS NULL:2005/07/15(金) 22:42:50 ID:???
>>974
ん? 現に使ってますが。
ISAM形式の奴が残ってて、それだけは駄目だったけど。
(コンパイルオプションに入れなかったから)

ま、いまさらISAMなテーブルが残ってるほうが問題ですが。



979 :NAME IS NULL:2005/07/15(金) 22:52:40 ID:???
>>977
野暮なツッコミで申し訳ないがcolumnをコラムと読もうがカラムと読もうがどっちでもいい。
DB界隈ではカラムと読む方が一般的だけど。

980 :NAME IS NULL:2005/07/15(金) 23:13:58 ID:???
4.1って強制UTF8のせいで
マルチバイトキャラクタがテーブル名や列名にはいると互換性なくなってなかったか?


981 :NAME IS NULL:2005/07/15(金) 23:21:23 ID:???
>>979
読む場合はどっちでもいいけど、書くときはコラムだと嫌だな

982 :NAME IS NULL:2005/07/16(土) 01:09:44 ID:???
そろそろ次スレの季節ですね

■関連スレは
http://find.2ch.net/index.php?BBS=ALL&TYPE=TITLE&STR=MySQL&COUNT=50

で手抜きしていいんでないの

983 :NAME IS NULL:2005/07/16(土) 03:21:45 ID:???
phpmyadminにある「次の行を編集する」みたいに、
自動的に次のレコードを表示させる・・・ような関数って無い?


984 :NAME IS NULL:2005/07/16(土) 09:39:37 ID:???
テーブル名や列名をascii以外にはしない。
コーディングするとき面倒くさいから。


985 :NAME IS NULL:2005/07/16(土) 14:23:36 ID:???
毎日 row がある程度増えて行くんですが、unique 性があればいいのは一定時間だけなんです。
こう言う場合は primal key ってどうすればいいんでしょうか?
Oracle 使いに聞いたら、循環する int を使えと言われたんですが、
MySQL にそんなのありますか??

986 :NAME IS NULL:2005/07/16(土) 16:18:24 ID:GKvS+qiJ
>>985
auto_incrementを使う

987 :985:2005/07/16(土) 16:30:00 ID:???
>>986
ネタ?
ちなみに mysql では 各column の値が定義領域を超えると、
最大値に丸められます。

988 :NAME IS NULL:2005/07/16(土) 18:00:31 ID:???
なにこいつ

989 :NAME IS NULL:2005/07/16(土) 23:19:48 ID:NbSXfESe
MySQL4.1で、文字コードを「ujis_japanese_ci」にして、PHPからEUC-JPの文字列を
登録したら、データが壊れて登録してしまいます。

どのようにデータを登録すればいいのでしょうか?

990 :NAME IS NULL:2005/07/16(土) 23:23:47 ID:???
>>989
どのようなデータを登録すると、どのように壊れたデータが
登録されたのかを書きなはれ。世の中エスパーばかりでは
ないんで。

991 :NAME IS NULL:2005/07/16(土) 23:31:06 ID:???
985がネタだろ

992 :NAME IS NULL:2005/07/16(土) 23:32:32 ID:???
つか>>987がネタ。
嘘つくな。

993 :NAME 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)
)

とかは?


994 :989:2005/07/16(土) 23:35:02 ID:???
失礼。

文字列(文字コードEUC-JP)
「東京都|大阪府|愛知県」

SELECTで表示させたデータ(文字コードEUC-JP)
「東??」

ブラウザで見ると、?と黒い菱形の中に?があるものが所々ある。
単純に文字コードがEUCではなくて、UTFとかで入っているのかと
思ったけど、そうではないみたい(色んな文字コードに変換してみたけど駄目だった)


995 :NAME IS NULL:2005/07/17(日) 01:25:40 ID:???
Update で join って出来る?

996 :990:2005/07/17(日) 06:08:59 ID:???
>>994
MySQLサーバーとクライアント間の文字コードが合っていないと
思われ。
PHPでMySQLに接続後、SET NAMES UJISを送る処理を追加すれば
直ると思うよ。

997 :NAME IS NULL:2005/07/17(日) 09:46:26 ID:???
次スレ
MySQL 総合 Part5
http://pc8.2ch.net/test/read.cgi/db/1121561160/

998 :NAME IS NULL:2005/07/17(日) 12:34:49 ID:???
998

999 :NAME IS NULL:2005/07/17(日) 12:42:18 ID:k8NW5frL
999

1000 :NAME IS NULL:2005/07/17(日) 12:42:55 ID:???
1000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

322 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)