MySQL 総合 Part13 ..
[2ch|▼Menu]
703:NAME IS NULL
08/05/01 21:04:05
質問です。

cpu:Core2Duo E6320
os:debian sarge
db:mysql 5

上記組み合わせで、このサーバをDB専用サーバーとして稼動させた
場合、mysqlのチューニングによってはCPUが最大で50%(1cpu)まで
しか使えない可能性ってありますでしょうか?

704:NAME IS NULL
08/05/01 22:57:20
きれーにするーされたな

705:NAME IS NULL
08/05/01 23:13:07
>>702
mysqlの変数って何?
ストアドファンクションを作ってるのかな。

>>703
smpのカーネルじゃないとそうなることもあるのかもしれない?
有識者の方お願いします。

>>704
何がしたいのか分かりません。

706:NAME IS NULL
08/05/02 11:35:50
>>702
select @name:=name from hoge;
select @name;

707:696
08/05/02 19:34:28 gVoO+8Lg
>>697
>>698
どうもありがとうございます。
参考になりました。


708:NAME IS NULL
08/05/02 22:12:33
MySQLの無料版ってなくなっちゃうんですか?

709:NAME IS NULL
08/05/02 22:14:32
無くならないよ

710:NAME IS NULL
08/05/03 03:45:01 UXm9qTN+
質問します カラムの値がNULLのものを削除したくて以下を実行しましたが
うまくいきません
delete from schedule where `evId` =''
delete from schedule where `evId` =NULL
両方ともだめです 何が原因として考えられるでしょう?
誰かご意見お願いします

711:NAME IS NULL
08/05/03 04:10:50
evId IS NULL

712:NAME IS NULL
08/05/05 05:16:45
データベースのフィールドの順番を変えるにはどんな命令を使うんでしょうか。
例えば

A B C D

となっているフィールドを

A C B D

にしたいんですが。

713:NAME IS NULL
08/05/05 06:08:56
変える必要なんてあるの?

714:NAME IS NULL
08/05/05 06:15:56
データファイル読み込むとき、フィールドの順番とデータの順番が逆になってたんで。

データのほうをいじってもいいんだけど、一応データベースの方も変えられるなら知っておこうと。

715:NAME IS NULL
08/05/05 11:01:12
まあ、速度的な面とかなら。


716:NAME IS NULL
08/05/05 12:41:16
DROP → CREATE

717:NAME IS NULL
08/05/05 18:14:35
>>712
alter table TBL modify B int after C
とか?


718:NAME IS NULL
08/05/05 21:18:24 umNt+46L
今までパスワードを暗号化せずにそのまま保存していたのですが、
次回の更新ではmd5で暗号化したパスワードを保存し、
その値でログイン出来るようにしたいと思います。

現状のパスワードをmd5化して更新する方法ってありませんでしょうか?
MySQLは4.1.22を使っています。

719:NAME IS NULL
08/05/06 01:21:23
>>718
update tbl set col=md5(col)


720:NAME IS NULL
08/05/06 03:26:20
>>1
ちわちわ

721:NAME IS NULL
08/05/06 14:56:41
巣に帰れ。

722:NAME IS NULL
08/05/06 19:58:26
ホスティング会社が3.23→5.0にうpグレードしやがった。
運用していたDBがオワタw

723:NAME IS NULL
08/05/06 20:05:41
>>722
アナウンス無しで?

724:NAME IS NULL
08/05/06 20:09:24
>>723
アナウンス無しで。
設定はしたから新規のデータは入るようになったけど、
古いデータが破壊されちゃった。

外国の安い会社だから、まぁ自己責任orz

725:NAME IS NULL
08/05/06 20:29:06
データ破壊てw
泣くわそんなん

726:NAME IS NULL
08/05/06 20:30:12
泣き虫は嫌いだ、じっちゃんも言ってた

727:NAME IS NULL
08/05/07 00:22:52
>>719
遅レスですけど上手くできました。ありがとうございました。

728:NAME IS NULL
08/05/07 13:33:51
参考サイトをみながらMySQLを勉強している者です。

サイトの説明どおり1ステップづつこなしていたのですが、サンプル用のバックアップファイルをDLしてきて自分の環境で復元するところでつまづいてしまいました。
バックアップファイル内の命令文を1文づつ手作業で打ち込んでいったところ、
CREATE TABLE T01Prefecture (
PREF_CD INT,
PREF_NAME VARCHAR(10),
PRIMARY KEY (PREF_CD)
);
を打ち込んだところで、
ERROR 1005 (HY000): Can't create table 'sampledb040.t01prefecture' (errno: 121)
というエラーが表示されました。

テーブルが作成できないというエラーのようですが、原因がさっぱりわかりません。
テーブル名をT10Prefectureに変えると作成できるのですが…
どなたかこのエラーの原因をお知りでしたら、ぜひお教え願えないでしょうか?

729:NAME IS NULL
08/05/07 14:28:12
普通はリダイレクト使ってやるような作業だよね
どっかで打ち間違えたんじゃないの?

