前スレで以下のリファレンスマニュアルへのリンクがあった。 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 の正規表現
テンプレ以上
7 :
NAME IS NULL :05/02/12 02:53:24 ID:pNOCDTMn
前スレかわいいのが1000とったな
>>7 ++ですか。
使ってる人ってどれくらいいるんだろ?
maxっとmaxじゃないやつってなにが違うんでしょうか?
>>10 MAXは地域限定。MAXは糖度が高い。
もちっと、どのMAXか限定してよ。
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) (^^;
>14 mkdir bin-log でフォルダを作ったからでは? フォルダ=DB という仕様です。
バイナリファイルをMYDに格納するとそれ自体で圧縮されますか? それとも事前に圧縮して格納した方がいいんですか? あとmyisampack-myisamchkの圧縮率は一般的に効果的ですか?
17 :
NAME IS NULL :05/02/14 00:09:00 ID:BtBlqqvx
>>16 圧縮はされない、効率的にレイアウトされる程度
(ファイルシステム/テーブルタイプによるが)
必要ならIn/OutにGZIP等を噛ます。
Bツリーインデックスなデータベースだから ファイルシステムもBツリーなReiserFS4を採用。
mysqlccってかなり使えるね!
>>12 ??よく分からないのですが、maxにも色々あるということでしょうか?
MySQLAdministratorで設定するときに、my.iniに起動するmysqlを選択できますが、
mysqld、mysqld-ntとの違いは、単体のexeなのかサービスとして動作するものなのかの
違いだと思っているのですが、それぞれにある、mysqld-maxと、mysqld-max-ntとは
なんなのでしょう?
現在調べているmysqlの環境はmysql-4.0.22です。
>>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のどちらもトランザクションが使えるようですが、
内部的な難しい違いはほっといたとしたら、
・ロックは行単位でなく、ページ単位で行なわれる (ページ単位って?)
こんなもんでしょうか?
>>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にしようと思っていますが。
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とどー違うん? 何がどー違うんでしょ・・・(´・ω・`)?
>>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;
PHP+MySQLだと行末のセミコロンはダメじゃなかったかな PostgreSQLならOKだったはず
どうもです。 とりあえず、" "(半角空白)を入れておけば間違い無さそうですね。 どこかのページで「常識」なんて書かれてあったので、驚いていました! (聞いてねぇよ〜状態!) お手数をお掛けしました。ありがとうございました。 m(_ _)m
PHP+MySQLでも行末セミコロン通るぞ。 だからといって、 ・PHPの行末セミコロン ・シェルスクリプトの行末セミコロン ・C言語の行末セミコロン ・SQLの行末セミコロン が全て共通の規約だと思っている時点でオワッテルと思うが。
MySQLが実装する";"を解釈するパーサジェネレータのソースコードを見れば即解消だな
MySQLが動作しない環境ってありますか?
>>31 SEE MySQL Reference Manual 2.2.6 and 2.6
>>31 ある。少なくてもウチのポケコンでは動かない。
>>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サイトがあれば教えてください。 (公式はなんだかごちゃごちゃして分かりづらいです)
phpMyAdminでググれば君の疑問は解消されるであろう
>>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です。 よろしくお願いいたします。
>>38 phpMyAdminのconfig.inc.phpファイルを開いて
$cfg['Servers'][$i]['user']に「root」
$cfg['Servers'][$i]['password']にrootのパスワード
を指定しなさい
>>37 >phpMyAdminはバージョンアップの頻度が高いから、
>解説書いてもすぐに古くなってしまう。
だよね。俺も初心者向けに(自分じゃ使ってもいないのに、仕方なしに)
スクリーンショット貼り貼りの資料作ったんだけど、あっという間に陳腐化した。
note that DO 'chmod 400 config.inc.php'.
>>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ぐらいにしとくべし。
>>43 > MySQL 4(細かいverは?です。どこで確認できるのでしょうか)
% mysql --version
cygwin 版って無いのか…… ググって集めた情報で make してみたが、どうにも作れなかった orz
>>43 間違いなくrootのアカウントを指定したんですよね?
rootなら自分の権限を自分自身で変えられるはずだけど…
phpMyAdminの初期画面に「特権」てあるでしょ?
そこ見てrootの権限書き換えてみたら?
4.1.10
4.0最高! 4.1はバカ!
51 :
NAME IS NULL :05/02/16 09:07:48 ID:wZt+xKmc
php4.2.2 mysql4.0.23 phpMyAdmin2.6.1で 「扱えない拡張子のファイルです 」 と出てきてしまいます。 phpmyadminをおいてあるディレクトリでphpinfoとかは表示させられるので 原因がよくわかりません。よろしくお願いします。
法人向けにGPL用意したってのはねぇ・・・
俺いつも、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?
一応社内のみのシステムならOKだけれども、GPLのソフトが社外に 持ち出されるのを止めれるのかどうかとか問題は多い希ガス
56 :
54 :05/02/16 13:20:45 ID:???
>>55 >一応社内のみのシステムならOKだけれども、
それは、
>>例えば、これが自社内システムならGPLでOK?
こっちのことに対するOKですか?
それとも、一番最初に長々と書いた条件でも「CMLの必要なし」という意味でしょうか?
補足すると顧客の社内向けシステムと考えた場合です。
もちろん、仮想のケースを書いているだけなので、
あなたに「ライセンス違反じゃないよね?」って確認と責任を求めているわけではなく、
見解を聞きたいだけなのですが。
現在postgresを会社で使用しているのですが 社長命令でMySQLも入れろといわれてしまいました_| ̄|○ で、いれようと思うのですが、postgresが既に入っている サーバーにmySQLをいれて、同時に起動させてた際に 問題になる事や弊害はなにか有るのでしょうか? googleなどで調べてみたのですが、それらしいサイトを 見つけることが出来ませんでした…(多分調べ方がわるいんだろうな) そこでどなたか、そういうことをやられた事がある方 もしくは該当するようなサイトを教えてもらえませんか?
58 :
NAME IS NULL :05/02/16 13:29:24 ID:luFECCIC
>同時に起動させてた際に >問題になる事や弊害はなにか有るのでしょうか? ない ポスグレとMySQLのメモリ使用料だけ頭にいれとけ
>>57 別に問題ないよ。
外からPort使って繋げるなら重ならないように注意するぐらい。
まあ、それも両方ともデフォルトなら重なることもない。
>>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接続も同様。 こんな考えはどうなんでしょうか?
素直に買うべき、とも言える罠
にしても、新規の案件っぽいのに4.0を前提に作るっていうのは いまさらどうよ。いくら4.1がアレだからといって、5.0でも今の 仕様は受け継がれていくわけで。
67 :
54 :05/02/16 19:53:33 ID:???
>>64 なるほどありがとう。
>下手な方便つかって回避策考えないといけないようなら、
>PostgreSQLを使うべきでは?
別にいま使おうと選定に迷っているわけでなく、
MySQLを使うときのライセンスについて知りたかっただけ。
サンクスです。
>>66 5.0ってどうなん? 今4.0なんだが。
サブクエリが使えるとか、拡張されてる分は見りゃわかるんだが、
安定度や、パフォーマンスとか、管理面とかは公式にも比較資料が見当たらない。
5.0勧める以上は、数ヶ月くらい使い込んだ感想なんかを聞かせて欲しいんだが。
ライセンスに関しては、具体的事例を示して解説するページくらい作って欲しいな。公式に。
まぁ、高いなら高いで他DBも視野に入って来るから、そんな無茶な話にはならないとも思うが。
>>68 windows版で4.1、5.0使うのはチャレンジャーつか人柱だとだけ。
5.0はまだ開発途上ベータ版でしょ 4.1は5.0の機能を一部先取りバージョン 4.0は安定した枯れたバージョン
72 :
71 :05/02/17 07:35:21 ID:???
73 :
71 :05/02/17 08:20:48 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環境で使えている方がいらっしゃいましたら 設定方法等ご教授いただきたく、お願いいたします。
FedoraはOSの標準文字コードがUTF8じゃなかったか? サーバ側のプロンプトから入力して正常ってことは、UTF8の文字コードをDBに放り込んでる可能性が高い。 しかも、mysqlの設定がUTF8になっていない。 二重・三重に文字コードの扱いを間違ってるに一票。
>>78 それは設定しなおしてるみたいだから、他へ影響は置いておけば
MySQL絡みのところとは関連しないと思うよ。
MySQL4.1.xのサーバとクライアント間のエンコーディング変換の
問題が関係してると思う。MyNAのFAQ参照して設定してみては?
むしろ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からえらい変わりましたね。
自動変換はどうにかならんのだろうか…。
後で結果報告しに来ます!ありがとうございました!
QueryBrowser自身はUTF8固定。 WinのIMEがquery browserに どういうコードを送っているんだろうか? sjisか? だったらsjisをutf8として扱う時点でQBはアウト。 つかえねー
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にして
送ってるってことなのかな?
ってなわけで、ご報告でした。皆さんありがとうございました。
現在、MySqlとPerlとに奮闘中なんです。 今作ろうとしてるのは、サイトメンバー情報のDB化及び検索の機能みたいなものです。 それらはMySqlを使って作ろうとしてます。 さて、付随する掲示板とか日記とか作るとしたら、 パフォーマンスを考えた場合、 それらのデータもDBに突っ込むべきか、 それともテキストファイルに書いて、読み出すコードを書いたほうがいいか悩んでます。 DBに突っ込むと、余計な処理のために重くなりそうな気がしてます。 どうでしょう?
DBI::mysql
>>86 まず、WebサーバとMySQLサーバは同じマシンなのか、
自鯖なのかレンタルか、
さらにmod_perlは使うのかどうか、
書いてくれ。
1つのデータベースにたくさんテーブルがあるとして、 そのなかから、あるフィールドをもつテーブルを抽出するにはどうすんの?
91 :
86 :05/02/22 00:01:31 ID:???
サーバーはレンタルの共用です。 DBサーバーは別ですが、これもまた共用です。 mod_perlは今のとこ考えてません(使ったことがないし、利用不可のため)。 今やってるのサイトでは、すべてのデータをテキストで保存し、 Perlを使ってゴリゴリに読み書きするコードを書いてます。 パフォーマンス的には問題ないです。 でも、それだけでは面白くないので、再構築を考えているんですが、 複数のファイルを読むには、やっぱりSQLを使ってJOINさせたほうが断然楽だし、 いろいろな見せ方ができそうなので、MySqlのあるレンタルサーバーを契約しました。 DBがあるとは言え、ほとんどテキストデータである掲示板や日記まで DBに突っ込んでもよいものかと思ってる次第です。 なお、SQLを使用したいものについて、現在のサイトのデータを使ってテストしてみました。 データ件数は、300件のテーブル3つと4000件テーブル1つ。 この程度なら速度的には問題なさそうですが、 今後データ件数が増えると、重くなりそう。
>>91 DB がその程度で重くなるわけないっしょ。安心しろ。
重ければそれは設計か、コードがおかしい。
>>91 >ほとんどテキストデータである掲示板や日記まで
>DBに突っ込んでもよいものかと
じゃぁ、何を突っ込む気だ?
ロリポかさくらだろ
95 :
86 :05/02/22 22:20:08 ID:???
>>92 今んとこその件数だからそのとおり。
将来はかなり増やす予定。
>>93 DBに入れたいのは、メンバーの情報。複数のテーブルをJOINしたいから。
テキストでやろうと思っているのは、掲示板や日記。
たとえば掲示板だけで1テーブルにした場合、莫大な件数になりそうかと。
その点、テキストファイルなら、スレッドごとにファイルを分ければ
かなり軽くアクセスできると思っとります。
DBでも、インデックスとかきっちりやれば、全然軽いのかな。
我流でやっとるんで、一般的な手法がどうなのかあまり分からないっす。
>>94 鋭い。
Windows版 4.1 の mysqld-max-nt のスレッド数が1万5千以上もあるんだけど、これって普通?
>>96 それは全然普通じゃないが、そのスレッド数ってのは
どうやって調べた(コマンドやその結果の何から)の?
99 :
96 :05/02/23 02:23:01 ID:???
>>98 のおっしゃる通りタスクマネージャです。
立ち上げただけでその数になるので、ちょっと気になったので質問しました。
……普通なのかな?
>>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' ;
>>100 タスクマネージャで列を設定すれば、プロセスに対するスレッド数が見れる
>>95 >DBに入れたいのは、メンバーの情報。複数のテーブルをJOINしたいから。
>テキストでやろうと思っているのは、掲示板や日記。
敢えてテキストファイルも使うなら、普通は逆のような気がするが…
まぁ、結局どうやってデータ保持しようが、
フロントの作りがタコなら、結局はこける。
えぇと、レコード毎に被問い合わせの数を記録しておいて 任意の期間でその数の多さでテーブルをリファクタリングしたい。 具体的にはURLのカラムを対象にして踏んだ数のランキング100ごとの テーブルを自動生成する。このSQL文の例で助言求む。MyISAMで。
>>104 前提として存在するテーブルはなんなんだ?
>>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 以上になります (情報が小出しになっちゃってすみません)
使ってて問題なさそうなので、とりあえず気にしないことにします。
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倍に増やしたいと考え中。
いかがなもんでしょうか?
その程度でDBが重くなると考えるのはあふぉだな
数百万件くらい余裕
まぁ、2chはテキスト保存だったりするわけだが…
114 :
86 :05/02/24 00:31:25 ID:???
上の「◇メンバー情報」のデータで今まさにテストしてるんですが、 一瞬で帰ってくるときもあれば、数秒待たされるときもあります。 だから気にしてます。 DBが共用だから待たされてるってことなのかな。
>>114 ユーザー毎にCPUパワーまでパーティショニングして運用しているわけじゃないだろうから、
その辺はある程度はしょうがないでそ。
たのユーザーのSQLがインデックスはってなくて全件検索はいってるとかあるとこわいな
同人を一冊一冊MySQLに入れたいのですがどういったテーブルを作ればいいのでしょうか? 同人は平均150KBのjpgファイルが10-50枚が1単位(冊)です。見るときはこの1単位毎にします。
普通にディレクトリ掘ってファイルシステムに入れとけ
どうしてもMySQLに突っ込みたいのです。パスもかけれますし… バラの(jpg|gif|png)とかもMySQLにいれて保護したいのです。 MD5のユニークインデックス使えば複重を弾けるらしいので(=゚д゚)ウマー
本箱テーブル:(本ID、ページ番号、画像データ) 主キー(本ID、ページ番号) 使いたければ、MD5ハッシュも入れろ。
バイナリデータ入れたら、入れるときも、見るときも プログラムでも使わないとだめだから、面倒だと思うけど。(クエリじゃ無理だよな?) 他のデータと共に一元管理したいなら分かるけどさ、(ユーザ情報+顔写真とか)
122 :
NAME IS NULL :05/02/24 14:36:35 ID:x9bV7eQL
質問させていただきます。 例えば下の様な2つのテーブルから、SELECT 文で 「『ある食堂(単・複)のうまいメニューが属するジャンル』が好物な人物」 を検索するにはどうすればいいでしょうか? ●「好物」テーブル +------+----------+ | 人物 | ジャンル | +------+----------+ | 太郎 | ごはん類 | | 次郎 | ごはん類 | | 三郎 | めんるい | | 四郎 | めんるい | | 五郎 | どんぶり | +------+----------+ ●「食堂」テーブル +----------+----------+--------+--------+--------+ | ジャンル | メニュー | A食堂 | B食堂 | C食堂 | +----------+----------+--------+--------+--------+ | ごはん類 | 玉子ご飯 | マズイ | マズイ | マズイ | | ごはん類 | お茶づけ | マズイ | マズイ | うまい | | ごはん類 | おむすび | マズイ | マズイ | うまい | | めんるい | ラーメン | うまい | マズイ | マズイ | | めんるい | タンメン | うまい | マズイ | マズイ | | めんるい | ソーメン | うまい | マズイ | うまい | | どんぶり | カツどん | マズイ | マズイ | マズイ | | どんぶり | テンどん | マズイ | うまい | マズイ | | どんぶり | 親子どん | マズイ | マズイ | マズイ | +----------+----------+--------+--------+--------+ 例えば「A食堂またはB食堂でうまいメニューが属するジャンル(めんるい&どんぶり)」が好きな人物 を検索して +------+ | 人物 | +------+ | 三郎 | | 四郎 | | 五郎 | +------+ という結果を得たいのです。 MySQL のバージョンは 4.0.23 です。 よろしくお願いします。
五郎君の好物で「うまい」ものはテンどんだけか。 カワイソウ(´;ω;`)ウッ… 内容ないのでsage
どこの食堂も同じメニューが必ずあるのか?
日替わり定食=残飯処理
暇だからやってみた。 サブクエリ使わない場合は、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以外も増えそうだから別テーブルにした方がいいよね。
Perl や PHP を使わずにバイナリデータをテーブル(のBlob型カラム)に挿入できますか?
WinXP+MySQL4.0.23なのですが、レプリケーションのスレーブを設定すると OSのイベントビューアにエラーが出ます。 シャットダウンと起動とレプリケーション起動のフツーのメッセージが、 例の赤いバッテンとともに追加されてくんですが、これって普通ですか? ・全ての動作は異常ない(レプリケーションもちゃんとしてできてる) ・レプリケーションを殺すとエラーが出なくなる。 ・MySQLの再インストールしても変わらん。 ・マスター側はイベントビューアには全然ログを出さない。 うーむ・・・
>>129 是非とも教えてください
ググってもありませんでした
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; よろしくお願いします。
>>122 は、
>>126 も言っているとおり、正規化すべきだと思う。
また、「好物テーブル」 における「人物」が
「好物」をひとつしか選択できないのはどうかと。
これも正規化するといいかな。
例えた事象だから、本当のところはどうかわからんけど。
>>132 教授は頂けない。
正規化ってどうするの? 属性別にテーブル設けて各テーブルにインデックスカラムを付けるだけなの?
>>136 プログラマ的に気持ちよく分割されてればおk
139 :
122 :05/02/25 13:14:06 ID:z4T9Kjr8
140 :
NAME IS NULL :05/02/26 00:07:27 ID:jOGQTQaN
ASP.NETでウェブ・アプリ作ってる方に聞きたいんですが、 MySQLに接続するために必要なAPIあれば教えてください。 ASP.NET on IIS with MySQL (or PostgreSQL) という構成です。
142 :
NAME IS NULL :05/02/27 00:36:56 ID:w+A6RWPj
ファイルにdrop文とcreate文を書いて実行したいのですが、 drop文で「Unknown table 'テーブル名'」と言われてしまい次のcreate文に移りません。 確かにそんなテーブル無いのですが、再作成のために書いておきたいのですがどうしたらいいですか?
そこで止まることは無いと思うが。
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
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みたいな奴)
>>150 MySQL++ってWindowsでも使えないんだっけ?
>>151 使える。が、別に使わなくても繋げるしね。
もっと言えばDBMSぽく繋がないんだったら、
素のC++だけで、後は自前で作ってもなんとでもなるよ。
>かねやんMySQLみたいな
繋がりが良く判らん
153 :
NAME IS NULL :05/03/01 00:32:00 ID:r4T/MZvg
MySQLのクライアント・サーバー間のプロトコルって公開されてるの?
>>153 特に「プロトコル」って公開はされてはいないが
クライアントもサーバもソースは公開されてますんで
全然隠蔽されてませんよ。要するにアンドキュメントなだけ。
SSL通せば隠蔽はされますが、それとは別の話。
>>146 きちんとしたリファレンス本にはきちんと書いてあるぞ
blobカラムに画像ファイルデータを挿入したんですけど mysqlプロンプトから任意の画像ファイルデータを問い合わせて 任意の画像ビュアーにそのデータを渡して画像を閲覧するようなクエリをお教え下さいませ
php.ini において、magic_quotes_gcp = on にしていれば、 SQLインジェクションに対して安全でしょうか? やはり mysql_real_escape_string() とか mysql_escape_string() とか addslashes を 使うべきでしょうか?
そりゃPHPスレで聞くもんだべ
160 :
NAME IS NULL :05/03/01 17:01:18 ID:4KnrU+VK
MySQLにてテーブルの形式だけを取り出したいのですが mysqldump データベース名 > ファイル名 だとテーブルのデータもくっついてくるのでこれを取り除く方法はないのでしょうか?
【環境】 RedHatLinux WS2.1 mysql-4.0.23(INNODB) 上記環境で使用しています。 動作自体は安定して稼動しているのですが ibdata1が肥大化してHDDを圧迫するようになりました。 なにか良い方法はありませんでしょうか。
>>157 mysqlプロンプトはバイナリーセーフではない作りの気がする。
よって何らかのプログラムを組んでやらないと駄目かと。
164 :
160 :05/03/01 17:48:41 ID:4KnrU+VK
>>162 失礼いたしました。
別ページを見たらレコード削除するとか書いてたので^^;
ありがとうございました。
ああ、あと入力側に256文字制限/プロンプト入力があるような話を MLで見かけた気もする。出力側にも何らかの制限がある可能性も。
>>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 をやり直すしかないのでしょうか?
>>168 定義上のフィールドの並び順を気にする時点で、
データベースを理解してないと思われ。
ま、ALTERでもして鯉
>>168 気になる気持ちは、わからんでもないけどさ。
一旦別の名前に変えて(HOGE→HOGE2)
create table HOGE select ...... from HOGE2
とでもしたら?
PDFファイルをMySQLで管理したいのですが もともとの個々のファイルのタイムスタンプとは別に(でもこのタイムスタンプも埋め込む) テーブルに格納された日時のタイムスタンプをIDの代りにしたいのですが どういうコマンドライン?
>168
>>170 ALTER TABLE tbl_name
ADD column_name INT UNSIGNED AFTER defined_column_nane
174 :
168 :05/03/03 09:30:39 ID:YOiMc7ef
175 :
170 :05/03/03 09:57:27 ID:???
>>169 並び順って、開発効率を上げる面では重要だと思うけど。
リリース後の追加っていうなら分かるが。
>>177 開発環境によってはそんなものは簡単に隠蔽できちゃうでしょ。
だからといって、隠蔽できる開発環境を選べというのは違う気がする。 数百レベルの項目数になると、一つ一つ指定する際のオーバーヘッドも大きくなる。 テーブル分割してjoinすると、パフォーマンスで影響が出る。 項目順を予め入れ替えておくだけで解決できるなら、それはそれでやっておくべきだと思うぞ。
項目数が数百ってギャグ?
カタログスペックに挑戦してるんじゃね?
>>179 いや、隠蔽しても別に1つ1つ指定する必要はないけど?
SELECT * しても、カラム名でアクセスすればイイだけの話だし。
RedHatのクラスタでmySQLの社内システムを組もうと思うのですが 実際に運用されているかた、気をつけることとかありますか?
GPLとか
>>183 HAクラスタだよね。なら特に気にすることはなかったと思う。
社内なら GPL も関係ないしね
>>186 日本語は正確に
×:社内なら GPLも関係ない
○:社内なら GPLでも関係ない(ことが多い)
問題はGPLなコードを社外に持ち出すことをとめることが出来るのかどうか
189 :
NAME IS NULL :05/03/08 12:12:06 ID:s4x3oOUv
>>188 ごめん、よく分かってないんで、教えて欲しいんだけど。
コードを持ち出すってどういうこと?
>>183 のようなシステム作って、それを他に売ることをとめられるかってこと?
それ防ぐことは、別に難しいことじゃないと思う。
それとも、作ったシステムを、社外から使うのを防げるかってこと?
社外から使っても、別にいいんじゃないの?
GPLだし、これ持ち出して自分で改良して売ってみようかな〜
>>190 なるほど。そういうことですか。
内部の人がパクって売ってしまうことを防げないということですね。
会社(法人格)がGPLでライセンスされてるからといって、 従業員にGPLで公開されてると見なせるのだろうか? その前提なしに従業員がパクったら横領だよ。 勿論コード以外の資料を添付または流用したら確実に、 他にも会社の技術を勝手に転用されたと訴えられるだろう。 流用・転用は裁判の結果がでないと判断できないけど、 個人で裁判を受けて立つメリットデメリットを考えると 俺にはそこまで商才はないのでやらない。
んじゃーやっぱり、
>>188 のようなことは、あり得ないよな。
なんにせよグレーゾーン おとなしく商用ライセンス買えと 7万くらいだっけ?
>>194 >なんにせよグレーゾーンおとなしく商用ライセンス買えと
え?話がずれてきてない?
>>186 社内ならGPLでも関係ないこと多い
>>188 問題はGPLなコードを社外に持ち出すことを止められるか?
>>189-192 コードパクって売る輩がいるかも(ハイリスクだけど)
ってことだろ。社内でも(リスク度外視でコード盗むやつを止められないから)
グダグダ言ってないで商用ライセンス買えってことかい?
196 :
192 :05/03/09 03:21:07 ID:???
>>195 俺もちと話がずれてると思う。
別に会社でGPLのを使うのはグレーでもなんでもない。
(MySQL AB的には、恒久的に常用するならCML買えよが本音)
社内で 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です。 よろしくお願いします。
MySQL4.0.23を使用しています。 レプリケーションをしている2台のサーバがありまして masterのバイナリログがmaster-bin.100まで進んでいて slaveがrelayログにmaster-bin.100の分まで溜め込んでいます。 この時にmasterのバイナリログmaster-bin.099までは圧縮もしくは削除しても slave側のレプリケーションは停止しないでしょうか。
サーバとクライアントの通信を暗号化するにはどうすればいいのでしょうか?
>>199 slaveはrelayログでレプリケーションするので、
relayログがあるならmaster側のバイナリログを削除しても大丈夫。
レプリケーションの仕組みはMYSQL全機能リファレンスに詳しく書いてある。
204 :
NAME IS NULL :05/03/11 13:47:22 ID:lHD/WJDj
mysq-4.0.20-3と mysql-Max-4.0.20-3の違いを教えてください。 この二つの用途の違いが知りたいです
maxの方はBDBが使える。以上。
ふたりはプリキュア と ふたりはプリキュアマックスハートの違い
ヲタにしかワカラン解説 w
208 :
Super初心者 :05/03/11 23:02:55 ID:YNcJrtR5
場違いな質問していいですか?
210 :
Super初心者 :05/03/11 23:11:48 ID:YNcJrtR5
やはり...。 データベースの件なら許してもらえますか?
大変大変!ライセンスが糞なんだけどどうしたらいい? 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から利用出来る?
>>211 残念ながらなれる
3.xからずっと使ってきてそれなりに納得してきたのだが
4.1の糞さがなおらないままなのでPostgresに移行しちまった
>>213 popenでmysql呼び出して標準入出力をやり取り
216 :
213 :05/03/12 00:13:22 ID:cnkhU+30
>>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行はワンセットで使うおまじないみたいなものと考えていいのでしょうか?
そうだよ
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アプローチで管理していますが、
クライアントサーバ型で構築したいのです。
お金を掛けて市販ソフトを使用すれと良いのですが、
弱小企業の為、予算が出ません。
参考になる様な書籍など教えて頂けましたら幸いです。
初心者といって免罪符とはならん 逆に初心者と書かれるとレスしたくないと言う人もいるから、そういう名前は付けてほしくない 現在の管理データからMySQLに移行するっていうのならそう難しくないんじゃないか? ライセンスとかは私はわからんが
メールから情報を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
mysqlが起動してなかったりして・・・
>>226 え?今までは自動で起動してたんで問題なく使えてたんですけど
起動コマンド教えてくださいm(__)m
とてつもなく頭の悪いのが紛れ込んできたな。
229 :
225 :05/03/12 21:33:10 ID:???
解決しました
>>228 ごめんなさいm(__)m
4.1.10aと4.0.24キタ━(゚∀゚)━!!!
231 :
NAME IS NULL :05/03/13 14:53:54 ID:DgyjN9xh
テーブル名に日本語使ったらヤバイ?
あるフィールドを降順で並び変えて記録する句があれば教えてください。今は表示する時に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エラーを調べてみたけれどよく分かりませんでした。 どうかエラーの意味を教えて下さい。
>>231 ストレージタイプによっては、DB名またはDB名及びテーブル名
がそのままファイル名に連動することを理解して使うのなら別に構わんぞ。
>>232 意味ワカメ
>>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で並べ変えるしかないのでしょうか。
>>237 >5、10、12、31、44となるように並べかえて「記録保存」
そんなことは出来ない。仮に5、10、12、31、44の順でINSERTを掛けたとして
ORDERを掛けずにSELECTしたら、その順序で取れたとしよう(まあ取れると思うが)。
しかし「いつも、その順序で取れるという保証」はどこにもない。
240 :
237 :05/03/14 00:26:06 ID:???
なるほど…ありがとうございました
>>237 内部的な記録のされ方に何故こだわるのか?
ORDERをかけて正しく取り出せればいいと思うのだが。
>>240 得心いかないかもしれないけど、一般的にRDBとはそういうものだから納得しる。
243 :
237 :05/03/14 14:43:48 ID:???
共有鯖を使っていて、出来るだけ負荷を減らしたかったのです。ただでさえ重い鯖なんで… Excelのような感じだと思っていましたが、少し違うようですね
>>243 負荷って「ORDER BY」を記述する手間のこと?
んなわけないな。
RDBの中の実装は詳しく知らないけど、
もしも、RDBで並び順を保持できたら、INSERTのときに、隙間に入れなければならないし、
UPDATEしただけでデータを移動しなけりゃならない。それこと無駄が多いだろ?
代わりに、そうやって順序をよく保持できるのが、インデックスであって
インデックスがはってあれば、ORDER BYしてもソートの負荷は少ないんでないの?
>>237 にSQLは合わないと思うな
なんか考え方的に
テーブル作成時にchar(80)と指定したフィールドが show tablesで確認するとvarcharになってしまうんですが仕様なんでしょうか? バージョンは4.1です。
>>246 仕様。「暗黙の型変換」で調べてミソ
(個人的にはちとキモチの悪い仕様)
「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文で) +--------+ |???? | +--------+ |清原選手| |新庄選手| |松井選手| +--------+ という結果を得ることはできるでしょうか? (データの中身に別の文字列を連結して表示) 一時テーブルを作成しても良いです。 多分そんな事はできないんだと思うのですが、 もしやり方をご存知の方がいましたら教えて下さい。
>>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使用しています。 正規表現で文字列を取得できないのでしょうか。 ()付きで正規表現関数にかけると、()の中身を取得できるような感じです。 どうぞご教授ください。
ググってみたのかと子一時間
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 なのですか?
「restart失敗すると、当然apacheも落ちる」これ変。 MySQL以前にOS(例えばSWAP)とか、ハードウェアを疑った方がいい。 「2台運用しているのですがまったく同時期に同じ症状が発生」これも。 ・ハードウェアの不具合因子(寿命)の関連 ・電源の問題(しかしこれは、それぞれ別のUPS等噛ましてるんでしょうな) これら運用している2台の関係はクラスタリング?
ああ、これだ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くらいにします
MYSQLのテーブルのデータをエクセル形式で出力したいのですけど、どういうやり方でやるのでしょうか?
エクセルから接続してエクセルにコピーするVBAを使うとか?
>>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を元に移動させ たいのですが何かいい方法はあるでしょうか? 板違いでしたらすみません。
>>264 PHPを既にインストールしてMySQLを操作してんなら、
そういう動作を行うスクリプトを組んだらよかろう。
データ(文字列)を後ろから検索掛けて"Weight"って単語の
位置を調べて、そこからEODまでを切り出し。
切り出したの使ってINSERT
266 :
NAME IS NULL :2005/03/26(土) 08:20:57 ID:I+g70oVB
>>265 ご回答ありがとうございます。
早速やってみます。
最近の若い世代の考える能力が低下しているというのは本当なんだな
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 ていうのが出るようになったけど、コレて何?
>>269 このスレの15レス前ぐらいからの話題に関連。
そろそろ息切れしてついていくのしんどいのだが MySQL 5.0.3-betaが出たね。 まあ大きくは変わらなかったけど、 BIT型が完全に新設なのと、cp932(SJIS for Windows-J)と eucjpms(UJIS for Windows-J)が入ったのが目新しいとこかね。
cp932やっときたか! でも回り見ても新規案件全部postgresにいっちまった・・・
>>272 ライセンス形式ががMySQLよりもシンプルですからね・・・
いやいや、ライセンスは買えばいいのでWEB鯖方面ならMySQL使っていたんだ でも4.0まではよかったけど、4.1で文字コード問題発覚、 Linux等はごまかしでつかえるもののWindowsでは解決方法なし ということで使わないことになったのさ 逆にPostgresはWindows正式対応しちゃったし、C/Sでは MySQLはライセンス料金お話にならないのでどんどんにげてるっぽ
>>273 PostgreSQLもMySQLもライセンスは別に変わってませんが?
でも自分の場合、InnoDB使うようになってきたので費用面ではちとキツイ。
うちはGPLで済む用途なんだけど、MySQL4.1はまだ"待ち"かな。 現状でMySQL4.0またはPostgreSQLなんで新機能待ちではなくて、 MySQL4.0がもう終わりかなぐらいで、MySQL4.1にのれればいい という感じなので、互換度が一番重要でそれの待ち。
MySQLのライセンスって読み方捉え方次第で有料か無料の判断が分かれる。。。 PostgreSQLは商用も無料でシンプル。
>PostgreSQLは商用も無料でシンプル。 には特に異論はない。
いまからSQLの勉強をはじめる人にはMySQLよりPostgreSQLを薦めますか?
280 :
NAME IS NULL :2005/03/30(水) 04:11:50 ID:DxhulZk7
mysql3系は、複数CPUをサポートしていますか? RHELだと3系なんで、できればこれを使いたいと思ってます。 poestgreSQL7系も複数CPUをサポートしていますでしょうか?
>>280 「自分で調べろ」というレベルにすら達してない段階。
280みたいなのがシステム構築して料金ぼったくってるわけだ。
なんにも考えずにRHELのライセンスかって、
なんにも考えずにSMPサーバかって、
なんにも考えずにLAMPシステムつくって…
はぁ.... orz
テーブルのキャラクターセットなんでeuckrはあるのに eucjpはないんだぁ〜〜〜〜〜〜〜〜〜 latin1でつかってますけど・・
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 にエンコードする方法があれば ご教示いただきたいのですが、先達にお心当たりはありませんでしょうか?
>>285 バイナリーなデータファイルだけ貰っても、貰った方も困るわな。
バイナリーなデータは、同じバージョンのMySQLでしか基本的に
互換性がない(4.0と4.1はあるんかな?)から、元のMySQLと同じサーバを
sjisに設定して動かして、そこからデータベースをファイルにdump。
ファイルはsjisで出力されてるのでnkf(skf)などでeuc-jpにコンバート、
ujisに設定したMySQLサーバにimportじゃないかね。
dump後のファイルを別のエンコードに変換しつつimportする
クライアントツールはあるので、探してそれを使ってもいい。
ふつうはバックアップファイルとかわたすよなぁ
>>285 最悪バイナリを解析すれば?
割に簡単にできるよ。
MySQLをiccでコンパイルしている人いますか?
>>286 基本的に上位互換だったと思うが。
つか、sjisからeucに変換するスクリプト書いてupdateすればいいだけでしょ。
>>291 4.1はプログラムのバイナリ書き換えない限りファイルシステムレベルでの
ファイルは強制UTF8だから問題は多いよ
うん? ファイル名(テーブル名)にマルチバイト使ってるの? それは多少厳しいかもだが、リネームすれば大丈夫じゃね?
ファイルの中もデータはeucとかでもその他の項目とかはutf8固定
ああ、フィールド名とかか。 フィールド名はasciiにしてるから気にしてなかったよ。
296 :
285 :2005/04/04(月) 12:44:18 ID:g2xL8Y8+
ご回答ありがとうございます。 逆の発想となりますが、mysql のエラーメッセージの方 を sjis にすることは簡単にできますでしょうか?
以前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を使用しています。 よろしくお願い致します。
>>297 ADOでBLOB/CLOB系のフィールド読み書きする場合は
GetChunk/AppendChunkを使えってことではないかな。
>>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させて無視していますが、
なにか納得できない気分です。
そんな致命的なバグがパッチも出てないとは考えにくいなぁ
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 といった項目は存在しません。 文字化けを解消する方法をご存知の方がいらっしゃったら ご教授ください。 よろしくお願いします。
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は使えないのでこまっております。 どうぞご教授よろしくお願いいたします。
>>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 間違えましたすみません。
そのやり方で解決しましたありがとうございました!!
309 :
NAME IS NULL :2005/04/07(木) 13:07:38 ID:EqrEf0eT
310 :
NAME IS NULL :2005/04/07(木) 14:25:13 ID:qOmyg27t BE:154253388-#
いま Windows で MySQL 4.1.5 を使っています。 最新の 4.1.11 にバージョンアップしたいのですが、 上書きインストールしてしまっていいものでしょうか?
311 :
NAME IS NULL :2005/04/07(木) 15:00:12 ID:DtwT39/7
テーブルのエクスポートのやりかたが分かりません どうするのでしょう?
初歩的な質問で恐縮なんですが、 マスタテーブルとアイテムテーブルに分けてリレーションさせる場合、 マスタテーブルにレコードを追加する際に、アイテムのフィールドに関してはアイテムに振られたプライマリキーの数値を入れる、 ということで合ってますか? つまり、アイテムに振られたキーの番号を覚えていないと、マスタに追加する時に何番を入れたら良いか分からなくなりそうなんですが、 そういうものですか? また、マスタにデータ追加時に、アイテムテーブルに存在しないアイテムが出て来た場合、動的にアイテムテーブルにレコードを追加する、ってことも出来るんしょうか?
アイテムテーブルって一般的な言葉なのか?
315 :
NAME IS NULL :2005/04/07(木) 19:50:28 ID:EqrEf0eT
MySQLの空間を扱うデータベースについて、リファレンスを読んでも 何のことやらさっぱり分からないんだけど これについて解説した書籍を知っていたら教えて欲しい。
316 :
313 :2005/04/07(木) 21:22:07 ID:???
>>314 "item"というテーブルだと思ってください。
>>315 そりゃ貴方がGIS(OpenGIS規格)について知識がないからやがな。
別に広い意味での地理情報だけの仕様でもないでしょう。 例えば二次元情報の時間軸次元付加に空間ベクトルを使っても興味深い。 例えばリレーショナルデータベースという二次元情報の時系列データとして使えば それ自体で差分スナップショットのできあがり〜
>>315 国土地理院のデータ2003年度版を47都道府県ぶち込んだんですが
DBがサイズ1.5Gになった・・・
1.5Gなら使いやすいサイズなのでは? てっきり20Gとか40Gになるのかと・・・・・
20Gって2億レコード強ってとこか。。。 Mysqlで最高80億レコードまでは実績あるそうなんで まーメチャな数字はないが現実的じゃないな。
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が出てきません ネットや本で見ると上の手順で簡単にインストールできるようなのですが できません おしえてくださいお願いします
ドライバのインストールがインストール完了してない感じだけど systemdrive:\WINNT\System32\myodbc3.dll とかちゃんと入ってる?なけりゃ失敗してるんだろうけど原因は知らん。 何かシステムログとかに出てないか
>>319 素朴な疑問。
国土地理院のデータフォーマットってOpenGISなの?
あと、なんでデータをDBにいれたの?
326 :
NAME IS NULL :2005/04/08(金) 11:28:17 ID:Dnu5jh4x
>>324 アドバイスありがとうございます
インストールも正常に終わって
WINNT\System32\myodbc3.dll
もあるのですが、ODBCに追加できません
どなたか分かる方いらっしゃいませんか
>>326 うーん、だとしたらODBCマネージャが腐ってるのか。
望み薄いけどexeのやつアンインストールしてmsiのやつ入れたらどう?
ぢっちみち中身同じだけど。あとMySQL4.1と組み合わせるのはちょっと
どうかと思うがMyODBC2.5系を入れたらどうなるか試す。
Ver 4.1.10a Server characterset : sjis DB characterset : sjis Client characterset : sjis Conn. characterset : sjis となってるんですが、VBAからデータをinsertすると日本語部分が 文字化けを起こしています。どうやったら直るか教えてください。 コマンドプロンプトからinsertする分には正常に表示されるみたい なんですけど。 かねやんMySQLAdimn.exeでログインすると このキャラクタセットでは文字化けを起こす可能性があります。 サーバのキャラクタセット -> クライアントのキャラクタセット -> sjis というメッセージが出るんですけど。
>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が出たのを確認、 サービスを再起動しテストしましたが、駄目でした。
>331 接続文字列が、それだと ODBC の設定が使用されてないよ〜 以下のようにしないと。 P_CNString = "DSN=myodbc"
333 :
329 :2005/04/08(金) 21:26:35 ID:???
どうも指摘有難うございます。 修正後実行し、コマンドプロンプトで見たら文字化けは直りました。 またこれかもよろしくお願いします。
>>327 ああごめ、MyISAMって書いてあるじゃん。
MySQLのバージョンは?
>>335 バージョンは4.1.1で、Windowsでやってエラー発生。
テーブルタイプはデフォルトのままだからMyISAMのはず。
>>336 それはデフォルトがInnoDBになってると思われ。
試しにType=MyISAMを追加してみそ。
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 ワケ ワカ ラン♪ ∧_∧ ∧_∧ ∧_∧ (; ・∀・) (; ・∀・) (; ・∀・) ⊂ ⊂ ) ( つ つ ⊂__へ つ く く く ) ) ) (_)/ (_(_) (__)_) 彡(_)
>>339 たしかに訳若布だが、
なぜにversion下げる?
Mac OSXにmysqlをインストールしたんですが、システム起動時に立ち上がってしまうのを止めたいんです。どうしたらいいでしょうか?
343 :
341 :2005/04/11(月) 19:21:04 ID:???
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
そのMySQLログインユーザはODBC操作を許可してるかい?
347 :
NAME IS NULL :2005/04/12(火) 16:01:47 ID:/8uXX3jw
>>346 ご返答ありがとうございます。
たぶんしてないと思います。MYSQL関連のサイトを拝見したのですが
いまいち分からなくて・・・
ODBC操作の許可ってどうやるんでしょう
なんせ初心者なので・・・
例えば下記のような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を書けば宜しいでしょうか。 考えたけど、よく分かりませんでした。 使うべき関数だけでもご教授お願いします。
select a, min(b) from てーぶる group by a
え ぇ け っ し と る の ぉ(*´Д`)ハァハァ うはっwwwおkwwwうえっうえっwww??
352 :
NAME IS NULL :2005/04/12(火) 19:39:20 ID:yaYL03P4
345の者です。やっぱりうまくいかないです。一番最初のMYSQL起動時にユーザ名とパスワードを入力しなかったのがまずかったのでしょうか?ちなみにアンインストールの後インストールし直してもユーザ名とパスワード入力画面が出ません。今回、サーバ環境作るの初めてなもので…
>>350 なんか出来そうな感じです、有難う御座いました。
354 :
NAME IS NULL :2005/04/13(水) 02:57:35 ID:AvWiAUcm
SELECT * from tables; で出てくる順番において ある行を上から2番目に移動させたいのですが ??????? from tables where xxx is yyy; どうすればいいでしょう? テストデータで何千件も番号の羅列のデータがあるので、 実際に使うデータを見かけ上、2番目にもってきたいという理由です。
えぇけっしとるのぉ(*´Д`)ハァハァ うはっwwwおkwwwうえっwww??
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:???
自己解決しました。 作成できますね・・・。
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はあるのですが、これをつかってでも無理ですか?
>>360 order by とかつけてないなら、
それは「たまたま」二番目に出てくるだけであって、
必ず二番目に出てくる保証はない。
>>360 RDBMSって基本的に順番は保持してないんだヨ。
RDBMSについて勉強してみましょう。
固定長文字列の中から、 ある文字列を指定した桁に含むレコードを検索したいんだけど、 通常インデックスと全文インデックスどちらでやっても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とか書かなくても、日本語ちゃんとでるよ
>>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 で、あります。
>>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しか見当たらず、もしかしたら無いのかとコマっております。
age
>>372 フィールドロックって何?
レコードロックのことなら以下で。
SELECT … FROM … WHERE ロックしたいレコードの抽出条件 FOR UPDATE
抽出条件の対象カラムが PRIMARY KEY でないとテーブルロックになるので注意。
テーブルタイプは InnoDB でないとレコードロックは使用できなかったはず。
Mysqlってテーブルロックだけじゃなかったでしたっけ?
え っ る ハ ぇ し の ァ ハ け と ぉ ァ うはっwww夢がひろがりんぐwwwwww
>>374 すいません、用語が間違ってました
レコードロックというんですね。Google先生でもひっかかります。
ありがとうございました。
え っ る ハ ぇ し の ァ ハ け と ぉ ァ うはっwww夢がひろがりんぐwwwwww
え っ る ハ ぇ し の ァ ハ け と ぉ ァ うはっwww夢がひろがりんぐwwwwww
382 :
↑ :2005/04/16(土) 00:19:52 ID:???
383 :
NAME IS NULL :2005/04/16(土) 10:33:21 ID:zFHNc9CJ
質問です。 フィールドの位置を移動させるにはどうすればいいのでしょうか?
alter
385 :
前スレ966 :2005/04/16(土) 11:59:03 ID:4ylbpIar
前スレでLike検索時に、2バイト文字がうまく検索できないと書いた966です。 あれから、以下のような方法を思いつきました。 PHPで、すべてを取得し、mbstringかけてから配列につめる。 ループさせて、一致する文字を探す。 この方法なら出来るとは思うのですが、みなさんは、どういう風に実現してるんでしょうか? LIKE '%キーワード%'で、作成されている方、みえませんかねぇ?
>>385 いや、普通に LIKE '%キーワード%'の中間一致でやってるよ。
効率は悪いけど。
「2バイト文字がうまく検索できない」のは
ちゃんと文字コードを合わせてないから。
387 :
前スレ966 :2005/04/16(土) 16:25:49 ID:4ylbpIar
>>386 ありがとーーーーー! 感激っす。
力強く断言してもらったおかげで、探す際の気合の入り方が変わりました。
おかげさまで、my.confの書き換え忘れを発見。
さらに、BLOBからTEXTに型を戻して、PHPのSQLからもbinaryを外して、解決。
はー。
ようやく、あちこちに書いてあった意味が、繋がった...
今夜は良く眠れます。
全文インデックスをつけたboolean検索って、emptyになる場合がそうでない場合に比べて極端に遅くない? なぜこうなるのかちょっと不思議。
390 :
NAME IS NULL :2005/04/16(土) 23:56:13 ID:zFHNc9CJ
myisam形式ってメモリ上で格納されるので、速度が速いとどこかで見たのですが、 いきなり電源が落ちてしまった場合は、サーバ立ち上げ時から更新されたデータは飛んでしまうのでしょうか? fedora coreですが、デフォルト状態で使っていても問題ないのでしょうか?
>>387 R-TreeっていうのはたしかB-Treeを多次元に拡張したもののはず。
>>391 heapと勘違いしてない?
そういえば、senna の日本語全文検索機能を組み込んで使ってる人はいる?
会社名が怪しすぎるから試していなかったけど、ちょっとやってみるかな。
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;と同じじゃ?
>>394 select 2 from t1 と同じ意味が正解。
今回の例では、select s1 from t2 でも同じ結果が返るけど、t1 に
複数レコードあれば、結果は異なる。
やってみれば判る。
同様な構造のテーブルに対して行った複数のselectの結果の中から、 全てのselectの結果に含まれるカラムだけを取り出す方法ってありますか?
>>391 > いきなり電源が落ちてしまった場合は、サーバ立ち上げ時から更新されたデータは飛んでしまうのでしょうか?
そう。
> fedora coreですが、デフォルト状態で使っていても問題ないのでしょうか?
用途による。
セッション情報なんかはいいんじゃない?
ロールバックかけるようなものを入れちゃまずいでしょ。
>>397 MyISAMじゃなくてHEAP型のことならと一文あった方が、誤解がない
>>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
数値型フィールドから、ある桁のビットが立っているカラムだけを取り出す方法ってありますか? ビット演算でもインデックスって使われるんでしょうか?
>>401 立ってるだけでいいなら
where (a.foo * 256) != 0
とかで
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:???
自己解決しました。
--with-charset=sjis sjisでコンパイルしたmysqlへhtmlのform(euc-jp)データをインサートすると 勝手にsjisになるんでしょうか。
なりません。
じゃあ意味ないじゃん
「意味」ってなに?
charset=sjis 指定する意味だよ。 なんで指定するの?
>>411 MySQLサーバが中に入ってるデータをsjisのテキストとして扱うため。
指定がなけりゃ、バイナリーなんてどう扱っていいか判らんやん。
もうちょっと突っ込んで教えてください。 selectしたときに出力されるコードがsjisになるって ことでしょうか?
>>413 9 各国キャラクタセットと Unicode
--with-charset=sjis したときには、その文字コードで返ってくるんですか?
--with-charset=sjisつうのは、俺様がsjisとしてデータを投げ込むので 貴様(サーバ)はsjisとして扱い給えという指定。 受け渡しに際して勝手に色々と気をまわすのは俺様に対して失礼である。 また思い込みによって処理を間違える可能性もあるので貴様は他に何もするな。 ということ。
>>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()とか)
>>418 なんだが、ソートせれ、とか言い始めると
単純でなくなる。
>420 LIKE 使うときもな。 文字の切れ目がわからないと困る。
mysqlインスコしたら tcp 0 0 *:mysql *:* LISTEN ここのポートリスンしてるんだがこのままでいいですか? ここのweb鯖からのリクエストしか応じない場合は ふさぐべき?
424 :
NAME IS NULL :2005/04/23(土) 06:52:57 ID:XvvE8E3e
すみません、どうしても分からないので質問させて下さい。 現在一通りデータを入力し終え、PHPからDBを呼び出すスクリプトまで完成しました。 で、色々と検索テストしていて一つ困った事が出てきました。 それは、入力したデータの中に全角英数文字と半角英数文字が入り乱れている事です。 MySQLの方に全角/半角を区別しないで検索する命令があるだろうと思ってたのですが、 いざ実装しようとすると、探せど探せど情報が見付かりません… 宜しければ何方かやり方をご教示願えませんでしょうか?
>>424 ないよ、そんな(半/全を同一視)機能。
MSのSQLサーバとかで慣れて欲しいって話があったので、
フロントで吸収するように作った事はあるけど。
>>425 えぇ〜!そうなんですか!?
う〜ん、最初から分かってればなぁ。
とりあえずデータの方を修正するしかないですね…
しかし、まさか無いとは…orz
>>426 そう驚くものでもないが。
曖昧一致は便利だし欲しい機能ではあるけどね。
渡辺と渡邊と渡邉を同一視してくれるとか、
1や一、壱、@あたりを同じと見なすとか、
まあRDBMSが担当すべき領域なのかは疑問だが。
データを修正するよりも、phpで変換した方が速いんじゃない? いや、パフォーマンスじゃなくって、手間の方が。
PHPだと、全角半角変換も漢字コード変換も一発だったっけか 登録するデータに一貫性が無いとDBなんて・・・・
430 :
NAME IS NULL :2005/04/23(土) 14:13:51 ID:w8MMk9gw
全角半角とかを統一した、検索用の カラムかテーブル作ればいいんだよ。
PHP+MySQLでデータをサイトに表示する以外にメールの送信にも使います。 その為にMySQLにISO-2022-JP(JIS)を使っても問題ないのでしょうか? サイトもISO-2022-JP(JIS)で構成されているので文字化けはしていないようです。 やっている人に聞いたら「動いているから大丈夫」って事なんですが、 使用する文字コードはEUCかUnicode、 あるいはSJISぐらいしか聞いたこと無いので気になってしまいます。
>>431 データベースをujisかutf8に設定して、jisでデータを入れたいって話かな。
ただ単純に格納するだけならujis/utf8の設定で、jisデータを入れることは何ら問題ない。
(MySQL4.1以降はエンコードの無用な変換が掛からないように設定等に注意)
先にも色々出ているが、それを日本語のデータとしてDBMSの機能で色々検索など掛けたい場合には駄目。
データベースにあったエンコードに変換して格納、出力に合わせて、メールならjis、
ケータイ向けならsjisなどとフロント側で変換するのが普通。
あと、ISO-2022-JPで扱えない文字(○囲み数字とか、半角カナとか)が 許されているキャラクターセットからの変換の場合、 その辺を代替または削除する処理もしておく。
詳しくありがとうございます。 今のところは格納しているだけなんですが、 やはりこれから検索などをかけたくなったときに困るので 言われているように格納はujis等にして 必要に応じて変換して使用するようにしてみます。 半角カナや機種依存文字の問題もありました。 本当に有り難うございます。
質問です。
4.1.11を再インストールしたら、Config Wizardの最後で
Could not start the service MySQL.Error:0
と表示され失敗します。
sc deleteやったり、WizardにてRemoveし、サービスの中にも
MySQLがないのを確認して再度Wizardを行っても同様です。
メッセージはやや異なりますが、
>>344 さんと同じでしょうか?
失敗した後でもMySQLサービスが出来ているので、開始させてみると
ローカルコンピュータのMySQLサービスを開始できません。
エラー 1067 プロセスを途中で強制終了しました。
とエラーが表示されます。
解決方法はありますか?よろしくお願いします。
Oracle触ったことはありますがMySQLは初心者です。 MySQLのバックアップ・リストアについて調べています。 MySQLで稼働中にバックアップをとる方法としてはmysqldumpが提供されていますが、mysqldumpで取得したダンプは参照整合性は保障されているのでしょうか? 複数のテーブルにまたがる更新トランザクション中にmysqldumpが走ると整合性が保障されなくなるような気がします。 メンテナンス時間にアプリケーション側でWrite Lockするような機構を用意するという設計思想なのでしょうか?
ストアドプロシージャがサポートされるのは、 3系、4系、5系、どのシリーズから?
>>436 mysqldump --help
mysqlhotcopyもあるよ
>>436 整合性は保障されないのではないでしょうか。
うちの場合は、複数台レプリケーションさせて、
最後の1台だけ、cronでslave stopしてから、
mysqldumpしています。
ダンプ後にslave startすれば、数分後には全台同期します。
やっぱりこれが非同期レプリケーションの利点ですね。
>>441 オライリにそれについてのいい訳書があるよ
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
>>445 select userid from table where groupid in (select groupid from table where userid=1)
>>445 2と3を抽出したいって事か?
id | groupid | userid
---+---------+-------
1 | 2 | 1
2 | 3 | 1
ネストできたっけ?4.0系で
>>447 userid1と同じグループに属する全てのuseridを抽出でしょ?
サブクエリは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はあってもなくても。)
>>452 >
>>449 さんのように結果がほしいので、
> +---------+
> | user_id |
> +---------+
> | 1 |
> | 4 |
> | 7 |
> +---------+
> と出てきて欲しいのですが。(1はあってもなくても。)
シノニムで
454 :
436 :2005/04/26(火) 23:31:14 ID:???
>438,441 どうもありがとうございました。ただいまmysqlsnapshotというのも調べているところです。
DISTINCT ?
こんな質問したら、全然わかってないことがばれるのですが、 質問させて下さい。 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?)
現在の安定系は4.0だと思うのですが 4.1の話もちらほら見かけます 4.0と4.1のどちらが良く使われているのでしょうか? phpでmysqliが使えるようになるので 気になっています
>>458 RDBならできます。mysql3でも。サブクエリいりません。
っていうかもうちょっと勉強しろよ。「結合」か「join」で検索しる。
>>457 mysqliは、PEAR使ってるなら余りメリットは無い。
(MySQL4.1以降の新機能を使うためには、どの道mysqli経由しかない訳だが)
自分はMySQL4.0.xとMySQL5.x使ってる。
MySQL3.xと互換性の高いMySQL4.0.x、新機能でMySQL5.xの区分け。
mysql4でポート番号を3306,3307,3308の3つで 1台のサーバで同時起動って可能でしょうか。
>>460 そこでいう"サーバ"ってのはプロセスのことか?
それともハードウェアのことか?
ああ、台って書いてあるな。 可能。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 BE:76692645-
同じグループから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
普通にPHPの中でその条件Aとか条件BをIF文とかで分岐させて、 その中で、サーバAかBかを指定して接続すれば良いじゃん。
>>465 各サーバが同期した負荷分散ならば、
mysql_connectのホストを乱数で切り替えたりするんだけど。
単にテーブルが散らばってるだけなら、
とてもメンテナンスしづらく思えます。
似た様な事を
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 みたいです。
mysqlとかんけいないじゃん
すいません、mysqlをインスコしたのですが 具体的にどういうときに使ったら良いものなんでしょうか? explorer代わりに使えるのでしょうか? 情報処理試験に受かりたいので、使いこなせるようになりたいのですが
>explorer代わりに使える 1.ファイラーとして 2.IEのようなブラウザとして 使いこなしまくりだな。
>>471 みたいなのが出てきたのも、やっぱりGWのせい? w
おまいら、つられんなよ
大漁ですね
478 :
NAME IS NULL :2005/05/01(日) 08:46:53 ID:EM4XnQsC
MySQLのバージョン3.23.57を使ってるんですが、 NULLを許可してるにも関わらず、INTのカラムにNULLを入れると0になります・・(デフォはNULLに設定) 今使ってるバージョンだとNULLは入らないんでしょうか? バージョン4以降ならNULLになるんでしょうか? 教えてください。
480 :
478 :2005/05/01(日) 17:30:44 ID:EM4XnQsC
くわぁぁ〜! なんで出来ないんだろ。
$aaa = NULL で、$aaaを定義してから、それをINSERTしたんですが・・それが方法が駄目なのでしょうかねぇ。
もうちょい試してみるかなぁ
>>479 ありがとございました〜
>>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上に、こういうアプリケーションってありますか??
mysqladminなりなんなり使えばいい
487 :
NAME IS NULL :2005/05/02(月) 13:55:55 ID:SbYB5t47 BE:134211375-
id / group / name 1 a 山田 2 a 内藤 3 b 大石 4 b 高田 5 a 馬場 6 b 稲田 7 a 大隈 8 c 岩田 9 b 山口 こんな感じのテーブルから 各グループ(a〜不定数) からランダムに3人以下づつ 取り出したいのですが、 1回のクエリでは不可でしょうか?
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.
>>478 order by rand() limit 3
とか?
491 :
ツ& ◆LCinZ00nuc :2005/05/04(水) 17:24:46 ID:jhVtNWyH
LinuxにMySQLをインストールしました。 複数のユーザにcreate, drop権限を与えて使用したいと思っています。 ですが、そうするとcreate database時にデータベース名がかぶってしまうと思うのですが、 どのようにすればよいのでしょうか?
>>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 出来てしまいます。
テーブルの作成だけは許可して、データベースの作成は不許可、
というようなことは出来ますでしょうか?
>>491 DB名にユーザプリフィクスを付けて管理する。username_dbnameとかね。
標準のI/Fを利用するならパッチあてないと駄目だよ。
普通は「複数のユーザにcreate, drop権限を付与」はしないで、
専用の管理I/Fを設けてやってそのI/Fを利用してのみcreate/dropが出来るようにする。
>>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
>>497 PerlのDBIがどういうものか理解してからきてください。
それはCGIとPHPってどっちがいいのとか、意味不明な質問といっしょ。
それともDBI(+DBD::MySQL)とNet::MySQLの比較?
perl DBIとC APIについて、MySQLへのqueryの速度比較した人いますか? Windows上だとVCがないとC APIを使ったプログラムをcompileできないようですが…。
なぜpearが選択肢にないんだ?
>>500 いやだからDBI+DBD::MySQL)とDBI+DBD::MySQLPPのどっちよ。
前者はlibmycqlclient(C API)のラッパーで、後者はPerlPortだから
どっちも純粋なC APIよりは、そりゃ速度は遅いよ。
Cの方が速いにきまってんじゃん
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の問題なのでしょうか。 知ってる人、ヒントください。無理なら無理と教えてください
MyODBC3.51(Linux)では特に落ちるなんてことは無かったから、 MyODBC3.51(Windows)で使ってるライブラリの問題かなんかだと思うよ。
あとWindowsのODBCマネージャか。
507 :
& ◆kgp6eKXx6c :2005/05/06(金) 14:43:25 ID:Jj9pZQuP
>>500 まあCの方が速いのは分かって聞いてるんだろうけど、定量的に比較したデータは
見たこと無いな。
509 :
あ :2005/05/07(土) 00:01:03 ID:???
postfix のデータベースにMySQLを利用したいのだけど、ここをみれば、 構築方法がわかるって言うサイトありますか?google 利用したのですが、いまいちでした。
Thanks for res, クーリエ imapd ということですが、サイラスあいまっぷディーはつかえないでしょうか? というのは、後者はカーネギーメロンで開発されており、非常に信頼が高いからです。
511はかなり頭が悪い
513 :
NAME IS NULL :2005/05/07(土) 23:36:56 ID:hZIl0ldU
テーブル設計について質問です。 例えばレンタル掲示板を作る際、各掲示板ごとにテーブルを作るのか、 それとも全掲示板の管理者・パス・email等をまとめて保持するテーブルと 全投稿記事の記事・投稿者・パス・所属掲示板等をまとめて保持するテーブルの二つのみにするか どちらが良いのでしょうか? リファレンスによるとテーブルの乱立は好ましくないと言う様な記載があるし、 外部キーで関係付けるのも書き込み処理などのオーバヘッドになるようです。 しかし投稿記事に所属掲示板情報を付けるというのは、HDDを無駄に使うし ある掲示板を開いた時にその掲示板IDを持つ記事を全投稿記事から検索するという手間が気になります。
PHPとMYSQLを理解すれば、中規模級(教えてGOO程度)の サイトを一人で作成することは可能でしょうか?サーバー知識等は 除いてお願いします。 また、無理かなというときは、できれば具体的な理由もお願いします。
>>514 可能。無理だとしたらPHP、MySQLを"理解していない"か
そもそもプログラムで使うアルゴリズムを考える力がないかのどちらか。
>>514 機能的には可能だろうけど、goo並みとなると一人では単純に仕事量がたいへんかな。
それから、負荷軽減のためにメモリ上にコンテンツを保持しなきゃならんとか、サーバ
運用条件からのプログラムへの要求は常にあるからサーバー知識がないと難しいな。
そのへんの知識は切り離せない。
>>513 テーブル設計はデータの冗長性を出来るだけ少なくする正規化と
処理を出来るだけ軽くする為の冗長化のせめぎ合いで行う物です。
ご自分で色々考えられてるみたいですから、結論も自分でだして行動するのが
(失敗しても上手くいっても)自分自身の血肉になると思いますからやってみるべし
518 :
NAME IS NULL :2005/05/08(日) 14:19:28 ID:DKFDRvPO
create database でデータベースを作るとき、 文字コードをUTF-8に指定するにはどうしたらいいんでしょうか。
>>518 少しでも調べてみたのかな…
create database テーブル名 character set utf8;
そもそも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文はこれになります。ご指摘いただければ助かります。
>>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のほうはどうやっていいかわからずこんな形にしています。
最初に一レコードが作成されたときにだけ日時を書き込むというのは
どんなやりかたがあるでしょうか?
>>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
以前にも同じ質問が出ていたようなのですが、はっきりとした回答が見あたらなかったので、再質問させてください。 以下のファイルで 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
>>529 BLOBで扱うのはBinaryそのものじゃなくて、Binary文字列だし。
Base64とか。
>>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 という風になります。
>>533 トリガをうまく使えば一つのテーブルでもうまくやれると思ったけど、
調べてみたらMySQLでトリガの実装は5.1以降みたい。
となるとアクセス数にもよるけど月/周/日ごとにテーブルを分けるとか
ログを取る条件をチューニングするとかぐらいしか思いつかないなあ。
他の人はどうやってるんだろ?
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のクエリの速度 > テーブル・インデックス サイズ > データ更新 の順番で)
どうもありがとうございました。 ファイルシステムって何が一番いいんでしょうか。 ReiserFSがやっぱり最強なんでしょうか。
UFS2が最強
>>539 最強だとは思わないけど、ReiserFS使ってる。
ファイルが大量だと旧式なファイルシステムとは格段の差がでる。
MySQLで使うんだったら、ファイルが沢山出来るわけでもないので
余り拘らなくてもOK。
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 何か原因が解れば教えてもらえないでしょうか?
バイナリ使え
>>542 >The error means mysqld does not have the access rights to the directory.
>File name ./ibdata1
>File operation call: 'create'.
>Cannot continue operation.
MySQLって1つのファイルに1つのテーブルを入れるんですか?
MYISAMを使っています。
予定では200GB程度のテーブルを使います。 私が持っている百万枚のエロ画像をデータベース化したいのです。
もしこの200GBのテーブルが1つのファイルにまとめられてしまうとすると、 さすがにMySQLでも処理が追いつかないと思うのです。 MySQLというか、OS(Linux)がこんな大きなファイルを使えるのかどうか心配です。 私が持っている本(実践ハイパフォーマンスMySQL)には、 60GBぐらいで急激に処理が遅くなると書いてあります。 200GBのテーブルを扱う最良の方法を教えてください。 本当はMySQL+Linuxがいいのですが、これでは逆立ちしても無理というのであれば 他の環境でもかまいmせん。
セキュリティーの観点から全部の画像をMySQLに格納している。 テーブルが壊れたら財産を失うので必死にMySQLを学んでいる。
>>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スレで質問するべきだったかな…
>>553 まぁ、まずは画像ファイルの格納方法から間違ってる。
一般的にはPHP(Javaとかでもそうだけど)でBLOB型にデータを登録するには、
BASE64でエンコードして登録する。
>>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スレで。
>>555 >header("Content-type: " . 'image/jpg');
>echo 変数
正確には
header("Content-Type: image/jpeg") ;
imagejpeg(変数);
>>556 嘘吐くんでない。
imagejpegの引数はGDのイメージリソースだよ。
バイナリ(PHP内部では文字列型扱い)を変数に格納してるならechoでOK.
>>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を使いますし。
>>560 普通に突っ込めるなら、みんな普通に突っ込んでると思わない?
なんでBASE64でエンコードするのか、理由を考えると良いよ。
普通に突っ込めるけどね>バイナリ や、PHPのことは良くシランが。
>>562 MySQLのBLOB型を理解していない奴の典型的な例。
Postgresの psql < DB名 〜.sql はmySQLではどのようにやればよいのでしょうか。 ご教示いただけますと幸いです。
>>564 要するに、ファイルに書いてあるSQLを実行させたいんだよな?
mysql -uユーザ名 -p < ファイル名
上記コマンド打った後に、パスワード聞かれるから入力すればファイルに書かれた
SQL文が実行される。
ちなみに、DB指定したいなら、SQL書いてあるファイルの先頭に use データベース名; をつける。
>>563 PHPはよくしらぬが、というあたりからして
Javaなら少なくともそのままバイナリつっこむから
MySQLとしてなら問題ない発言では?
>>560 BASE64使うのは、BLOBで扱う際にエスケープするのが
楽だから使ってるだけで、本当に必要なのは生のバイナリーを
"バイナリー文字列"にエスケープしてやること。
BASE64はスペース効率でみると余り良くないからね。
Javaでバイナリー突っ込めるって話だけど、JDBCが生のバイナリーを
受け付けるだけで、MySQLのBLOBが受け付けるのはバイナリー文字列だから
必要なエスケープを中の人がやってくれている。貴方が使う言語やI/F、
ライブラリで、その辺の"楽さ"は変わってくるから、あとの環境固有のことは
自分で調べてください。
>>567 ドライバの中のソースまで見ろというのは酷な話だろ。
APIレベルで生バイナリなら問題ないのでは?
バージョン3.23.58から4系にバージョンアップしたいのですが 公式マニュアル読んでいたら頭がこんがらがってきました。 データはそのままで、バージョンアップする方法を教えてもらえないですか。 もしくはわかりやすいサイトを教えてください…。 あと、鯖管理ソフトのPlesk7.5が入っています。
3.23.58から4.0系なら、Plesk7.5のimport/export掛ければいける。 つかPHPMyAdminが入ってるんでないか>Plesk
571 :
569 :2005/05/14(土) 19:11:17 ID:???
>>570 ありがとうございます!
ちょっとPleskをいじってみます。
ちょっと待て、SQLレベルの話をしてるのか? DBにバイナリで登録する話をしてるんだと思ってたが。 バイナリ文字列にエスケープというよりは 一部の特殊文字をエスケープってのが正しいと思うが。 そうじゃなきゃEUC-JPが通ったりしないべさ。
>>572 EUC-JPも文字列だが。
7/8bitの観点からだと普通にMySQLは8bit通るし。
7/8bitが関係するBASE64の話が混じってるから
判りづらくなってるのは確かだけど。
なんでBASE64にするのか理解でき兼る
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); が出てしまうのですがどなたか解決策ご存知無いでしょうか?
java.util.Dateだから java.sql.Dateと勘違いしてないかね?
javaスレ池
Calendarから取り出すjava.util.Date型でSELECTしたいんですが、 それではできないんでしょうか? またはキャストできるとか。
javaでパッケージとかクラスをインポートするときに java.util.*とかjava.sql.*とか指定してないか? それは現場では絶対にダメ、日曜プログラマなら気にしないかもしれんが 普通はEclipseとかのコード支援使ってクラス単位で import java.util.Date というふうにひとつのクラスごとインポートしていく
importはたしかに
import java.util.*;
import java.sql.*;
とやっていますが、変数宣言時に
java.util.Date day = cal.getTime();
としているので多分大丈夫だと思うのですが、駄目なんでしょうか?
どちらにしても、
>>580 さんの意見は参考になりました。
ありがとうございます。
java.util.DateはJavaで扱う一般の日付 JDBCで使うのはjava.sql.Date ほかにもJDBCで日付をあらわすのに java.sql.Timestampやjava.sql.Timeがある 引数が違うのをコンパイルすればエラーが出るのは当たり前
>>580 そんなのは解決にならんだろ
JDBCでこの辺触っていれば
おそらくJava.sql.Dateとjava.util.Dateが同一の場所にでてくる
どのみち完全修飾名が必須さ
>>583 すいません、java使い始めて日が浅いもので。
ちなみにキャストしてjava.util.Date型のオブジェクトを
java.sql.Date型に変換したりってできますか?
mysqlccについての質問なのですが、mysqlを4.0->4.1に変更したら mysqlccのレコード数の欄が、FixedとかDynamicだとか表示されるように なり、正しくレコード数が表示されなくなりました。 レコード数を正しく表示するための何か方法はないでしょうか?
キャストって魔法の変換だと思ってるの? その型を持っている場合だけできることだよ こんな感じ 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を書いています。 なぜ化けるのか分かる方いましたら教えてください。
ちょっと困っていることがるので
ご指導いただければ幸いです。
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になるのでしょうか?
>>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の方に問題があるんでしょうか?
CからMY SQL使うのってインストールフォルダ内のライブラリとdllをリンクすればいいんですよね?
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型で探しましたがうまく見つけられなかった)
>>589 クライアントプログラムはデフォルトではmy.cnfを読まないよ。
>>596 create database hogehoge character set ujis;
>>597 varchar でも text でも変わらん。
つか12日に記事だったか...気が付かなかった
初心者も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"
今現在は、順調に稼動していますので、
すぐに、エラー状況の再現出来ません。
今晩にでも、もう一度再現させてみよう
かと思っていますが・・・。
>>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
まともな値っぽいね〜。むむう
経験から言って、データファイル自体がぶっ壊れたことはあんまりない。 インデックスファイルが壊れることは、何度かあったけど。 なので、大体、optimize table か、myisamchk -r で復旧できてます。 まぁ、でも、面倒な場合は、レプリケーションしてる他のマシンから 該当ファイルだけコピって終わりって感じです。
レプリケーションよりスナップショットの方が省容量な気がする
MySQLでは、Postgresのage関数のようなものはないのでしょうか。 もしも何かやり方があれば教えてください。お願いします。
sage()関数の代わりはないですかね
mysqlっていうユーザ設定情報が入った、databaseを 消してしまったんだが、このmysql自体を再インストしたんだが、 このdatabaseが作られない。 どうなってんだー
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; } } 日本語文字がすべて??となってしまいます。
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新しすぎるのかなぁ。
うちもその環境ですが、 文字化けしません。 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にする ぐらいかな。
ううん、もっと超簡単
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
>>620 >2.libmysql.dll, libmysqlclient のコンパイルし直す
Connector/Jの場合はlibmysql, libmysqlclientを利用しない実装だから関係しない。
>>621 そのURLだと4.1は機種依存文字はダメだよね?
@とか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で文字化けしてたときは、これで解決したけど
>>616 insert into hoge (key1,data1,data2,data3)
select 0,data1,data2,data3 from hoge where key1=1;
>>624 いつからその設定だけでいけるようになったんだ
新しいバージョン?
default-character-set = sjisがうまく動いてるように見えないし
そもそもWindows版だと環境設定が上書きされる
え?なんで?全然上書きされないよ? がっつりメモリ使わせられるし、 書き間違い?
例の環境設定ツールは無条件で上書きだな。 そもそもmysqlコマンドがマルチランゲージ対応のためにUTF8固定だから 使い勝手が非常にまずい。
ツール使うとそうなるんだー 手書きで設定しかしたことないや
>>627 おぉぉ〜できました。
ありがとうございます。
>>631 セットアップ時に必ずその設定ツールが動くはずだが。
セットアップ後に編集の話じゃないの?
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の設定自体が不要なのでしょうか。
ドキュメント見るとデフォルトでは 'autodetect' らしいから無くてもいいかもね。 useUnicodeはつけるかんじかなー
質問させて下さい。 テーブルにIDというauto_incrementのフィールドがあって、 データのインストール時に勝手にIDが設定されるんですが、 この値を正確に取得するにはどうしたらいいのでしょうか? 不特定多数の人間がインストールしますので、 INSERT句の後にすぐにSELECTでMAXを使って取得しても、 既に他人によってデータ登録された後という可能性もあります。 正確に自分のINSERTしたデータのIDを取得するにはどうしたらいいのでしょう?
write lockして insert して select して unlock なら取れそうじゃない?
639 :
637 :2005/05/24(火) 17:23:50 ID:???
>>638 なるほど、一連の処理が完了するまでは、他人がデータを登録できないようにする訳ですね。
>>637 INSERT直後に
SELECT LAST_INSERT_ID()
とやれば取れるよ
642 :
641 :2005/05/24(火) 17:30:59 ID:???
カブっちまった
644 :
637 :2005/05/24(火) 17:59:47 ID:???
ぉぉぅ・・・ こんな機能が。 ありがとうございます。
こっちのほうが俺のより素敵ね 最後に生成された ID は、接続ごとにサーバに保持されます。 他の接続を使用するクライアントによって変更されることはありません。 てことでpoolに接続返す前なら確実だしね。
646 :
NAME IS NULL :2005/05/24(火) 19:55:22 ID:Q2ACmeBM
phpMyAdminで初めの画面上に現れる設定 MySQLの文字セット: UTF-8 Unicode (utf8) を EUC に変える方法を教えてください。
MySQLのオートインクリメントの動きってこれでいいの?
>>640 と
>>641 の検証してたんだけど、DOS窓2つ上げて、両方とも最初にBEGINする。
そして、片方でINSERTして、もう片方でもINSERTをする。
最初にINSERTしたほうをロールバックして片方をコミットする。
そうすると、見事にオートインクリメントの値が1つ飛ぶんだよね。
以前に実験した時、 autoincrement設定したテーブル作って、 autoincrementカラムに対してはNULLを指定するようにし、残りは別テーブルから取り込むようにinsert from selectかけたんだが、 autoincrementカラムの内容がすべて同じになりやがった。 もう一度同じことをすると、+1された値がずらーっと取り込まれる。 insert1回で+1になってて激しく使い物にならなかった。
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 の人です。
ujisにしなされ。ついでに、4.1系のごたごたへの処方なら tp://www.mysql.gr.jp/frame/modules/bwiki/?FAQ を見なされ。
漏れも文字エンコードで悩んでいて、夜も眠れん。 ujis sjis euc どれがベストなんでしょう。
euc-kr
>>660 MySQL4.1.12で追加されてる。
eucjpmsは入ってないが。
>>661 さんきゅ
やっとまともに日本語とおるようになったのか
でも対話アプリケーションがUTF8ということで全滅か
漏れはsjisをbase64エンコードして入れてます。 日本語文字列でソートや検索することがないアプリだったから 使える手かも。
>>663 だったらBLOBにescapeして入れてもいっしょのよーな気も。
ISO2022(だっけか?)でもいいだろうし、 ISHでもMAJでも・・・・・・・・
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)のエラーに関する記述が多く 何が原因かが解りません。どなたかアドバイスお願いします。
>>666 mysqladmin -u root password [新しく設定するパスワード]
でパスワードを新しく設定されました?
「-p」後はスペースを入れずにパスワードを打ち込まないとエラーが出ます。
>>667 レスどうもです。
cd c:\mysql\bin
のあとにパスワード設定してしまいrootにパスワードをかけてしまいました
このrootへのパスワードをなくしたいときはどうしたらいいのでしょうか?
C:\mysql\bin>mysql -u usr -p kiso
Enter password: ******
のようにkisoに対してだけパスワードを設定するつもりだったのですが。
670 :
NAME IS NULL :2005/05/31(火) 00:13:29 ID:j02Is4N7
osxserver+php+mysqlを使っているのですが、phpmyadminをいれて 間違ってMysqlに接続するユーザー(rootも)をなんと削除してしまいました・・・・ これは、どうにか復活させる方法はないでしょうか? いろいろ調べても、こんなアホは俺だけで事例が見つかりませんでした。
ヒント:mysql_install_db
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' いつサポートされるんだろう・・・
質問です select * from book order by product_id limit 1; select * from book order by product_id limit 3,2; これを一つにまとめる書き方を教えてください。
あからさまに学校の課題だな…
二つ並べて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
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 は最新のものが入っています。
テーブルの1カラム目に、ユニークなTIMESTAMP(10)を入れています。 データを更新するたびに現在の時刻に変わってしまうのですが、 このデータはIDとして扱いたいので、簡単に変わってしまうと厄介です。 これを避ける方法はないのでしょうか? 初心者の質問で恐縮なのですが、 何かご提案ありましたらよろしくお願いします。
>>682 逆に古いの(MySQL4.1じゃないの)入れてみな。
>685 ありがとうございます。 マニュアルのそのページを見たときに、 書式以外はDATETIME=TIMESTAMPと思ってしまったところが 間違いだったようですね。。。 ユニークにさせる処理はできているので大丈夫だと思います。 ありがとうございました。
>>687 それを読んで、
「一部の初期のバージョン(MySQL 4.1.1 など)にのみエラーが出る」
(=それ以外のバージョンではエラーなく実行できる)
と理解したんだけど、間違ってた?
で、最新バージョン(4.1.12)を入れてもエラーになるんでおかしいな、と
FedoraCoer3ですが、MySQL のヴァージョン4か5の mysql ,mysql-server のパッケージってあるのでしょうか? yum install しますと、バージョン3になってしまいます。
690 :
681 :2005/06/02(木) 13:31:43 ID:T6Y+YlBS
追記です、特定データベース内のテーブルに対して「.sqlファイル」をインポー トしたいのですが。 初心者のため分かりやすく教えていただける方、どうぞよろしくお願いします。
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 です。 どなたか解決方法をよろしくお願いします。
>>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」ってのに引っかかってるのかなぁって
思っています。
内部的なことは詳しくないので確証は持てないのですが。。。
>>692 ARTISTフィールドの定義(設定) が
1byte系エンコーディングまたはbinary属性の気がする。
696 :
NAME IS NULL :2005/06/02(木) 20:20:05 ID:E1fmfaVc
ARTISTカラムはblob型で設定してあります。 blob型で設定している限りこの問題は回避できないって事っすかね・・・。 ちなみにDBのcharsetは現在sjisにしてあります。 いろいろ変更してみたのですが結果は変わりませんでした。。。 最終的には大文字、小文字を区別してくれて検索出来ればいいんですけど そういう時ってどのような環境が最適なんでしょうか?
>>696 ARTISTカラムをBLOB型で定義する意味って何?
普通にVARCHARで良いように思うけど。
699 :
NAME IS NULL :2005/06/02(木) 21:28:40 ID:E1fmfaVc
レスありがとうございます。 始めはTEXT型で宣言してたんですけどマニュアルに 「TEXT 型は大文字と小文字を区別しない BLOB 型と考えることができます。」 って掛かれてたのでBLOB型で定義しなおしたんです。 で、テストで英語1文字で入れてみたら今のような現象が起こったって訳です。 >> 698 何文字のアーティストがいるか分からないからラージオブジェクトにしたんですが VARCHARでも事たりますねぇ。。。
>>699 >「TEXT 型は大文字と小文字を区別しない BLOB 型と考えることができます。」
ああ、それは「大文字と小文字を区別しない」→「ロケールを考慮する」読み替える。
そこで言う「大文字と小文字」は、"日本語"での大文字小文字の区別のことではない。
「ロケールを考慮」すると、英語などのロケールではBINARYもbinaryも同じ意味なので
「大文字と小文字を区別しない」動作をするが、日本語ではそういう動作をしない。
連続したバイナリをエンコーディングに合わせて、"ひとつの文字"として認識するという動作をするだけ。
test
702 :
681 :2005/06/02(木) 22:06:34 ID:1PJ+iiN5
>>691 レスありがとうございます。
コマンドプロンプトからmysqlへ移動しuse databases実行後
mysql> mysql < sqlファイル名;
上記のコマンドを実行しましたが、エラーが表示されてしまいます。
ファイル名のディレクトリ指定方法が間違っているのかもしれませんが、試した物が通りませんでした。
重ねてですが、ご支持いただけると幸いです。
$query = "SELECT * FROM name WHERE 'ア' <= yomi AND yomi < 'カ' ORDER BY yomi"; 50音順でア行〜ワ行を取得したいのですが、 何故か、上のクエリを実行すると、「ギ〜」というヨミのものも入ってきます。 カ行のはずなのに「ビ〜」のヨミや、ハ行のはずなのに「タ〜」のヨミが出てきます。 これは何ででしょうか。 調べてはみましたが、このような事態になってしまって困ってます。 Mysql4.0.24を使ってます
>>703 yomiのエンコーディングが適正に設定されてない。
707 :
706 :2005/06/02(木) 22:58:41 ID:???
MySQL4.0.xだから、 MySQLサーバ全体のエンコーディングが適正に設定されてない。 だな
無事に、正しく動くようになりました。
Mysqlを入れなおした時に設定が戻っていたようで、見落としてました… orz
>>706-707 多謝!
> 何文字のアーティストがいるか分からないからラージオブジェクトにしたんですが > VARCHARでも事たりますねぇ。。。 ジュゲムでも入れるのか?
>>702 >コマンドプロンプトからmysqlへ移動しuse databases実行後
>mysql> mysql < sqlファイル名;
>上記のコマンドを実行しましたが、エラーが表示されてしまいます。
そうじゃないよ、たとえばこのようになる。
$ /usr/local/mysql/bin/mysql -u root -p [DB名] < [ファイル名.sql]
一度、mysqldumpして、内容を良く見てみるといい
ところで、windows のシェルってリダイレクト使えるの? すごい昔の知識だけど使えなかった気が。
>>712 DOSの頃から現在の窓のコマンドプロンプトに至るまで、使える。
>>704 recommendedでないのは入れたくなかったので試しておりませぬ
>>714 入れてテストするくらいやればいいのに。。。
別に既存のをリプレースする必要はないんだし。
>>716 715じゃないけど、テストコードとデータくれたらいつでもテストするよ。
718 :
NAME IS NULL :2005/06/04(土) 16:52:00 ID:DCaPW79E
create database 00001; というクエリを実行したのですが、エラーになってしまいます。 何がいけないのか教えてください。
何のエラーか書けよ
>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'でも同じエラーです
>>722 お前は目がおかしいのか?
>>720 はシングルクウォーテーションじゃないぞ。
バッククウォートだぞ。
724 :
NAME IS NULL :2005/06/04(土) 22:44:32 ID:DCaPW79E
ありがとうございました。 もう一つ質問です。 在庫管理のシステムを作っており、 出庫・入庫の最新30件を表示したいのですが、 これをどのように作ったらいいか分かりません。 入出庫ログには日付の列もあるのですが、 たくさんレコードがあるのでorder byだと遅くなってしまいます。 入出庫ログの日付へのインデックスを作ればできそうなのですが・・・。 どなたか良い方法を教えてください。
>入出庫ログの日付へのインデックスを作ればできそうなのですが・・・。 やってみてから質問しろよ馬鹿
動画ファイルを突っ込むとテーブルが50GBとかなるんですけどどうにかなりま せんかね?
727 :
NAME IS NULL :2005/06/04(土) 23:48:15 ID:aGSJcONG
MySQL Control Center の使い方の書いた本ってないですか?? ホームページでもいいんですけど。
>>726 動画データ自身はDBに格納せずに、ファイルシステム上の
ポインター(要はpath)のみ格納して管理する。
>>728 そんなのわざわざDBに入れる情報ではない罠。
動画データそのものを保護する手段としての格納を考えている。ファイルシス
テムとは別のデータベースへのアクセス権で動画の利用を制限するのが主目的
で検索にプライオリティーを置いていない。でも容量が凄いことになるのでな
んとかなりませんかねっていう疑問。テラ容量クラスが必要。でもそうすると
ハードウェア的に脆弱性が出る。如何ともし難い。
>>724 OrderByを使うしかない。
そして、30件とデータの取得件数が決まっているならLIMITを仕様して必要な件数だけ取ってくればいい。
それと、遅くなりそうという意見だが、これはチューニング次第。
俺が以前にやったのはOracleだが数千万レコードから1億レコードのデータがあっても、
データ検索に1秒以下で実現できる。
つまりチューニング次第。
>>729 DBに格納するにしろ、そのままディレクトリに置くにしろ変わらなくないか?
確かにDBに格納する場合、若干ファイル容量が増えるが、
テラ容量必要って言ってるんだからそのまま置くにしてもテラ容量必要だろ。
結局は、ハードウェア的に対応するしかないんじゃない?
HDDをRAIDにして尚且つDATテープ装置で週1回のフルバックアップと
毎日の差分バックアップするとかね。
>>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文をいじるのがめんどうくさいので、、
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;
>329 と同じ症状です。 MySQL4.1.12aでかねやんからアクセスすると サーバのキャラクタセット -> クライアントのキャラクタセット -> sjis と、サーバのキャラクタセットが空白に表示され、CSVからのデータのインポートに失敗します。 my.iniを見てもちゃんとsjisに設定されています。 とりあえずインポートを成功させたいのですがよい方法はないでしょうか。
かねやんは4.1系やめたほうがええ
739 :
NAME IS NULL :2005/06/05(日) 23:46:44 ID:kFSH5fCZ
俺は全部rubyで書くよ。
>>733 super-smackってのがいいよ。
日本語ドキュメント内から今使い方をblogで公開しようと
必死で書いてる。
もう少し待ってね
と、さっきデートしてほぼふられることが確定した俺が言ってますよ・・・
後ついでに皆さんテストの時にはスレッドいくつまで走らせてテストしますか? 一応俺は10〜2000くらいまではテストするんですが 2000発行するとクライアントのCPU使用率おかしくなりません?
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を書いてあります。 何がいけないのか、教えてください。
>>743 1つ聞いていい?
自宅のサーバはちゃんと外部からアクセスできるようにしてあるんだよね?
というのは、そういったスキルがあるなら、こういった質問は出てこないから。
745 :
NAME IS NULL :2005/06/06(月) 21:18:35 ID:BC3hoVn0
はい。見抜かれてるので正直に書きます。 my.cnfかどこかに書く場所があるとは思うんですが、 調べるのが面倒なんですよ。。。
>>745 そういう事じゃないのね。
MySQLとかそういった話以前に、外部から自宅にアクセスできるのかって言うのを聞いてるの。
それに、外部から繋ぐのに、my.cnfとか殆ど関係無い。
鯖が外部からアクセスできるなら、殆どの問題はクリアしている。
調べれば分かるけど、自宅の鯖を外部に公開するってのは結構大変な作業。
747 :
740 :2005/06/06(月) 21:45:40 ID:???
748 :
NAME IS NULL :2005/06/06(月) 23:05:01 ID:f0IBjb/5
Windows XP で 4.1.12a をインストールしたんだけど show tables すると 8つあるテーブルのうち 5つ分しか表示されない 他の人はこんなことない? Linuxだとちゃんと全部表示された。 PCがおかしいのかな?
>>743 mysqlがエラー吐いてるなら、port3306でつながっているんででしょう。
なので、ただ単に、localhostからの接続しか許してないんでしょう。
grant all on *.* to root@"%" identified by "hogehoge"
みたいなみたいな。
select * from mysql.userして調べて見ましょう。
設定変えて再起動してないに一票とかMySQLを全く知らないのにレスしてみたり
ユーザ権限変更に再起動は必要無い。 grant使わずにupdate/insert/deleteで操作した場合はflushする必要がある
>>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へ、 ……… という風にしたいんですが、どういう風に書けばいいでしょうか? 教えてください。
もう1個テーブル作ってそっちにデータ移す。 で、件のテーブルをdrop、後create。 データをうまいこと入れなおせばできるんでない? sqlだけでやれるのかしら?
>>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, ...); この間違いです。
>>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の勉強もしないといけないですね。>おれ
>>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
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 4.1系ならmysqldumpの引数に --default-character-set=sjis をつけてやってみたら
いけるんぢゃない?
バックアップする時とリストアする時の両方ね。
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が分かることが出来るのか知りたくて質問しました。
改めて読んだら読点が多すぎた…。
>>768 SELECT LAST_INSERT_ID()
>>768 回答は770が正解&過去ログ>>637- 嫁
リッチテキストのデータを保存したいのですが、どういう風に保存するのがいいでしょうか?? 検索することとかも考えています。
>>772 リッチテキストっても一杯種類があるんだが。
MSのWordPadなんかで使うrtfは、DBには格納せずに
そのままファイルの状態で管理した方が良いよ。
その方が検索ツールの適応度も高い。
>>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のデータベースっていうのは、どこに保存されているのでしょうか? システムを新しくしていく時に、保存しておくべきファイルってどれでしょうか??
>>777 そんなこと質問してるようじゃ、どうせ大したデータも
無かろうからシステム更新ごとに全部消しちまっても大差ないべ、
というのは置いといて、/usr/local/mysql/data あたりだ。
一応。
>>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.* からのログインのみ許可するようなユーザにしたいのですが、 こういう書き方って可能ですか??
783 :
781 :2005/06/11(土) 15:05:42 ID:FHUWJIVm
データベースの主キーを昇順に並べて、それを1行目から順に 主キーを1,2,3,・・・と再振り分けしたいのですが、 そういったことはどのようにやればいいのでしょうか? 直接MySQLを操作してるわけではなく、JDBCから操作しています。 よろしくお願いします。
設定が固まっていないんだけどデータがどんどん溜ってくるので その都度alterでカラムの変更をしてる。それも毎日。 これって異常なのか?
>>785 設定が固まってないのなら仕方がないけど、データベースの使い方としては特異。
毎日データの格納・取り出しが変わってたら定型作業にならないやん。
使う人が複数いれば、その連絡とかどうすんの。毎日やるわけ?
ALTERで名前変える程度ならまだしも、 テーブル構造を変えると、内部処理では 「一度新規テーブル作ってデータコピーして旧テーブル消す」 ということを行っている。 つまり、実行中はそのテーブルへのアクセスが一切出来ない(排他処理で待たされる)し、 万オーダーを超えたあたりから、ALTER激重になってくる。 気をつけたほうがいいぞ。 10万オーダー超えると、アクセスするプログラムによっては変換中にタイムアウトになるかもしれん。
ちょい質問 なんらかの問題で、レプリケーションマスタを入れ替える場合は、 マスタのバイナリログが使えなくなるわけだから、 一度レプリケーション解除して、再度レプリケーション構築するような手順になると思うんだが、 具体的手法や手順の参考になるような資料は無いだろうか? おそらく、master.infoとslave.infoと旧マスタからコピーしたバイナリログを レプリケーションスレーブから消せばいいんだと思うんだが・・・・・・
今回はじめて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' 表示させるにはどうしたら良いでしょうか?
>>789 mysqlshowで指定するユーザに対して、対象となるデータベースの
SHOW DATABASES権限をGRANTする。
>>788 >具体的手法や手順の参考になるような資料は無いだろうか?
私は公式のマニュアル以外、一切見ていませんが、
マスタが死んだ場合は、再構築する手順とほぼ同じですね。
master.infoにどこまでbinlogを読んだかが記録されているので、
残していると、レプリケーションが狂います。
なので、マスタ側は、スレーブの/data以下をコピーしたものを用意して、
binlogを全て削除する。スレーブ側は、master.infoを削除する。
あとは、my.cnfの設定を再確認して全台起動、という流れでしょうか。
映画のDBをmysqlで作るときにテーブルを タイトル 主役 共演者 とした時に俳優Aが主演した映画の共演者の中で、別の映画で主役を 得た俳優を求めることは可能ですか?
可能です
3.23.58で使える、クエリの実行時間を制限する、設定方法を教えてください。 も、一つ。 tableA NATURAL JOIN tableB NATURAL JOIN tableC …(合計6個結合する) ってやると、えらい時間が掛かってしまうんですが、何が悪いんでしょうか?
2000レコードぐらいあるテーブルに1つフィールドを増やして そのフィールドに1から連番でナンバリングしたいんですけど いい方法はありますか。
リファレンスマニュアルの日本語版ってダウンロードできるのでしょうか? 日本語の「このマニュアルについて」からダウンロード先にいったけど 落とせるのは日本語のみの様子・・・。 どなたかご存知でしょうか?
799 :
NAME IS NULL :2005/06/19(日) 14:54:17 ID:n9q/trAx
あまのじゃくのオレとしては、MYSQL使ってなんとしてでもORACLEにパフォーマンスで勝ちたいんですが 両DBMSの比較してる良いサイトありますか?
質問のあとで間が悪いようですがこちらも質問。 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プロセスのユーザーとシステムのユーザーがちがうので 書き込み権で撥ねられたのだと見当はつくのですが どうすればよいんでしょうか?
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までということなのですか?
>>802 ライセンスの話なのか、機能の話なのかはっきりさせようじゃないか。
端的に言えばWinXP ProにApache入れた時といっしょ。
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があるって設定になってるんでしょうか よろしくお願いします。
>>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ファイルを置いて どんなふうにそのファイルまでアドレスを指定したらいいのか わかんなくて困ってます・・・。
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文を送ったのですが読み込めませんでした。
もしかしてやり方間違ってますか?
>>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ファイルの形式による。
指定の仕方はちょっと判りづらいかと思うので、ググるなりで勉強してください。
>>810 あ、あとかなり古いバージョンのMySQLでは、インストーラが
スペース混在のディレクトリ名に対応してなかったこともあるので
ユーティリティの一部機能にも似たようなことがある可能性がある。
"Documents and Settings"などのディレクトリ以外で一応チェックして。
「mysql Ver 14.10 Distrib 5.0.6-beta, for Win32 (ia32)」では問題なかった。
MyISAMしか使ったことない僕に教えてください。 ib_logfile0 ib_logfile1 ibdata1 これらのファイルは何をするものなんですか? ib_logfile*はログファイルっぽいのですが、 レプリケーションしなければログは要らないのかなと、 ibdata1はデータファイルのようですが、 --innodb-file-per-table=1 を指定して別のところにデータファイルを作る設定をしても 自動で作られる・・・ よくわからないです、どなたかお願いします。
>>813 InnoDB用のファイル。
MyISAMしか使わないのなら関係ありません。
InnoDBを使うのならマニュアルの解説を読んで理解すること。
MyISAMしか使わないのに、InnoDB用のファイルがあるのは
インストール時に「トランザクション機能が必要」としたためと思われ。
他には中身を理解せずにmy.cnfで設定を記述したか。
>>811 カレントディレクトリがなんたるかをわかってないようなので、
変なツール使ってて、そのツールのカレントディレクトリになってるんじゃないか?
上げてる時点で疑うべき場所を非常識レベルに変えたほうがよさげ
>>814 ありがとうございます。
もちろんInnoDBで使われることはわかっています。
InnoDBを使おうとして、skip-innodbのコメントをはずし、
4.1から利用可能な--innodb-file-per-tableを使って、
データファイルをMyISAMテーブルのように扱いたいと思ったわけです。
インストールはソースからのコンパイルですので、
トランザクション機能が必要とか、聞かれませんでした。
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 へは入れます。ユーザも確認しましたが、間違ってません。 よろしくお願いしますです。
>>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日間悩み続けたのが、一発で解決しました。
感謝、雨あられです。
このエラーのについて、いろいろ検索をかけたのですが、全然ヒットしませんでした。
マニュアルもそれらしい部分を当たってみたのですが、解りませんでした。
本屋にいってみても、参考になるようなものは見つかりませんでした。
やはり、マニュアルを精読しないとだめなんでしょうか。
もし、よろしければ、アドバイスをおながいしまつ。
>>821 つ[
http://myna2.mysql.gr.jp/mysqlml/mysql/msg/6658] アドバイスとしては、
・英語だからとエラーやログを自分で読まないのは愚の骨頂
("出来る"人も多くは英和辞書や翻訳ツールのお世話になっているものだ)
・検索を掛けるときは完全な検索結果を求めるのではなく、
緩めの検索ワードに抑えて、出てきた多数の検索結果を自分で辿り
答えを見つけようと努力すること。余り機械(プログラム)を信じない。
googleでさえも完璧じゃないので、他のサーチを併用するぐらいで丁度良い。
・日本語で見つからなければ、せめて英語のコンテンツにも検索を広げてみること。
・MLのアーカイブはGoogle検索に引っかからないものもあるので、
ML専用のアーカイブ検索も利用してみること。
・Webにあがってる情報というのは、情報の中の一部であることを念頭に置くこと。
(紙媒体に目をやれば、実は直に見つかったとか)
ということを全部やるのは大変だが、特殊なケースだと自分が先陣を切って
答えを見つけるしかないので、そういった能力を磨いていく必要がある。
(コンピュータ関連はWebある情報が膨大なので、まだマシ)
まあ、これで後進は2chのスレ検索でも答えが見つかるようになった訳だ。
> アドバイスとしては ・MySQL のソースコードを読む が欠落しているよ。 これが全て。
>>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
質問です。
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
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。
そんなとこ。
>>830 ・速い(最適化)
・従順(プロンプト)
・海豚 ;-D
>>831 4.0まではそうだったという感じ
4.1で日本語ボロボロにして離れたユーザー大量に見てきたよ
ちょうどPostgres8がWindows版発表したりパフォーマンスを大幅に改善したりして面白いことになったが
Solaris 版のバイナリ使っているんですが、バージョンアプってどうやればよいんでしょぷか。
>>833 4.1のアレなんとかならんのかねえ……。
2ヶ月前くらいからDBが必要になって触り始めてるけど、
未だにどちらのバージョンを本番に使うか悩んでる。
>>830 個人的にはデータとかクライアントの互換性かな。
PostgreSQLはバージョンが0.1上がっただけで互換性がないのが続いたので、
(データもクライアントも)
うざかったのでやめた。
今はどうかしらないけどね。
まあ、MySQLも4.1でアレだったわけだが、
んでもPostgreSQLの時よりは
(個人的には)
手間がかからんかったのでそんなに問題とは思わなかった。
他にはDBエンジンが自由に選べるトコとか
(後付けは5.1からなのが残念だけど)
ソースが追いやすいとかかなぁ。
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
>>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になりますって謳っているわけだしね。
話は変わりますが、 クエリキャッシュって期待ほどじゃなくて切ないです。 テーブルの少しだけでも変更されたら、今までのキャッシュが無効になるのね。 行レベルでキャッシュとかしてくれないかな〜 そしたらまじ愛してあげれるのに。
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は無いのではないんでしょうか)
まあ何故そんな事がしたいんだとお思いでしょうがもちろん実務ではなく自分の
趣味と言うか学習用途です。英語マニュアルを無理矢理読んでいるので
理解不足で根本的に勘違いをしてるかもしれません。よろしくお願いします。
Perl+MySQLで2chのようなスレッドフロート型掲示板を作っています。 共用レンタル鯖で使いたいのですが、データベースのアカウントが5つで内2つ使っているので、1アカウントに抑える必要が出てきました。 そこで、1テーブルで1つの板全部のスレをおさめる形になったのですが、(板の数は5、板にはスレが約30、レスが約500と過程して)鯖負荷的には大丈夫なのでしょうか?重すぎますか?
>>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
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はこれで運用しています。
>>848 例えばwhere句を監視してて、where id=x のクエリの結果が、
insert .... (id) values (y) or update ..... where id=y が
元々の where id=x の結果に影響を及ぼさないと思うわけなんだけどさ、
表現が違うかもしれないけど、行レベルとはそんな感じを言いたかったの
やべ、日本語変だ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についても調べる良い機会になりました。 ありがとうございました。
ハイパフォーマンスMySQLに掲示板はMyISAMと書いてありました。 それだけです、はい。
偽者臭プンプン
>>855 んなのいちいちチェックしてたらオーバーヘッドが大きくなって全体的な速度が落ちるっしょや。
何やりたいのかしらんが、アプリ側でのキャッシュも考えておけばいいんじゃね?
そもそもクエリキャッシュを気にする前に気にするべきことがいろいろある気がするし。
クエリキャッシュってINSERTやUPDATEが少なくてSELECTが多い、
例えばCMSで動的に生成してるページ向けのオマケ的な機能のような気がするんだけど。
先ほどmysql4.1.7をインストールしてみました。 mysqladmin.exe で、ルートのパスワード設定しようとしたらノートン君が反応。 どうやらDNS探しに外に出て行こうとしてるみたいです。 とりあえず遮断しときましたけど、スパイウェアの類が紛れてたりするのでしょうか・・・ ちなみにad-awareではmysql絡みの物は反応しませんでした。 ちょっと怖いです
んじゃ、DNS使わない設定にしておけば? ホスト名で権限付けれなくなるけど、問題ないっしょ。
>>862 ネットワーク越しの接続を必要とする設定になってる場合、
認証他で普通にDNSでの名前解決が必要(ということがマニュアルに書いてある)
またドメイン名でなくてIPアドレスのみで良いのなら、DNS引かせないような
設定も出来る(ということがマニュアルに書いてある)
怖い怖い言うなら、ちゃんとマニュアル読めば?
不明な得体の知らない怖さには"知る"ことが大事。
>>861 更新や削除、挿入のときのみのチェックだとしたら、
それほどのオーバーヘッドはないと思うんだけどなぁー
例えば
update ..... where id=x が実行されたときには、
クエリの文字列で id=xを持つもののみを古いキャッシュとして削除
みたいな
id=yを持つものは削除せずに維持てなかんじ。
ところでアプリ側のキャッシュをするとき、
データが更新されたことを複数サーバが知るのにいい作戦ある?
サーバ側でデータベースから読み込んだ時間を保持しておいて、
データが更新された時間を持つサーバから最終更新時間を取得して
アプリ側のほうが古い場合、リロードしに行くとか?
いやだってさ、まずその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が一番早い
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テーブルをみると、それっぽいレコードはできていいるのですが・・・ 何がいけないのでしょうか?
>>869 GRANT ALL ON test.* TO testadmin IDENTIFIED BY 'admin'
↓
GRANT ALL ON test.* TO testadmin@localhost IDENTIFIED BY 'admin'
>>869 GRANT ALL ON test.* TO testadmin@localhost IDENTIFIED BY 'admin';
だと思う。あと、アクセス拒否とは関係ないけど、パスワード指定
は --password=admin か、-padmin でしょ。
>>868 何をやりたいのかさっぱりわかんないけど、
SELECT last_insert_id()
でなんとかなるんじゃね?
873 :
869 :2005/06/28(火) 10:52:44 ID:???
4.1にして丸一日無駄にした! 初心者のくせにうちのサイト全部UTF-8仕様にしてやるぜ とかいらんこと考えて即死亡。 人生の貴重な一日を無駄にしました。ありがとう4.1
貴重な経験とも言えるw
876 :
NAME IS NULL :2005/06/28(火) 16:41:39 ID:Hbs9ooet
mysqlで電話帳みたいな あ〜お か、が〜こ、ご ・・・・ のような感じでsqlで引っ掛けることって可能ですか?
>>877 文字コードが並んでる部分についてはバイナリーとみなして
範囲を指定できたと思う。
同じデータベース内にある二つテーブルを結合して検索するのと 違うデータベースにある二つのテーブルを結合して検索するのと 速度の違いが結構ありですか?
>>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つに速度の違いはあるのか?と聞いているのと同じと思われ。
違いは結構あるのか?と言われれば、はっきりいって全く違いなしといっていいくらい同じだろう。
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'' というエラーメッセージが出て作成することが出来ません。 お分かりになる方、教えていただけないでしょうか?
昨日ときょうの間に何をやったのかを教えてくれないのか。。 エスパー募集は別板でやってくれ。
昨日行った作業は、PHPと連携させて、データの追加をおこなった だけで、テーブル自体の削除等はしておりません。 それで、今日コマンドプロンプトからテーブルの中身を確認しようと したところ、テーブルが、というより、データベース自体が なくなっていたのです。データベースをもう一回作り直そうと すると上記のようなエラーがでてしまい、作り直しもできません。 まったく見当がつかない状態です・゚・(ノД`)・゚・。
>PHPと連携させて、データの追加をおこなっただけ 詳しく
現在ウェブページを作成中で、ページのテキストボックスに入力した
文字がデータベースに登録されるような簡単なものです。
mysqlに入るときに、 -u root を使って、管理者権限で入っているのですが、
>>886 にあるエラーメッセージの
access denied for user ''@'%' to database 'mysql''
が関係しているのではないかと思います。
この「user ''@'%'」が示すことって、rootで入っていない
っていうことですかね?
>>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の最初の起動時に入力するユーザ名とパスワードって 一体何に使われるのですか?
>>890 PHP経由でSQLインジェクションをくらったとか。
ひょっとしてアプリもrootで接続していたとかそういうことはないよね。
>>891 >>892 >>894 アドバイスアリガトウございました。
なんとか解決したみたいです。
っていうか、こんなことが原因だったとは・・・_| ̄|○
ありがとうございました・゚・(ノД`)・゚・。
>>893 WinMySQLAdmin(iはいらない)のためのデフォルトアカウントの設定。
WinMySQLAdmin以外のmysql/mysqldump等のクライアントユーティリティには関与しない。
>>895 他の人のために「こんなこと」を具体的に書いてくれ。
>>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という管理権限のあるユーザ(パスワードはなし)。
auto_incrementでカウントアップされたカウンタを戻すことって出来ます? 例えば3000ぐらいまで行ったのを200の戻したいです。。 宜しくお願いします。
899 :
NAME IS NULL :2005/07/04(月) 15:22:04 ID:Vq1NTXNC
mysqlに mysql> show variables > "/tmp/hoge.txt"; という感じで、ファイルに出力する方法ってありますか?
>>899 mysql -uユーザー名 -pパスワード -e "show variables" > /tmp/hoge.txt
>>898 AUTO_INCREMENTカラムの値が200以上のレコードが
存在しない状態にしてから、以下を実行されたし。
alter table テーブル名 auto_increment=200;
>>901 ありがとうございます。
mysql> alter table test_table auto_increment=0;
Query OK, 30 rows affected (0.30 sec)
レコード数: 30 重複数: 0 Warnings: 0
ってするとリセットされました。
ただプロパティーのインクリメントカウンタはリセットされないんですね。。。
画像・音声・動画のようなバイナリファイルそのものを 格納して管理している人にそのコツを伝授されたし # やっぱりメタデータだけをDBにつっこむ方のがいいのかなぁ・・
904 :
NAME IS NULL :2005/07/04(月) 19:14:17 ID:i+O5YFuY
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つを自己結合すればできるんじゃないかな。
>>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;
>>906 ザクッと取得してプログラムでやったほうが良い希ガス。
何故そこまでSQLに拘るのか良く分かりませんが。。
910 :
NAME IS NULL :2005/07/06(水) 05:02:48 ID:qLbhtRo3
>>906 まあ無茶なSQL文1つになりそうだったら、"CREATE TEMPORARY TABLE..."構文を使って
複数回に分けた方がいいよ。
言えてる・・・・・・ 「一ヶ月以内」という条件で、取得行数をある程度絞り込んで取得して、 あとはプログラム的に処理した方がいい気がする。 ヘボいプログラムしか書けないならSQLの方が速いだろうけど。
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]
>>915 マニュアルくらい嫁。
4.9.2. mysql(コマンドラインツール)
mysql は、以下のオプションをサポートします。
-B, --batch
結果をタブで区切り、各レコードが 1 行になるように出力する。ヒストリファイルでは使用しないこと。
AUTO_INCREMENTを指定したカラムを0からカウント始めるって事は可能ですか? 必ず1からスタートしてますが、そこを0からのスタートにしたいです。 宜しくお願いします。
>>918 できません。どうしても必要なら SELECT した値から -1 してください。
>>921 既定値(default)が変わるだけなので、
変更後に作成するデータベースのキャラセットが変わる。
変更しただけでは問題ないが、
以前のデータベースはEUCでした。
ある時から、作成したデータベースはUTF-8です。
では、どこかで問題が生じるので、
よく考えてから、設定するべし。
>>921 書くセクションによって意味が違ってくるわけだが...
まあMySQL4.0.xなら、サーバやクライアントがエンコードの変換を
行う訳ではないので、途中で変えてデータが変な風になることはないよ。
自前でsocketを開いてMySQLdと直接お話ししてみたいのですが、 どんな風に会話をすすめていけばよいでしょうか? そこらへんのプロトコルもドキュメント化されていたりするんでしょうか? それともソース嫁ということになるんでしょうか?
925 :
NAME IS NULL :2005/07/08(金) 02:39:37 ID:56uVMvCR
>>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) というエラーが発生してしまいます。 どなたか解決方法ご教授願えないでしょうか?
>>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.
~~~~~~~~~~~~~~~~~~~~
↑
ここに注目!
どういうコード書いたかさらさないでさすがに答えれないなぁ・・・
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(); そして、これは実行されていないみたい。
>>933 だから
>>931 の言うようにさらせよ。クエリ含めてな。
憶測言っててもしょうがないだろ?
そういや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のバージョンは今、ちょっとマシンが手元になくて申し訳ないで
すが調べられません。
まず汎用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
>>928 >>930 がすぐに答えてくれていたみたいだね。
まあ俺もそういうことがあったが、パニックの時はしかたないかもな。
ドンマイ。
947 :
924 :2005/07/11(月) 16:39:28 ID:???
>>925 遅くなりましたが、ありがとうございました。目的を果たせました。
あとPerlのNet::Mysqlあたりがすごく参考になりました。
>>731 MySQLで差分パックアップができるんですか?
今までmysqldumpで全部ダンプしてました。
binlog使えよ。
950 :
NAME IS NULL :2005/07/12(火) 01:34:32 ID:6P02ZkBP
>>948 mysqldumpはデータそのもののフルバックアップを行いときに使う。
バイナリログ(--binlog)は常時行う差分バックアップとして使う。
大規模ならレプリケーションもバックアップの手段の1つとして使うと良いよ。
>>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にも反映されてしまう。
そ、そ、そんなばかなー!!
( ゚д゚)?
>>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...
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 へシンボリックリンク。
このやり方にしてから、まあ検証環境がメインだけどしょっちゅう稼動バージョン変更だとかそういうのも一発でできてるお。
この手のノウハウについては英語圏ではいろいろ本とか記事?とかでてるみたいよ。
>>960 で、データーベースの移行はどうやるの?
962 :
956 :2005/07/14(木) 12:34:34 ID:???
>>957 どうもでありがとうです。
どこ見ても説明がみつからんもんで・・・。
CPUすんません。おっしゃるとおりで、Celeronです。
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です
>>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"); # エラーは出ない。 こういった場合にはエラーが出るようにテーブルを作るにはどのようにしたら良いのでしょうか?
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>
こんな感じです(^-^;
>>969 どーでもよい話だが人事関係のDBをさくらのレンサバに預けるのも
ある意味凄いな。怖くないか?
>>961 本番データは、MySQL本体とは別の共通ディレクトリに
置けばいいじゃん。
972 :
NAME IS NULL :2005/07/15(金) 02:06:21 ID:0pzFxJt7
>>961 データとサーバのバージョンは分けて考える。
>>971 のいうように共通ディレクトリがいいのかも。
4.0系から4.1系にあげるときのようにファイルフォーマットが代わる場合には新しいディレクトリが必要。
(確か変わるよね?)
んー、4.0から4.1にするんなら同じデータ使えるよ。 逆だとあんまり良くないけど。
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)
誤り1118(42000): 大き過ぎる状態でサイズをこいでください。 BLOBsを数えないで、 中古のテーブルタイプに、最大の列のサイズは65535です。 あなたはいくつかのコラムを TEXTかBLOBsに変えなければなりません。
コラム吹いた
>>974 ん? 現に使ってますが。
ISAM形式の奴が残ってて、それだけは駄目だったけど。
(コンパイルオプションに入れなかったから)
ま、いまさらISAMなテーブルが残ってるほうが問題ですが。
>>977 野暮なツッコミで申し訳ないがcolumnをコラムと読もうがカラムと読もうがどっちでもいい。
DB界隈ではカラムと読む方が一般的だけど。
4.1って強制UTF8のせいで マルチバイトキャラクタがテーブル名や列名にはいると互換性なくなってなかったか?
>>979 読む場合はどっちでもいいけど、書くときはコラムだと嫌だな
phpmyadminにある「次の行を編集する」みたいに、 自動的に次のレコードを表示させる・・・ような関数って無い?
テーブル名や列名をascii以外にはしない。 コーディングするとき面倒くさいから。
毎日 row がある程度増えて行くんですが、unique 性があればいいのは一定時間だけなんです。 こう言う場合は primal key ってどうすればいいんでしょうか? Oracle 使いに聞いたら、循環する int を使えと言われたんですが、 MySQL にそんなのありますか??
986 :
NAME IS NULL :2005/07/16(土) 16:18:24 ID:GKvS+qiJ
987 :
985 :2005/07/16(土) 16:30:00 ID:???
>>986 ネタ?
ちなみに mysql では 各column の値が定義領域を超えると、
最大値に丸められます。
なにこいつ
989 :
NAME IS NULL :2005/07/16(土) 23:19:48 ID:NbSXfESe
MySQL4.1で、文字コードを「ujis_japanese_ci」にして、PHPからEUC-JPの文字列を 登録したら、データが壊れて登録してしまいます。 どのようにデータを登録すればいいのでしょうか?
>>989 どのようなデータを登録すると、どのように壊れたデータが
登録されたのかを書きなはれ。世の中エスパーばかりでは
ないんで。
985がネタだろ
んー、 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とかで入っているのかと 思ったけど、そうではないみたい(色んな文字コードに変換してみたけど駄目だった)
Update で join って出来る?
996 :
990 :2005/07/17(日) 06:08:59 ID:???
>>994 MySQLサーバーとクライアント間の文字コードが合っていないと
思われ。
PHPでMySQLに接続後、SET NAMES UJISを送る処理を追加すれば
直ると思うよ。
998
999 :
NAME IS NULL :2005/07/17(日) 12:42:18 ID:k8NW5frL
999
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。