730:NAME IS NULL
08/05/07 15:20:47
文字を打ち間違えた場合だと、T01prefectureをT10prefectureに変えても通らないはずだと思うのです。

ググっていくつかのサイトを見てみましたが、以前同じ名前のテーブルを作成した事があるのが悪い…のかな?
同じエラーで悩んでいるらしき人のBlogなどは見つかるのですが、何がどう問題なのか理解が及ばない。

731:NAME IS NULL
08/05/07 16:37:15
>>730
既にその名前のテーブルが存在するなら作れないですよ。

732:NAME IS NULL
08/05/07 18:27:43
DROP TABLE T01Prefecture;

733:NAME IS NULL
08/05/07 22:32:39
バックアップファイル内に予めテーブルを削除する文も入っているんです。
後出しでホントすみません。
URLリンク(mysqlweb.net)
のリンクにある040backup.zipというファイルなのです。

前のステップでsampledb040を使った練習があったけど、やはりこれのデータが変な風に残っているのでしょうか?


734:NAME IS NULL
08/05/07 23:16:52
リダイレクトでファイル直接流してみなよ

735:728
08/05/08 14:39:58
ご、ごめん。
最初は参考サイトにあるとおりリダイレクト(でいいのかな? Mysql -u ユーザー(root) -p データベース名 <"パス")とやってたのです。
それでテーブルを作成できませんというエラーがでるので1行づつ手打ちしてみたのです。

後出しばかりでホントごめん。
人に相談するには早すぎました。まともな説明ができるようになるまでは独学でがんばります…

736:NAME IS NULL
08/05/08 21:38:34
>>735
drop したあと、ほんとにdropできてるか確認してみるとか?

テーブルの作成権限がないだけかもしれないけどMySQLのその辺は
詳しくないので、もしそうなら他の人にお任せします。

737:NAME IS NULL
08/05/09 13:39:41
MySQLのトリガーって他のテーブルに対して処理できないって本当ですか?

738:NAME IS NULL
08/05/10 11:00:09
>>737
うそです

739:728
08/05/10 12:14:55
MySQLのdataフォルダ内にあるsampledb040フォルダを削除し、データベースを作詞するところからやり直したらテーブルが作成できました。
お騒がせしてすみませんでした。

こんな解決方法で良いのかな…?

740:NAME IS NULL
08/05/10 20:35:52
LOAD DATA LOCAL INFILEを使うときの、ローカルPC側のファイルパスの指定の仕方って、

"c:\hoge\hoge.txt"
"c:/hoge/hoge.txt"

これ以外に指定方法ってあるんでしょうか。
どちらでやっても、not found (Errcode: 2) になってしまいます><

741:NAME IS NULL
08/05/10 21:25:53
hogeディレクトリーにhoge.txtが本当に存在してるかい?

742:NAME IS NULL
08/05/10 21:26:01
>>740
\の場合は\\と書かないとダメな気がする

743:740
08/05/10 21:42:07
>>741
存在してます。

>>742
\\でやってみましたが、同じくnot foundでした。

ちなみに、xserver(共用レンタルサーバ)上のDBにLOADさせようとしているんですが、
気になっているのが、LOADするファイルはUTF-8なんです。
ところが、xserverのMySQLのcharacter setはujis、character setsは
latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru
latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek
win1250 croat cp1257 latin5 で、utf8がないんですよね。

phpMyAdminで、ALTER TABLE テーブル名 CHARACTER SET utf8; を指定した後に
実行しても結果は同じエラー。
phpでプログラムを組んで、クエリ発行前に"SET NAMES utf8"をやっても同じエラーでした。

ためしに、LOADするファイルをujis、テーブル側もALTER TABLEやSET NAMESでujisに設定してやってみましたが、同じエラーでした。
MySQLのバージョンは4.0.27です。

いろいろ調べてるのですが、解決策が見つからなくて。

744:740
08/05/10 23:10:59 /V9T+N7z
解決しました。
結局、not foundになった理由はわからないんですが、
phpMyAdminの「インポート」からLOADできました。
数時間前まで「インポート」画面には、
「インポートするファイルの形式」は"SQL"しか指定できなかったのですが、
不思議なことに、先ほどみたら"CSV"が指定できるようになっていて、
そこから入力ファイルを指定してLOADできるようになりました。

745:NAME IS NULL
08/05/10 23:32:01 ZRD2El4R
extの中に、
php_mysql.dll
php_mysqli.dll
コピーしましたが、phpinfo()でMYSQL動きません。
プロンプトからは動きます。
extennsion_dir=c://php/etc
extension=php_mysql.dll
extension=php_mysqli.dll
しました。

dllのバージョンは、phpにあわせなければだめですか?
php5.1なのですが、
dllは5.2です。

5.1のダウンロードはどちらで行えばいいんでしょうか?


restart &再起動を行いました。




746:NAME IS NULL
08/05/10 23:46:05 ZRD2El4R
/etc
じゃなくて/ext
の間違いです。

747:NAME IS NULL
08/05/10 23:49:19
>>745
copy C:\php\libmysql.dll C:\windows\system32

748:NAME IS NULL
08/05/11 01:49:34 I11LIJS2
system32の中に

libmysql.dll
コピーしてもだめでした。

php5ts.dll
php5apache2.dll
をコピーしてもだめでした。

749:NAME IS NULL
08/05/11 03:10:53 ymTwAShD
Windowsを使わなければ良い

750:NAME IS NULL
08/05/11 17:12:51 Lz+kCEMO
Debian上でMySQL5.0を使用しています。

DBに対して発行された全てのSQLをログ出力したいのですが、
MySQLでそういった処理は可能でしょうか?

751:NAME IS NULL
08/05/11 18:22:01
log = /var/log/・・・

752:NAME IS NULL
08/05/12 01:10:50
innodbのデータファイルをテーブルごとに作成する方法ってありますか?

753:NAME IS NULL
08/05/12 01:26:19
innodb_file_per_table

754:NAME IS NULL
08/05/12 16:10:28
>>743
>>646にも書いたけど、4.0系はutfサポートしてません。4.1以降です。


755:NAME IS NULL
08/05/12 20:15:57 8xhRTUUy
質問させて下さい。
table1
---------------------------
name
ねこ
いぬ
うさぎ
かめ
....
ぞう
---------------------------

このようなテーブルで特定の名前を検索し、結果ヒットしなかった名前だけを取得したいのですよがどうのようにしたらよいでしょうか?
例:ねこ、パンダを検索 => パンダを取得

SELECT
1
FROM
`table1`
WHERE
`name` = 'ねこ'
;

このようなクエリをループで数回発行し、取得もできるのですが、できれば1回のクエリで取得したいのです。

ドキュメントを見ていると、 `name` IN ( 'ねこ', 'パンダ' )
として何かすればできそうかなとも思ったのですが上手くかけません。
どうか宜しくお願いします。

756:NAME IS NULL
08/05/12 20:34:25
>>755
つまり条件で使用されなかった名前を得たいわけですよね。
通常だと、`name` IN ( 'ねこ', 'パンダ' ) でヒット分を出して
アプリ側で消し込むのが通常かと。

757:NAME IS NULL
08/05/12 21:43:28
>>765
レス有り難う御座います。
う〜んやっぱりどちらにしてもアプリ側の処理に頼るしかないのかな。
もう少し自分で粘ってみます。

758:NAME IS NULL
08/05/12 22:12:00
NOT EXISTSを使ってできそうな予感

759:NAME IS NULL
08/05/12 22:21:02
ごめん、やっぱり純粋なSQLじゃ無理だわ
検索条件を表示するようなクエリが記述できないからね


'ねこ', 'パンダ'で検索したときに、
ねこ
パンダ
を取得するSQL

・・・不可能

760:NAME IS NULL
08/05/12 22:24:42 a2zzvFoH
初めまして。
Windows2K上で「MySQL入門以前」という書籍を見ながらMySQLをインストールしています。

Apache、PHP、MySQLのインストールは終わり、mysqldをサービスとして登録し終わり
再起動すると、MySQLサーバが起動していません。
#書籍で言うと65ページ付近です

コマンドプロンプトから
cd c:\mysql\bin で移動し
C:\mysql\bin>mysql
と打ち込むと
ERROR 2003: Can't connect to MySQL Server on "localhost" (10061)
と表示され、接続できません。

コントロールパネル>管理ツール>サービス でMySQLを確認すると
「スタートアップの種類」は「自動」となっていますが、「サービスの状態」が「停止」となっています。
「開始」をクリックすると
「ローカルコンピュータのMySQLサービスを開始できません。」
「エラー1067:プロセスを途中で強制終了しました」
と表示されます。

色々検索してみて、コマンドプロンプトから
C:\mysql\bin>net start mysql
と打ち込んでも
「システムエラー 1067が発生しました」
「プロセスを途中で強制終了しました」
と表示され、先に勧めない状態です。

同じ書籍で同じようなエラーを対処された方はいらっしゃいませんでしょうか。
どうかご教示ください。

761:NAME IS NULL
08/05/12 22:38:21
URLリンク(oshiete1.goo.ne.jp)

762:NAME IS NULL
08/05/12 22:39:45
URLリンク(d.hatena.ne.jp)

763:NAME IS NULL
08/05/13 00:16:15
>>761-762
そちらのページを拝見して、サービスの削除・サービスの再インストールを
行いましたが駄目でした。MySQLのアンインストールからやり直してみようと思います。


764:NAME IS NULL
08/05/13 15:44:20 NUBRvh8U
PHP上からMySQLでinsertすると、Duplicate entry '〜' for key 2

PHP MyAdmin やプロンプト上からinsert行うと、普通にinsertできるのでしょうか?

765:NAME IS NULL
08/05/13 15:47:34
キーが同じならどこからでも無理だろ

766:NAME IS NULL
08/05/13 18:50:11
+-----+-------+
| key | title | que1|
|   1 | test  | test |
|   7 | test  | test |
+-----+-------+-
というテーブルがあり、titleからkeyを取り出したいのですが、
select que1 from question where title ='test';ではqueは取り出せるのに
select key from question where title ='test';では構文エラーになります。
主キーは取り出せないんでしょうか?

767:NAME IS NULL
08/05/13 18:52:43
keyは予約語だからでは? `key` とかしてみる。

768:NAME IS NULL
08/05/13 18:54:18
ありがとうございます!
無事取り出せました。

769:NAME IS NULL
08/05/13 21:39:29 NUBRvh8U
キーはインクリメントされるので、
異なってるはずなんですが。

770:NAME IS NULL
08/05/13 21:40:40 NUBRvh8U
`key`は基本だとおも。

771:NAME IS NULL
08/05/13 22:04:51 NUBRvh8U
質問日本語になってなかったので、再度質問します。
日本語できなきゃ、SQLできませんね。えへ!

テーブルに登録されていない 
ユニークな列 brandに
日本語文字列'あしっくす' をinsertしようとしているのですが、
あしっくす という文字列が登録されていないのに、

Duplicate entry 'あしっくす' for key 2

とエラー表示されるのはなぜなんでしょうか?





772:訂正
08/05/13 22:07:10 NUBRvh8U
質問日本語になってなかったので、再度質問します。
日本語できなきゃ、SQLできませんね。えへ!

テーブルに登録されている 
ユニークな列 brandに
日本語文字列'あしっくす' をinsertしようとしているのですが、
あしっくす という文字列が登録されていないのに、

Duplicate entry 'あしっくす' for key 2

とエラー表示されるのはなぜなんでしょうか?

773:訂正
08/05/13 23:31:32 NUBRvh8U
カタガナとひらがな で重複すしてました。


774:NAME IS NULL
08/05/14 03:58:48

◆6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
URLリンク(system-trading.jp)

5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
  デモトレードの優勝者には賞金三百万円がプレゼントされます。


▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
URLリンク(www.fx-gp.com)

▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円

775:NAME IS NULL
08/05/15 05:20:29
URLリンク(dev.mysql.com)
「マルチ列INSERTステートメントの場合」とか書いてあるけど、
このページ内ほとんど
×列
○行
じゃないかな。

776:NAME IS NULL
08/05/15 08:30:54 /PcvCBei
MYSQLとPHPがどうマニュアルどおりやっても、
phpinfoでMYSQLが認識されない。dllに応じてapacheの対応バージョンが異なるらしいんだけど、
本当ですか?

777:NAME IS NULL
08/05/15 09:58:14
ビルドからやってんの?

778:NAME IS NULL
08/05/15 13:04:45
mysql5.0.27を使っているんですが、型の制約として、 num = num - 5 とかやっても
0未満にはならないようにとか、そういった制約ってありますか?
入れるときにチェックしないとだめでしょうか?


779:NAME IS NULL
08/05/16 16:40:06 V7rySszX
質問です
文字コードがutf8のデータベースから、eucのデータベースへ中身を
移動させるのって難しいですか?もちろんMysqlです
管理ツールはphpMyadminを使おうと思ってるんですが、、
蓄積されている情報をEUCに書き換えるような作業が必要になるんでしょうか?
カンタンな手順や専用のツールなんてあるんでしょうか?
どなたか教えてください よろしくお願いします

780:NAME IS NULL
08/05/16 17:59:07
Alter Table

781:NAME IS NULL
08/05/17 09:05:01
>>779
insert into euctable select * from utf8table;


782:NAME IS NULL
08/05/17 19:33:10 dhQBeSfs
GPLの意味がいまいち分かりません。。。


改変したら公開が義務付けられるそうですが、
今のところそういうことをする予定はありません。
「無償版を使うなら、これをしなければいけない、
またこれはやってはいけない。」
というのは他に何がありますか?

商用ライセンスとの違いはなんでしょうか?
サポートを受けられる、というだけのことですか?

「こういうことをやりたいなら、商用版を買うしかない。」
ということはありますか?



783:NAME IS NULL
08/05/17 19:36:46
>>782
バレてはいけない

784:NAME IS NULL
08/05/17 20:31:20
BINARY型ってどういうときに使うんですか?

785:NAME IS NULL
08/05/17 21:19:27
>>784
バイナリーファイル、たとえばdocやxlsの先頭100KBを表に入れたいとき。

786:NAME IS NULL
08/05/17 21:23:16
>>784
Winny のハッシュ管理

787:NAME IS NULL
08/05/17 22:00:06 Zz9EtgnE
データを大量に作りたい場合の作成ツールとか
ありませんでしょうか?

788:NAME IS NULL
08/05/17 22:20:18
なんでもいいならランダム関数でも使えば?

789:NAME IS NULL
08/05/17 22:23:10 Zz9EtgnE
できればおすすめのツールがあればということなんですが。。。
ランダム関数?
勉強不足で。。。
調べてみます。

790:NAME IS NULL
08/05/17 22:35:01
CSVファイルからのINSERTなら何かツールがあるでしょ。
何でもいいからデータを大量に入れたいならランダムを生成する適当な関数作っちゃえばいい。

791:NAME IS NULL
08/05/17 22:37:54
つーかこんなんで悩んでる人がMySQLを何に使うんだ。

792:NAME IS NULL
08/05/17 22:41:57
初学者は常にいます。

793:NAME IS NULL
08/05/17 22:59:08 dhQBeSfs
mediawikiを自宅のPCで使ってみようと思ったら、
MySQLも必要だと言われたのさ。

データベースなんて職場のアクセスをいじったぐらいだ。。。。

794:NAME IS NULL
08/05/17 23:02:21
アクセスはRDBMSではないからな〜

795:779
08/05/17 23:13:43 4inawo49
>>780-781
ありがとうございます
>>780
ALTER TABLE というのは具体的にどうしたらいいんでしょう?

>>781
insertでデータを移動させるということでしょうか?
データベース自体の動いているサーバーが違うんですが、
その場合はどうしたらいいんでしょうか?

796:NAME IS NULL
08/05/18 00:12:40 6bXnmuPh
MySQLver5.0.45の公式バイナリをLinuxにインストールしたあと
初めてのログインで
mysql -u root
を実行したら「root@localhostに権限がありません」的なエラーがでました。
1番始めはrootにパスは設定されてないですよね???

ちなみに
mysql -u root -p
をやるとPassword入力を求められますが何を入力してもログインできませんでした。。



797:NAME IS NULL
08/05/18 00:21:56
>>795
>ALTER TABLE
SQL関連のマニュアルか、リファレンスを読んで下さい。

798:NAME IS NULL
08/05/18 00:38:19
>>795
Alter table tbl convert to charset 
でもこれは、そのテーブル自体の格納されているデータを変換するもの。
二台別々のDBが動いてんなら、一旦もとのtblからデータを全部dumpして、
それを新しい方のtblに放り込んでやればいいんでない。
(この時に特に変換作業は不要。詳しくはmanual参照。でも多分わかってないとハマりそう)

>>796
原因はようわからんが、一旦data_dir以下の全ファイル(インストしたてって言ってるから、重要なデータは入ってないでしょ)
を削除して、/usr/bin/mysql_install_db(←RHEL系のディストリの場合。他ディスでは違う場所かも知れん。)
を実行してやれば、権限テーブルが再構築されるので、再度mysqldを実行。

>>786
ハッシュ自体を管理するんなら、バイナリな必要ないんじゃない?
ハッシュを生成するためのもとのデータを入れるなら、binaryじゃなきゃいかんけども・・。

799:779
08/05/18 08:06:53 JfDPw4vM
>>797
どうもです ありがとうございました
>>798
詳しい説明ありがとうございました
データ移行の本読むべきですね 基本でした ありがとうございました

800:NAME IS NULL
08/05/18 10:46:41 6+oG6BiD
query browserって
データのインポートは出来ないんでしょうか?
csvファイルを取り込みたいのですが、
どのような方法がベターでしょうか?

801:796
08/05/18 11:08:49
mysql_install_dbが権限テーブル作成に失敗していました。
(データベース「MySQL」のusr.MYDファイルを開いてみたら空だった)

原因は/tmpにアクセスする際の
パーミション問題(PCLinuxOSのディストリ的な影響)だったので


TMPDIR=/tmp/
MYSQL_UNIX_PORT=/tmp/mysqld.sock
export TMPDIR MYSQL_UNIX_PORT

という形で環境変数を変更してmysql_install_dbを実行したら問題なく動作しました。

>>797-798
ありがとうございました。助かりました。

802:NAME IS NULL
08/05/19 00:30:52
long_query_timeについて質問です。

現在DBI経由で、perlなどからSQL実行していますが
この時 long_query_timeに引っかかったクエリーは
エラーなり、補足捕捉情報かなにかを返すのでしょうか?
またこの時、viewは正しく返ってこない、と考えて良いのでしょうか?
MySQLバージョンは、4.0/4.1/5.0になります。

803:NAME IS NULL
08/05/19 11:48:56 cfRUIA6l
MySQL を CentOS 5.1 で使っています。
一般クエリログを出すようにしているのですが、
このログファイルのローテートは MySQL 自身が
やってくれるのでしょうか?

それとも logrotate を設定しなければならないのでしょうか?

804:NAME IS NULL
08/05/19 14:48:36
質問です。
MySQLのソースインストールのconfigureで「--with-readline」オプションがありますが、
この設定はmy.cnf上で後から変更可能でしょうか?

805:NAME IS NULL
08/05/20 07:40:10
>>782
GPLと相容れないプログラムとリンクできない

806:NAME IS NULL
08/05/20 11:56:52 FPNVgIjN
phpMyBackupPro ってソケット経由では使えないのでしょうか?

807:NAME IS NULL
08/05/20 21:51:22
HEAPテーブルについて、マニュアルには「クライアント間で共有できる」
とありますが、接続毎に隔離されたHEAPテーブルは作れないでしょうか?
バージョン4.1です。

808:NAME IS NULL
08/05/20 22:29:57 GGh+9Iru
PHPでの例ですが

$sql = "UPDATE test SET count=count+1 WHERE id='1'";
$res = mysql_query($sql ,$con);

if($res==false){
// 実行されない場合の処理
}

と言うのをやろうとしたのですが、$resがtrueになります。
もしかして、UPDATEって、登録値が無い場合でもtrueになるのでしょうか?
バージョンは4.1.22を使っています。

809:NAME IS NULL
08/05/20 23:46:08 GuaauZDQ
質問です、
mysqldumpでダンプを取りたいのですが、
mysqldump -u root test > dump.sql と打つと
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near 'mysqldump -u root test > dump.sql' at line 1> dump.sql;
となります。
サイトをさんこうにしてやっていますが
うまくいきません。どこが原因でしょうか?
教えて下さいませ。


810:NAME IS NULL
08/05/21 00:06:16
>>807
接続が切れたときに消えてなくなってもいいのであれば、temporary テーブル。

811:NAME IS NULL
08/05/21 00:07:10
>>809
それ、mysql> プロンプトからやってないか?

812:NAME IS NULL
08/05/21 00:08:42
>>808
falseはSQLの実行エラーの場合です。
updateがあったかは、たしか 影響を受けた行数を取得する
関数があったと思うので実行後にそれを使ってください。

813:NAME IS NULL
08/05/21 00:33:26 O5tzPctu
>>811
コマンドプロンプトからやってますが何か?

814:NAME IS NULL
08/05/21 00:53:14
MYSQLを導入したんだけどPHPから接続できないですけどどうしてでしょうか?
MYSQLの設定を済ませて
PHP5のphp.iniの設定では
絵xtension=php_mysql.dllのところを;はずしました。
MySQLの動作もちゃんとしてます。
ですが、
<?php
phpinfo()
?>
上で確認したところMySQLの表示してないです。
mySQLのインストールはこちらのURLを参考にしました。
URLリンク(vine.1-max.net)
こちらには、php5-mysqlが乗ってなかったので追加して
インストールしました。
どこが悪いのでしょうか?


以下がバーションになります。
LINUX:vinelinux3.2
apache:1.3 場所:/etc/httpd/
php5:5.2 /etc/php5/
MYSQL:4.0 /usr/share/mysql/

815:814
08/05/21 02:02:33
自己解決しました。

816:807
08/05/21 02:50:01
>>810
早速有難う御座います。 temporary テーブルでやってみようと思います。

817:NAME IS NULL
08/05/21 02:54:27
MySQL 5.0.51a Linux版です。
全テーブルに更新時刻と挿入時刻カラムをつけ、
beforeトリガーでこれらを更新しようと考えていますが、
オーバーヘッドはどんなものでしょうか?
用途は中小規模のグループウェアみたいなものです。
もしオーバーヘッドが大きいならtimestampで更新時刻だけ
記録することも考えるのですが、挿入時刻もあった方がいいようなのです。

MySQLで設計するのは初めてで感覚がわからないので、
なんとなくで結構ですので助言をお願いします。

818:NAME IS NULL
08/05/21 13:12:17 2ndXeLqA
>>813
何お前
ずいぶんと偉そうだな

819:NAME IS NULL
08/05/21 15:25:29
>>813
理解できるようになってから出直せ

820:>>813
08/05/21 22:05:35 hrtOIMUi
出来ましたが何か?

821:NAME IS NULL
08/05/21 23:17:40 wc8hj2Sl
mysql 4.1.20 CentOS4.1で質問です。
mysql>select * from XXX; を実行し、結果が多い場合、最初の方の結果がスクロールし、コンソールから消えてしまいます。
ls | moreのような感じで、1画面ずつ見たい場合はどうすればよいでしょうか?
やり方がわからないので、bashから 
user$echo "select * from XXX;" | mysql testDB > result.txt のような感じでテキストファイルに落としています。

よろしくお願いいたします。


822:NAME IS NULL
08/05/22 00:05:25
>>821
limit

823:NAME IS NULL
08/05/22 00:18:02
>>821
mysql> pager less


824:NAME IS NULL
08/05/22 00:18:18 P5ig6HYl
質問させて下さい。
MySQL5.1を使用しています。

国内IPを判別する為に以下のようなデータを入力したのですがこれを元に
phpにアクセスしてきたipを国内かどうか(定義IP範囲に含まれているかどうか)判別したいのですが
どのような問い合わせをすれば良いでしょうか?
例えば、58.138.127.1をtable1に対してselectしても一致しないですし。当たり前ですが・・・
table1
---------------------------
ip
58.98.0.0/16
58.112.0.0/15
58.138.0.0/17
58.138.128.0/18
....

このような場合、範囲中にあるIPを全て下記のように生成し、登録してselectさせるしかないのでしょうか?
table2
---------------------------
ip
58.138.127.1
58.138.127.2
58.138.127.3
58.138.127.4
....

純粋なクエリ等の問題ではないのかもしれませんが、いくら考えても良い方法がみつからずほとほと困ってしまいました。
どうかお力添え頂けないでしょうか?宜しくお願い致します。

825:NAME IS NULL
08/05/22 00:37:04
cidrとip表記をごっちゃにしている時点でどうかと思うが、
phpがトリガならmod_geoipでも使ったらどうか?

826:821
08/05/22 01:08:34
>>822 >>823 解決しました。ありがとうございます!!

827:824
08/05/22 01:09:18
>>825
レス有り難う御座います。
早速調べてみます。

828:NAME IS NULL
08/05/22 01:18:09
>>824
MySQLのみでうちがやるなら、IPはINET_ATON()で整数保管。
マスクは別フィールドに保管。
比較の際は、IPの整数をマスクサイズでビット演算して比較。

現状のテーブルのままやるのなら、文字列だからMySQLの
正規表現関数を使うのが速度的にも妥当では。

829:NAME IS NULL
08/05/22 02:19:27
みんな文字化け回避するためにカラムごとに文字コード設定してるの?

830:NAME IS NULL
08/05/22 08:19:01

URLリンク(mainichi.jp)
ネット証券会社が主催するFX(外国為替証拠金)取引コンテストの発表会が21日、都内で行われた。
コンテストに特別参加するグラビアアイドルの滝沢乃南さん、山本彩乃さん、折原みかさん、山口愛実さん、佐々木梨絵さん
の5人が顔をそろえ、シストレに挑戦する意気込みなどを語った。
同コンテストは、自分で作成したトレードソフトの機能を評価する「シストレソフト部門」と、
FX初心者でも安心の仮想マネーを使った取引を体験できる「トレード部門」で賞金総額2000万円を争う。
シストレ優秀ソフトは、最高2000万円までの範囲内で買い取りの可能性もあるという。登録受付は22日から。
仮想取引は6月2日〜09年4月30日までとなっている。



▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
URLリンク(www.click-sec.com)
URLリンク(www.fx-gp.com)

▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円

831:NAME IS NULL
08/05/22 12:15:32
>>824 >>828

PHP側でIPのチェックしたいならPrarのNet_IPv4
URLリンク(pear.php.net)


832:NAME IS NULL
08/05/22 12:26:36
PrarじゃなくてPearでした。

833:NAME IS NULL
08/05/22 19:08:36
varchar (n)の使用バイト数はn+1とのことですが、それなら
本来は100文字までのデータしか入力しないカラムでも
varchar(255)とtinytextの限界で作成しておいて、
アプリ側の入力チェックで100文字制限をするという方針はありでしょうか?

制限を100文字以上に拡張したくなったとき、アプリ側のチェックだけ直して
テーブルは変更する必要がなくていいのではないかと思うのですが。

834:NAME IS NULL
08/05/22 21:54:45
>>833の便乗質問ですが各データ型で使用するバイト長ってどこでわかりますか?


835:NAME IS NULL
08/05/23 01:26:43
>>834
URLリンク(dev.mysql.com)

>>833
別に自分のしたいようにすればいいんでね?(自分にとって、管理しやすいほう、扱いやすいほうで)
ただ、fixed formatでテーブル作成してるんなら、discには実際使ってない部分の領域も書き込まれるけどね。

836:834
08/05/23 01:41:31
>>835
ありがとうございます!助かりました


837:NAME IS NULL
08/05/23 21:38:08 Dt8inalF
SQL文だけで、半角カナを全角カナにする方法(関数)って、ありますでしょうか?

838:NAME IS NULL
08/05/24 02:02:00
搭載物理メモリ48Gのサーバーで、大きな単一テーブル(80G程度)を上手く扱う方法って無いですか?
(そのテーブル対して、更新&参照&集計が頻繁に発生すします。)

my.conf-hugeを元にいろいろチューニングを試してみたんですが、
io-waitが100%に刺さったまま、ハングしたようになり困っています。

開発当初はoracle案件で、ありきたりのチューニングだけで、問題なく動作していたのですが、
クライアントの方針変更で、急にMySQLで開発することになり、非常に難儀しています。
(ちなみに案件規模は、楽天クラスの商品在庫管理です。)


839:NAME IS NULL
08/05/24 02:15:08 /LSToqrf
その規模になると、MySQLでは、どうやっても無理。パフォーマンスや安定性の面でもお薦めしない。
クラに泣き付いてでも、オラクルに戻してもらえ。


840:NAME IS NULL
08/05/24 02:20:15
単一tblって時点で何だかな〜…
大規模すぎてMySQLの範疇じゃないだろ

841:NAME IS NULL
08/05/24 02:36:57
>>839-840
ありがとうございます。でも、それは無理っぽいです。

クライアントのライバル会社が全社的にOpenOfficeを採用したとかで、新聞に載ったらしく、
クライアントの経営トップがそれに対抗して、バックエンドにオープンソース採用の方針を
打ち出したいらしく、私が土下座するくらいでは受け入れられそうにも無いです。

842:NAME IS NULL
08/05/24 02:49:35 /LSToqrf
かなり痛いトップだな。
コッド博士クラスの優秀なDB開発者を雇ってMySQLを改造してもらえ。


843:NAME IS NULL
08/05/24 03:34:26 VAruVHOx
バカ相手してても身体壊すだけだから辞めちゃえw

844:NAME IS NULL
08/05/24 03:39:53
>>841
土下座て。
やるだけの事はやってちゃんと検証データとボトルネック、仕組み的に無理ですって事を踏まえた上で
それでもなんとかしろと言うならやりますが、紆余曲折、最悪こういう想定事態になりますが
よろしいですか?ってクライアントと折衝する人に言ってもらえばどうでしょうか。
自分の仕事は最低限筋の通った理屈を報告して折衝担当者に理解してもらうこと。
もちろん前向きにね。
自分の仕事を理解し、精一杯やるだけやってしっかりとこなした上で無理難題言う上司や客に必要以上の負担を強いられる道理はないでしょ?
ただその事を丁寧にビジネス用語で当たり障り無く表現して相手に理解、納得してもらうよう「伝える」努力は必要ですけど。

私もそこまでのデータの運用経験はないけど、微力ながら言わせてもらうと
■ハード面
・SASでRAID0+1 ファイバーチャネル使えるならそれに越したことはないけど。
=> ディスクの読み込み速度が上がって結果的にMySQLの更新・参照・集計早くなります。
=> バックアップできます。三世代管理くらいまではしたほうが幸せになれるかも。
=> RAIDはライトキャッシュとBBUのついているものを使用 なるべくキャッシュは多い方がいいです。
2GとかつけれるのもあるけどRAIDカード選びは慎重にね。
ディスクはシークタイムがあるから10000rpmのもので秒間16コミットしかできない
ライトキャッシュ積むといっぱいコミットできます

・レプリケーション
=> レプリケーションしているとは思うけど、なんとなくしてなさそうな節があるのでやって見て下さい。
スレーブサーバに参照を掛けるとスレーブの台数分だけ参照はバンバン早くなります。
ただし、マスターと完全同期ではないので入金処理等精度の必要な部分はマスターを使って下さい。
アプリケーション側でのスレーブ参照制御が面倒なら間にLVSでもなんでもいいからロードバランサー仕込むと吉

・memcacheサーバ
=> 80G程度ならサーバ10台以内で構築できると思う
更新はライトスルーでMySQLにも書いて単純参照はmemcacheからすると涙でるほど早い。
但しきちんと両方更新されたか確認、制御する仕組みは必要。

ソフト面に続く

845:NAME IS NULL
08/05/24 04:32:39
■ソフト面
・設計の見直し
=> 詳細知らないので絶対とは言えませんが、MySQL用にテーブル設計、運用設計見直した方がいいと思います。
単一テーブル80Gは異常に思えます。
同一テーブルを複数作って分割・分散したり非正規化してみたり。
内部の詳しい人に相談して下さい。詳細知らないと設計はできません。

・インデックスの見直し
=> 当然ですがインデックスの付け方と発行クエリでMySQLの速度は1000倍違うこともあります。
複合インデックス、プライマリ、単一ユニーク、複合ユニーク気を付けながらexplainしてチューニング。

・クエリの見直し
=> これもexplainしながらチューニング 色々調べてみてください。
=> 拡張インサート、INSERT IGNORE等を使うと便利な局面もあるかもしれません。
=> 集計は、トリガを使ってインサート時に集計値をインクリメントしたりすると負荷がさけれます。
=> DELETEは実行コストが高いので、削除フラグを付けて対応する。一日一回纏めてDELETE処理する等

・MyISAM、InnoDB
=> 参照はMyISAM、更新はInnoDB。
ライトスルー、レプリケーションと合わせて使えばパフォーマンス全然違います。
MyISAMはライトロックが有効かもしれません。デッドロックに気をつけて。

・コンパイル
=> MySQLはソースからICCでコンパイル。速いっす。

・文字コード
=> できればUTF-8。一番苦労しなくて済みます。MySQLの内部コードもUTF-8。

・チューニング
=> ケースバイケースなんでなんとも言えませんが
tmp_table_size
max_heap_table_size
は同じ値にしないとダメですよー
query_cacheをしてみてください
禁断のチューニング
innodb_support_xa = OFF
innodb_flush_method = O_DIRECT
sync_binlog = 0
innodb_flush_log_at_trx_commit = 2
innodbを使用している場合上記設定だとディスクIOがガンガン減るので更新負荷がガクンと下がります。
ただし、データの保存性は最悪。
予期せぬマシンダウンがあれば復旧できない場合もあります。

・専門のコンサル
=> 実現までの早さと質が必要ならMySQLに習熟してる会社にコンサル依頼するのが一番早いような気が・・・
KLABさんにでも頼んでみたら?とふと思いました。
私も規模が大きくなるに連れて運用に悩まされ、夢の中のトイレで自分のションベンの放物線を眺めている時でさえMySQLの事を
考えていた時期が三ヶ月ほどありました。
データもいっぱい壊しました。いっぱい怒られました。あぁ思い出したらトイレに行きたくなってきたのでこれくらいで。

846:NAME IS NULL
08/05/24 04:38:50
追記:あっSUNが買収してオープンソースでなくなるんじゃなかったっけ?


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5392日前に更新/244 KB
担当:undef