MySQL総合 Part2

このエントリーをはてなブックマークに追加
1NAME IS NULL
快速DBMS、MySQLの総合スレです。
プログラム言語毎のMySQLの使い方等、
固有の細かい話は適宜それらの関連スレに投げましょう。

■ 公式サイト(英語)
http://www.mysql.com/

■ 日本MySQLユーザ会(MyNA)
http://www.mysql.gr.jp/

■ 日本語マニュアル&検索
http://www.mysql.com/doc/ja/
http://www.softagency.co.jp/mysql/Manual/
http://www.mysql.gr.jp/jpdoc/

■ メーリングリスト案内&検索
[MyNA(日本語)]
http://www.mysql.gr.jp/ml.html
http://www.mysql.gr.jp/mysqlml/
[本家(英語)]
http://lists.mysql.com/
http://lists.mysql.com/search.php

過去スレ/関連スレ/書籍/ツール/その他の情報 等は >>2-3 にある筈
2NAME IS NULL:04/03/17 14:46 ID:???
■ 前スレ
[MySQL総合]
http://pc2.2ch.net/test/read.cgi/db/1056942908/

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

■ MySQL日本代理店
[株式会社ソフトエイジェンシー]
http://www.softagency.co.jp/
[ゼンド・オープンソースシステムズ株式会社]
http://www.zend.co.jp/

■ ライセンス関連
http://www.mysql.com/doc/ja/MySQL_licenses.html
http://www.opensource.jp/gpl/gpl.ja.html (GPL非公式日本語訳)

■ MySQL関連本
http://www.mysql.gr.jp/books.html
http://www.mysql.com/portal/books/
3NAME IS NULL:04/03/17 14:47 ID:???
■ 関連ツール、アプリケーション
[phpMyAdmin]
http://www.phpmyadmin.net/
[CSE - Common SQL Environment]
ttp://www.hi-ho.ne.jp/tsumiki/
[かねやんMySQLAdmin]
ttp://www.mmdb.net/m_kaneko/
[MySQL Control Center]
http://www.mysql.com/products/mysqlcc/
ttp://fringe.homeip.net/mysqlcc/ (言語ファイル)
[Navicat(旧MySQLスタジオ)]
http://www.navicat.jp/
[Emic Application Cluster for MySQL]
http://www.emicnetworks.com/products/mysql.html

■ その他の情報
[快速MySQLでデータベースアプリ!]
http://www.atmarkit.co.jp/flinux/index/indexfiles/mysqlindex.html
[実践MySQL]
http://www.softagency.co.jp/mysql/TIPS/
[SQLPowerPage](SQL構文一般)
http://www.sqlpowerpage.co.jp/
[ColdFusion用の資料](各種DBMSの予約語情報)
http://www.macromedia.com/jp/support/coldfusion/ts/documents/tn18050.htm
4NAME IS NULL:04/03/17 19:32 ID:???
>1 おつ
5NAME IS NULL:04/03/17 20:19 ID:???
Ver5.0はまだぁ?
6NAME IS NULL:04/03/17 23:45 ID:???
7( ゚Д゚):04/03/18 15:31 ID:???
mysql-4.0.18-winをインストしたのですが、
WinMySQLadminとやらを動かしてみると「Environment」の「MyODBC」の欄に、
「NotFound Driver3.51 NotFound」と出てます。これは何事?!

そして「Databases」から、右クリックしてもデータベースが作れない・・・。

環境はXP SP1です。

何とかして、エロい人・・・。
8NAME IS NULL:04/03/18 16:48 ID:???
>>7
>「NotFound Driver3.51 NotFound」と出てます。これは何事?!
ODBCをインストールしなければNotFoundと表示されます。
MySQLにアクセスする言語によってはODBCは必要ありません。
必要な場合はMyODBC-3.51.06.exeをダウンロードして実行してください。
http://www.mysql.com/downloads/api-myodbc-3.51.html

>そして「Databases」から、右クリックしてもデータベースが作れない・・・。
コマンドラインからmysqlかmysqladminで作れます。
GUIで作りたければ>>3の関連ツールで可能です。
しかしSQLを覚えるためにまずmysqlコマンドを使いこなす事をお勧めします。
9NAME IS NULL:04/03/20 00:19 ID:???
RESがつかないな
コマンドラインでやってる香具師皆無ってことか?w

>>7
PHP環境がインストールできてるのなら、
phpMyAdminはどうだ?
ttp://www.phpmyadmin.net/home_page/
10NAME IS NULL:04/03/20 11:27 ID:???
>>9
反応ないし、既に解決してるのかと思ってますが?
コマンドラインな人は別に支障ないし。

WinMySQLadminのDatabaseが操作できないのは多分↓
http://www.mysql.gr.jp/mysqlml/msg.cgi?ml=mysql&id=6757
http://www.mysql.gr.jp/mysqlml/msg.cgi?ml=mysql&id=6763
http://www.mysql.gr.jp/mysqlml/msg.cgi?ml=mysql&id=7033
11NAME IS NULL:04/03/20 13:58 ID:Ojes37WM
JSPスレから誘導されました。

ここで聞く内容じゃないかもしれないので、
違ってたら誘導してください。

JSPでLinuxのlocalhost(仮にホスト名を2chとして)のMySQLに接続したく、
mysql-connector-java-3.0.11-stable-bin.jarを
WEB-INF/libに置いたのですが、
接続を拒否されます。

try {
Class.forName("org.gjt.mm.mysql.Driver");
String cs = "jdbc:mysql:///localhost/mona?useUnicode=true&characterEncoding=SJIS";
conn = DriverManager.getConnection(cs, "giko", "hage");

で、Invalid authorization specification, message from server:
"ユーザー 'giko@2ch'を拒否します.(Using password: YES)"
何故、ユーザー名に@localhostでなく、
勝手にホスト名をつけてしまうのかも謎なのですが、
どうしたら繋げられるか教えて下さい。

宜しくお願いします。
12NAME IS NULL:04/03/20 16:07 ID:Zlau2GE9

1 名前:未来人 投稿日:04/03/20 15:52 ID:0o3rsHR1
今、試験的に2029年、2ちゃんねるUNIX板で開発された『タイムアクセス』を使って
2004年3月20日の「2ちゃんねる」に書き込んでいます。

2029年から(´∀` )オマエモナー
http://pc2.2ch.net/test/read.cgi/mysv/1079763650/
13NAME IS NULL:04/03/20 16:53 ID:???
>>11
JDBC接続時の"localhost"は、mysqlクライアントからの接続時の"localhost"と意味が違う。
mysqlクライアントからの接続時は
  localhost→UNIXドメインのソケットで接続
  127.0.0.1→INETドメインのソケット(TCP/IP)で接続
という意味になるけど、JDBCでは"localhost" "127.0.0.1"どちらもTCP/IPで接続する。
http://www.mysql.gr.jp/mysqlml/msg.cgi?ml=mysql&id=8567
ということで、JDBC接続するなら「'giko'@'127.0.0.1'」にGRANTしてね。

> 何故、ユーザー名に@localhostでなく、
> 勝手にホスト名をつけてしまうのかも謎なのですが、

なんとなく、/etc/hostsのエントリの問題の気がする。
grep '127.0.0.1' /etc/hosts
してみるとか、
host 127.0.0.1
してみると原因がわかるかも。
14NAME IS NULL:04/03/20 17:38 ID:Ojes37WM
>>13
キタ━━━(゚∀゚)━━━!!!!

hostsが
127.0.0.1  2ch localhost.localdomain localhost
となっていたので/etc/sysconfig/networkともども、2chを消し、
MySQLの'giko'@'127.0.0.1'をgrantして、
解決しました。

本当にありがとうございました( ;´Д`)タスカリマスタ
15NAME IS NULL:04/03/21 13:12 ID:dNw8tM+O
WinMySQLadminって何するツール?
mysqlccみたいなもん?
16NAME IS NULL:04/03/21 13:33 ID:???
>>15
そう、そんな感じ。MySQL AB的には、
動くのWindowsだけだし注力はしてないと思う。
17NAME IS NULL:04/03/23 08:33 ID:???
WinXP+MySQL 4.0.17なんですが、CREATE文でテーブル名を大文字にしても
小文字のテーブル名になってしまいます。
DBを止めて、ファイルを大文字にリネームしても、alter table文でテーブル構成を
変更するとまた勝手に小文字にリネームされます。
これを防ぐ方法ってなにかありますでしょうか?
18NAME IS NULL:04/03/23 09:40 ID:???
1917:04/03/23 09:51 ID:???
>>18
ありがとうございます。小文字に統一することを推奨しているんですね。
でもUNIX上では大文字にしてるので、大文字でに統一したいんですよね…on_

ちまちま変換します。
20NAME IS NULL:04/03/23 10:09 ID:???
>>19
ちゃんと全部読んだか?
2117:04/03/23 10:17 ID:???
>>20

-O lower_case_table_names=0
このオプションを付けたらテーブル名を小文字と見なさないということでしょ?


ああ、そういうことか。あとでやってみます。
22NAME IS NULL:04/03/23 11:29 ID:???
>>20
大文字と小文字の処理上の区別じゃなくて、
見た目上の区別が欲しいみたいだからいいんでねぇ?
23NAME IS NULL:04/03/23 11:38 ID:???
>>22
> >>20
> 大文字と小文字の処理上の区別じゃなくて、
> 見た目上の区別が欲しいみたいだからいいんでねぇ?

そうは読めないけど。
24NAME IS NULL:04/03/23 14:20 ID:xAiDoYwS
mysqlでデータベースを作成して使用しています。
(win2000+apache+php4+mysql3.23)

ある項目をテキストファイル(1行に1項目)と照合して
テキストファイルとデータベースの両方に存在するものだけに
何かしらのチェックを入れたいと思います。

どういった方法がいいでしょうか。ご教授お願いします。
25NAME IS NULL:04/03/23 14:23 ID:???
>>24
自分のやりたいことがやれるスクリプト言語を勉強する。
2624:04/03/23 14:26 ID:xAiDoYwS
phpは多少使えるのですが
具体的な方法が思いつかないのです。
27NAME IS NULL:04/03/23 14:38 ID:???
28NAME IS NULL:04/03/23 16:51 ID:???
>>26
PHPは知らんが、以下のような感じでは?

1. テキストファイルをすべて読み込んで、配列かハッシュに入れる
2. データベースの必要な中身をすべて読み込んで、配列かハッシュに入れる
3. 2. をループしながら、1に該当のものがあるかチェック

いずれにせよ、MySQL(のSQL)でどうのこうのという話ではないので、
適当な板に行った方が良い。


どうしてもMySQLなら、テキストファイルを mysql_import で読み込んで、
適当なテーブルに入れて、それで元のテーブルと比較するがよろし。
ttp://www.mysql.com/doc/ja/mysqlimport.html
29:04/03/23 19:31 ID:asEc5Bov
この文章を見た人には身の回りで、

3日後になにかとても悪い事がおきます。

悪い事を起きさせなくするためには

これと同じ文を2日以内に、

違う所に5回書き込んでください。

5回書き込まなかった女子中学生が

書き込みを見た3日後に死にましたというnさんのレスはhttp://mbspro3.uic.to/use/4460.htnlでもききました
30NAME IS NULL:04/03/23 19:44 ID:???
606 名前:T
DfXXi8WK
なんでだろーの曲っ゚∀て入ってた?

R-774 :04/03/23 12:48 ID:

607 名前:TR-774 :04/03/23 13:34 ID:Wj14tT9S
SMキタ━━━━物です ━━(゚
)━━━━━やの━ !!

608 名前:600# :04/03/23 15:29 ID:???
>>604プロモ盤は現


609 名前:TR-774 :04/03/23 16:41 ID:LmgRN/re
いかり若い頃って球とソックリ。


31NAME IS NULL:04/03/29 07:00 ID:???
てすてす
32移植:04/03/29 07:03 ID:???
31 名前:24 投稿日:04/03/25(木) 17:08 ID:gmmRg1v/
>>26
ありがとうございます。

とりあえずテキストファイルを配列に入れるところまではできたのですが
2. データベースの必要な中身をすべて読み込んで、配列かハッシュに入れる
3. 2. をループしながら、1に該当のものがあるかチェック

このあたり、とくに3のループがうまくいかないです・・・

32 名前:NAME IS NULL[sage] 投稿日:04/03/25(木) 17:20 ID:???
>>31
こういう質問の際に一番よくないのが「うまくいかない」という言い方です。
どううまくいってないのかは、やった本人で無いと判断できません。

やった内容(ソース)、期待する結果、実際の結果をすべて提示して初めて、
他者が理解できます。

ほとんどPHPの問題だと思いますので、PHPすれへ行ってらっしゃい。
33移植:04/03/29 07:03 ID:???
33 名前:24[] 投稿日:04/03/25(木) 17:22 ID:gmmRg1v/
>>32
わかりました。
34移植:04/03/29 07:04 ID:???
34 名前:NAME IS NULL[sage] 投稿日:04/03/26(金) 09:34 ID:???
text型のフィールドに、改行つきのテキストをinsertしたい場合は、
どういうsqlをかけばいいのでしょうか?
35移植:04/03/29 07:04 ID:???
35 名前:NAME IS NULL[sage] 投稿日:04/03/26(金) 09:36 ID:???
>>34
改行を \n にして insert する
http://www.mysql.com/doc/ja/String_syntax.html
36移植:04/03/29 07:05 ID:???
36 名前:NAME IS NULL[sage] 投稿日:04/03/26(金) 10:53 ID:???
さすがにサブクエリ使えないと大変になってきたので3から4に移行したいんですが
移行する際に注意しておいた方がいいことは何かありますか?
37移植:04/03/29 07:05 ID:???
37 名前:NAME IS NULL[sage] 投稿日:04/03/26(金) 11:13 ID:???
>>36
ちゃんとバックアップをとる。
38移植・・・手持ちネタ切れ:04/03/29 07:06 ID:???
38 名前:NAME IS NULL[sage] 投稿日:04/03/26(金) 12:50 ID:???
>>36
サブクエリだからMySQL4.0.xじゃなくて、MySQL4.1.xの選択肢になる訳だが、
まだまだ、その挙動に予断は許されないということを肝に銘じること<MySQL4.1.x

ところで、いままでMySQL3使ってったならサブクエリ無しで効率的な
作りのノウハウ溜まってると思うんだけど、全然別のDBMSからの移行案件?
39復旧:04/03/29 11:13 ID:???
39 :NAME IS NULL age :04/03/26 14:29 ID:???
基本的な事だと思いますが質問させて下さい。

table1
項目1  項目2
みかん 5000
りんご  1000
ぶどう  3000

table2
項目3  項目4
すいか 1000
みかん  500
りんご   100

この2つのテーブルで
SELECT * FROM table1 left JOIN table2 ON table1.項目1 like table2.項目3
を実行した結果の

項目1  項目2 項目3  項目4
みかん 5000  みかん 500
りんご  1000  りんご  100
ぶどう  3000  NULL   NULL

から
一致している行を省いたものを取り出したいのです。

具体的には'ぶどう'の行のみを抽出したいです。SQLはどう書けば良いのでしょうか。
40復旧:04/03/29 11:14 ID:???
40 :NAME IS NULL sage :04/03/26 14:34 ID:???
>>39
Manual
41復旧:04/03/29 11:14 ID:???
41 :NAME IS NULL age :04/03/26 14:45 ID:???
>>40
manualのSQLのどこの項目をみればいいですか?
42復旧 俺はここまで:04/03/29 11:14 ID:???
42 :NAME IS NULL sage :04/03/26 16:01 ID:???
>>41
SELECT の WHERE のところ。
それより先に、初心者向けのMySQLの解説サイトにあたってみるがよろし。
43NAME IS NULL:04/03/29 11:23 ID:61xeFHK0
Linux上のMySQLに、Win32クライアントを繋ぐことってできるはずだよね?
やってみたけどうまくいかなかった。
スキルある人教えてください。
44NAME IS NULL:04/03/29 11:47 ID:???
どううまくいかなかったのかを書くくらいのスキルを身に付けてから出直せ
4543:04/03/29 12:06 ID:61xeFHK0
1.RedHat7.3にMySQL.4.0.18を、ソースコンパイルでインスコ
2.起動(テーブルとか作れた。まともに動いている模様)
3.Win2000上のODBCドライバで接続かけると、ODBCの設定画面が表示される。
こんな感じ。

上記3のODBCドライバは、以前Win2000Server上のMySQLとは、接続できていた。
もちろんIPアドレスや、ユーザー名等々の設定はLinuxサーバーのものに変更済

ひどいなぁ>>44はぁ、できるかできないかくらい答えなよ。

46NAME IS NULL:04/03/29 12:51 ID:???
>>45
下記のどちらかを設定していないのでは?
まずWin32用のmysqlコマンドでLinux上のMySQLに接続できるか確認してみましょう。

1.RedHat7.3はファイヤーウォールでポートが閉じられており、
  ポート3306を開ける必要がある。
2.MySQLインストール方法によっては初期アクセス許可ホストはlocalhostとサーバのHostnameのみで、
  Win32クライアントのIPアドレスを追加登録する必要がある。
4743:04/03/29 13:10 ID:61xeFHK0
>>46
早速やってみるyo!!
48NAME IS NULL:04/03/30 13:42 ID:lLvBkMbM
>38
もしかして、MySQL4.0.xではサブクエリって使えないんですか?
mysql使い始めたばかりなもので....
49NAME IS NULL:04/03/30 14:06 ID:???
>>38
そう。MySQL5/4.1/4.0の比較表は雑誌とか
色んなところにあるから眺めて見るよろし。

今まで無くてどうしてたのつうと、HEAPとかとテンポラリーテーブルを
利用したりしてた。HEAPはMySQLが稼動してる限り保持してるメモリー上の
テーブルだから非常に高速。特性を理解して使うと面白いよ。
5048:04/03/30 17:00 ID:lLvBkMbM
>>49

>今まで無くてどうしてたのつうと、HEAPとかとテンポラリーテーブルを
>利用したりしてた。HEAPはMySQLが稼動してる限り保持してるメモリー上の
>テーブルだから非常に高速。特性を理解して使うと面白いよ。
さっそく調べてみます。

どうも、ありがとうございました。
51NAME IS NULL:04/03/30 19:11 ID:???
>>48
http://www.mysql.com/doc/ja/Rewriting_subqueries.html
も参照。UserCommentにも目を通すことも忘れずに。

他にはUNIONとかが無いとか言われてるけど、サポートしてる
他のDBMSだって内部的にはテンポラリー作って処理してるのが殆どだから、
SQLでサポートしていない=同等処理が出来ないということではないよ。
そのまんま移行したい向きには確かに不評だけどね。
52NAME IS NULL:04/04/02 14:59 ID:???
InnoDB使ってるときは複合主キーで自動インクリメントは使えないのですか?

CREATE TABLE tbl (
key1int unsigned not null,
key2int unsigned not null auto_increment,
v1date not null,
constraint pk_tbl primary key(key1, key2)
) TYPE=InnoDB;

で、There can only be one auto column and it must be defined as a key
が返ってくるんですが…。
53NAME IS NULL:04/04/02 15:02 ID:???
おっと、環境忘れてました。
赤帽8+MySQL4.0.18です。
54NAME IS NULL:04/04/02 18:59 ID:???
>>52
複合インデックスの2カラム目にAUTO_INCREMENTを使えるのは、MyISAMとBDBだけ。
http://www.mysql.com/doc/ja/example-AUTO_INCREMENT.html
55NAME IS NULL:04/04/06 16:38 ID:???
正規表現ちゃんとやれって言うんなら、自分でやれ。
56NAME IS NULL:04/04/08 10:59 ID:Ga8b73bc
PHP5系のリリースを機に、うちでは従来のPHP4系+PostgreSQL+Apache1.3系(OpenBSD3.2)から
PHP5系+MySQL4.1系+Apache1.3系(OpenBSD3.5予定)にするつもりですが、、、

MySQLの4.1系が正式リリースされるのは何時ごろでしょうか。
今、4.1系を使うとしても支障はないのでしょうか。
57NAME IS NULL:04/04/08 12:16 ID:???
>>56
そんなに近くは無いんじゃないかな。まだアルファだし。
http://www.mysql.com/doc/ja/Nutshell_Stepwise_Rollout.html

支障があるかどうかは、どのくらいの責任を負わされるかで違うけど、
プロダクトならリリースしか使えないでしょ。
アルファじゃ、まだバグは多いと思うよ。
58NAME IS NULL:04/04/08 15:15 ID:lFZWr5DN
mysqlをホームディレクトリ以下にインストールして
管理者じゃなくてユーザ権限で実行ってできますか?
環境はlinuxで。
59NAME IS NULL:04/04/08 15:26 ID:???
>>58
できる。というか、普通そうする。
6058:04/04/09 13:05 ID:/IKfGT8f
>59
mysqlユーザじゃなくて自ユーザでなんでもできるってことだよね?
thx.
61NAME IS NULL:04/04/09 15:35 ID:???
>>60
そう。共有させるならmysqlという(名前は何でも良いけど)
専用のユーザを作って管理した方が良いが、
普通に動かして使うだけなら一般ユーザでも可。
# mysqlもrootじゃない一般ユーザだが
62NAME IS NULL:04/04/09 17:54 ID:Pgr7I+KZ
すみません、スレ違いかもしれないんですが
PHP+MySQLを使った蔵書管理システムってないですか?
63NAME IS NULL:04/04/09 18:32 ID:???
どなたか
MySQL+Postfix+fmlの構成で
バーチャル環境のMailDir形式のMLを構築した方おられませんか?
MySQL+PostfixのMailDirまでは問題無くできたのですが、
fmlを導入してMySQLと連携させるところがよくわかりません。
Alias切れば良いのですか?
また、fmlのアカウントと参加メアドもMySQLに任せたいのですが可能ですか?
64NAME IS NULL:04/04/09 19:55 ID:???
mysql.gr.jp消滅か?

$ host www.mysql.gr.jp
Nameserver not responding
www.mysql.gr.jp A record not found, try again

$ host -t mx mysql.gr.jp myna.mysql.gr.jp
myna.mysql.gr.jp A record not found, try again
Error in looking up server name
65名無しさん@Linuxザウルス:04/04/09 20:22 ID:L5L6aQXN
mod_perlでうまくDBIつなげない
まじ、ファック!
66NAME IS NULL:04/04/09 20:37 ID:???
>>64
http://www.tmtm.org/ja/tdiary/?date=20040408
> MySQL ユーザ会のサーバが落ちてます。ご迷惑をおかけします。
> 明日夜には復旧する予定です。詳しくはその後に。

だって。
67NAME IS NULL:04/04/09 21:40 ID:9Ju7I9bW
MySQLって、ストアドプロシージャー使えるバージョンってある?
68NAME IS NULL:04/04/09 21:54 ID:???
>>67
5.0以降なら。
http://dev.mysql.com/doc/mysql/en/Stored_Procedures.html
ただし5.0はまだ開発版で、MySQL ABも"use this for previewing and testing new features"
って言ってる。
69NAME IS NULL:04/04/09 22:09 ID:???
>>67
MySQL5.0がそうだけど、今のところチャレンジャー
にしか薦められないし、MySQL ABも薦めてはいない。
70NAME IS NULL:04/04/09 22:23 ID:9Ju7I9bW
>>68>>69
クスコ
チャレンジしてみまつ
71NAME IS NULL:04/04/10 00:56 ID:Ab1zvxuh
WindowsにMySQLを入れたいのですが
今最新のバージョンはいくつですか?
72NAME IS NULL:04/04/10 01:18 ID:???
>>71
ブランチが複数あり、それぞれに対して最新があるのでなんとも。
取り合えずサイト行って、MySQL4.0.x系の最新をチョイス。
73NAME IS NULL:04/04/10 01:40 ID:???
今なら4.0.18かな。
74 :04/04/11 12:34 ID:82A44bDh
ERROR 1030: Got error 127 from table handler

 が、出ました。
 復旧はできたのですが、どのような場合に発生するのでしょうか?
75NAME IS NULL:04/04/11 13:30 ID:???
>>74
マルチうざい。

レコードファイルが壊れてた時など。
使用してるフィルシステム絡みを疑え。
7675:04/04/11 13:43 ID:???
○「ファイル」システム
77NAME IS NULL:04/04/11 13:50 ID:???
>>74
そういうときはperrorを使おう。

> perror 127
Error code 127: Unknown error: 17
127 = Record-file is crashed
7877:04/04/11 13:53 ID:???
それと、クラッシュに関するドキュメント。
http://dev.mysql.com/doc/mysql/ja/Crashing.html
7962:04/04/11 18:53 ID:p27DJUO/
>>62を教えていただけないでしょうか?
80NAME IS NULL:04/04/11 19:28 ID:???
>>79
存在はする。ただ自分が作ったのは図書館向けのシステム
(製品)として作ったので、オープンにはちと出来ない。
# 管理分だけさくっと抜ければいいんだけど。
# そこまでコンポーネント化してないので。

HotscriptかFRESHかで、個人蔵書用のデータベーススクリプトが
公開されていたと思うの参考にするといいと思う。
AmazonAPIでデータを収集する機能があるのもあった。
MySQL限定じゃなくて他のDBMS用と謳ってるのも探して味噌。
8174:04/04/11 20:31 ID:???
ありがとうございました。
はい、マルチでやっちゃいました。お許しください。

でも、ありがとう。ペコm(_ _;m)三(m;_ _)mペコ
8262:04/04/12 00:36 ID:???
>>80
うぅんそうですか。
できるところまで自分で作ってみることにします。
ありがとうございました。
83NAME IS NULL:04/04/12 04:23 ID:???
NavicatってEUCは扱えない?
文字化けします〜
84NAME IS NULL:04/04/12 10:12 ID:???
>>83
使える。つかドキュメント嫁
85NAME IS NULL:04/04/12 20:49 ID:???
navicatいいんだけどもっと安く買えないかな
本家HPからしか購入できないんでしょうか?
86NAME IS NULL:04/04/12 23:35 ID:???
ココで言う様なことじゃないけど、
パケットフィルタを何も仕込んでなかったっていうのは、すごい話だな。
87NAME IS NULL:04/04/13 00:44 ID:???
>>86
うーん、パケットフィルタぐらいなら仕込んでて普通というか、
人間見落とすからフィルタしとく方が良いんだけど。
(折れは確実に見落とすと自分でも思うので入れる)
件のサーバの後方に何かある訳でなし、サービスはSMTP,SSH,
DNS,HTTP,FTPでしょ。外向けのもので特にユーザも固定されなければ、
結局はフィルタあっても殆ど意味はないんだよねぇ。
そういうところでフィルタしとけば大丈夫だったかと問われると、
そんなことはないね、という気がする。

あとは復旧だけど、そういうサーバに重要なデータが
入ってるとは思えんので、時間が掛かってるとすれば
フルバックアップがロングスパンで、結構も戻ってしまったとか
そんな感じかな。環境はもうまっさらに入れ替え/再構築だけどね。

まあ、思ってたより過去ログ検索の必要性感じたり。
余り使って利用してなかったと思ったのだけどな。
88mysql:04/04/13 12:01 ID:Zswo1rn+
mysql 3.23.58から4.1.1-alpha-standardにアップしました
3時代にmysqldumpでバックアップし、サーバを4にしてからmysql<dumpで
データを戻しました
そしたらファイルサイズが3倍になりました。これはどういうことでしょう?
しかも良く調べてみると、4でchar(2)とかしても、6文字入るんですけど・・・?3倍?
どなたか、ご存知の方いらっしゃいましたらお教え願えませんでしょうか。
8988:04/04/13 12:56 ID:???
事故レス
unicodeがからんでるっぽい
90NAME IS NULL:04/04/13 13:11 ID:???
>>88
Unicodeっていうか、4.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.

4.1.0以前はCHAR(2)は「2バイトの文字列」だったけど、4.1.1からは「テーブルのキャラクタ
セット2文字分」という意味になる。
ujisやutf8では1文字を表現するのに最大で3バイト必要なので、CHAR(n)で確保される領域
は3倍になる。
9190:04/04/13 13:12 ID:???
>>90
ごめん、間違えた。
> 4.1.0以前はCHAR(2)は「2バイトの文字列」だったけど、4.1.1からは「テーブルのキャラクタ
> セット2文字分」という意味になる。

× テーブルのキャラクタセット
○ カラムのキャラクタセット
9288:04/04/13 13:35 ID:???
>>90
レスありがとうございました。通常のドキュメント部分にはunicode対応としかなかったのですが、
変更点の方には記述してあったのですね。見落としていました。
ちなみにサーバーのデフォルトcharsetはeucで、eucは2バイト/文字だと思っていました。
そしてテーブル作成時のカラム定義で、asciiを明示すると指定バイト通りの確保だったので、unicode関連だと
思っていました。
解決しました。ありがとうございます。
93NAME IS NULL:04/04/13 16:53 ID:???
varchar使ってる場合は増えないのかな?
94NAME IS NULL:04/04/13 22:20 ID:???
mysqlでテーブルにリレーションを設定するにはどうしたらいいんでしょうか?
JOINコマンド?
95NAME IS NULL:04/04/13 23:50 ID:LnF2L4Zb
ノートパソ(redhat7.3)にmysql3.23.58
デスクトップ機(win2000)にanhttpd+php4.3.1=192.168.1.2

mysqlに test_DB を作りまして、
grant delete,insert,references,select,update on test_DB.* to [email protected] identified by 'password';

……なんつーことをして、win2000のwebサーバから接続可能にしました。
接続はOKらしく、クエリーも期待通りに返るのですが
クエリーを一発飛ばすたびに、ノートパソからビープ音が鳴ります。
うるさくて大変です。助けてください。
96NAME IS NULL:04/04/13 23:50 ID:eu/Z9Kc0
>>85
ここで聞かなくてもスマートスタイルに直接聞いたら。日本での総代理店だし。
9795:04/04/14 01:26 ID:???
95デス。自己解決しました。
お騒がせでした。
98NAME IS NULL:04/04/14 01:56 ID:???
>>97
みんなに何も還元する気が無いなら、
もうココには出てくんな。
9995:04/04/14 03:17 ID:???
>>98
いや、この問題のレア度さえ分からない素人だもんで。
レスもつかなかったし、もしかしてくだ質すぎたのか?と悩んだのですよ。

結局、windowsにphpを入れたとき限定の問題らしく。
C:\mysql\share\charsets\Index
C:\mysql\share\charsets\sjis.conf
を手作りしないと文字コードが解決されなくてエラーが発生、らしいです。

Indexはredhat上のmysql/以下にあるものをコピってOK。
sjis.confはネットから落とせました。

# 気がきかなかった&常識が無かったのはおれが悪かったとしても。
# 「解決方法を還元したら助かるヤツもいるかもよ?」
# という言い方にしたほうがいいですよ。
# おれぁ恐いヒト苦手だぁよ
100NAME IS NULL:04/04/14 06:43 ID:???
>>100
これ、Winインストーラでphpからインストールしたとき出たぞ。てか、phpのエラーだたりしち。
phpを先にインストールすると、出る。

MySQL→phpの順番にインストールすると直る。文字コード定義ないままで直るw
なぜ?と思ったけど、よくみたらmy.iniでは明示的に言語指定してなくてwww
REMARKはずしてようがつけていようが、このエラーがでる。
101NAME IS NULL:04/04/14 10:10 ID:+XCDs49F
>>99
助かった。
漏れ、デバイスマネージャからBEEP音ならないように
設定してごまかしてますた・・・
10295:04/04/14 13:31 ID:???
>>100
おれのように、php と mysql を別マシン(php=win mysql=linux)に入れたら
必ず出くわす問題なのかしらね。

>>101
よかったアル。
ブラウザじゃなく、プロンプトから
php ./test.php
とか実行したら、フツーにエラーメッセージ見えてたですよ。
103NAME IS NULL:04/04/14 16:23 ID:???
>>95
2度ほどML見かけたが、原因解明には至ってなかった。
(報告してくる方の追究の熱心さがない&困ってない(再現しない)人多い)
ので、俺自身はbeepで悩まされたことなかったが、
何らかのレポはうれしいよ。
104NAME IS NULL:04/04/14 18:03 ID:GYHzo/KV
WindowsでのPHP+MySQLに苦労するくらいなら、"KNOPPIX for LAMP"使えよ。おまいら。
105NAME IS NULL:04/04/14 18:33 ID:???
>>104
「Windowsでおながいします」とか条件つけられて、
cygwin版ならともかく、KNOPPIX提示できるかよ。

PHPもMySQLもメイン開発者の多くはLinuxなので
どっちでも良いならUnix系、それもLinuxでやれっつうのは同意。
106100:04/04/14 19:16 ID:???
>>103
phpをWin版インストーラでやるからだわ。
別サーバだたらなおのこと、明示的にMySQLの場所を教えてあげる必要があるのだもの。

>>105>>106
御目汚し陳謝。ターゲットは相手の環境で決まるもんなので、自分で選べない。
目をつぶっててくださいw
107NAME IS NULL:04/04/15 16:34 ID:???
>>103
SJIS/UJISに対応させてないMySQLで
SJISやUJIS使ってるとピーピーピーピー言うな。
sjis.confやujis.confを放り込めば無問題だけど。
108NAME IS NULL:04/04/15 20:15 ID:5nd7kpFQ
先生!教えてください。
以下のテーブルと内容があるとします。
---------------------------------------
CREATE TABLE test (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
group_id INT,
title VARCHAR(200)
);

INSERT INTO test VALUES
(NULL, 1, 'オレって'),
(NULL, 1, 'アホだ'),
(NULL, 2, 'アホだ');
---------------------------------------

1度のSQL文で、title が、'オレって' かつ 'アホだ' で、group_id が同じ
レコードだけ知りたいのですが、そんな事できるでしょうか?

SELECT group_id from test where ??? = 'オレって' ??? = 'アホだ';

結果としてこうなるとうれしいのですが・・・
mysql 3.23.xxです。 よろしくです。
+----------+
| group_id |
+----------+
|    1 |
+----------+
109NAME IS NULL:04/04/15 20:31 ID:???
>>108
自己結合すればいけるでしょ。
select a.group_id from test a, test b where a.group_id = b.group_id and a.title = 'オレって' and b.title = 'アホだ';
110NAME IS NULL:04/04/15 20:39 ID:5nd7kpFQ
先生!ありがとうございます。
おかげで出来ました。
勉強になりましたぁ。
111NAME IS NULL:04/04/16 21:36 ID:NhhNWMg8
データベース初心者の素朴な疑問なのですが…。

1, 2, 3, 4 ,5の順番でレコードが並んでいるテーブルがあるとします。

ここでレコード3をDELETEして1, 2, 4, 5とし、さらにレコード6, 7を
一個ずつINSERTで追加すると、レコードの並びが1, 2, 6, 4, 5, 7と、
最初に追加したレコードがDELETEした位置に入ってしまいます。

1, 2, 4, 5, 7となるように、末尾にレコードを追加していく方法は
ありますでしょうか?

ググッてはみたのですが、理解可能な範囲では解決に至りませんでした。

mysqlは、Ver 12.21 Distrib 4.0.15, for suse-linux (i686)で、操作は
ターミナルからmysqlclientで行っています。

よろしくお願いします。
112111:04/04/16 21:38 ID:???
すみません。タイポがありました。
× 1, 2, 4, 5, 7となるように、末尾にレコードを追加していく方法は
○ 1, 2, 4, 5, 6, 7となるように、末尾にレコードを追加していく方法は
113NAME IS NULL:04/04/16 22:09 ID:???
>>111
一般に、「レコードが格納される順番」を指定する方法はない。
データがどういう風に格納されているかなんて、テーブル形式に依存するし。
たいていのテーブル形式ならいったん全レコードを削除してinsertしなおせばその順で入る
と思うけど、保証されてるわけじゃないしね。

本当の目的は、「"select * from 〜"としたときに、指定した順番でレコードを取得したい」
ってことじゃないの?
それなら、select文にorder byをつければソートされる。
http://dev.mysql.com/doc/mysql/ja/Sorting_rows.html
114111:04/04/16 22:36 ID:???
>>113
理解できました。ありがとうございます。

レコードをINSERT順に閲覧するような場合 、例えばttp://bbs.teacup.com/
のようにメッセージをページで分けて順番に表示するようなスクリプトであれば、
SELECT … LIMIT *, * で必要なレコードを順番に取り出して表示できれば楽かな、
と思った次第です。

それで、実際にPHP+MySQLで書いてみたのですが、上記の方法ではレス順が
変になって頭を抱えていた所でした。
115NAME IS NULL:04/04/16 23:56 ID:5D3jc9/v
MySQL4.0.18を使っています、
テーブルを作成しようと試行錯誤中なのですが、Typeがdataの行で
シンタックスエラーが出てしまいます。

birthday data,
family int
);

とすると data以下の文がエラー表示されます。
構文の使い方が間違ってるのでしょうか?
ぜひご指導下さい、お願いします。
116NAME IS NULL:04/04/17 00:08 ID:???
>>114
なんか設計が間違ってるんじゃないの。
削除したときは、マークをつけて表示しないだけにする、とか、
idをauto incrementにして、order by id desc とする、とか、
あとは、now()とかで、日付を入れて、それでソートするかだね。
117NAME IS NULL:04/04/17 00:14 ID:???
>>115
日付型は「data」じゃなくて「date」だよ。
http://dev.mysql.com/doc/mysql/ja/Column_types.html
118115:04/04/17 00:30 ID:???
あわわ、、
すみません、粗相しました..
ご指摘感謝します。

ふと気が付くといい時間だ、、(´Å`)
119111,114:04/04/17 00:39 ID:???
>>116
TNX。

とりあえず、UPDATEはINSERTの位置に影響しないようなので、「非表示」フィールドを増設して、
削除に見せかけてUPDATEで非表示フラグを立て、表示時に「あぼ〜ん」に置換するようにしますた。
今のところ、問題なさそうです。

もっと複雑な抽出を行う場合には、おっしゃる通りオートインクリメントのインデックスか日付で
ソートすることにします。
120NAME IS NULL:04/04/17 13:32 ID:GS815qp5
MySQL(ver.4.0.18)にOpenoffice1.10からJDBCドライバ経由で接続しています。
どうしても分からないので教えて欲しいのですが

まず、下のようなテーブル(テーブル1)を作っておいて

性別コード(プライマリキー) 性別
1 男
2 女

次に番号(プライマリキー)、名前、性別コードからなる
テーブル(テーブル2)をつくり、この2テーブルを性別コードで
結びつけてクエリを作成しました。こうして出来たクエリに
番号、名前、性別コードを入力すると、性別が表示されるようにしたいため
クエリデザインに

SELECT
`テーブル2`.`番号`,
`テーブル2`.`氏名`,
`テーブル2`.`性別コード`,
`テーブル1`.`性別`
FROM `テーブル1` `テーブル1` right join
`テーブル2` `テーブル2` on
( `テーブル1`.`性別コード` = `テーブル2`.`性別コード` )

としましたが、編集と新規レコード作成が出来ません。
ただし、それぞれのテーブル名を入れ替える
(テーブル1→2、2→1)とすると、うまくいくのですが
ネイティブSQLモードだとだめになります。

こういったことを可能にするには、どうすればよいのでしょうか。
121NAME IS NULL:04/04/17 14:12 ID:???
>>120
JDBC経由だと余り動作がそぐわなかった気がする。
追試してないし、それと同じ現象ではないけど。
unixODBC経由では駄目?
122120:04/04/17 14:29 ID:GS815qp5
すいません、説明が不足していました。
使用環境はWindowsXPhomeです。
ちなみに、MyODBCでも同じくうまくいきませんでした。
123NAME IS NULL:04/04/18 14:27 ID:rThR8htn
MySQLをVisual Basicで操作することは可能でしょうか?
124NAME IS NULL:04/04/18 14:47 ID:???
ODBCで可能。

DAO/RDO/ADOお好きなように。
125NAME IS NULL:04/04/18 15:09 ID:sQJEfw06
MySQLがもうちょっと進化したら、銀行とかのオンラインバンキングなんかに利用される日もそう遠くないな。
126NAME IS NULL:04/04/18 15:29 ID:???
>>125
MaxDBもあるし、それ(純粋な勘定系)は無いんじゃないかと。
127NAME IS NULL:04/04/18 17:00 ID:sQJEfw06
じゃあ、どんな分野に向いていると思うよ。
ナノテク、遺伝子、宇宙産業?
俺はお坊さん相手にお布施管理するDBなんか作ろうと思ってる。お布施の25%頂くシステムにしてさ
128NAME IS NULL:04/04/18 21:42 ID:???
DBの選定は、「分野」で決まるもんじゃないからなぁ
129NAME IS NULL:04/04/18 21:59 ID:NU/tC3gk
日本MySQLユーザ会のホムペ見たら
「Under Construction」となってたんですが。。。
この状態、しばらく続くのでしょうか?
130NAME IS NULL:04/04/19 09:43 ID:???
>>129
続くんかどうか走らんけど、以下の二つさえ見れれば問題無いっしょ?

ML過去ログ
http://www.mysql.gr.jp/mysqlml/
日本語マニュアル
http://dev.mysql.com/doc/mysql/ja/
131NAME IS NULL:04/04/19 14:31 ID:rs0zt2U4
>>130 おぉ、見れました!ありがとうございます!!
132NAME IS NULL:04/04/19 20:24 ID:???
MySQL で@ABが文字化けするんですが...
日本語まわりで文字化けする様なDBはまともな大手企業は使わないと思われ...
えらそうな能書きいいからはよなおせと言いたい
133NAME IS NULL:04/04/19 20:37 ID:???
>>132
えらそうな能書きはいいから、自分の足りない知識を治せとあんたに言いたい。
134NAME IS NULL:04/04/19 20:50 ID:???
>>133
うだうだはいいから...どうせ何も知らんのだろ
135NAME IS NULL:04/04/19 20:52 ID:???
>>132
MySQLのバージョンとテーブル/クライアントのキャラクタセットは?
ujis(EUC-JP)だったら化けて当たり前。
sjis(Shift_JIS)でも、化けても仕方ない(まず大丈夫だと思うけど)。

Windowsクライアントから入力した丸付き数字が化けないことを確実にするには、

・MySQL 4.1以降を使い、テーブルのキャラクタセットはutf8/ucs2を使う
・Windowsは98以降を使う、もしくはIE4.0以降をインストール
・Windowsクライアント側で文字をUTF-8/UCS-2に変換する
(Webアプリなら、FORM要素でaccept-encoding="UTF-8"とするなど)

…とすればいい。
WindowsのMultiByteToWideChar APIは、「機種依存」の丸付き数字をUnicodeで規定する
丸付き数字に変換してくれる。
136135:04/04/19 20:54 ID:???
間違えた。

>>135
× accept-encoding
○ accept-charset
137135:04/04/19 21:07 ID:???
つか、そんな面倒なことしなくてもカラムをBLOBにしてバイナリとして格納すればいいだけか。
連続書き込みスマソ
138132:04/04/19 21:18 ID:???
>>135
thanks.m(_ _)m

MySQL 4.0 を Windows XP や RedHat Linux 9などで使用してます。
4.1 はプロダクトリリースでないのが気になりますね...
139135:04/04/19 22:16 ID:???
>>132
まあ、4.0以前でもサーバのキャラクタセットをsjisにしておけばまず大丈夫でしょ。
3.23で4年間くらい使い続けているDBがあるけど、そいつで丸付き数字やローマ数字や
「(株)」なんかが化けたことは一度もないし。
140NAME IS NULL:04/04/19 22:49 ID:???
3.23をSJISでつかってるけど、普通に丸付き数字使えてますよ。
JDBCの設定間違えると通らないけどね。
141NAME IS NULL:04/04/20 09:17 ID:???
3.23でEUCだけど、化けないよ。
どんな設定してんだ??
142NAME IS NULL:04/04/20 09:45 ID:???
>>141
>>132がどういう構成で使っているのかわからないから適当な推測だけど、テーブルにデータ
を入れる前の段階か、テーブルからデータを取得した後で化けてるんじゃないの?
未定義領域(空き領域)の文字をどう扱うかは実装に強く依存するから、おかしくなっちゃっても
仕方がない。
実際、iconvで変換しようとするとエラーになる。
143NAME IS NULL:04/04/20 11:14 ID:???
ぢつは化けてるんじゃなくてMacから見てるだけだったりしてw
144141:04/04/20 22:08 ID:???
やっぱ文字コードの変換でミスってんだろうな。
うちLinuxで、MySQL+PHPだけど、全部EUCで使ってる。
php.iniとmy.cnfの設定うまくやれば何も問題ないでしょ。
TEXT型で何もいじらず突っ込んでやれば、文字化けしないですよ。
145NAME IS NULL:04/04/20 23:46 ID:???
s/Apatch/Apache/

間違えすぎ。名前の由来的には近いんだろうけど。
146ISNULL:04/04/21 01:04 ID:4FKx9ggi
今度出るMySQL Query Browserはイイらしい。
Query Browser + Administratorで、CCはお役御免となる予定。
147NAME IS NULL:04/04/21 15:23 ID:???
インポートについて教えてくらはい
タブ区切りのテキストデータをインポートしたいのでつがうまくいきません;;
テキストファイル名:d_log.sql
データベース名:logdb
テーブル名:d_log

$ mysqlimport logdb d_log.sql -u root -p
Enter password:
mysqlimport: Error: Can't get stat of '/home/log_user/d_log.sql' (Errcode: 13), when using table: d_log

エラーの意味が・・・
148NAME IS NULL:04/04/21 16:04 ID:???
>>147
statが失敗するってのは、そのファイルにアクセスできないってこと。
ファイルや置いてあるディレクトリのパーミッションは大丈夫?
それと、perrorを覚えておこう。

> perror 13
Error code 13: Permission denied
149NAME IS NULL:04/04/21 16:44 ID:KvwDPFw5
>>148
Error code 13ってのは「Permission denied」でしたか^^;
参考になりました
これからアクセス権を確かめてミマス^^
150NAME IS NULL:04/04/22 11:06 ID:JQN0J6g1
動的アドレスで動いてるLinux上のMySQLにWin32からODBCで接続したい訳だけど、
Host/Server Name(or IP)のあたりどうすりゃいいの?

スキルある人教えてください。
151NAME IS NULL:04/04/22 13:38 ID:???
>>150
マルチうざ

・動的アドレスではなく固定アドレスを利用する
・DNS(or Windowsの名前解決)を利用する
かな。
152NAME IS NULL:04/04/22 14:27 ID:???
mysqlと関係ないじゃん
ばかじゃないの
153NAME IS NULL:04/04/24 00:29 ID:???
MySQLで何かしようとしても
mysqlshow: Can't connect to local MySQL server through socket '/tmp/mysql.sock'
になる。
MySQLは立ち上がってる(?)
ps -ax | grep mysql
3598 p1- S 0:00.01 sudo /usr/bin/mysqld_safe --user=nemu --default-cha
5485 std R+ 0:00.00 grep mysql

どうすりゃいいんだYO エロい人達
てか、'/tmp/mysql.sock' こんなファイル無いし
154NAME IS NULL:04/04/24 02:27 ID:???
>>153
そのMySQLはどうやってインストールしたん?
どこぞのバイナリーパッケージを利用したのなら
そのパッケージのレイアウトに合わせて
sockファイルの位置の設定を見直したか?

ソースインストールをベースに書かれてる本とかの記述を
そのまま適用しようとしてないか。
155153:04/04/24 13:06 ID:???
>>154
MacOSX Serverなんですが、元からインストールされていて
このような構成になっております。
質問と答え間違ってます?
156 :04/04/24 14:18 ID:???
すごい初心者で申し訳ないんですけど、
MySQLデータベースから時間を表示させたいんですけど、どうしたらいいでしょうか?
ブラウザからサーブレットを使い、データベースに時間を記録させ、再びデーターベースからその時間を取りだし、ブラウザに表示させる
っていうのを作りたい。



157NAME IS NULL:04/04/24 14:48 ID:???
>>153
元からインストールされていてそれってのはスゴいね。
可能性としては
・サーバはUNIXドメインのソケットを使っていない
・ソケットのパスがサーバとクライアントで合っていない
くらいかな。
以下を確認してみるがよろし。

1) 起動スクリプトでパスが指定されていないかどうか
2) netstat/sockstat
3) クライアントからTCP/IPで接続(--host=127.0.0.1)

あと、>>153でpsの結果が切れているので、"ps axww|grep mysql"としてみて。

>>156
select now();
他にも時間関係の関数はいっぱいあるので、
http://dev.mysql.com/doc/mysql/ja/Date_and_time_functions.html
あたりで調べてくだちい
158NAME IS NULL:04/04/24 17:47 ID:???
>>153
Mac OS X 10.x "Server"だとプレインストールされてるんやね。
http://dev.mysql.com/doc/mysql/ja/Mac_OS_X_10.x.html
configureオプションで特に変更してないようなので、
ソケットファイルは、デフォルトの/tmp/mysql.sockの位置で
全体的に設定済みの模様

取り合えず
http://dev.mysql.com/doc/mysql/ja/Can_not_connect_to_server.html
を参考に原因を特定してみてください。
/tmp/mysql.sock自体が見当たらないので
・mysqld が動作していない。
のような気がしますな。
159NAME IS NULL:04/04/24 19:01 ID:???
>156
Javaのスレいって聞いた方がいい
160153:04/04/24 19:53 ID:???
>>157 >>158
レスありがとう。
うちの会社は誰もわかんなかったのにすごいですね(w
書いてある事やリンク調べてやってみます。
>>157
$ ps -axww | grep mysql
3598 std- S 0:00.01 sudo /usr/bin/mysqld_safe --user=nemu --default-char
acter-set=ujis
13044 std S+ 0:00.00 grep mysql
161158:04/04/24 20:21 ID:???
ごめん。psの内容をハナッからスルーしてた。
mysqldは動いてるので、その後から探ってください。
162156:04/04/25 04:26 ID:???
>>157 >>159
レスどうもです。
サーブレット内で、 Date currentDate = new Date()等の時間を得るコードを使おうとするエラーが出ちゃうんですね

163NAME IS NULL:04/04/25 16:18 ID:???
>>162
いよいよもって「スレ違い」
164NAME IS NULL:04/04/26 05:02 ID:???
MySQL Clusterの話題が出てないのは
ここの皆さんは必要としていないから?(w
165NAME IS NULL:04/04/26 09:09 ID:???
プレビュー版がまだ出てないからでは?
説明PDFならユーザ登録すればもらえるよ。
読んだけど良く分からん。@ITの解説に期待。
166NAME IS NULL:04/04/26 20:53 ID:???
MySQL Clusterって、PGClusterみたいな、
マルチマスタレプリケーションが可能なのかな??
167NAME IS NULL:04/04/26 23:40 ID:n+uz+Zmb
すみません。Macで使えるMySQL用ODBCドライバ
を探しているのですが、なかなか見つける事が出来ません。
どこかにありませんでしょうか?unix用のが使えるかと
思ったのですが、インストールできないんです。

javaの研修でjava.sqlパッケージを使いたいのですが、
自宅での勉強となると勝手がよく分からなくて・・・。

知っている方情報をお願いします。
168NAME IS NULL:04/04/27 00:34 ID:???
>>167
unixODBCでいいんじゃないの。MySQL側は純正のMyODBCで。
169NAME IS NULL:04/04/27 09:57 ID:???
>>167
ってかODBC必須なの?Mac + Java + MySQLならJDBCでOKだよ
170167:04/04/27 20:14 ID:UnVBLNHf
MacOSXのODBCマネージャーにドライバが云々と
書いて有ったので必要かと思ってました。

色々調べたところ、ようやく解決策が見つかりました。

ご参考までに、以下のアドレスで見つかりました。
www.cosmos.ne.jp/~kaz6120/maclib/mysql/index.pl?id=faq03
171167:04/04/27 20:15 ID:UnVBLNHf
途中で送っちゃいました・・

168-169さん、ありがとうございました。
172153:04/04/29 02:15 ID:zNI5ITTX
一からやり直そうとしてkillコマンドで
mysqlのプロセスを殺して起動しようと思ったら
起動できなくなっちゃいました。
rootになっての作業です。
MacOSX Serverの環境です。
なんとか立ち上げて使える状態にしたいです

$ mysqld_safe --user=root --default-character-set=ujis &
[1] 433
$ touch: /var/mysql/nemu.err: No such file or directory
chown: /var/mysql/nemu.err: No such file or directory
Starting mysqld daemon with databases from /var/mysql
/usr/bin/mysqld_safe: line 306: /var/mysql/nemu.err: No such file or directory
/usr/bin/mysqld_safe: line 1: /var/mysql/nemu.err: No such file or directory
tee: /var/mysql/nemu.err: No such file or directory
040428 13:05:55 mysqld ended
tee: /var/mysql/nemud.err: No such file or directory

↓エンターキーを押すと勝手に終了してしまう
[1] Exit 1 mysqld_safe --user=root --default-character-set=ujis

/varの直下にmysqlなんてディレクトリがない。

$ ps -ax | grep mysql
593 std R+ 0:00.00 grep mysql

立ち上がらない。。。。。
Mac板で聞くべきですか?
173153:04/04/29 02:16 ID:???
sage忘れました。失礼
174157:04/04/29 09:53 ID:???
>>172
データディレクトリがないからエラーになってるね。
>>153の時点では動いてたってことは、>>153とはディレクトリの指定が違うか、もしくはディレクトリを
削除しちゃったか。
どちらにしても、mysql_install_dbを実行すればディレクトリとmysqlデータベースが作られる。

Mac OS X Server固有の部分については、
http://www.apple.co.jp/server/documentation/
あたりを読むなりMac板に行くなりした方が詳しい情報を得られると思う。
個人的には、プリインストール版で悪戦苦闘するくらいならmysql.comの公式パッケージを使って
http://dev.mysql.com/doc/mysql/ja/Mac_OS_X_installation.html
の記述に沿って設定したほうが早いんじゃないかと思うけど。
175NAME IS NULL:04/04/29 17:09 ID:pO2jUQrE
RedHat7.3でMySQL4.0.18を使ってるんだけど、
メールボックスにメールがたまる。
これってMySQLからのメッセージ?
無視しつづけるとどうなるの?

サーバーが遠隔地で動いてて、日常的なメンテナンスができない。
ほっといてもいいのか、メールを削除しなきゃいけないのか、
詳しい人教えてください。
176NAME IS NULL:04/04/29 18:34 ID:???
>>175
エスパーは滅多にいない。

cronjobで回してる奴のメールか何かが
飛んで来てるんじゃないのか?
177NAME IS NULL:04/04/29 22:28 ID:???
>>175
サーバって遠隔地にあるのが普通でしょ。
メンテの度にデータセンターまでいくの?
まぁ、どんな内容のメールか分からないと判断のしようが無い。
crontabが原因なら、/etc/crontabの記述を見直すべき。
178NAME IS NULL:04/04/30 10:47 ID:???
>>175
sshは?
うちはルーターまでsshで、データセンター内のローカルはtelnetで操ってるけど。
179NAME IS NULL:04/04/30 15:19 ID:???
ALTER TABLE hoge ADD UNIQUE(hogeid) ;

hogeidをユニークにしたけど、やっぱやめたくなった
でもやめる方法がわからない
180NAME IS NULL:04/04/30 15:25 ID:???
ALTER TABLE hoge DROP UNIQUE(hogeid) ;

これではダメだった。
181NAME IS NULL:04/04/30 16:42 ID:???
>>179
alter table hoge drop index hogeid;
http://dev.mysql.com/doc/mysql/ja/ALTER_TABLE.html
182179:04/04/30 17:32 ID:???
>>181
おう、サンクス

INDEX・・・か。 SQLってコマンド体系に直交性が無くてヤだね。
183NAME IS NULL:04/04/30 20:20 ID:???
Fedora Core 1 にインストールされる MySQL 3.23 を
MySQL 4.0 にアップデートしようとしているのですが、
依存関係の解消ができず、困っています。

Perl-DBD-MySQL
php-mysql
mod_auth_mysql

を要求されたバージョンにアップデートしたのですが、
今度は、libmysqlclient.so.10 というファイルが原因でアップデートできなくなっています。

いろいろ調べたのですが、このlibmysqlclientの問題を片付けるには
どうしたら良いのか分かりませんでした。
184NAME IS NULL:04/04/30 20:44 ID:???
>>183
もうちょっと詳しく書いておくれ
MySQL4.0はどこの何を、どんな感じに入れようとしてるのか。
libmysqlclient.so.10が必要とされてるのなら入れればいいだけ
但しlibmysqlclient.so.10は現状でも入ってる筈なので、
そのインストールorリビルドで想定される位置に見つからない
というだけだと思うよ。
185184:04/04/30 20:50 ID:???
あとソフトエイジェンシーで無償配布されているビルド済みの
RHL9用のバイナリーパッケージはFedoraCoreでも使えるので、
それを入れるという手もある(サポートは有償)
http://www.softagency.co.jp/mysql/LAMP/download.html#aka9
サードパーティ製のパッケージになるので、所謂"系"が
純正とは異なる点には注意した方が良いけど。
186NAME IS NULL:04/04/30 20:56 ID:???
回答ありがとう。

インストールしたのは米国本家のサイトからミラーサイトをたどって法人のところから
以下の RPM をダウンロードして

MySQL-Max-4.0.18-0.i386.rpm
MySQL-client-4.0.18-0.i386.rpm
MySQL-devel-4.0.18-0.i386.rpm
MySQL-embedded-4.0.18-0.i386.rpm
MySQL-server-4.0.18-0.i386.rpm
MySQL-shared-4.0.18-0.i386.rpm

それぞれを

rpm -Uvh

でアップデートを書けた際に、依存関係に問題があるぞと
警告されたので、

Perl-DBD-MySQL
php-mysql
mod_auth_mysql

を要求されたバージョンのものをダウンロードしてアップデート。

そして、

rpm -Uvh MySQL-server-4.0.18-0.i386.rpm

でエラーが出て、

rpm -Uvh  MySQL-shared-4.0.18-0.i386.rpm

からアップデートしてみたら、

libmysqlclient.so.10 is needed by (installed) Perl-DBD-MySQL.
libmysqlclient.so.10 is needed by (installed) php-mysql
libmysqlclient.so.10 is needed by (installed) mod_auth_mysql

みたいなことを言われてたかな。
187188:04/04/30 20:59 ID:???
実を言うと、何度もLinuxには挫折していて、
X Windowが正常動かなかったり、
Cannaがまともに日本語を変換できなかったりして投げ出した経験有り。

今回頑張っているのは、最近PHPとMySQLを連携させることができるようになって
それなら、ローカルで実験できる環境をと思ってFedoraに再挑戦。

MySQLをアップグレードしようと思った動機は、
InnoDBを利用したいからです。
188NAME IS NULL:04/04/30 21:02 ID:???
検索していてヒントになりそうなのを見つけたので、
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/425rpmrhl.html
ちょっと試してみます。
祝日なのにもかかわらず、昨夜は徹夜で仕事だったので、
確認は明日になってしまいます。
189153:04/04/30 21:41 ID:???
>>174
レス遅くなって申し訳ないっす。
事故解決できました。
原因はhostnameが間違っていた(?)っぽいです。

いろいろなアドバイス本当にありがとうございました
みなさんもありがとうございました
190NAME IS NULL:04/05/01 00:16 ID:RzlmJYS+
書籍「MySQL&PHP Webデータベース入門」に
「MySQLサーバーをSJISやEUCで立ち上げると、
PHPを通じたMySQLの
操作がうまくいかないことがあります(PHP4の日本語対応が
不完全なため)」
と書いてありますが、
どういう時にうまくいかないのでしょうか?
191NAME IS NULL:04/05/01 00:23 ID:???
ソースからコンパイルしない奴は総じてクソ
帰れ
192NAME IS NULL:04/05/01 01:32 ID:???
>>190
一時期、2バイト文字を処理するために必要なものを外したPHP4の
バージョンがあったため。
なので、該当するバージョンのPHP4を利用している場合は、
アンインストールして、自分でソースからコンパイルしないといけないのだよ。

でも、その本を読んでいると言うことは、Windowsで試そうとしているのでは?
だったら、Windows版のPHP4なら心配いらない。
193NAME IS NULL:04/05/01 03:13 ID:???
>>190
「PHP4の日本語対応が不完全なため」じゃなくて
筆者の理解不足と説明能力の無さだ。
とんでもない記述だな>その本の作者

>どういう時にうまくいかないのでしょうか?
PHPの出力エンコーディングとMySQLのエンコーディング設定が違うと、
当たり前ですが問題が起こるでしょう。但しHTTPの出力エンコーディング
に関しては、mbstring.http_output設定ディレクティブがあり、きちんと
設定及び機能していればHTTP出力については自動変換されます。
これはあくまでもHTTP出力(CLIでのコンソール出力もそうかな)に
ついてのみで、ファイルシステムやDBMSへの出力は含まれません。

(長くなる&PHPの話なのでレスを分けて続けます)
194193:04/05/01 03:17 ID:???
PHP-MySQLの組み合わせの場合、PHPの出力エンコーディングで
MySQLと関わってくるのはmysql関数で与える引数の文字列の部分。
PHPは8bitスルーなので、PHPスクリプトをEUC-JPで書き、MySQLをujisに
設定していれば、mbstringモジュールが組み込まれていなくても関係ない。
スクリプトをEUC-JPで書き、MySQLをsjisにしていた場合は
mbstringモジュールをPHPに組み込み、自前で変換するのが一般的。
一部のバイナリ(まあRHLなんだが)はデフォルトでこのモジュールを組み込んでいない。

スクリプトのエンコーディングにSJISを使うのは特殊なケースであり
(日本ローカルでWindowsの環境という区分ではそうではないが)
これは8bitスルー出来ないので、PHPではSJIS→Unicode(PHP内部)→SJIS
という正直"無駄な"処理をしています。これを行うのがconfigure
オプションの--enable-zend-multibyteで、mbstring関数を組み込むオプション
--enable-mbstringとは別のものです。

"無駄な"処理であるが故に、PHPプロジェクトではこのオプションを
有効にしてビルドしたバイナリーはWindows版も含め配布していません。
unix系なら、有効にした私家バイナリーか自分でビルドを行う。
Windowsの場合は廣川さんがマメに対応されているので
ttp://www.geocities.jp/rui_hirokawa/php/win/
から入手するのが良いでしょう。
195193:04/05/01 03:27 ID:???
うーん、初心者向けの本としては結構判りやすい
書き方すると思ってる人なんだけどな>件の本の筆者

PHPのInput/Outputフィルタや出力バッファのあたりは
判りにくいし、PHPを使ってる人でも良く理解してない
人も多いからしようがないのかね。
196NAME IS NULL:04/05/01 05:04 ID:???
>>190
自分の環境で試してみて、動かないときに尋ねるのがこのスレの使い方では?
>>193氏が丁寧なので助かってるけど、書籍からの抜粋だけで書くのは失礼かもネ。
197193:04/05/01 05:28 ID:???
>>196
本来のQ&A的なもののAnsは>>193で終わってて
元質問者の意図から外れて話を長くしてるのは私かな。

2chやMLもそうだけど基本はQ&Aで、順を追って
進行していくものは、解説サイトや関連ドキュメントの
チュートリアル、書籍の役割であることは確かですね。
198NAME IS NULL:04/05/01 12:17 ID:LDZkZmvJ
MySQL 5.0alpha の Win32 版をインストールしてみたところ、
mysql.user テーブルに最初から 'grande' というホスト名の
エントリがありますが、これは何に使われるのでしょう?
マニュアルや FAQ には書いていないようです・・・
199NAME IS NULL:04/05/03 12:47 ID:HGQy7ezB
--with-charset=ujis をつけると、デフォルトは、EUC-JPになると書いてあるんですけど、デフォルトがEUC-JPなだけで
SJISとかも使えると解釈してよろしいんでしょうか?

--with-extra-charsets=all これは、デフォルト以外の文字サポートをすべてに設定するとか書いてあったのですが、
テーブルを作る際、設定さえしてあげれば、どんな文字でも使えるって事ですか?

google漁ったんですが、設定だけで、設定の意味が書いてあるところがあまりなかったので質問させてください。
よろしくお願い致します
200NAME IS NULL:04/05/03 18:42 ID:???
MySQL Cluster使ってみた人います?
導入方法とか環境とか簡単に教えてもらえるとうれしいです。
201NAME IS NULL:04/05/03 18:46 ID:2OY0WF1Z
デフォルトではlatin1に設定してあるけど、最初の設定でEUCなりsjisなりに変更すべき
ものなんでしょうか?
皆さんは何の文字コード使ってるんですか。
202NAME IS NULL:04/05/03 19:13 ID:???
>>201
UJIS
203あぼーん:あぼーん
あぼーん
204NAME IS NULL:04/05/03 22:16 ID:???
>>199
--with-charsetオプションて確か、そのエンコーディングしか
組み込まなかったと思われ。sjisも使うのなら
--with-charsetをujisとして、--with-extra-charsetsにcomplexかall
んで、my.cnfで変更。

>テーブルを作る際、設定さえしてあげれば、どんな文字でも使えるって事ですか?
使ってるバージョンが不明だが、現在の安定版で指定できるのはサーバ単位で、
テーブルやデータベースではない。マニュアルのリリースのところ参照

>>201
ujis。sjisは使うこともあるけど、積極的には使ってない。
latin1は"海外サーバ利用者"向けの動作確認用として指定してる。
205NAME IS NULL:04/05/05 16:05 ID:???
突然ふと不安になったんですけど、
MySQLってコマンドプロンプトで操作するんですよね?
206NAME IS NULL:04/05/05 16:07 ID:???
  |
  |
J

( ´_ゝ`)フーン
207NAME IS NULL:04/05/05 17:57 ID:???
やっぱWin98seの環境で「MYSQL徹底攻略ガイド」買ったのが間違いだった・・・
Win2000推奨説明だから、脳みそ空っぽの俺では導入で躓きまくりだし。
もう一冊別の本を買ってくるとしよう。
208NAME IS NULL:04/05/05 18:15 ID:???
>>205
それが普通だが、へタレには
http://www.mysql.com/products/administrator/
(MySQLCCより管理機能が充実)
http://www.navicat.jp/product/

他のWebアプリ系のツールはDBMSの管理機能はちと弱いね。
DBの管理機能は充分だと思うけど。
209NAME IS NULL:04/05/05 18:55 ID:???
>>207
「Win98seの環境で」が間違ってると、早く気づいたほうがいいぞw
210NAME IS NULL:04/05/05 22:04 ID:???
>>209
だよね、それは分かってはいるんだけど、
自分の環境では2kにする余裕も時間もないのよ。・゚・(ノД`)・゚・。
勉強の為だから、なんとか現状でどうにかするしかないっす。
211209:04/05/06 01:40 ID:???
>>210
それが「わかってない」

Win9x系はメモリ管理がMS-DOSの1M規制をひきずってるから、
「アプリが用事があるときメモリ確保して、用事が済んだら解放する」ようになっていない。
すなわち、WinNT/2000やUnixのように、サービスやデーモンを常駐させる仕掛けが、そもそもないのさ。

解説本がWin2000ターゲットなのは、「ServerだろうがProだろうが、同じ説明で成り立つ」から。
WinNTだとServerとWorkstationで違うし、さらにWin9xだと違う。
∴個人環境をWin2kProにしてから、ローカルでApache稼動が正しいw

まぁ「動く」と書いてあるから、ガンガッテくれ
http://dev.mysql.com/doc/mysql/ja/Win95_start.html
212NAME IS NULL:04/05/06 04:11 ID:FvG07aAA
scripts/mysql_install_db を実行したら、データベースのデータは、
mysql_installation_directory/var/ に初期データが作られるんでしょうか?

mysql_installation_directory/data/ とかディレクトリィ作ってそこにデータを入れるようにすることとかは出来ますか?
213NAME IS NULL:04/05/06 04:41 ID:???
>>212
出来る。起動オプションまたはmy.cnfに記述する設定のところを見てみ。
214NAME IS NULL:04/05/06 10:12 ID:???
NULLIF と IFNULL の違いが覚えられないんだけど、
いい覚え方を教えてください。
215NAME IS NULL:04/05/09 06:04 ID:0+Uhj792
すいません、助けて下さい

mysql-3.23.58-winをインストールした後、ワケあって一旦削除してから
もう一度インストールし直そうと思ったのですが、何故かアンインストール後setup.exeをクリック
しても何も応答しなくなってしまいました。何度か再起動をかけてやり直してもダメです。

アンインストールはコントロールパネルのアプリの追加と削除から行いました。
それとCドライブのmysqlフォルダとwindowsフォルダのmy.iniファイルの削除を行いました。

一つ気になる事は、アンインストール時にmysqlを停止しないで行ってしまった事です。
(再起動をかける時にアンインストールを行ったハズなのにWinMYSQLAdminの画面が出て「ユーザが
見つかりません」みたいなエラーが出ました)

OSはwindows98を使用しています
分かる方いましたら、教えて頂けないでしょうか
216NAME IS NULL:04/05/09 07:00 ID:???
215です。すいません解決しました
exe実行したまましばらく(10分位)したらインストールウィザードが起動しました・・・
うう
217NULL NULL NULL:04/05/09 12:39 ID:Iib19Uod
>>205
今度 出るQuery Browserを使えば、コマンドプロンプトからは
操作する必要は無くなる。
と、カンファレンスで説明していた。
218NAME IS NULL:04/05/11 14:58 ID:o9OBMzN7
【MySQL】テーブルDDLを生成してくれる便利なコマンドってあるのでしょうか?ご存知のお方どうかご教授下さい。
219NAME IS NULL:04/05/11 15:36 ID:???
>>218
SHOW CREATE DATABASE/TABLEステートメントで個別に取得してもいいけど
簡単なのはmysqldumpツールかな。通常はDDLとDMLが出力されるけど、
オプション--no-dataでDDL関連だけの出力になる。
http://dev.mysql.com/doc/mysql/ja/mysqldump.html

DDLの方言や他のDBMSで悪さするような部分は
自作ツールでも作って変換して対応してください。
220NAME IS NULL:04/05/11 16:48 ID:o9OBMzN7
>>219
有難う御座います。
早速試してみます。
221NAME IS NULL:04/05/11 18:58 ID:f5VBBbVr
えっと、複数列からなるレコードのほとんどの列の値を
同じテーブルの別レコードにコピーしたいのですが
簡単に行う良い方法はありませんでしょうか?
222NAME IS NULL:04/05/11 19:06 ID:???
>>221
INSERT INTO table_2 (d_1,d_2,d_3) SELECT s_1, s_2, s_3 FROM table_1

でどう?
223NAME IS NULL:04/05/11 19:07 ID:???
っとぉ・・・
しつれい、同じテーブルでしたか
TEMPORARY TABLE使えばできそうだね
224NAME IS NULL:04/05/11 19:42 ID:Jo8RlfWB
某所でスレ違いと言われたのでこちらにも書かせてもらいますが、

MySQLをPerlから操作しようとしました。
そしたらinstall_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC ...
とエラーがでました。
恐らくモジュールが入ってないのかと思いますが
どうすればインストールできるでしょうか。
一応、Msql-Mysql-modules-1.2219と言うのをDLしてきましたが
root権限など持っていないので説明にある方法ではインストールできません。
cgiとおなじフォルダにmysql.pmを置いてやれば動くような気もしますが
取り敢えず/mysql/libの中身をまるごと置いてやっただけでは動きませんでした。
225NAME IS NULL:04/05/11 20:37 ID:???
>>224
どこでスレ違いと言われたのか知らんが、
ここでも微妙にスレ違い(最適ではない)だと思うのだが?

WebProg板のPerl::DBIスレ
http://pc5.2ch.net/test/read.cgi/php/1015943725/

Perl::DBIは必ずしもWebプログラムだけで使う訳でも
無いので普通のプログラム板にも同種のスレがあるかも

繋げられるようになったら、またこちらにどうぞ。
Perlでの組み方はそのままPerl::DBIスレで訊いた方が良いと思うけど。
226NAME IS NULL:04/05/11 22:41 ID:???
>>225
有難うございます、ではそちらで伺ってきます。
227NAME IS NULL:04/05/13 19:01 ID:1cLW+KW3
サーバの設定をsjisに設定してある場合
ASPからレコードを追加する際,「\」の文字が入っているものが文字化けしてしまいます
現在は「\」の文字があった場合「\\」に置換する処理をASPで行って対処しているのですが
他に何か気をつける問題はあるのでしょうか?
228NAME IS NULL:04/05/14 16:26 ID:???
| Field | Type | Null | Key | Default | Extra |

Keyのところの解説ってどこにある?
PRIとUNIはわかったけど MUL が意味不明
229NAME IS NULL:04/05/14 16:58 ID:???
>>228
"MUL"は重複を許すインデックスのこと。
PRIMARYでもUNIQUEでもないインデックスとか、UNIQUEでもNOT NULLを付けてない
インデックスとかは"MUL"になる。

http://dev.mysql.com/doc/mysql/ja/DESCRIBE.html
http://dev.mysql.com/doc/mysql/ja/Show_database_info.html
230NAME IS NULL:04/05/14 17:08 ID:???
>>228
MULti
231NAME IS NULL:04/05/14 19:05 ID:???
>>229
そうなんだ
UNIQUEにしたやつについたからてっきり
NULLを許すUNIQUEフィールドかと思った
232230:04/05/14 21:11 ID:???
>>231
正しい英語だとMULtipleか。
MULは重複した値を許すキーであることを意味する。
>NULLを許すUNIQUEフィールドかと思った
まあそれでMULになってるのだが「NULLを許して且つUNIQUE」
というのはないので、UNIQUEキーかというと「違う」
UNIQUEキーならNOT NULLが前提。
233NAME IS NULL:04/05/14 21:26 ID:???
MULpo
234NAME IS NULL:04/05/14 21:53 ID:???
とりあえず ガッ(AA略
235NAME IS NULL:04/05/17 15:46 ID:???
MYSQLでというかSQLで
SELECT * FROM テーブル名 WHERE 列名 like '%〜〜%'
の逆で
SELECT * FROM テーブル名 WHERE '〜〜' like %列名%

のような処理はできないでしょうか?
また擬似的に上記のような処理を行うようにはできないででしょうか?
どなたかご教授ください。
236NAME IS NULL:04/05/17 16:10 ID:???
>>235は すごい テーブル

PHPかなんかと組み合わせて
テーブル名を先にゲットしといて
select * from foo,bar;
とやるしかないなポルナレフ
237NAME IS NULL:04/05/17 16:32 ID:???
>>236
お返事ありがとうございます。

テーブル名ももってくるのですか?
すいません。よくわからないのですが、もう少し説明していただけますか?

自分で考えたのは、
列名のデータをすべてひっぱってきて、そのデータにたいして
PHPなどで、ひとつひとつ'〜〜'と比較しようかと思っていたのですが、
ページング処理なども加えようと思っているので、
これでは煩雑になりすぎそうな感じなので、SQLでできないかと思ったのです。
わかりずらくてすいません。
238NAME IS NULL:04/05/17 17:56 ID:???
>>235
select * from テーブル名 where instr('〜〜', 列名) > 0
って話?
それとも、列名そのものを使って何かを検索するの?
239NAME IS NULL:04/05/18 08:03 ID:???
>>235
クリリンのことかーーー!!!
240235:04/05/18 09:57 ID:???
>>238
そういう話でした。
なりましたーー。
本当にありがとうございます。
たすかりました。

241NAME IS NULL:04/05/18 13:36 ID:BZbmry73
商品コード、品名、数量 のDBにて
select文一発にて、 品名計、商品コード計、総合計 をゲットできないものか。
242NAME IS NULL:04/05/18 14:14 ID:???
そりゃ、合計といえばSUMでしょ。
243NAME IS NULL:04/05/18 18:02 ID:???
品名計とか商品コード計って何?
244NAME IS NULL:04/05/18 19:06 ID:???
group byのことじゃないのか?w
245NAME IS NULL:04/05/18 19:19 ID:???
4.1.2を待つのも、もう疲れたよ...
あと数週間、あと数週間といわれ続け、もう5月半ば過ぎ。

いい加減にしてくれ。
246NAME IS NULL:04/05/18 19:59 ID:???
>>245
明日まで待ってくれ!
247NAME IS NULL:04/05/18 20:31 ID:???
今、出たとこです!
248NAME IS NULL:04/05/20 13:20 ID:???
すいません、CでMySQLを使う際に
参考になるサイトや本はありますか?
テンプレの
http://ime.nu/www.softagency.co.jp/mysql/TIPS/
にちょっと書かれてましたが、もっと詳しいことが知りたいです。
よろしくお願いします。
249NAME IS NULL:04/05/20 13:47 ID:???
250NAME IS NULL:04/05/20 14:49 ID:???
こんにちわ。
mysqlで同じテーブルに入っているデータの
2列の値が重複しているデータを検索したいのですが
SQLはどう書けばよいですか?
251NAME IS NULL:04/05/20 14:56 ID:???
>>250
もうちょっと具体的に。
select * from table where field_1 = field_2;
ってこと?
252NAME IS NULL:04/05/20 15:08 ID:???
>>248
Cでっていっても、通常はmysqlclientライブラリ使うから
C APIの使い方に帰結するんだけど?どこが判んないの。
http://dev.mysql.com/doc/mysql/ja/Clients.html
他言語でもこのC APIをラップしてるだけ(が多い)だから、
Cだから云々てことは無くて、結局MySQLのAPIが判ってないってことだよ。
http://www.synnottsoftware.com/tutorials/mysql.html
な感じのまんま。本は最低「Core MySQL」ぐらいは
買って読んどいたら良いね。あと「Mastering MySQL」も

mysqlclientライブラリを使わず、つまりSQLクエリ投げるのでなく
MySQLを使いたいってんなら、自分でライブラリやサーバのソース読めない
時点で無謀なことなので、C++の勉強から始めてください。
253NAME IS NULL:04/05/20 22:32 ID:???
>>250
having
254NAME IS NULL:04/05/21 11:56 ID:???
MAKE_SET(bits, str1, str2, ...) のstr1 str2 の部分を、

-+--
1 | str1
2 | str2

みたいなテーブルから引っ張って来ることって、SQLで出来ますか?
255250:04/05/21 15:17 ID:???
>>251
すいません。遅くなりました。

id |カラムA | カラムB
1 |AAA | BBB 
2 |BBB | CCC
3 |AAA | BBB
4 |CCC | CCC
5 |BBB | CCC

この場合id1,2,3,5を抽出したいのです。

>>253
私の以前の書き込みが理解しずらかったようですが、
having句で上記内容の解決ができるのでしょうか?
havingをあまり使ったことがないので、ちょっと考えてみます。
256250:04/05/21 15:31 ID:???
すいませんまたわかりずらいかも。
もう一つ例を書いておきます。

id|カラムA | カラムB
1 |AAA | CCC 
2 |AAA | CCC
3 |DDD | BBB
4 |BBB | CCC
5 |EEE | CCC
6 |AAA | CCC
7 |DDD | BBB

この場合1,2,4と3,7です。

257NAME IS NULL:04/05/21 16:29 ID:???
「わかりずらい」、「理解しずらい」が読みづらいね
258NAME IS NULL:04/05/21 16:37 ID:???
256で4を抽出しなきゃいけないとなると、ロジックが???
259NAME IS NULL:04/05/21 20:24 ID:???
>>256
質問。1,2,6と3,7ではないの?

カラムAについて重複しているのを引っ張ってきたいのでしょ?
1,2,6はAAAで重複しているし、3,7はDDDについて重複しているからさ。
カラムBについてというなら1,2,4,5,6と3,7だよね?

何で4が1,2,4という組み合わせになるの?

それが出来るかどうかはさておきなんですけど。
260NAME IS NULL:04/05/22 01:42 ID:???
>>250 >>254
データベース論の基本くらい学ぼうよ……
とか思った。

テーブルの構造がおかしいか、
最終的にやりたいことは他の方法で実現できる、
ような気がする。
261 :04/05/22 02:12 ID:0L7gep4q
Class.forName("com.mysql.jdbc.Driver").newInstance();

eclipseで上記のコードを実行すると、
ClassNotFoundExceptionが表示されてしまいます。
コマンドプロンプトで-classpathを指定すると繋がるのですが・・。
ちなみにOSの環境変数CLASSPATHにはJDBCドライバの
jarファイルのpathを設定しています。
どなたかご教授お願いします。
262NAME IS NULL:04/05/22 06:05 ID:???
>>262
プロジェクトの「Javaのビルド・パス」にJDBCドライバのjarファイルは入ってる?
263NAME IS NULL:04/05/22 06:09 ID:???
>>262
プロジェクトの「Javaのビルド・パス」にJDBCドライバは入ってる?
264NAME IS NULL:04/05/22 06:09 ID:???
あれ書き込めてた。連投すまん。
265NAME IS NULL:04/05/22 08:08 ID:yjtXzEiO
Linux で MySQL を使っています。

普段は mysqlcc で GUI で接続してメンテナンスをしているのですが、
時折 Windows 環境からメンテナンス氏なけばならないことがあります。
そんなときは ssh で接続し、コマンドラインで作業をしてます。

Windows から Linux 上の MySQL サーバに接続して
メンテナンスの作業を行うことができるクライアントってありますでしょうか?
266NAME IS NULL:04/05/22 11:51 ID:???
mysqlcc
267NAME IS NULL:04/05/22 13:25 ID:???
>>265
mysqlccのWindows版使ったらええやん。
268NAME IS NULL:04/05/22 14:25 ID:???
>>265
http://pc5.2ch.net/test/read.cgi/db/1079502373/3

俺はNavicat使ってるけど、今がmysqlccならそのWin版使えば?
サーバ管理の作業がメインならMySQL Administrator > MySQL Control Center
269NAME IS NULL:04/05/22 15:16 ID:???
phpMyAdminじゃダメでつか?
270NAME IS NULL:04/05/22 16:23 ID:???
>>269
サーバー側アプリでの対応は、httpd、PHPやそれ
(phpMyAdmin)を自身をインストールする必要があるからねぇ。

クライアント側がブラウザだけで良いとか、
通常のPort80だけで、穴あけやすいとかの利点もあるけど。
271265:04/05/22 19:13 ID:???
皆さんありがとうございます。

>>267 mysqlcc に Windows 版があるのを知りませんでした。
    早速試してみます。

>>268 いろいろとあるんですね、ほかのものも試してみたいと思います。

>>269-270 すでに Apache + PHP + MySQL の構成で
        Webアプリケーションを運用しているので、
        ブラウザ経由でのメンテナンスも試してみます。
272NAME IS NULL:04/05/22 21:35 ID:???
MySQLのプロンプトで補完って出来るのでしょうか?
Googleで調べてみたところ出来るようなのですが、
うちのMySQL(Ver 12.22 Distrib 4.0.18, for pc-linux-gnu (i686))
では出来ないようです。
何か設定などが必要なのでしょうか?
273NAME IS NULL:04/05/22 21:52 ID:???
>>272
[TAB]キーで補完されないか?
[↑]/[↓] or [Ctrl]+[P]/[N] でヒストリー
274NAME IS NULL:04/05/22 22:47 ID:???
auto_incrementとcharの2つのカラムを持つテーブルが有るんですが
今までテストで適当なデータを入れてたので運用前にそれを一気に削除したいと思います。
しかし、普通にdelete from tableじゃauto_incrementのデータは1に戻らないですよね。
これを1からカウントし直すようにする方法を教えてください。
テーブル自体消してして作り直せってのは無しで。
275NAME IS NULL:04/05/22 23:38 ID:???
>>274
alter table foo auto_increment=0;
とか
276NAME IS NULL:04/05/23 03:00 ID:???
>>275
有難うございます。やってみます。
277NAME IS NULL:04/05/23 09:17 ID:nsOfx3se
>>265
何をやるのかでツールを選んだら?
MySQL5.0で実装されるストアドプロシジャを操作しようとしたら
新しいバージョンのNavicat2004を使うことになる
278NAME IS NULL:04/05/23 10:40 ID:???
>>274
truncate tableではダメ?
279NAME IS NULL:04/05/23 14:37 ID:???
Web上のMySQLマニュアルを参考に
(ttp://dev.mysql.com/doc/mysql/ja/index.html)
テーブルをメモ帳で作成したのですが、
日付に \N と入力すると0000-00-00と認識されます。
メモ帳で日付データにNULLを入力するには
どうすればよいのでしょうか?

環境はWinXPHome + MySQL 4.0.14です。
280NAME IS NULL:04/05/23 15:13 ID:???
>>279
「テーブルをメモ帳で作成」って何? とか、どんなテーブル定義かとか、SQL文をmysqlコマンドに
与えたのかmysqlimportを使ったのかとか、説明がないのでぜんぜんわからない。

\N じゃなくて '\N' (←引用符つき)にしちゃったから「不正な日付」と判断されたとか?
281NAME IS NULL:04/05/23 15:45 ID:???
>>280

http://dev.mysql.com/doc/mysql/ja/Loading_tables.html
ここでサンプルとして使われている「ペット」というテーブルです。

mysqlプロンプト上で LOAD DATA しています。

よろしくお願いします。


282NAME IS NULL:04/05/23 16:15 ID:???
>>281
「メモ帳」って手軽なのは良いんだけど、高級クリップボード
の域を超えてエディタとして使うと難があるから

[TAB]NULL[TAB]とか、[TAB]\N[TAB]とはしないで、
\Nを入れずに[TAB][TAB]にしてみ。
つまりNULLのところに何も入れない
(サンプルに従って[TAB]区切り)
あと、最終行の後端をEOFで終了しないで、[改行]で終わらないと
フィールドデータの終端にならないから気をつけて。
283282:04/05/23 16:22 ID:???
ああ、これだとNULLじゃなくて不正値が入って(0000-00-00)になるね。
284280:04/05/23 16:59 ID:???
>>281
説明少な杉
まあいいや。

Windowsのメモ帳なんかで作ったファイルをLOAD DATA INFILEを読むときには、
LINES TERMINATED BYを指定する必要がある。
http://dev.mysql.com/doc/mysql/ja/LOAD_DATA.html
あるいは
・行終端記号を変更できるエディタでLFのみに変更
・各行の末尾にダミーのTABを入れておく
285280:04/05/23 17:03 ID:???
>>284
> LOAD DATA INFILEを読むときには、
LOAD DATA INFILEで読むときには
286NAME IS NULL:04/05/23 17:29 ID:???
280さん282さんありがとうございます。
うまくいきました。
秀丸で EOF がはいらないようにして、
LF改行で保存する事で認識しました。






287272:04/05/23 22:26 ID:???
>>273
これができないんですよ。
履歴の方は出せるんですが・・・。

Linuxサーバにsshで繋いでシェル上でmysqlを実行してるのが
問題なんでしょうかね・・・。
288NAME IS NULL:04/05/23 23:21 ID:???
>>287
いや、それ普通だから。それで補完もできる。
シェル疑うべきなんじゃ?bashとかtcshなら問題ないと思うけど。
289NAME IS NULL:04/05/23 23:54 ID:94cHIjUt
>>287
補完動作用のライブラリがリンクされてないバイナリなのかも。
たぶんreadline関係のライブラリをリンクしてコンパイルすれば
保管するんじゃないかな。
290NAME IS NULL:04/05/23 23:55 ID:???
WindowsからMySQL操作するクライアントプログラム書いてるんだけど、
ODBC使うのとlibmysql.lib使って書くのどっちが高速に動作するかな?
一千万行とかのUPDATE、INSERT、SELECTを一日2〜3回するから
少しでも早い方を使いたいんだけど・・・
291287:04/05/24 00:28 ID:???
すいません、補完について勘違いしていたようです。
例えばselectを補完しようとして
mysql> sele[tab]
として補完されないと悩んでました。

mysql> select * from [tab]
などでテーブル名は補完できました。
292NAME IS NULL:04/05/24 00:37 ID:???
>>290
その書き方だと、1000万行かたまり×数回/日ように読めるんだけど...
ならlibmysqlをカスタムして使うのがストレスがなくて良い。
293NAME IS NULL:04/05/24 01:12 ID:???
>>291
SQLステートメントの補完も出来たと思ったけど、
MySQL4.0.20付属ので試したら出来なかった。
何かパッチ当てて使ってた気もするな。それでも
ttp://www.mysql.gr.jp/mysqlml/mysql/msg/9043
にも話題が出てるけど、そんな感じの文脈に沿った
ものじゃなくて単語単位だった。

mysqlccのクエリ入力機能にもちょっとマシな
補完機能があるけど、これも構文はみないね。
294NAME IS NULL:04/05/24 01:14 ID:???
>>291
うちでもselectの補完も出来るよ。
295NAME IS NULL:04/05/24 01:38 ID:???
>>292
それで合ってます・・・正直設計から見直した方がいいような気もするけど
どうしてもコレで行くって言うからlibmysql使ってやってみるよ。レスthx
296NAME IS NULL:04/05/26 02:33 ID:Hyrm23K1
BLOB型データについて質問なんですが、
mysqlを動かすクライアントとmysqldを動かすサーバーが別々のマシンで、
BLOB型データをmysqlから書き込んだり、読み出したりすることはできるんでしょうか。
297NAME IS NULL:04/05/26 06:16 ID:???
SQLを触って10日ほどの初心者です。(初心者なんて語句を使って申し訳ありません)
mySQLでDBを作りたいのですが、日本語をinsertしたところ、???と化けてしまいます。
my.iniで[mysqld]欄にsjisの指定は行っています。

環境は以下です。
mysqlバージョン 4.1.1a
コネクタバージョン mysql-connector-java-3.0.12
OS 2k/XP

win2kでコネクタを2.0.14,3.0.14,3.0.11でやってみてもうまくいきませんでした。
mysqlのバージョンを4.0.18で、コネクタを3.0.12でやった時はうまくいったのですが、
空間情報を扱いたいため、pointなどを使ってすでに数値データを入力してしまったので
4.1.1を利用できたらと思います。

コネクタが対応していないんじゃないのか?と思って試してみたのですが、
そうではないのでしょうか?
そろそろ実装しようかなと思ってたところ、
あと20日で論文書けといわれて、テンパってて教えて君になってしまいました。
どうかよろしくお願いします。
298NAME IS NULL:04/05/26 11:12 ID:???
>>297
なんでそんなチャレンジャーなバージョンを使っているのか分からんが、
Javaでデータを入れることが目的で無いなら、コマンドラインからデータを
挿入してみてはどうか?

MySQLサーバの文字コードとクライアントの文字コード、テーブル、
カラムの文字コードやデータ自身の文字コードがどうなっているかなども
チェックしてみては?

MySQLサーバの文字コードとクライアントの文字コードはDOSプロンプトで
MySQLにログインして\s+RETURNしてみれば分かるでしょう。
299297:04/05/26 13:31 ID:???
返信ありがとうございます。
このバージョンを使う理由ですが、マニュアルの方で
空間情報機能の追加がされていると読んだからです。

ファイルに書き込んでそれを読み込むということも考えたのですが
DB内の日本語のデータをjavaアプレットに表示しようとしたところ、
同様に???になってしまったため、あきらめました。
つまり入力、出力ともに文字化けしてしまいます。

文字コードですが、
クライアント、サーバともにsjis_japanese_ciとなっています。
ほかの文字コードはちょっとわからないのですが、
JAVAからテーブルを作成した場合も、プロンプトから作成した場合も上記の
症状となりました。
JAVAで使用端末のの文字コードの確認をしたところ、MS932となりました。
これはsjisと考えていいのですよね?


WinMySQLで変数を見ていたところ、character_set_Systemがutf8となっています。
これが原因でしょうか?
グーグル先生に聞いてみたところ、
http://www.mysql.gr.jp/mysqlml/mysql/msg/9238
このような記事がでてきたのですが、ここらへんをお勉強したらいいですか?
(書いてあることがまだあまりわからない・・・。my.cnfとか)「
ほんと厨房ですみませんです ´д`
300NAME IS NULL:04/05/26 13:50 ID:???
>>299
JDBC使ったことないからよくわからないけど、↓のドライバを使ってみたらどうだろう。
http://www.javareading.com/jdbc/

> JAVAからテーブルを作成した場合も、プロンプトから作成した場合も上記の
> 症状となりました。

プロンプトから作成ってのは、コマンドプロンプトからmysql.exeを起動してテーブル作成&
INSERTしても化けるってこと?

> (書いてあることがまだあまりわからない・・・。my.cnfとか)「

my.cnfはMySQLのサーバやクライアントが読み込む設定ファイル。
http://dev.mysql.com/doc/mysql/ja/Option_files.html
301NAME IS NULL:04/05/26 14:01 ID:???
>>299
おなじくJavaのことは分からんが。

my.cnfはWindowsプラットフォームの場合はmy.iniという名前で、%SystemRoot%に
あるよ。(c:\my.cnfでも良いみたいだけど)

オプションを設定するプログラムまたはグループの名前を[]でくくってオプションを
書いておくと、起動時に読み込まれる。

[mysqld](MySQLデーモン)や[musql](クライアント)、[mysqldump](mysqldump.exe)
のところに
default-character-set=sjis
と書いておけば、とりあえずMySQLに関しては統一が取れるんじゃないか?
302NAME IS NULL:04/05/26 16:59 ID:???
>>297,299
4.1はちゃんと試したことがないから、これで解決できるかわからないけど。
mysql-connectorのマニュアルを読んでないのでは?

Properties prop = new Properties();
prop.put("useUnicode", "true");
prop.put("characterEncoding", "Windows-31J");
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/hoge", prop);
303297:04/05/26 22:33 ID:???
連絡が遅くなってしまい申し訳ありません。
皆さんから教えていただいたことを参考にいろいろいじってたら
日本語が使えるようになりました。
何をどういじったらできるようになったかわからないのが、あれですが、、、

本当に助かりました。
ありがとうございました。
これからがんばってデータベーサーになろうと思います。
304NAME IS NULL:04/05/26 22:38 ID:???
データベーサーって(;´д`)
305NAME IS NULL:04/05/26 23:25 ID:???
こーほー
こーほー
306NAME IS NULL:04/05/27 09:41 ID:???
そらダースベーダーやがなっ!(バシ
307NAME IS NULL:04/05/27 11:12 ID:???
>>299
空間情報って地理情報のこと?
それならPostgreSQLの安定版にはやくから実装されてるけどね…。
ま、今は論文がんがれ。
308NAME IS NULL:04/05/27 11:56 ID:???
正規表現でマッチした文字が最初に現れる場所を取得するにはどうしたらいいでしょうか?
REGEXだとマッチしたかどうかしかわからないようなので・・・

よろしくお願いします
309NAME IS NULL:04/05/27 13:15 ID:fghMnpZM
see fuction `locate()' > 308
310NAME IS NULL:04/05/27 13:55 ID:???
>>309
レスどうも。LOCATE()は知ってますが、正規表現が使いたいんです。
具体的には住所で港区芝2-1-1とかの文字列から
番地以前までを抜き出す処理です。
[0-9]にマッチした場所の直前の位置を取得したいんですが、
LOCATE()って正規表現は使えませんよね?

PHPとかと連動させてプログラム側で処理するしかないのかな・・・
311NAME IS NULL:04/05/27 20:27 ID:fghMnpZM
日本語の扱いについて教えてください。

redhatでmysqld4.0.17を動かして、
sjisのテーブルとujisのテーブルを作ってみました。
sjisのテーブルにはsjis文字をINSERT(本に書いてあったnkfとバッチ処理を組み合わせる方法)して、
ujisのテーブルにはEUC_JPの文字をINSERTしました。

redhatでmysqlを動かすと、ujisのテーブルはSELECTで検索できますが、
sjisのテーブルは文字化けします。

Windows2kにもmysqlをインストールしてWindows2kからredhatに接続してみると、
sjisのテーブルは読めますが、ujisのテーブルは文字化けします。

質問は
(1)これは正しい動作なのでしょうか。
(2)SET CHARACTER SET ujisとかsjisとかやると、文字化けしなくなるような記述が
ドキュメント(4.0.12版)がありますが、
4.0.17ではSET CHARACTER SET ujisもSET NAMES ujis もどちらもエラーがでてしまいました。
4.0.17ではこれらがサポートされていないのでしょうか。
mysql> SET NAMES ujis;
ERROR 1193: Unknown system variable 'NAMES'
mysql> SET CHARACTER SET ujis;
ERROR 1115: Unknown character set: 'ujis'

(4.1.1ではうまくいきました。)

(3)結局4.0.xではsjisのテーブルはsjisが読める端末で読み、
ujisのテーブルはujisが読める端末でしか読めないのでしょうか。

(4.1.1では文字コードを変換してくれるのですが、ちょっと新しすぎて使うのに躊躇してます。)


以上、長々とした質問ですが、よろしくお願いします。
312NAME IS NULL:04/05/27 23:59 ID:???
4.0.x以下ではテーブルのencodingは統一したほうがいいと思うけれど。
win版でujis<->sjis変換してくれるクライアントをソフトエージェンシーで配布してるはずなので、
それをつかったらどうよ?
313NAME IS NULL:04/05/28 15:58 ID:T60E4ozl
mysql 初心者です。先生、教えてください。

2つテーブルがありIDでリレーションされています。
1つのテーブルには日付があり古いレコードを削除したいのですが、
1つのSQL文で同時に2つのテーブルからレコードを削除する方法はありますか?

ウルトラ適当なのすが、ニュアンス的には以下のようなことをしたいのですが。

DELETE TableA,TableB Where TableA.ID=TableB.ID and TableB.Date < xxxxxxxx;

mysql は、 3.23.5x です。
先生、よろしくお願いします。
314NAME IS NULL:04/05/28 16:55 ID:???
>>313
4.0以降ならそんな感じで複数テーブルからレコードを削除できるけどね。
http://dev.mysql.com/doc/mysql/ja/DELETE.html
3.23ではDELETE文を2回発行するしかないと思う。
315NAME IS NULL:04/05/29 13:40 ID:WqFh/zxU
現在どのようなsqlが動いているかを知る方法はありますか?
316NAME IS NULL:04/05/29 15:11 ID:???
317NAME IS NULL:04/05/29 18:34 ID:WqFh/zxU
>>316
有り難うございます。これです。助かりました。
318313:04/05/29 23:51 ID:KU9koslZ
>>314
先生、レスどうもでした!
では2回発行して対処します。
またよろしくお願いします。
319NAME IS NULL:04/05/30 09:10 ID:iiz+oQIF
質問させてください。

create table averagePriceData (
id MEDIUMINT(8) UNSIGNED DEFAULT '0' NOT NULL AUTO_INCREMENT,
itemName VARCHAR(150),
price MEDIUMINT(10) UNSIGNED DEFAULT '0' NOT NULL AUTO_INCREMENT,
amount MEDIUMINT(10) UNSIGNED DEFAULT '0' NOT NULL AUTO_INCREMENT,
venderID VARCHAR(100),
city VARCHAR(50),
venderX VARCHAR(10),
venderY VARCHAR(10),
time TIMESTAMP,
PRIMARY KEY (id)
);

このようなテーブルを作ろうと思って実行したのですが
ERROR 1075: Incorrect table definition; There can only be one auto column and it
must be defined as a key
と言うエラーがでてしまいました。
エラーメッセージ集のようなものも検索したのですが
解決できずです。
自分ではMEDIUMINT(8) UNSIGNED DEFAULT '0' NOT NULL AUTO_INCREMENT
の設定がおかしい???などと思ってるのですが他にココは確認したのか
などのご指摘ありましたら是非よろしくお願いします。
320NAME IS NULL:04/05/30 09:30 ID:???
>>319
まずはマニュアルに当たるのがいいと思う。

http://dev.mysql.com/doc/mysql/ja/CREATE_TABLE.html
> 注意: AUTO_INCREMENT カラムはテーブルごとに 1 つだけ存在できる。

つか、priceやamountがauto_incrementって…
321319:04/05/30 09:43 ID:???
>>320
>>つか、priceやamountがauto_incrementって…

レスありがとうございます。
ご指摘のとおりでした。
初テーブル作成だったのでこれから紹介していただいたマニュアルなども
参考にして学んでいきます。
どもでした。
322NAME IS NULL:04/05/30 15:18 ID:qSyajV8O
あるテーブルにdatetime型のカラムがあり、そのテーブルからある
日付のデータを取り出す場合、where句にはどのような条件が適当でしょうか?
ぶっちゃけこのような場合の常套手段をおしえてほしいです。
323NAME IS NULL:04/05/30 16:33 ID:???
where hogehoge_date like '2004-05-01%' とか
そんなかんじ
324NAME IS NULL:04/05/30 16:49 ID:MliJef+E
スピードが遅くて困っています。
その列の最大値を取りたく、
select max(test_number) from db_name;

※test_numberはint。

としているのですが、どうしても0.4秒ほどかかってしまいます。全行数は数万行ほどです。
最大値を取る方法として、max()しか分からないのですが、他に速い方法はありますでしょうか?
325322:04/05/30 16:52 ID:???
うお、すげ!
調べてみてこんなのでいこうとおもってたんですが
where DATE_FORMAT(hoge_date,\Y-\m-\d) = '2004-4-4';
そっちのほうがカコイイですね
326322:04/05/30 16:58 ID:???
マチガイ
%Y-%m-%d
327NAME IS NULL:04/05/30 17:00 ID:???
>>324
sortしてlimit 1とか。。
どっちが速いかわからんけどw
328NAME IS NULL:04/05/30 17:04 ID:MliJef+E
>>327
有り難うございます。さっそくやってみました。
0.2秒ほど遅いです(>_<)
329NAME IS NULL:04/05/30 17:39 ID:???
mysqlをjdbcかまして使うとき、日付はDateで取り出すのとTimestampで
取り出すのとどちらがよいでしょうか?
また表示フォーマットなどの問題があるとおもいますが(たとえば
01と表示したいのに1と表示されたり)、その辺はどのように対処するのが
筋でしょうか?
330NAME IS NULL:04/05/30 18:02 ID:MAIGn6Ze
>>324

max()の引数になるカラムtest_numberにインデックスを設定しろ。
そうすれば幸せになれる。
331NAME IS NULL:04/05/30 18:42 ID:???
そうそう。indexがあるカラムなら、100万行あっても
0.01秒かからん。
332NAME IS NULL:04/05/31 15:04 ID:???
>>329
日付ならDateで、フォーマットはSimpleDateFormat。
333NAME IS NULL:04/05/31 16:39 ID:TTyLFfSb
>>330,331
有り難うございます。インデックス付けたら一瞬でした^^
where句にあるものだけが速くなるんじゃないんですね。
334NAME IS NULL:04/05/31 19:15 ID:???
>>329 俺はSQL上でフォーマットして文字列で取り出してる。
Javaでカレンダーいじるのかったるいし。
335NAME IS NULL:04/06/01 09:32 ID:???
>>334
SQLのフォーマットの処理を待ってる方がかったるいがな
336NAME IS NULL:04/06/01 12:34 ID:9foHO+qT
>>329
僕は、
SELECT DATE_FORMAT(DATE1, '%y/%m/%d %H:%i') AS DATE2 FROM xxxxxxxx
って感じに mysqlに処理させてるけど・・java遅いし。
337NAME IS NULL:04/06/02 18:09 ID:???
今度はHPか...
338NAME IS NULL:04/06/02 19:36 ID:???
mysql4.0.18/win98
低レベルな質問で申し訳ないですが、インスコしたばかりの状態で匿名ユーザーの削除を
することに挑戦しています。

とりあえずインスコ後、rootで入りrootにパスを設定して、
use mysql;
delete from user where user='';
を打ちこみました。レコード2行消えたというメッセージが帰ってきたので、
select user from user;
と打って、確認したところ、ちゃんと消えていました。そして
flush privileges;
を打って、一旦quit;exit;の後mysqlサーバをシャットダウンしました。
そして、起動させようとしたところ、mysqladminの信号が青にならず赤のままでとまってしまいます。
結局再インスコをしました。何度か同じ事を繰り返してみましたが駄目でした。

どこか間違っている個所があったのならどなたかアドバイスお願いします。
339NAME IS NULL:04/06/02 20:36 ID:???
>>338
rootにパスワードを設定したのに、mysqladminの
ログインアカウントにつかってるroot(デフォだとね)に
パスワード入れてないんじゃないの?

シングルユーザOS(=Win98)なら、普通にmy.iniの
mysqladminかclientの項に記述を追加しとけばいいよ。
340338:04/06/02 20:53 ID:???
>>339
ありがとうございます。
確かにmysqladminのmy.ini Setupタブを開くとuserとpasswordが別で設定してあります。
それは関係ないと思ってましたが、関係あるんですね。
とりあえずmy.iniの[WinMySQLAdmin]項目のpasswordを消してやってみます。
341338:04/06/02 21:24 ID:???
今、mi.iniの中身を
[WinMySQLAdmin]
Server=D:/MYSQL/bin/mysqld.exe

[mysqld]
basedir=D:/MYSQL
datadir=D:/MYSQL/data

としてからdelete from user where user='';をやってみましたが駄目でした。
Query OKのメッセージは出るので削除には成功してるんですが、その後再起動すると赤信号が変わってくれません。
そのときmysqladminのタブを切り替えてみるとDatabaseのところが全て消えてしまってるんです。My.ini Setup や
topにあるやつ、startのところの表示は変わらずされてます。

匿名ゆーざーを消すと起動ができないってことはないですよね。色んなサイトで匿名ユーザの消し方は解説されてますもんね。
今まで匿名ユーザを消して問題があったような話は他ではなかったんでしょうか。原因がわかりません。

342NAME IS NULL:04/06/02 22:29 ID:???
匿名ユーザーを削除せずにシャットダウン→再起動はできてるの?
343338:04/06/02 23:05 ID:???
>>342
レスありがとうございます。匿名ユーザをいじる前段階ですと、シャットダウン→再起動に
関しては何の問題もなくできていますので、匿名ユーザをいじったことによるものだと思います。

これは稀なことなんでしょうか?myadminで青にならないということは、サーバが立ち上げできない
ということですよね。mysqlデータベース内のuserテーブル内のデータは立ち上げにも関わる重要な部分なんですね。

インストールから削除までの流れは解説サイトの教え通りですし、どうすればいいんでしょう
344NAME IS NULL:04/06/02 23:35 ID:???
>>338
mysql.userテーブルからユーザ名が空のレコードを削除したらmysqldが起動しなくなったって
話は聞いたことがないなあ。

ログファイル(D:\mysql\data\hogehoge.err)には何か記録されてる?
345NAME IS NULL:04/06/02 23:42 ID:???
>>341
[WinMySQLAdmin]
user=####
password=####
とかは?

あとWinMySQLAdminでmysqldをキックするんじゃなくて、
DOSプロンプトでD:/MYSQL/bin/mysqld.exeを起動した場合は?
346338:04/06/03 00:27 ID:???
>>344
何度も入れなおしていて中途半端にログがわかりづらいので、今からログファイルも消して
やり直して、ログファイルをそのままあげます。

>>345
それは>>339さんに言われたので一応消してみました。http://www.sound-uz.jp/php/colum/setup13.html
このサイトに書いてあるmy.iniの書き方でやりました。DOSからの起動も今からやってみます。

お付き合い本当にいただきありがとうございます。
347338:04/06/03 00:42 ID:???
InnoDB: The first specified data file .\ibdata1 did not exist:
InnoDB: a new database to be created!
040603 0:31:34 InnoDB: Setting file .\ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
040603 0:31:42 InnoDB: Log file .\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
040603 0:31:45 InnoDB: Log file .\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
040603 0:31:54 InnoDB: Started
D:/MYSQL/bin/mysqld.exe: ready for connections.
Version: '4.0.18-max-debug' socket: '' port: 3306
040603 0:34:29 D:/MYSQL/bin/mysqld.exe: Normal shutdown

040603 0:34:30 InnoDB: Starting shutdown...
040603 0:34:32 InnoDB: Shutdown completed
040603 0:34:32 D:/MYSQL/bin/mysqld.exe: Shutdown Complete

040603 0:36:55 InnoDB: Started
D:/MYSQL/bin/mysqld.exe: ready for connections.
Version: '4.0.18-max-debug' socket: '' port: 3306
040603 0:39:48 InnoDB: Started
D:\MYSQL\BIN\MYSQLD.EXE: ready for connections.
Version: '4.0.18-max-debug' socket: '' port: 3306
348338:04/06/03 00:47 ID:???
D:\mysql\data\hogehoge.errはなかったのですが、上のであっていますよね?
それでプロンプトからmysqld.exeだとmysqladminは出てきませんでしたが、ルートで
接続をしてみたら接続できたので、起動に成功したみたいです。
でも、mysqladminからは無理のようです。

起動はできるがmysqladminは機能しないということでしょうか?
349344:04/06/03 01:04 ID:???
>>348
> D:\mysql\data\hogehoge.errはなかったのですが、上のであっていますよね?

"hogehoge"の部分は実際にはマシン名が入るから、それで合ってる。

> それでプロンプトからmysqld.exeだとmysqladminは出てきませんでしたが、ルートで
> 接続をしてみたら接続できたので、起動に成功したみたいです。

じゃあmysqldの問題じゃなくて、単にWinMySQLAdminがmysqldに接続できないだけだね。
>>339 >>345 の言うように、my.iniの[WinMySQLAdmin]セクションか[client]セクションに
userとpasswordのエントリを追加すればいけると思う。
350338:04/06/03 01:37 ID:???
>>349
レス遅くなってすみません。ini関係は無知識なので、色々試してなんとかできました。
初め[client]セクションを新たに作りuser,paswordをroot,rootに付けたパスワード
を値としてやってみたら、失敗したのですがmysqladminなしで起動させてみると
名無しで接続ができてしまいました。これは[client]に設定したものがデフォルト値に
なってしまうせいですよね?

その後[WinMySQLAdmin]セクションに設定したところ成功しました![client]に設定した場合と違い
名無しではちゃんと拒否してくれました。その後root,passwordの値を別のものにすると
やはり失敗したのでroot,passwordの値はユーザ設定されているものでそのユーザが持っている権限
をmysqladminで使うということでしょうか?

とにもかくにも本当にありがとうございました!助かりました。これでやっと寝れます。
351NAME IS NULL:04/06/03 16:36 ID:IKUlHP+Z
最近、MySQLをいじっている者です。
先日、includeファイルの中にMYSQL構造体を見つけたのですが、
その中にあるfree_meとfield_allocと言うメンバーの用途が分からず
色々と調べているのですが、いいサイトや回答が見つかりません。
また、free_meの定義らしき物はlibmysql.dllのソースの中で見つけた
のですが、これ以上独力で調べるのは限界みたいなのでもし知っている
方がいらっしゃったら教えてください。
よろしくお願いします。
352NAME IS NULL:04/06/03 16:52 ID:???
MySQLの直接の話ではないのですが
サーバを友人と数人で使用しています
MySQLを簡単に使うためphpMyAdminを設置しました、
個別にユーザを登録して各自のIDでパネルにログインして操作はできるのですが
左のフレームのDB選択メニューに他の人が作成したDB名も表示されます
これを本人のものだけにする事は出来ないのでしょうか?
config.inc.phpを眺めてみたのですがわかりませんでした、
もっと沢山の人で共用してたらたくさん出てきて使づらくなりますよね?
みなさんどうしていますか?
353351:04/06/03 17:30 ID:IKUlHP+Z
こんにちわ、私もMySQL4.18で同じ症状が出たことがあるのですが
ユーザー設定を変更したら見えなくなった覚えがあります。
GRANTだったと思いますが、REVOKEだったかもしれません^^;

権限を変更し、SQLサーバーへの権限はユーザーに持たせず、データベースを管理
者がデータベースを作り、それを適宜ユーザーに渡すと言う作業が必要になると
思いますが、それで他の人のデータベースは見れなくなるので、そちらから調べて
みてはいかがでしょうか?
354351:04/06/03 17:47 ID:???
連投すみません。
先ほど、昔書いた物を漁ったのですが
SUPER,REPLICATION CLIENT
の権限を変更してみてはいかがでしょうか?
これ以外の権限かもしれませんが、思い当たったので
書きこませて頂きました。
355NAME IS NULL:04/06/04 23:05 ID:???
最近勉強のためにMySQLインストールしてみたのですが、
データ型が沢山あってどれが目的にあってるかわかんないです。
データ型を1つ1つ解説しているようなページって無いでしょうか?
基本的な型を説明しているのはあるんですが、単に文字とか数値とかしか書いてなかったり・・・
356NAME IS NULL:04/06/04 23:11 ID:t2geracg
ユーザーごとに権限を設定できる、
管理ソフト(phpMyAdmin的な)はないでしょうか?
一部のDBだけをいじらせたいのです。
357356:04/06/04 23:14 ID:???
すぐ前に同じような書き込みがありましたね。
phpMyAdminでユーザー設定できたんですか。
失礼しました。
358NAME IS NULL:04/06/04 23:25 ID:???
>>355
データ型はDBMSによっても変わってくるので、マニュアル嫁。
それが理解できないなら一般的なSQLの本買って先に基礎力を養え。

>>356
ユーザ毎にDBの権限を設定すれば普通にそうなるが。
同じMySQLでアプリケーションで更にユーザって
概念を持たせる話なら、鯖屋とかでphpMyAdmin等を
独自にカスタムしてるから、見習って作れば?
ただ、そんなのは鯖屋でも特殊な部類のところだけだけど。
359355:04/06/04 23:33 ID:???
>>358
すんません、見つけました。
マニュアルは見てたんですが、データ型じゃなくってカラム型ってキーワードでした_| ̄|○
360NAME IS NULL:04/06/04 23:34 ID:???
356の「同じMySQL」は「同じMySQLユーザ」の書き損じ

>>357
そこで言ってるのはMySQLのユーザ管理機能がphpMyAdminに
反映されてるだけだが、求めていた事はそれなのか?
MySQLのユーザ管理はあたり前のものだから、
それを前提しないで機能を実現したいと読みとれたのだが。

361NAME IS NULL:04/06/05 00:16 ID:???
351さん有り難うございました、
すぐに理解できなかったのですが試行錯誤で出来ました、
方法はrootでphpMyAdminにログインし特権の変更で
目的のユーザーを修正にすると、最初の画面でグローバル特権にチェックが入っているので
それをすべて消して、その下にあるデーターベース特権のところを適切にチェックする事でできました。

phpMyAdminをいろいろいじってますがかなり便利で感心してます。
362351:04/06/07 15:06 ID:???
352さん、試行錯誤おつかれさま。
具体的な方法は覚えていなかったので参考になりました。

こちらはCSEとかねやんMySQLを使用していましたが、
今度phpMyAdminも使用してみますね。
363NAME IS NULL:04/06/08 06:44 ID:Ym43Uh24
環境は以下のとおりです。
OS: RedhatLinux 9
Server: apache 1.3
DB: MySQL 4.0
モジュール: PHP

参考にしている書籍は以下のとおりです。
MySQLクックブック :O'REILLY
MySQLディスクトップリファレンス :O'REILLY
MySQL徹底活用: 翔泳社

参考にしているHPは以下のとおりです。
http://dev.mysql.com/doc/mysql/ja/index.html
http://www.bitscope.co.jp/tep/MySQL/quickMySQL.html
その他

説明---------------------------------------------------------------

以下の4つのデータベースがあります。
name1
name2
name3
jyuusyo

name1〜3には
1さんの友人の名前と電話番号,住所番号、
2さんの友人の名前と電話番号,住所番号、
3さんの友人の名前と電話番号,住所番号、
を入れておきます。

jyuusyoには住所番号と郵便番,号住所を
入れておきます。

「DB: name2」から
名前を条件に住所番号と、電話番号を検索します。
検索結果の住所番号を元に「DB: jyuusyo」から住所を検索し、
名前と、電話番号と、住所を表示する方法がないかお教え願いないでしょうか?

HDDの都合上「DB: jyuusyo」をテーブルとして、「DB: name1〜3」のなかに持ちたくありません。
また、データベースを一つ作り、name1〜3,jyuusyoをテーブルとして持ちたくありません。


上記の説明でわかりづらかったらご指摘ください。
説明しなおします。

よろしくお願いします。
364351:04/06/08 08:48 ID:???
どうやら、サブクエリの問題みたいですね。
サブクリエはMySQL4.0では実装していないのですが、363さんの
状況ですと恐らく自分で好きなように弄れる環境ではないみたい
なので管理者か上の人にMySQL4.1以降を入れてもいいかどうか聞
いてみて下さい。
もしダメならかなり遅くなりますが、プログラムを組んでサブク
エリを擬似的に表現するかするしかないかと^^;
(最初の結果をファイルに出力→そのファイルを読み込み再度検索)

思いつくのはこのくらいなのですが、もっといい方法が有るかもし
しれないので頑張って下さいね。
365NAME IS NULL:04/06/08 09:55 ID:???
>>363
「データベース名.テーブル名」という形式でテーブルを指定すれば、同一データベース内の
テーブルと同じように結合できるよ。

select 名前, 電話番号, 住所 from name2.友人, jyuusyo.住所マスタ
where name2.友人.住所番号 = jyuusyo.住所マスタ.住所番号
and name2.友人.名前 like '名前%';
366351:04/06/08 12:04 ID:???
363>
確かに、結合すればできそうですね。
すっかり忘れてました^^;

367NAME IS NULL:04/06/08 16:43 ID:HhI0hefp
あるデータベースの1つのテーブルを別データベースにコピーしたいのですが
どのようにするのが一番良いのでしょうか?
mysqldumpが一般的?
368NAME IS NULL:04/06/08 20:52 ID:d/2jJoLc
MySQLをソースからインストールしようとしているのですが
下記のようなエラーが出てしまいうまくコンパイルができません。

sql_lex.cc: In function `void lex_init()':
sql_lex.cc:85: `symbols' undeclared (first use this function)
sql_lex.cc:85: (Each undeclared identifier is reported only once for each
function it appears in.)
sql_lex.cc:87: `sql_functions' undeclared (first use this function)
sql_lex.cc: In function `int find_keyword(LEX*, unsigned int, bool)':
sql_lex.cc:168: `get_hash_symbol' undeclared (first use this function)
make[2]: *** [sql_lex.o] Error 1
make[2]: Leaving directory `/opt/local/mysql-3.23.58/sql'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/local/mysql-3.23.58/sql'
make: *** [all] Error 2

環境はsoralis8(sparc)でmysql-3.23.58を使おうと思っています。
configureでオプションは何も指定していません。

何か原因がわかる人いましたら教えてください。
よろしくお願いします。
369NAME IS NULL:04/06/09 00:12 ID:???
MyISAMならバイナリーをコピーするのも手。
370363:04/06/09 01:23 ID:EWseIkt8
>365

ありがとうございます。
DB同士でも結合できるとは頭の片隅にもありませんでした。
371NAME IS NULL:04/06/09 02:05 ID:???
>>367 insert into table select ...
でいいんじゃないすか。
selectのあとに、DB名指定でTABLE書けない?
372NAME IS NULL:04/06/09 08:54 ID:???
質問です。

show variables; で、character-setsの項を見ると、

latin1 dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia
hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5

と表示されるのですが、ujis(EUC-JP)が見当たりません。
my.cnfで[mysqld][mysql][mysqldump]に
default-character-set-name=でEUC-JPをセットするにはなんと書けば良いのでしょうか?
373NAME IS NULL:04/06/09 11:13 ID:???
>>372
そのMySQLビルドしたの誰よ?どうも韓国人くさいんだが(笑
わざと日本語外してるとしか思えん。

--with-extra-charsets=complexとかall、まあ要るもんだけ列挙しても良いんだが
とにかくオプション変更して要リビルド。my.cnfで変更できるのは
configureオプションで言うと--with-charsetオプションの方。
374373:04/06/09 11:28 ID:???
御免、偏見入ってた。韓国語系は*_ukrじゃなくて、*_krだな。
どのみちマルチバイト言語の場合はビルド時に組み込んどくしかないので、
EUC-JPをセットするならリビルドしかないよ。
375372:04/06/09 11:35 ID:???
>>373
>そのMySQLビルドしたの誰よ?どうも韓国人くさいんだが(笑

自分です。_| ̄|○

MySQL 4.0.18で、以下のようにconfigureしてました。
./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data

--with-extra-charsets=complex or all でやってみます。
ありがとうございました。
376NAME IS NULL:04/06/09 12:46 ID:???
windowsXPをMySQLをインストールしてみました。

そして色々設定をし、rootのパスワードも0123と設定しました。
んで、一応OSもリブートしてから、試しにMySQLにログインしてみようとDOSで

c:\mysql> mysql -u root -p
Enter password:0123

と打ってみても

ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)

とエラーが出てしまいます。

色々ぐぐってみたりして、調べてはいるんですが解決しません。。

これはパスワードを間違えてるのでしょうか?それとも他に何か要因がありそうですか?

0123なので間違ったとは思えないんですが...
377376:04/06/09 12:49 ID:???
windowsXPをMySQLをインストールしてみました。

じゃなくて

windowsXPにMySQLをインストールしてみました。

でした。
378NAME IS NULL:04/06/09 12:55 ID:???
>>376
そのrootのパスワードはどうやって設定したの?

379376:04/06/09 13:02 ID:???
>>378

ttp://tsuttayo.sytes.net/mysql/install/win/

の1番最後に記載されている方法で設定してみました。

DOSプロンプトで

set PASS=0123
echo GRANT ALL ON *.* TO root@localhost IDENTIFIED BY '%PASS%' | mysql -uroot
echo GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '%PASS%' | mysql -uroot -p%PASS%

としました。
380NAME IS NULL:04/06/09 13:11 ID:???
>>379
先ずはパスワードがきちんと設定されているか確認しましょう。
> mysql -u root
で、
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
って返ってきますか?
返ってこないでそのままログインできる場合は、パスワードのセットに失敗しているのでしょう。

381376:04/06/09 13:17 ID:???
>>380
ありがとうございます。

試してみたところ

ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)

と返ってきました。
382NAME IS NULL:04/06/09 13:21 ID:???
>>381
ではpassword入力時に '0123' とシングルコーテーションを付けてみては?
それでだめなら私のレベルでは分かりません。ごめんなさい。
383376:04/06/09 13:23 ID:???
>>382
パスワードにシングルクォーテーションを付加してやってみましたが
やっぱり同じエラーが出てしまいます。

現状ではパスワードは設定されているが、0123ではないパスワードに
なってるって事なんでしょうか...

MySQLって奥が深いですね。
384NAME IS NULL:04/06/09 13:57 ID:???
>>383
パスワードにゴミが入ったのかもね。
とりあえずmysqldを--skip-grant-tablesオプション付きで再起動してみてmysql.userテーブル
を確認してみたら?
385376:04/06/09 14:04 ID:???
>>384
すいません具体的にどういう風にすればいいんでしょうか?
webで調べてはいるんですが、どうもunixのばかりで...
386384:04/06/09 14:14 ID:???
>>385
1. 「管理ツール」-「サービス」でサービス"MySql"を停止
2. コマンドプロンプトから"mysqld-nt.exe --skip-grant-tables"
3. 別のコマンドプロンプトを立ち上げて"mysql -uroot mysql"
4. mysql> select * from user;
とか。
387376:04/06/09 14:21 ID:???
>>386
ありがとうございます。
1〜4まで実行してみました。
でSelectの結果?がダーっと出てきました。
ただ見る限り、RootのPasswprdのフィールドには
なにやら暗号化された文字列が入っています。
388376:04/06/09 14:23 ID:???
この状態で

mysql> SET PASSWORD FOR root=PASSWORD('new_password');

を実行しちゃえばいいのかなぁ...
389384:04/06/09 14:32 ID:???
>>388
いいんじゃないの?
あとは"mysqladmin -uroot shutdown"でmysqld-nt.exeを落としてからサービスMySqlを開始
すれば新しいパスワードが有効になると思う。
390376:04/06/09 14:39 ID:???
>388のupdate文を実行しようとすると

ERROR 1132:
You must have privileges to update tables in the mysql database to be able to change password for others.

ってエラー出ました...

更新する権限ないですよ、って言われてるっぽいです。

MySQLの道は険しいですね...
391384:04/06/09 14:43 ID:???
>>390
じゃ
update user set Password = password('new_password') where Host = 'localhost' and User ='root';
ならどうよ?

> MySQLの道は険しいですね...

いや…そーゆー険しさを経験する人は少なそうな気がする。
392376:04/06/09 14:47 ID:???
ちなみに >>386 の2.なんですが

mysqld-nt.exe --skip-grant-tables
だとDOSプロンプトが固まってしまうんですが
これはこれでOKなんでしょうか?

また

mysqld -u root --skip-grant-tables

なのかな?とも思いやってみましたが

Can't start server:Bind on TCP/IP port:No error
040609 14:42:39 Do you already have another mysqld server running on port: 3306 ?
040609 14:42:39 Aborting
040609 14:42:39 mysqld: Shutdown Complete

って出ますけどこれはどうなんでしょう...気にしなくて良いんですかね..
393376:04/06/09 14:50 ID:???
ちなみにパスワードって英数字なら何でもイインデスヨネ?
394376:04/06/09 14:54 ID:???
ちなみにちなみに >>391 のupdate文で

Query OK, 1 row affected (0.06sec)
Rows matched:1 Charged:1 Warnings:0
と出ました!
なんだか更新はできたっぽい?ようでうs
395384:04/06/09 14:58 ID:???
>>376
お疲れさま。あとは>>389で。

>>392
> mysqld-nt.exe --skip-grant-tables
> だとDOSプロンプトが固まってしまうんですが
> これはこれでOKなんでしょうか?

それでOK。
フォアグラウンドで動作させるので、起動したまま(プロンプトに戻らない)で正しい。
mysqladmin -uroot shutdownとかでmysqld-nt.exeを終了させれば戻ってくる。

> Can't start server:Bind on TCP/IP port:No error
> 040609 14:42:39 Do you already have another mysqld server running on port: 3306 ?

そりゃmysqldを二重起動してる。
>>386の2.を実行している時にでるなら問題ないというか、出て当然。
396NAME IS NULL:04/06/09 15:00 ID:???
>>392
> ちなみに >>386 の2.なんですが
>
> mysqld-nt.exe --skip-grant-tables
> だとDOSプロンプトが固まってしまうんですが
> これはこれでOKなんでしょうか?
>

良いはずです。UNIXのshellでいう &(バックグラウンドで実行)
が無い状態と思えばよいかと。

これに相当するのは start コマンドで別ウインドウで実行かな。

397NAME IS NULL:04/06/09 15:12 ID:???
>set PASS=0123
>echo GRANT ALL ON *.* TO root@localhost IDENTIFIED BY '%PASS%' | mysql -uroot
>echo GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '%PASS%' | mysql -uroot -p%PASS%

まんま打ってみて、別ユーザでユーザ管理テーブル(mysql.user)確認してみたけど、
普通にmysqlの対話プロンプトで'0123'をセットしたパスワードとハッシュに違いが無かったから、
自分の環境だと上手くいってるみたいだけど?
GRANTだからFLUSH PRIVILEGESも要らんはずだし、なんやろね。
398376:04/06/09 15:14 ID:???
みなさんありがとうございます!

無事になんとかパスワードも変更でき、ログインすることができるようになりました!
そしてphpMyAdminもちゃんと起動できるようになり一安心です。

いやーしかしこれほど手ごわいとは思いませんでした、MySQL。
名前で舐めていました。

とりあえずは今からphpMyAdminから色々触ってみようと思います。

ありがとうございました。
399NAME IS NULL:04/06/09 15:17 ID:???
0(ゼロ)とO(アルファベット)の打ち間違いだったりして…
400376:04/06/09 15:23 ID:???
>>399

確かにキー位置も近いですしね...

って間違いなく 0123 って打ちましたよ〜きっと...
401NAME IS NULL:04/06/09 15:24 ID:???
全角とか?
402NAME IS NULL:04/06/09 15:26 ID:???
UPDATEする前に、PASSWORDのハッシュ値を公表させれば良かったなw
403376:04/06/09 15:32 ID:???
>>401

全角もないっすよ〜むしろ全角の方が確立低いっす!

>>402

おっと、逆変換みたいなこともできるんですか?



あの〜ちなみに...この流れでもう1つ聞いていいでしょうか?

phpMyAdminでDBとかTableとか作ろうとすると

tbl_create.php: Missing db
tbl_create.php: Missing table

とかって出てサッパリ先に進めないんですが、これはやっぱ
何か設定が悪いんでしょうか?

phpのconfigの設定はOKだと思うんですけどねえ...
404367:04/06/09 15:38 ID:mE99kQGo
>>369 >>371
insert into table select * DB.table
の方法でいけました。
サブクエリっぽいのにいけるんですね。
ありがとうございました。
405NAME IS NULL:04/06/09 15:44 ID:???
>>403
逆変換はできないが、
mysql> select password('0123');
+------------------+
| password('0123') |
+------------------+
| 19837ed42698de7e |
+------------------+
1 row in set (0.02 sec)

mysql> select password('O123');
+------------------+
| password('O123') |
+------------------+
| 5df084331cca3667 |
+------------------+
1 row in set (0.00 sec)

ってやれば確認できたね。
406NAME IS NULL:04/06/10 04:50 ID:???
ついでにMySQL4.1からのパスワードハッシュ絡みの変更
http://dev.mysql.com/doc/mysql/ja/Password_hashing.html
407NAME IS NULL:04/06/10 06:28 ID:???
ちょっと皆さんの知識をかしてくらはい。

alter table diary add number int unsigned zerofill not null default '1' primary key auto_increment first;

上記文でカラムを追加したんですが

+-------+---------------------+----+----+---------+--------------+
| Field   | Type              | Null | Key| Default    | Extra        |
+-------+---------------------+----+----+---------+--------------+
| number | int(10) unsigned zerofill  |    | PRI | NULL     | auto_increment |

なぜかDefaultがNULLになってしまいます。
データを入れると0000000001からちゃんとナンバーが入っているので動作は問題ないのですが
このDefaultは正常なのでしょうか? なんか気持ち悪いです・・・

Ver 4.0.18-max-debug
408NAME IS NULL:04/06/10 07:32 ID:???
>>407
auto_incrementなカラムにdefault値を設定しても意味ないんじゃ?
409NAME IS NULL:04/06/10 08:04 ID:???
>>407
>>408の言うとおり、auto_incrementをつけたカラムにはdefaultは指定できない。
auto_incrementの初期値を設定したいなら、create tableのテーブルオプションで指定する。
http://dev.mysql.com/doc/mysql/ja/CREATE_TABLE.html
410NAME IS NULL:04/06/10 09:53 ID:???
それもあるけど
>default '1'
intだからクウォートいらないんじゃない?
411NAME IS NULL:04/06/10 11:26 ID:???
>>410
ALTER TABLEだから俺も要らんと思うし、そういうとこには付けてないけど、
「intだからクウォートいらない」かというと付けた方が良い場合もある。
http://dev.mysql.com/doc/mysql/ja/General_security.html
# 傍目には「SQL判ってねぇな」と思われることもあるので注意。
412NAME IS NULL:04/06/10 11:59 ID:???
>410
俺はintでもつけるぞ
413NAME IS NULL:04/06/10 12:06 ID:???
 わしもクオーテーションはつけてるけど、そう言う見られ方するのか(微苦笑
 他人からどう見られようと、肝心のデータベースに問題がなければよいのだけど、ちと辛亥革命。
414NAME IS NULL:04/06/10 12:40 ID:???
>ちと辛亥革命。

これは酷いと思った。
415NAME IS NULL:04/06/10 13:10 ID:???
クォートつけるとうまく動かないこと無い?
以前、intに'1'とかつけたらエラーぶっこいたことがあって
あれはもしかしたら夢だったのかもしれないけど
それ以来数字は囲まないようにしてる
416NAME IS NULL:04/06/10 14:06 ID:W0rXvnK+
初歩的質問ですが、サーバーとクライアントの間が
SSLで接続してるかどうか知る方法ってあるんでしょうか。

SSLの設定して--sslで接続したんですが、ほんとにSSLでつながってるか
どうかわからないので。
417NAME IS NULL:04/06/10 14:20 ID:???
>>416
mysql で接続しているなら、プロンプトで \s と打てば接続状態などがわかる。
418NAME IS NULL:04/06/10 15:54 ID:W0rXvnK+
>> 417
どうもありがとうございます。
4.1.1を使っているのですが、--sslをつけてもつけなくても
statusでは
SSL : Cipher in use is EDH-RSA-DES-CBC3-SHA
などと出ます。
/etc/my.cnfの[client]からssl-関連をコメントアウトすると、
statusは
SSL: Not in use
になります。
つまり、--sslが効いているように見えないのです。

どういうことなんでしょうね。
419NAME IS NULL:04/06/10 17:48 ID:???
>>418
もっと単純に「Port3306をキャプチャリング汁」簡単確実。

#いや。MySQLでちゃんとチェックする方法もあるとは思うよ。
420NAME IS NULL:04/06/10 18:37 ID:W0rXvnK+
>>419
tcpdumpとgdd、どっちも使ってみましたが、
--sslのありなしに関わらず、どっちもバイナリのような感じでした。
mysqlとmysqld間の独自プロトコルなのかSSLなのか区別できないです。

ネットワークに詳しくないので困りました。
421NAME IS NULL:04/06/11 15:05 ID:nZaKDPd6
winXP+MySQLの3.23.34です。
操作にはGUIのMySQL-Front2.5を使ってます。

GRANT Select, Insert, Update, Delete, Index, Alter, Create, Drop, References ON TEST_DB.* TO 'test'@'%'

とやっても、この「testさん」は、新たなDBを作成出来てしまいます。。。
指定したDBだけ使用許可を与えて、DB作成&削除を禁ずるには
どうやってGRANTすれば良いのでしょうか?オナガイシマスm(_ _)m
422NAME IS NULL:04/06/11 16:04 ID:???
>>421
手元のXP Pro + MySQL 3.23.58ではちゃんとデータベース作成を禁止できるよ。
デフォルトでは任意のユーザが"test_"で始まるデータベースを自由に作成できるように
なってるんで、それのせいで作成を禁止できないように見えてるだけじゃない?
delete from mysql.db where User = '';
flush privileges;
とかしてからもう一度試してみて。

あと、Windows環境ではファイル名の大小文字を同一視する関係でアクセスできない
場合があるので、データベース名は小文字にしておいた方がいいと思う。
>>421の例だと、実際に作成されるデータベースは"test_db"なのにmysql.dbには"TEST_DB"
で記録されるので、照合に失敗してアクセス拒否される可能性がある。
423421:04/06/11 16:40 ID:???
>422

出来ました。ありがとうございます!
「abcdef」など適当な名前にしたら作成出来ませんでした!

確かに、テストしていたDB名が「test」から始まるものだけでした。
mysql.db を見て、Dbフィールドが「test%」のレコードを削除したら
「test」から始まるDB作成もきちんと出来なくなりました。

あと、大小文字の件、ありがとうございます。
以前、動作せず悩みまくったあげくに偶然治った事象があって、
そのまま忘れていたのですが、今調べて見たらこの大小文字の
現象でした。(PHP文内のDB名を大文字に変えたら再現しました)
大変勉強になりました。ありがとうございます!
424NAME IS NULL:04/06/11 16:53 ID:???
>>421
まずは、
mysql> SELECT User, Host, Create_priv from mysql.user where User='test';
した結果を晒してみそ。

あとGRANTは権限を「追加する」んであって、権限をそれに設定するわけじゃないよ。
つまり今YNNYNとかなってる権限に_Y_Y_("_"はGRANTで指定しなかったpriv)とGRANTで指定すると
権限はYYNYNと積算された値。指定しなかった権限を無くしたいのならREVOKEで意識的に剥奪する。
GRANTはYか_は指定できるがNは出来ない。REVOKEはその逆と覚えておく。
425NAME IS NULL:04/06/11 16:55 ID:???
レンタルサーバ等、容量の割り当て制限のある環境で
MySQLを使用する際に、制限容量に近づいてきたら
過去のデータを削除する等を、スクリプトで行いたいのですが、
自分の使用しているデータベースの容量もしくは
特定のテーブルのデータサイズを取得するにはどの様な方法が
ありますでしょうか?


426NAME IS NULL:04/06/11 17:08 ID:???
解決したんやね。
Windowsの場合はPerlを入れてない場合が多いから、いつでも使えるってワケではないけど
$ mysqlaccess localhost test '*' -U root -P rootpass
って感じで確認ユーティリティを使うと権限の状態が一挙に調べられるよ。
そうでないとmysql.user/db/hostと権限を積算していかないと駄目だから面倒。
427NAME IS NULL:04/06/11 18:26 ID:???
>>425
show table status;
428421:04/06/11 21:01 ID:???
>424
> GRANTはYか_は指定できるがNは出来ない。REVOKEはその逆と覚えておく。
非常に覚え易いアドバイス感謝します!おかげでGRANTの理解が深まりました。

>426
はい。Perlは入ってないのですが、mysqlaccess でググったら分かりました。
そうですね。権限を一目で確認できるユーティリティはいいですね。
PHPでは無さそうなので、ちょっとPerlでも入れることも検討してみます!
429NAME IS NULL:04/06/13 03:36 ID:???
navicat使ってる人いる?
今触ってみたらかなり良さげ。値段もまあまあだし、買っちゃおうかな。
430NAME IS NULL:04/06/13 07:12 ID:ctnw6o5E
>>429
トライアル版もあるので、十分試用してから買ってけろ。
Windows版、Mac版の他にLinux版も出ますた。
431NAME IS NULL:04/06/14 22:05 ID:iQeeg+UC
すいません、ちょっと教えてください。
MySQLにて文字列を大文字・小文字区別なしに検索したい場合は
どのようにすればよいのでしょうか?
例 チャンネル って言う文字をヒットさせたい場合
検索文字はチヤンネルでもチャンネルでもいけるような。。
432NAME IS NULL:04/06/14 23:48 ID:???
>>431
正規表現使って、自分でそうしないことには駄目なんじゃないかな。
MySQL は、英数字の大文字小文字は知っていても、日本語の大文字小文字は知らないでしょ。

っていうか、無学な私のために、そんなこと出来るデータベースがあったら、紹介してください。
433NAME IS NULL:04/06/15 00:13 ID:???
データベース言語は初めてでmysqlを使い始めて間もない者なんですが
よろしければお力添えお願いします。
mysql-4.1.2-alpha-winを自鯖にて使用しています。

create table tyouka (
id MEDIUMINT(8) UNSIGNED DEFAULT '0' NOT NULL AUTO_INCREMENT,
name VARCHAR(50),
place VARCHAR(50) UNSIGNED DEFAULT '0' NOT NULL,
amount MEDIUMINT(10) UNSIGNED DEFAULT '0' NOT NULL,
time TIMESTAMP,
PRIMARY KEY (id)
);

のようなDBを作り、釣りの釣果データを入れていきたいのですが
insert時に既にnameとplaceが重複しているレコードがあればそれを更新という形にしたいのです。

id name place amount time
1 メバル 東京湾 5 20040614

というレコードが既にあるときに
メバル 東京湾 10 20040614
のようなデータを新たにinsertしようとすると、id=1を更新のようにしたいのです。

sqlpowerpageのfaqリストの重複についてのとろこを参考にしようとしたのですが
一意の重複(ってのかな・・?)については書かれてあったのですが
なかなか参考にできませんでした。

色々検索しているうちにdistinctを使えばできそうだと思ったのですが
まだどういうように構文を書けばよいのかがかわりません。
どうかよろしくお願いします。
434NAME IS NULL:04/06/15 01:29 ID:???
>>432
MSのやつは同一視したような記憶がある。記憶違いかもしれないけど。
435NAME IS NULL:04/06/15 01:31 ID:???
>>433
VARCHARなのにUNSIGNEDなのは気持ち悪いな。。

それはそれとして、
unique (name, place)とかしてみては?

で、MySQLならreplace intoかな。

436NAME IS NULL:04/06/15 04:51 ID:???
>>434
俺もそんな記憶がある。アルファベットとカタカナの場合。
それとカタカナをひらがなとは同一視はしない。
もしかしてそっちも設定があったりして
437433:04/06/15 09:34 ID:???
ありがとうございます。
早速調べてみます。
438NAME IS NULL:04/06/15 11:13 ID:afn3UwUY
long_query_timeに1秒以下の数値を設定することは出来ますか?

0.5秒以上かかっているようなものも調べて最適化を計っていこうと思っているのですが。
439NAME IS NULL:04/06/15 11:45 ID:???
単位は秒だから0.5は設定できない。
440NAME IS NULL:04/06/15 20:32 ID:???
>>436
MSSQL2000なら、インストール時にいろいろと設定できたはず。
441NAME IS NULL:04/06/15 21:37 ID:???
ちょっと他のDBからの移行を考えているんですが、
サイトで検索しても分からないことがあるので、
もしよかったら教えてください。

今使ってるDBでは、レコード挿入はまずStoredProcedureで
行って、挿入したレコードの自動インクリメントされるID
(primarykeyに指定したフィールド)の値がすぐ分かるんですが、
MySQLでは、この挿入したレコードのIDはどのようにして
取得するんでしょうか?

質問の説明の仕方がまずくてすみません。
442NAME IS NULL:04/06/15 22:09 ID:???
自動インクリメントされるフィールドを作れば?
443NAME IS NULL:04/06/15 22:52 ID:???
444NAME IS NULL:04/06/15 23:33 ID:???
>>443
ああ、ありがとうございます。まだ、関数までは見てなくて助かりました。

mysql_insert_id()の説明で、「前回実行されたクエリで生成した
AUTO_INCREMENT カラムの ID を返します。」とありますから、
これで自分が発行したクエリからのIDが得られるんですよね。
ちょっと詳しく見ています。
445NAME IS NULL:04/06/16 00:46 ID:DkMfux1J
コマンドプロンプトからのmysqlへのアクセスについて教えてください。
windows2000にmysqlを入れてます。
文字コードは
Client characterset: ujis
Server characterset: ujis
となっています。
コマンドプロンプトからMYSQLに繋ぐと文字化けてしまいます。
どのようにすれば良いのでしょう?ヒントでもいいので教えてください。
よろしくお願いします。
446NAME IS NULL:04/06/16 00:55 ID:???
447445:04/06/16 01:46 ID:???
>>446
こんな物があったとは・・・。
検索が足りなかったみたいです。すいません。
どうもありがとうございました。
448441:04/06/16 04:08 ID:???
MySQLのAPIマニュアルをちょっと覗いてみましたが、
APIを直接操作するのはSQLを使うようにはいかない
みたいですね。

で、反則技で、一意のデータを挿入時に含めて、
それを検索してIDを取得しようかな などと考えてます。
449441:04/06/16 04:32 ID:???
ここに例がありました。
これで安心して寝れそうです。

ttp://dev.mysql.com/doc/mysql/ja/Getting_unique_ID.html

というのも、MySQL._insert_id()関数の意味を誤解していたみたいです。
「最後に生成された ID は、接続ごとにサーバに保持されます。
他の接続を使用するクライアントによって変更されることはありません。」
という文章で納得いきました。
450NAME IS NULL:04/06/16 19:08 ID:P8LtXr5E
selectのwhereのinに50個ほどの値を入れて検索をすると異様に遅い(といっても1〜2秒ぐらい)のですが、速くする方法はありますでしょうか?
インデックスを使用してはいるのですがあまり速くなりません。
451NAME IS NULL:04/06/16 19:14 ID:???
>>450
50個→2,3個に減らす
最低でも20倍近く速くなる
452NAME IS NULL:04/06/16 19:25 ID:P8LtXr5E
>>451
2,3個に減らすと50÷2 で25回繰り返すことになります。
一応試したのですが、totalでさらに遅くなりました。
453NAME IS NULL:04/06/16 19:39 ID:???
その50個を別テーブルに入れて、テーブルとして
where句で結合するのは?
もちろんそのテーブルにもインデックスを付けて。
454NAME IS NULL:04/06/16 23:56 ID:???
EXPLAINの結果は?
455NAME IS NULL:04/06/17 00:53 ID:???
てゆっか、in (2,3個) ×25が1〜2秒かかるって
MySQLでありうるのか?
index入ってれば0.00秒以外帰ってこないぞ。
なんか間違ってるとしか思えない。
456NAME IS NULL:04/06/17 02:11 ID:???
このスレで出るこの手の質問はたいがい
「モデリングで間違ってる」
457NAME IS NULL:04/06/17 02:50 ID:???
>>456
禿しく同意
458NAME IS NULL:04/06/17 02:55 ID:???
【質問】
MySQL サービスを開始したいのですが、
サービス開始直後(1〜3秒後)に落ちてしまいます。
エラーメッセージも表示されないため対処方法がわかりません。

【環境】
Windows2000 SP4
mysqld-nt Ver 4.0.20a-nt for NT on i32 (Source distribution)

【試したこと】
my.* を検索して全て削除。
その後、再インストールを行い、
libmysql.dll を c:/winnt/system32 にコピー。
winmysqladmin.exe から、 my.ini を編集。
 [mysqld]
 basedir=F:/usr/bin/mysql
 datadir=F:/usr/bin/mysql
 
 [WinMySQLAdmin]
 Server=F:/usr/bin/mysql/bin/mysqld-nt.exe
下記コマンド実行
 InstallDir/bin/mysqld-nt --install MySQL
  ・・・OK
 net start MySQL
  MySQL サービスを開始します.
  MySQL サービスは正常に開始されました。
  ・・・その後、サービス停止。

以上

よろしくお願いします。
459458:04/06/17 03:01 ID:???
ごめんごめん。
 datadir=F:/usr/bin/mysql

 datadir=F:/usr/bin/mysql/data
になおしたら動いたわ。

ほんにすんません。
460NAME IS NULL:04/06/17 09:09 ID:???
>>456
ちょっとよくわからないんだけど
「モデリング」っていうのを
具体的に表現してくれないか?
461410:04/06/17 09:44 ID:???
>>458
>my.*

My Documentが消えていないか禿しく心配w
462NAME IS NULL:04/06/17 10:45 ID:6MhcFhtL
>>453-457
回答有り難うございます。
explainの結果は"possible_keys"にインデックス名が出ていますのでインデックス
が使用されている。と思っていたのですがkeyがNULLになっていました。

単純にwhereではinだけにしてそのフィールドだけのインデックスを作って
みたのですがこのような状況です。
463NAME IS NULL:04/06/17 10:54 ID:6MhcFhtL
↑ごめんなさい。解決しました。
スピードを見たいだけだったので、select * と楽してたのが原因でした。
フィールドを1つだけにしてしたら0.06secになりました。
失礼しました(>_<)
464NAME IS NULL:04/06/17 20:14 ID:???
>>460
DB設計
465460:04/06/17 22:39 ID:???
>>464
(゚∀゚)サンクスコ
466NAME IS NULL:04/06/21 01:24 ID:caWWI/cC
すみません、Mysqlについて1つ質問させてください。
1dbあたりの限界テーブル数ってありますか?
この数を越えると重くなってくるみたいな。
467NAME IS NULL:04/06/21 22:10 ID:gc1CC/Wn
TIMESTAMP型で 2004:06:20 00:00:00.000000

みたいな状態で年、月、日だけでselectしたいのですがどうすればいいでしょうか?


468NAME IS NULL:04/06/22 01:01 ID:???
>>466
自分で簡単なスクリプトでも作って、ベンチマークしてみる。
それが一番確実。

ソフト的な制限よりも、ハード的な制限のほうが多いから。
469NAME IS NULL:04/06/22 01:03 ID:???
>>467
http://dev.mysql.com/doc/mysql/ja/Date_and_time_functions.html
から、使えそうな関数を探し出すとよろし。
470NAME IS NULL:04/06/22 14:14 ID:???
すいません。初心者な質問です。
テーブルのロックで

LOCK TABLES テーブルA WRITE

を発行した場合テーブルAのみにロックがかかりますよね?
このテーブルAロック中に同じマシンからテーブルBへの
SELECT文を発行するとロック待ち状態のようになるのですが。
ロックの仕方が間違っているのでしょうか?
471NAME IS NULL:04/06/22 14:15 ID:???
>>470
同じマシンでもコネクションが違えば別
472NAME IS NULL:04/06/23 04:37 ID:???
MySQL4.0.xのMySQL C APIだとプリペアドステートメントは実装されてないみたいだけど
MyODBC使えば実装されてるよね?WHERE句だけが変化するステートメントを大量に発行する場合は
MySQL C APIで繋ぐよりODBC使った方が高速?
それとも結局ODBCドライバの実装ではプリペアドステートメント使われずにクエリ発行されてるのかな?

教えてエロイ人
473NAME IS NULL:04/06/23 18:05 ID:???
>>472
MySQL4.0.xにはPreparedはない。4.1.x系からある。
ODBCは4.1に対応しているものはまだなかったはず。

ところでCのAPIについてだけど、そんなに速くなかったはず。
MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);
なんか見ればわかるけど、intであっても一旦文字列に変換する。
そのオーバーヘッドが馬鹿にならない場合もある。
現在のODBCも同様。

これがJDBCならバイナリでやりとりしているから速い。
474472:04/06/23 19:19 ID:???
>>473
っちゅーことは現状4.0.xだとJDBC使うのが一番早いんだ・・・
勉強になったよ。thxエロイ人!
475NAME IS NULL:04/06/23 19:57 ID:???
>>474
一番速いのは直接叩くことだが、まあこれは例外かな。
476NAME IS NULL:04/06/23 22:22 ID:???
>>475
そうそう。ディスプレイをがんがんとね。
477NAME IS NULL:04/06/24 08:02 ID:???
右斜め45度からってか w
478NAME IS NULL:04/06/24 22:27 ID:???
InnoDBってなんて発音すればいいんですか
479NAME IS NULL:04/06/24 23:07 ID:???
イノデブ
480NAME IS NULL:04/06/24 23:58 ID:???
いぃのぉでぃびー
481NAME IS NULL:04/06/25 01:13 ID:???
MySQL4.0で日本語をあつかった場合、コードは何になるんですか?
482NAME IS NULL:04/06/25 01:37 ID:???
Shift-JISかEUC
483NAME IS NULL:04/06/25 01:49 ID:???
>>481
EUC-JP、SJIS、LatinでBASE64等、Binary
484NAME IS NULL:04/06/25 12:39 ID:eiZA0FuB
10万件ほどのmediumtextデータをlikeなどで検索する場合に何秒も時間が
かかってしまいます。
自作のインデックステーブルのロジックを考えて複数のテーブルを利用して
このmediumtextを分割してスピードを早くさせたいのですが、どのような
ロジックにして良いかが難しいです。

なにか参考になるページ、本などないでしょうか?
485NAME IS NULL:04/06/25 13:03 ID:foI4VTl/
 
486NAME IS NULL:04/06/25 14:16 ID:???
FullText Search
487NAME IS NULL:04/06/25 17:18 ID:???
文字列関数に、Perl や ruby とかで言うところの tr が欲しいんだけど、無いもんかね?

tr('hogehoge', 'oe', 'ia') => 'higahiga' ってな感じの。
488NAME IS NULL:04/06/25 17:28 ID:akYlt9mw
replace
489NAME IS NULL:04/06/25 22:40 ID:???
>>488
replace('hogehoge', 'oe', 'ia') => 'higahiga' にはならんでしょ。
490NAME IS NULL:04/06/26 01:08 ID:???
なんでもSQLでやればいいってもんじゃないっしょ。
491NAME IS NULL:04/06/26 02:28 ID:???
492NAME IS NULL:04/06/26 12:02 ID:???
InnoDBってなんて発音すればいいんですか
493NAME IS NULL:04/06/26 14:59 ID:???
>>492
答え既にでてる
494NAME IS NULL:04/06/26 16:25 ID:???
陰毛ディービー
495NAME IS NULL:04/06/26 16:42 ID:???
3.2を使ってるんですが
日付指定でレコードを取り出すにはどうしたらいいんでしょうか?

datetime型(2004-3-12 15:03:22とか)
で保存されているレコードがあって、
2004/3/1〜2004/5/1間での
レコードを取り出したいんです。
よろしくお願いします。
496NAME IS NULL:04/06/26 22:54 ID:???
>>495
where datetime >= '20040301' and datetime < '20040502'

6.3.1.2 比較演算子
http://dev.mysql.com/doc/mysql/ja/Comparison_Operators.html
引数のどちらかが TIMESTAMP または DATETIME 型のカラムで、
もう一方が定数の場合、定数は比較の実行前にタイムスタンプに変換される。
これは ODBC との互換性を確保するために行われる。

6.2.2.2 DATETIME、DATE、TIMESTAMP 型
http://dev.mysql.com/doc/mysql/ja/DATETIME.html
DATE 型の値を DATETIME または TIMESTAMP 型のオブジェクトに割り当てた場合、
値に時刻情報が含まれていないため、結果の値の時刻部分は '00:00:00' に設定される。
497NAME IS NULL:04/06/26 22:56 ID:???
あ、しまった。マジレスしてしまった。
1行目にツッコミを入れるべきだったのに。

なんていう不覚だ。俺としたことが。
498NAME IS NULL:04/06/27 00:03 ID:rsNkX4qP
質問させてください。

ORDER BY ASCで並び替えると

aaa10
aaa11
aaa12
aaa2
aaa3
aaa4

になってしまうんですが、これを

aaa2
aaa3
aaa4
aaa10
aaa11
aaa12

にしたいのですが、SQLだけで並び替えは可能ですか?
499NAME IS NULL:04/06/27 01:39 ID:???
不可能ではない。遅くなるからお奨めはしないけど。
500NAME IS NULL:04/06/27 09:13 ID:???
それならそれようの項目を1つ用意しておく事だね。
501498:04/06/27 17:12 ID:rsNkX4qP
>499
ありがとうございます。
「お勧めはしない」ということであれば、結構なコストがかかるということですね。

>500
ありがとうございます。
新規に何かしらソート用のレコードを追加する必要があるんですね。

DBから読み出してさらにスクリプトでソートして・・・って
効率悪いような気がしていたんですが、いままでどおり
読み出したスクリプト側で対処したいと思います。
502NAME IS NULL:04/06/27 18:16 ID:???
その前に数値に0足して桁をそろえるとか、
データ自体を弄る方向にはならないのか?
503NAME IS NULL:04/06/28 05:31 ID:???
どうか、お力添えお願いします。
mysql-4.1.2をwindows2000で自鯖にて使い始めたものなのですが
localhost以外のホスト(ネット回線越しに)からの接続ができずに困っています。

データベースはtestを使っていて権限は以下のようなものになっております。
mysql> select * from db;
+------+---------+------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-----------------------+------------------+
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Create_tmp_table_priv | Lock_tables_priv |
+------+---------+------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-----------------------+------------------+
| % | test | | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y |
| % | test\_% | | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y |
+------+---------+------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-----------------------+------------------+

testデータベースならホスト、ユーザー関係なくアクセスできると言うことだと思っているのですが・・
localhostからなら問題なく接続できます。

接続にはperlのcgiを書いて、DBIを使っています。
ポートはデフォルトの3306でルーターのポートも空けています。
今までもHTTP鯖やFTP鯖などいろんなポートを空けてきたのでルーターの設定ミス
と言うこともないような気がします。

実際のperlでの使い方は
use dbi;
$sql{'user'} = 'root';
$sql{'passwd'} = '';
$sql{'host'} = 'プロバホスト名、ip直打ち、DNS名などいろいろやりました。';
$sql{'database'} = 'test';
$sql{'driver'} = 'mysql';
$sql{'table'} = 'testTable';

$db = DBI->connect("DBI:$sql{'driver'}:$sql{'database'}:$sql{'host'}", $sql{'user'}, $sql{'passwd'});
#データ抽出構文
print"SQLresalt:$resaltprice\n";
$db->disconnect;

という感じです。
エラーメッセージは
DBI connect('test:「$sql{'host'}の値」:3306','root',...) failed: Host 'ホスト名' is not allowed to connect to this MySQL server at mana
gement.cgi line 312
Can't call method "selectrow_array" on an undefined value at management.cgi line
313.

何かお気づきの点ありましたらご指摘ください。
よろしくお願いします。
504NAME IS NULL:04/06/28 05:42 ID:RRETUxiQ
質問おねがいします

レンタルサーバー上のphpMyadminでDBしてます。
phpMyadminは大変便利なのですが、毎回毎回
ブラウザ上で一件、一件、データを入力していく作業に
萎えてしまいました。。

そこで、CSV(エクセルで作ったやつ)を
phpMyadminに取り込めないか(インポートできないか)
と思い質問させて頂きました。

phpMyadminはテキストファイルならばインポートできるので
CSVで作ったデータを Insert 文に変換してくれるような
ツールでもあれば・・・・と。。

知ってる方お願いします。
505NAME IS NULL:04/06/28 05:58 ID:???
>>503
先ずリモートの端末からPort3306を叩いて、MySQLの応答をチェックする。
バージョン等が返される筈だ。WindowsのMySQLの場合、特に名前付きパイプ
(Unixでいうソケット)を使うように設定しない限り、デフォルトでは
localhost(ループバック/127.0.0.1)の接続にもPortが使用される。
OSや防火壁の設定でループバックアドレス以外からのPort3306を塞いでいないか、
MySQLの設定でskip-networkingが設定されていないか、確認。

話はそれからだ。
506NAME IS NULL:04/06/28 06:07 ID:???
>>504
phpMyAdminにCSVの取り込みって機能ないか?あるような気がするけど。
無ければ、SQL文の LOAD DATA INFILE 構文を使う。
http://dev.mysql.com/doc/mysql/ja/LOAD_DATA.html
但しLOCALファイルの読み取りは、
http://dev.mysql.com/doc/mysql/ja/LOAD_DATA_LOCAL.html
により抑制されている可能性はある。
507NAME IS NULL:04/06/28 07:49 ID:crpwbbus
すいません教えてください。
ブラウザから取得した2004/06/28をdate型(多分2004-06-28かな?)でMysqlにぶちこむのは
どうすればいいですか?よろしくおねがいします。
508NAME IS NULL:04/06/28 08:21 ID:???
>>507
あなたが考えうる「こうなら出来る可能性」をいくつか列挙せよ。
そうすれば、あなたに最適な解が見つかるかも知れぬ。



要するに、あまりにも初心者な質問なんで、あなたのレベルを疑ってるわけですな。
509507:04/06/28 09:04 ID:crpwbbus
>>508

strftime(YYYY-MM-DD, date())
でエラーがでましたけど?
510NAME IS NULL:04/06/28 09:51 ID:???
>>509
なるほど、そんな風に試していたとは、面白いですな。

strftime() なんてものは、MySQLにはありません。
また、date() は、使い方が間違っています(それに、MySQLのバージョンにも気をつけてください)。

http://dev.mysql.com/doc/mysql/ja/Date_and_time_functions.html
でもよく読んで、どうやればいいか、考えてみてくださいな。
511NAME IS NULL:04/06/28 13:53 ID:???
>>507
「ブラウザから取得した2004/06/28」の処理は一体どうしてる?
そもそもブラウザから何の日付をどうやって取得してるの。
512507:04/06/28 14:50 ID:kEtBHY01
けっきょくPHPのCurdate関数つかって解決したわ。
なんでもかんでもMysqlでやりゃあいいってもんじゃないな。
513503:04/06/28 16:00 ID:???
>>505
レスありがとうございます。
ポートを叩いて応答をチェックすると言う方法が見つからなかったので
ttp://www.cman.jp/network/support/port.html
を利用させてもらいました。

アクセスできました。
応答時間は 0.088秒 でした。

というメッセージがでました。バージョン等については確認できておりません。
火壁関係は現在は切っています。尚、同じ鯖機でHTTPサーバーは問題なく動いております。

>>MySQLの設定でskip-networkingが設定されていないか、確認。
とのことでmy.confというファイルに設定されているとかかれてあったのですが
私のCドライブ全体を検索してもmy.confがでてこず、my.iniならあります。
my.iniの内容

[WinMySQLAdmin]
Server=C:/mysql/bin/mysqld-nt.exe
port=3306 #これは私が付け足したものです。

この三行のみとなっております。
また、これはmysqladmin1.4のErr File項目の一部抜粋なのですが

040628 3:31:15 Aborted connection 3 to db: 'test' user: 'root' host: `localhost' (Got an error reading communication packets)
Version: '4.1.2-alpha-debug' socket: '' port: 3306
mysqld: ready for connections.
040625 18:50:09 Aborted connection 14 to db: 'mysql' user: 'root' host: `localhost' (Got an error reading communication packets)

このようになっております。
514504:04/06/28 16:47 ID:UbppIuJA
>>506

回答有難う御座います。phpMyadminの SQL をクリックして
コマンド入力からやってみましたが、以下のエラーメッセージが出ました。

実行されたSQLクエリー :

LOAD DATA INFILE "data.csv" INTO TABLE 2ch;

MySQLのメッセージ -->


#1045 - Access denied for user: '2ch@localhost' (Using password: YES)


レンタルサーバーではload date infile を使えない場合があると聞きました。

ただ、phpMyadminで一件一件入力したDBを「完全なINSERT文の作成」
にチェックを入れてローカル側にエクスポートして、そのファイルの拡張子を
txtに変更し、「SQL」の中にある、OR テキストファイルの場所 :
という所に入れ込み、実行するとインポートできました。

,3,3,3,3,3,3,3, というようなCSV形式を INSERT文に変更して吐き出せれば
変更できるという事なのでしょうか・・・・

それとも、エクセルなどで作ったCSVをインポートする事は不可能なのでしょうか。
515NAME IS NULL:04/06/28 17:33 ID:sAJgIRh0
create viewが使用できないんですけど。
クエリを作れる方法ってないんですか?
516NAME IS NULL:04/06/28 23:24 ID:???
>>514
そこで出ているのは件の構文以前の問題。
MySQLユーザ及びデータベース/テーブルの指定が間違っているので権限エラーとなっている。

>レンタルサーバーではload date infile を使えない場合があると聞きました。
示したリンク先を注意深く読んでくれ。
|LOAD DATA LOCAL INFILE がサーバまたはクライアントで無効になっている場合、
|次のエラーメッセージ(1148)が表示されます。
|The used command is not allowed with this MySQL version

# さくっとPHPかなんかで自前でCSV→SQL作るのも
# 手馴れた人ならそっちの方が簡単かもね。
517NAME IS NULL:04/06/28 23:32 ID:???
VIEWは5.0だっけ?
http://dev.mysql.com/doc/mysql/ja/ANSI_diff_Views.html

あるいはMaxDBを使うとか。
518NAME IS NULL:04/06/28 23:33 ID:???
補足すると「load date infile」をSELECT文などのように
(権限データベース上で)ピンポイントで使用を抑制することはできない。
# 指定した特定のSQL文のみを使えなくするような仕組みが用意されていない。
519NAME IS NULL:04/06/29 00:16 ID:???
>>513
「ポートを叩いて応答をチェック」というのは言葉が足りなかったが
「telnetを使ってチェックする」だ。ポートスキャンではスキャンの仕組み(やり方)
にもよるが、ポートの開きしかチェックできない。telnetでのチェックはポートが
開いているか、そのポートでMySQLが待ち受けてるかのチェックを行うことができる。
横着せずに、telnetの使い方を調べてチェックすること。
(telnetはデフォルトの場合はport23を使用するので注意)

勿論一足飛びに、リモートの端末にMySQLのクライアントツールをインストールして
「mysqladmin -uMySQL管理者ユーザ -p管理者ユーザのパスワード -hリモートのMySQLサーバのアドレス -P3306 ping」
というのでも良い。この場合は指定したMySQLユーザのサーバへのリモートアクセス権限もチェックできる。

>また、これはmysqladmin1.4のErr File項目の一部抜粋なのですが
エラーログを見た感じでは
・Port3306でMySQLはちゃんと待ち受けている。
・原因はリモート関係の権限テーブル絡みではない。
・同様の環境用意して要調査な内容かな…
な感じがします。出来るならば別のバージョンのMySQLに入れ直して試してみてください。

----
ここからはリモートアクセスには関係ないことだが、一応指摘。
・Windowsの場合はMySQLの設定ファイル名がmy.iniとWindowsスタイルになっているので、それでOK。
・[WinMySQLAdmin]セクションに指定したものはWinMySQLAdminにしか使用されないオプションの設定となる。
(付け足したport=3306はデフォルトの指定と一緒なので悪さもしないが)
・skip-networkingはMySQLサーバのオプションなので、記述されるとしたら[mysqld]セクションとなる。
520504:04/06/29 01:03 ID:mrjcTom/
>>516

回答ありがとうございます。
何度やっても、#1045エラーが出るので、下記のようなphp作って
強引にinsert文を吐き出させて、それをphpMyadminで読み込ませるように
しました・・・・。これだと・・・・後々大変そうですが・・・・。

<?
if(!($MyFile = fopen("hotel.csv", "r")))
{
print("hotel.csvが開けませんでした。");
exit;
}

while(!feof($MyFile))
{
$MyLine = fgetcsv($MyFile, 4096);

if($MyLine[0])
{
print("INSERT INTO `テーブル名` (`項目1`, `項目2`) VALUES ('" . $MyLine[0] . "', '" . $MyLine[1] . "', '" . $MyLine[2] . "');<br>");
}
}
fclose($MyFile);
?>
521NAME IS NULL:04/06/29 01:22 ID:???
>>523
Error: 1045 SQLSTATE: 28000 (ER_ACCESS_DENIED_ERROR) Message: Access denied for user '%s''%s' (using password: %s)
(http://dev.mysql.com/doc/mysql/en/Error-handling.html)

権限がないんじゃないのか、そのエラー。
522NAME IS NULL:04/06/29 01:27 ID:P6e1faJ/
恋を語らず何を語る?という世の中ですが、
このコピペを必ず5つのスレに書き込んでください。
あなたの好きな人に10日以内に告白されます
嘘だと思うんなら無視してください。
ちなみにあなたの運勢が良かったら5日以内に告白&告白したらOKされます
523NAME IS NULL:04/06/29 01:48 ID:???
>>520
excelの出力するcsvは文字コードがSJISだけど、
phpMyAdminで読み込む際にはちゃんと考慮されてるんかな?

あとタイムリーにPHP-users MLでこんな話も。
http://ns1.php.gr.jp/pipermail/php-users/2004-June/022893.html
スレッドでは2つの話が交錯して判り辛い(スレッドの大元の原因が別の理由のため)が、
関係あるのは最近のPHPでは「fgetcsv()がバックスラッシュが含まれると
無条件にエスケープする」という部分。
http://ns1.php.gr.jp/pipermail/php-users/2004-June/022895.html
の様に自分でfgetcsv相当を処理した方が安全。
524poosan:04/06/29 01:52 ID:xCqzAJ9b
なんと、40GB ノート 安い!

40GB ノートで、時代先取り!

ここです!
http://page2.auctions.yahoo.co.jp/jp/auction/b52847380

明日から余裕の笑顔で、40GB ノート ルンルン♪



525503:04/06/29 12:35 ID:???
>>519
度々細かな助言ありがとうございます。
これからできるところから取り組んでいきます。
また報告いたします。
>>521
私のことでしょうか?
一応503にエラーメッセージは書かせていただいたのですが
failed: Host 'ホスト名' is not allowed to connect to this MySQL server
みたいなことになっております。
mysql側のエラーではもしかしたらAccess denied になってるかもしれないと
言うことでしょか?
リンクいただいたエラーリストについても調べさせていただきます。
ありがとうございます。
526NAME IS NULL:04/06/29 14:38 ID:???
>>525
多分>>521>>514 に対する書き込み
527NAME IS NULL:04/06/29 22:38 ID:xxmnIlfK
フリーのDBっていろいろあるけど、
検索パフォーマンスに優れたといわれる、Mysqlと他のDBMSを比較された
サイトなどありましたらご紹介ください。
528NAME IS NULL:04/06/30 00:13 ID:???
529NAME IS NULL:04/06/30 01:33 ID:sgp6vFc9
MySQL4.0の文字列(varchar)って、デフォルトでは文字コードに何を使ってるのですか?
文字列はPHP4でINSERTしてて、PHPのHTML自体はShift-JISで出力してます。
一応Shift-JISのHTMLで文字化けせずに表示されてるのですが、文字コードを内部変換してるようなら
はじめからShift-JISで文字列を記録したいなーと思いまして。
530NAME IS NULL:04/06/30 02:06 ID:???
>>529
貴方がデフォルトで使うと指定(設定)したコード。
但しMySQL4.0だとMySQL全体でひとつの文字コードしか指定できない。
531NAME IS NULL:04/06/30 15:23 ID:+bsyRVlJ
以下のような id の数を数えるようなsqlで、
SELECT id, count(id) as count FROM table GROUP BY id;

count が10より多いものだけを表示するような形にしたいのですが、
どのようにしたら良いのでしょうか?
where count > 10 としてもダメでした。

初歩ですいません(>_<)
532NAME IS NULL:04/06/30 15:23 ID:+bsyRVlJ
↑(追記)havingでもやってみたのですが、ダメでした。
533NAME IS NULL:04/06/30 15:42 ID:???
having count(id) > 10
では?
534NAME IS NULL:04/06/30 16:42 ID:+bsyRVlJ
できました。有り難うございました。
>>532でダメって書いちゃいましたが、今やったら出来ました。打ち間違えてたようです。
535NAME IS NULL:04/06/30 22:00 ID:DN2mHe1v
今日使用したばかりなのですが質問させてください。

sqlファイルのインポートってQuery windowからするんですよね?
実行しても全然インポートされないのですが・・・。

ぐぐっても出てこないので・・・。
お願いします。
536535:04/06/30 22:16 ID:DN2mHe1v
phpMyAdmin-2.5.7を使用しはじめた
という大事なことを記載漏れしました(汗

おやさしいかたよろしくお願いします。
537NAME IS NULL:04/07/01 12:16 ID:cnA5av7I
ところでphpMyAdminの詳細な解説ページってあったっけ?
538NAME IS NULL:04/07/01 15:39 ID:???
>>537
メニューも日本語化されてるし、いらんと思うが。
そもそもphpMyAdminが判らんつうのは、MySQLの操作やSQLを
知らないことに起因することが多く、確かにphpMyAdminはGUI化
されていて色々できるようになっているが、独自の操作という物はない。
# このご時世なので、レンタルサーバのMySQLをphpMyAdminだけを使って・・・
# という本/サイトはあっても良いかも知れないが。

書籍だと「MySQL徹底活用」にSQLの基礎〜MySQLの管理、
phpMyAdminの使い方などが解説されてる。
539NAME IS NULL:04/07/01 16:18 ID:DoBGJWEM
PHP+MySQLの環境で
完全唯一なユニークIDの精製はどうやってますか?良い例を教えてください。
PHP関数の uniqid(KEY,TRUE) の値を、varchar(26)に入れてますがしっくりしません。ピリオド.入ってますし・・・
540NAME IS NULL:04/07/01 16:24 ID:???
>>539
ちなみにmhash関数が使えない環境です。チョット関係ないですが。
541NAME IS NULL:04/07/01 17:46 ID:DwlsJKEn
例えば A B C というフィールドがありそれぞれ
3,4,3
1,2,3
2,3,4
という3つのレコードがある場合に
Cフィールドをグループ化してAフィールドの一番小さいに値をだしたいのですが
select A from table group by C order by A としても
Cが3のレコードのAフィールドが3になってしまいます。
本当は1をだしたいのですがどうすればよいのでしょうか?
542NAME IS NULL:04/07/01 17:54 ID:???
>>541
質問がわかりにくすぎ
レコードとフィールドの値を混乱させるような例にしない
543NAME IS NULL:04/07/01 23:04 ID:???
このたび新しくMySQL version 3.23.54 を使おうとしていたのですが、
他のユーザーを消そうとして間違ってroot@localhostを削除してしまいました。orz
一応mysqld_install_dbなどを実行させてはみたものの

/usr/bin/mysqladmin -u root password 'new-password' で、

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

と出てきてしまいます。どうかこのずぶの初心者に復旧方法をご教授のほどよろしくお願いします。
544NAME IS NULL:04/07/01 23:25 ID:???
>>543
[忘れたルートパスワードをリセットする方法]
http://dev.mysql.com/doc/mysql/ja/Resetting_permissions.html

要するに管理アカウントが無効となった状態から
どのように復帰するかの解法。
545NAME IS NULL:04/07/01 23:34 ID:???
>>543
ああ、mysqld_install_dbは権限テーブルを初期設定に
するんじゃなくて初期設定を作るんで、既に権限テーブル
がある場合には、そいつ(権限データベース/テーブル)を
削除しないと - つまり他のユーザ情報や権限は消える -
スクリプトを実行しても初期状態にならないよ。
546543:04/07/01 23:35 ID:???
>>544
すみません、ありがとうございます。
一応そこみてやってみたんですけど、versionのせいなのか

mysql --skip-grant-tables

の段階で、

mysql: unrecognized option `--skip-grant-tables'
mysql Ver 11.18 Distrib 3.23.54, for redhat-linux-gnu (i386)
Copyright (以下略

と出て再起動されないんです。
547NAME IS NULL:04/07/01 23:42 ID:???
>>539
どの程度ユニークなのが欲しいのか判らんが
uniqid→md5ハッシュぐらいでいいんじゃないの?
548NAME IS NULL:04/07/01 23:44 ID:???
>>546
mysql (クライアント)のオプションじゃなくて、
mysqld (サーバ)の起動オプション。
549543:04/07/02 00:22 ID:???
>>548
。。。。_| ̄|○ ウツダシノウ・・・・

/etc/rc.d/init.d/mysqld start --skip-grant-tables

でいいんでしょうか?これやると一応 起動はOK出るんですけど

> mysqladmin -u root password 'mynewpassword'
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user: 'root@localhost' (Using password: NO)'

> mysql -u root mysql
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)

。。。。。。_| ̄|○ アキラメロッテカ・・・・
550NAME IS NULL:04/07/02 03:15 ID:???
>>549
なんかRPMで入れてるっぽいな。
「/etc/rc.d/init.d/mysql stop」でちゃんと止めた?

http://dev.mysql.com/doc/mysql/ja/Automatic_start.html
のRPMの場合(RHL9以降は/etc/init.d→/etc/rc.d/init.d)

因みにRHLなどのレイアウトでの/etc/rc.d/init.d/mysql (mysql.serverスクリプト)
と/usr/bin/mysql (MySQLクライアント)は別もの。
mysqlと打って起動するのはパスの関係上、通常は後者。
更に言うと、/etc/rc.d/init.d/mysqld、/usr/sbin/mysqld辺りも区別すること
551NAME IS NULL:04/07/02 04:19 ID:???
4.1系、やっとβかよ。
552NAME IS NULL:04/07/02 11:50 ID:???
>>547
md5ハッシュだと厳密にユニークでは無くなるぞ。

http://e-words.jp/w/MD5.html
553NAME IS NULL:04/07/02 11:59 ID:???
>>552
いいじゃん、だいたいで
554NAME IS NULL:04/07/02 12:10 ID:???
「完全唯一なユニークID」と言ってるだろ。
555543:04/07/02 13:26 ID:???
>>545
/var/lib/mysql/mysql にあるファイルをすべて消去して、
/usr/bin/mysql_install_db を実行
/etc/rc.d/init.d/mysqld start --skip-grant-tables で起動して
/usr/bin/mysqladmin -u root -h ****.*** password '**********' で設定、再起動
という手順でできました。

皆様ありがとうございました。


556547:04/07/02 16:28 ID:???
>>554
それは見落としてた。なら、使う前にデータベース上の
テーブルで既に使ってないかチェック(ロックしつつ)
して使うだな。既に使ってたら新たに取り直す。
あとuniqidもマイクロ秒由来だけど、完全無比のユニークではない。
557NAME IS NULL:04/07/02 16:39 ID:???
>>555
その手順の場合は、権限テーブルは既に削除&初期化済みなので
--skip-grant-tablesはいらないよ。
それと--skip-grant-tablesな時は無防備な状態なので、
可能なら、併せて--skip-networkingを付けて
ネットワーク越しのアクセス許可も一時停止させた方が良い。

いつもlocalhostからのみの接続だけなら、普段から
--skip-networking付けて運用するのが安全だね。
558NAME IS NULL:04/07/02 19:50 ID:???
winXPで4.0.20をつかってるんですけど、
WEBみながら設定してたらいつのまにかrootのpassを
設定してしまったみたいでdatabaseに繋げなくなった
のでアンインストールしてもう一度インストールした
んですけど、既にパスが設定されているみたいでやっぱり
つなげません。
ってか再インストールした後にGUIツール立ち上げても
初期のアカウントとpassの設定画面でてきませんでした。
mysqlの初期のpassって何処に格納されてるんですかね?
559NAME IS NULL:04/07/02 21:19 ID:???
>>558
取り合えず>>543からの流れを読んで、参考にして対処せよ。
それと他人に訊く前にマニュアルを読むこと。
訊いてる基本的なことはそこに書いてある。

判らなければ「ディレクトリごと削除して」再インストール。
560NAME IS NULL:04/07/02 22:23 ID:???
完全にユニークなIDが欲しいなら、
unique indexで指定して乱数をinsertして
SQLException発生したらやり直す・・でいいんじゃないか?
てゆっか、auto_incrementでなんでいけないの?
561NAME IS NULL:04/07/03 01:35 ID:poCSVMuq
500万件のデータに対して
select * from XXX limit 4900000,10;
というクエリを送ったら結果が出るのに数十秒かかるんですが
もっと時間を短縮できる方法はありますか?
562NAME IS NULL:04/07/03 01:40 ID:???
>>561 orderする項目にindexはると100倍以上速くなる
563NAME IS NULL:04/07/03 02:12 ID:y02b0D0u
これを日本および海外で広めると病気が治るかもしれない。
オラウータンなどの
サルは自分と似ていない自分の子供を(子殺しする)殺す。
(立花隆『サル学の現在』平凡社より)

http://www.google.co.jp/search?q=cache:YzJwPXsiJZAJ:www.impala.jp/bookclub/html/dinfo/10110005.html+%E3%82%B5%E3%83%AB%E5%AD%A6%E3%81%AE%E7%8F%BE%E5%9C%A8%E3%80%80%E5%AD%90%E6%AE%BA%E3%81%97&hl=ja
564NAME IS NULL:04/07/03 03:09 ID:???
>>562
order以前に単なるlimit句が遅いので困ってます。
limit 0,10 だと速いけど limitの開始位置が大きくなるにつれて遅くなっていきます。
565NAME IS NULL:04/07/03 13:09 ID:???
サーバーネームが"xxxx.com"でデータベースネームが"yyyy"
ユーザー名が"zzzz"でユーザーパスワードが"passoword"
で、phpからmysqlに接続しようとしてるんだけど

<?php
$con = mysql_connect("xxxx.com","zzzz","password");
$selectdb = mysql_select_db("yyyy",$con);

Fatal error: Call to undefined function: mysql_connect() in /****/***/****/****.php on line 2
ってでるんだけどもしかして何かモジュールいれわるれてるの?
566NAME IS NULL:04/07/03 13:49 ID:???
>>564
だから、>>562も言ってるとおり、
"select *"が問題なんだってば

カラムは全部呼び出す場合でも全部列挙が基本だよ
このネタも禿しくガイシュツなのだ。
567NAME IS NULL:04/07/03 14:06 ID:???
すいまそん phpMyAdmin5.6.7でdefaultlang='ja'で設定してるんですが
日本語表示されません。ブラウザはIE6.0です。ヒントください。
568NAME IS NULL:04/07/03 19:22 ID:???
>>570
phpMyAdminの最新版は2.6.0-beta X なわけだが……。
まぁいいか。
$cfg['DefaultLang'] = 'ja-euc';
$cfg['DefaultCharset'] = 'euc-jp';
とでもしとけ。SJISとかJISとかだったら自分で調べてくれ
569NAME IS NULL:04/07/03 22:53 ID:???
>>568
$cfg['DefaultLang'] = 'ja-euc';
$cfg['DefaultCharset'] = 'euc-jp'
にして日本語表示できました。
ありがとう。
570NAME IS NULL:04/07/03 23:22 ID:???
>>566
>>562は "select *" なんて問題にしてないでそ。
俺は>>562に同意。それか主キーが無ければ付けるとか。
571NAME IS NULL:04/07/04 12:51 ID:???
>>565
超初心者なので、その英文のエラーが読めません。
日本語訳を併記してもらえれば多分判ると思うんですが...

# つか先ずはGoogleにそのままエラー文を放り込め。
572NAME IS NULL:04/07/04 15:06 ID:???
mysqldの起動について

/etc/rc.d/init.d/mysqld start

/usr/bin/safe_mysqld &
で起動するのではどこが異なるのでしょうか?
ググってみてもでてきません。

ちなみに環境は
fedora core 1
mysql 3.23
rpm(yum)でインストールしました。
573NAME IS NULL:04/07/04 17:54 ID:???
rootでログインしてもmysqlに入れなくなっちゃいました。

一回アンインストールして、もう一回入れなおそうと思うのですが
/usr/local/mysql/ 以下を全部消せばいいんでしょうか?

mysql3.23です
574573:04/07/04 19:20 ID:???
さっそく入れ直してみましたが、それでよかったみたいです。
それで、
mysql> SELECT * FROM user;
で引いてみると、rootが二つあるんですが、片方消しちゃってもいいんでしょうか?
575NAME IS NULL:04/07/04 22:00 ID:???
>>574
学習を"体得"でこなしてるみたいだから
試しに片方ずつ消してみな。
576539:04/07/05 13:36 ID:wOk/pFDO
レスありがとうございます。
>>560
MySQLのauto_incrementの仕様ではDELETEなどで欠番が生じた時に、その欠番を再利用してしまうので。
似たようなテーブルを一旦統合して、一括して検索をしたり、IDと分類要素で元のデータの関連を推測したりするので。
そのときは、欠番したIDも検索対象だし。
577NAME IS NULL:04/07/05 17:15 ID:FFYqojs5
Windows XP上で4.0.18付属のmysqlclient.libを使ってプログラムを組んで
いるんですが、どうもmysql_queryの中で8バイトほどリークしている気配
濃厚なんです。いろいろ検索かけてみたのですがどうも見つかりません。
どなたかご存知ないですか?
578うんこ:04/07/06 01:11 ID:???
>>576
欠番の再利用はしないです
最大+1が常に採用される
579NAME IS NULL:04/07/06 01:24 ID:???
>>578
それは PRIMARY KEY に指定した場合でそ。(普通はそうする
だろうが)
http://dev.mysql.com/doc/mysql/ja/example-AUTO_INCREMENT.html
ここの一番下の注意書き
580NAME IS NULL:04/07/06 04:33 ID:???
>>578
「最大+1が常に採用される」なので、
最後尾から削除すると、番号が再利用される。
581NAME IS NULL:04/07/06 13:00 ID:wxaMCESC
IDのバイト増やすと無駄にかさばらないか?
substr_replace(md5(uniqid(KEY,TRUE)),"",12)

582NAME IS NULL:04/07/06 13:01 ID:???
ESC・・・
583NAME IS NULL:04/07/06 13:58 ID:???
timestampのカラムがあるフィールドをupdateするとき
timestampを変更したくないときはどうしたらいいですか?

insertのときのtimestampのみを保持する方法って感じで
584NAME IS NULL:04/07/06 16:13 ID:???
>>583
update gp set time=time;
てな感じで、timestampのカラムにtimestampのカラムの値を入れるようにする。

これで、意味分かるか?
585NAME IS NULL:04/07/06 17:18 ID:???
>>583
とりあえずコレ読んで
MAXDB モードで実行していないときの TIMESTAMP の動作 @c INSERT STOP
http://dev.mysql.com/doc/mysql/ja/DATETIME.html
586583:04/07/06 18:06 ID:???
>>584-585
(゚∀゚)サンクスコ

>DATETIME カラムを使用してレコードの作成時に値を NOW()
>に初期化し、後続の更新時にはそのままにしておくというのも、
>手軽な方法です。
これでが手軽で方法でした
587NAME IS NULL:04/07/06 23:14 ID:0nq+8Xsw
MySQL4.0とPHPで常に1000コネクションくらい張り続けると
CPU負荷が常に99%になってMySQLが落ちるんだけど何で?

[mysqld]
port=3306
socket=/tmp/mysql.sock
#skip-networking
skip-locking
skip-bdb
skip-innodb
log-bin
server-id=1
tmpdir=/tmp/
#log-update = /path-to-dedicated-directory/hostname
back_log=256
max_connections=2048
#max_connect_error=65536
#max_connect_error=1048576
max_connect_error=999999999
flush_time=900
max_allowed_packet=1M
query_cache_limit=64K
query_cache_size=16M
key_buffer=4M
table_cache=32
sort_buffer_size=1M
record_buffer=1M
read_buffer=32K
net_buffer_length=8K
myisam_sort_buffer_size=8M
net_read_timeout=15
net_write_timeout=60
thread_stack=32K
thread_cache=512
thread_concurrency=2
588NAME IS NULL:04/07/07 11:33 ID:???
#max_connect_error=65536
#max_connect_error=1048576
max_connect_error=999999999
589NAME IS NULL:04/07/07 22:28 ID:hEsyl3hR
Redhat9/MySQL4でのインストールですが、
同梱のマニュアル通りにmysqlユーザーとグループ作って、Dataディレクトリのアクセス権をmysqlに変更しました。
で、シェルがrootで動いてるとMySQLって起動できないのですか?
su mysqlして起動するとうまくいきます
590NAME IS NULL:04/07/07 23:05 ID:???
>>587 なんかでMySQLは1000コネクション貼ってはいけないと読んだことがある。
クエリを最適化してコネクションが短時間で終わるようにしてコネクション数を
減らすのが抜本的解決だとおもう。仮に1000コネクション貼れてもスレッドが多すぎて
速度落ちるでしょ。

>>589 -p -uオプションつければいいんじゃないすか。
591NAME IS NULL:04/07/08 00:11 ID:???
>>589
mysqldは通常rootでは走らせられまへん。
http://dev.mysql.com/doc/mysql/ja/Security.html
> MySQL デーモンを Unix root アカウントで実行しないこと。
<中略>
> --user=root オプションを使用して直接指定された場合を除き、
> mysqld は root として実行することを拒否するようになっている。
su mysqlせんでも、mysql.serverに --user=mysql を追記するか
my.cnfに
[mysqld]
user=mysql
を書けばよろしい。

>>590
Unix user/MySQL user、 mysqld/mysqlを混同してるでそ。
592NAME IS NULL:04/07/08 01:34 ID:???
>>591 589の人はmysqlクライアントがrootで動かないって
言ってるんじゃないかな。それだとmysqlユーザーを指定すれば動くでしょう
589の人が「起動できない」のメッセージを書いてくれればわかりますが。

593NAME IS NULL:04/07/08 04:32 ID:NU6Q2zpb
phpからいじるとき、
SQL文の中に変数を入れていたら(テーブル名など)
変な動作しませんか?
どうも原因不明のエラーが出ていて、
それが原因じゃないかと疑っているのですが…
594 :04/07/08 10:06 ID:???
画像とかぶちこみたいんだけど、
画像ぶちこんでなんか困ったこと起きた人いる?
595410:04/07/08 10:11 ID:???
>>594
あまりに簡単にうまくいきすぎて感動してしばらく仕事が手につかなくなった自分に困った
596594:04/07/08 10:24 ID:???
>410
そ、そんな問題が・・・

ありがとうありがとう。
ちょっと心配だったので、助かったよ。
597587:04/07/08 16:03 ID:???
>>590
なるほど。
とりあえず古いサーバー何個か用意してMySQL Cluster入れてみます。
598NAME IS NULL:04/07/09 00:09 ID:???
>>597 MySQL Clusterの推奨スペックだと古いサーバー無理じゃないですか。
DISKの問題なら、テーブルをシンボリックリンクで複数のDISKに振り分けると
とりあえず書き込みとかは速くなります。
599NAME IS NULL:04/07/09 03:36 ID:EtX6nQbt
1000コネクション無理ってマジですか?
それは結構問題だと思うんですが…
600NAME IS NULL:04/07/09 04:09 ID:???
>>599
いや、別に5000コネクションぐらいは取り合えず問題は無いが。
数だけ上げるならそれなりの機材があれば多分大丈夫でしょ。
ただそのくらいの数が本当に待ちに入ってるなら根本設計からして
オカシイ(何かしら無理がある)というのはいえると思う。

俺は1000辺りで駄目になった事例がないので、件のについて
何も言えない。例えばメモリが極端に少ないとかあると落ちるかも。
よもやMySQLサーバに他の主要なサービスを同居させてるとも思えんし。
601NAME IS NULL:04/07/09 14:32 ID:9+NRNE0K
4.1.3-BETA
602NAME IS NULL:04/07/10 01:24 ID:???
http://www.mysql.jp/mysql/Manual/4.1.1/html-split/manual_14.html
A.2.6 Too many connections エラー
MySQL 接続の最大数は、スレッドライブラリが特定のプラットフォームでどの程度まで有用であるかに依存します。
Linux または Solaris では、使用している RAM のサイズと、クライアントが何を実行しているかによって、
500 〜 1000 の同時接続をサポートできます。

こんなこと書いてあった
603587:04/07/11 06:31 ID:???
>>598
MySQL Cluster使うのに4.0から4.1へ移行するのが不安だったので、
とりあえず、ディスク7本をRAID0構成にしてつないでみました。
ディスクを変えるだけで結構速いですね。

>>600
Apache1.3にmod_mylog入れて使っているんですが、やはりApache側が
2000コネクションを超えたあたりで、MySQLサーバー側が吹っ飛びます。

サーバーは下記のような構成です。
OS: FreeBSD4.10
CPU: Xeon2.0GHz(HT有効) x2
MEM: 2GB
HDD: U160 10000rpm x7 (MegaRAID E1600/cache128MB)
LAN: IntelPRO1000MT
上記とほぼ同じ構成(HDDがIDE)でApache用にFreeBSD5.2.1を入れた機材とつないでます。

吹っ飛ぶまではロードアベレージ1以下でCPU占有率も10%前後なんですが、
そのまま放置すると不確定のタイミングで暴走するんです。
604587:04/07/11 06:36 ID:???
補足ですが、元々サーバーにプリインストールされていたRedHat Linuxで、
同様の問題が発生したのでFreeBSD5.2.1に一度変えて、それでもダメで、
FreeBSD4.10に変えてみました。

それでもダメなようなので、OSとは関係ない部分だろうなと推測してます。
なんでだろう。
>>587
コネクション張ったままで、各コネクションに毎には
負荷を掛けてない状態でそうなると考えて良いのかな?>現状の事象
606587:04/07/11 16:13 ID:???
>>605
PHPのmysql_pconnect()による接続でselectを連発と、mod_mylogによる
insertの連発のどちらでも発生するのでコネクション周りに何らかの
問題があると思うのですがねぇ。

どちらも0.01〜0.03秒くらいで終わるような内容なんで、負荷自体は
たいしたこと無いのですが。

吹っ飛ぶとApache側を止めて一切クエリを発行していないのに全開で
回っているようなのでどこかでメモリリークでも起きてるのかなぁ。
607NAME IS NULL:04/07/11 21:54 ID:???
その手のって、一般的にはApacheのプロセス数を減らしたほうが
1秒にさばけるクエリ数は逆に速くなりますよ。
コネクション数増やすと全体としては遅くなります。
608587:04/07/11 23:26 ID:???
>>607
ってことは、mysql_pconnect()ではなくmysql_connectを使って、
クライアント側の継続的な接続を止めるべきですかね?
609NAME IS NULL:04/07/12 00:36 ID:???
mysql-4.0.20d-winをインストールしようとしたのだが、
インストーラーを起動させようとすると↓のようなエラーが出るよヽ(´Д`;)ノアゥア...
なにゆえ??
http://www.asahi-net.or.jp/~zn4m-ookw/sql.jpg

WinXP Pro SP1です。
610NAME IS NULL:04/07/12 03:33 ID:???
>>609
そのくらいのパスの深さなら問題ないと思うのだが、
試しにc:\mysql-4.0.20d-winにインストーラの
ディレクトリを置きなおしてやってごらん。
611NAME IS NULL:04/07/12 14:52 ID:???
トランザクショントテーブルロックについて質問です。

↓のような流れで組んだプログラムで
テーブルAのアップデートをロールバックしてくれません。
テーブルロックをしないと正常にロールバックします。
トランザクション中ではロックはかけないものなんですか?

トランザクション開始
AとBをテーブルロック
テーブルAアップデート
テーブルBアップデート
テーブルB更新エラー
ロールバック
612NAME IS NULL:04/07/13 00:28 ID:???
>>587
http://web.kuicr.kyoto-u.ac.jp/manual/mysql/manual.ja_Linux.html#Linux
1000以上の同時接続を使用する予定であれば、LinuxThreads
にいくつかの変更をして、再コンパイルし、MySQL を新しい
`libpthread.a' を使用するように再リンクする必要があります。

これはどう?
613名無し募集中。。。:04/07/13 00:55 ID:???
mysql-4.0.20のバイナリ版をRH9に入れたのですが、
rootで「mysqld_safe --user=mysql」しても起動してくれません。
mysqlユーザーにsuで変更してやると起動します。
付属のインストールマニュアルにはそんなこと書いてないのですが、
暗黙の了解なのですか?
614NAME IS NULL:04/07/13 12:57 ID:???
>>611
ロックの必要ないでしょ
そのためのトランザクションなんだから

615NAME IS NULL:04/07/13 13:23 ID:???
>>613
ユーザmysqlを凡人でもアクセスできるようにするとk
616587:04/07/13 16:08 ID:???
>>612
うーむ、今はFreeBSDに移行してskip-name-resolveも付けているしなぁ。
LinuxThreadも使ってないのでFreeBSDのpthreadも修正する必要があるのかなぁ。
617611:04/07/13 16:44 ID:???
>614
そうなんですか?
テーブルBの更新が完了するまでテーブルAの更新は行ってほしくないし、
テーブルA更新中にテーブルBの更新もしてほくくないのですが、
テーブルA更新中にテーブルBへの他セッションでの更新は
ただしく排他されるんでしょうか?

618名無し募集中。。。:04/07/13 19:44 ID:???
>>615
すいません、もうちょっと詳しくお願いできませんでしょうか…
619NAME IS NULL:04/07/14 02:59 ID:???
>>617>>611
素人の横槍ですまんが、

AとBをテーブルロック
(これで他のセッションからの更新を排他)

(ロールバックするかもしれないので…)
トランザクション開始
(おもむろに…)
テーブルAアップデート
テーブルBアップデート
テーブルB更新エラー
(ありゃ、失敗。じゃあ…)
ロールバック

AとBのテーブルロック解除
(このトランザクションはなかったことにして、他のセッションがあるならドゾー)

ではないのかなぁ。
620614:04/07/14 13:29 ID:???
>>617 >>619
MySQLといえどもトランザクションをうたうからには
原子性、一貫性、隔離性、持続性はあるだろう?
621611、617:04/07/14 14:29 ID:???
>619
お返事ありがとうございます。
トランザクション開始前にロックするということですか?
それでやってみます。

>614、620
トランザクションを利用しない別セッションで発行したクエリが
テーブルBを更新してしまわないかと懸念したのです。

ちょっと自分の日本語がおかしい気がしますが、
わかって上記でわかっていただけましたでしょうか?
622NAME IS NULL:04/07/14 16:17 ID:???
>>621
君がやろうとしていることは、可能。
おそらくもっと基本的なことを理解していないと思われ。
SQL文を貼り付けてくれていないから、その間違いを誰も指摘できないのでは?

例:
CREATE TABLE a (code INT) TYPE=InnoDB;
CREATE TABLE b (code INT) TYPE=InnoDB;
INSERT INTO a VALUES (1);
INSERT INTO b VALUES (1);
SET AUTOCOMMIT=0;
START TRANSACTION;
LOCK TABLES a WRITE, b WRITE;
UPDATE a SET code=10 WHERE code=1;
UPDATE b SET code32=10 WHERE code32=1;
/* ここでSELECT * FROM a;で10*/
UNLOCK TABLES;
ROLLBACK;
/* ここでSELECT * FROM a;では1*/
623NAME IS NULL:04/07/14 16:28 ID:???
>>621
ちなみに行いたい処理にもよるが、
通常、LOCK TABLESなりFOR UPDATEなりは必要だと思う。
もちろん隔離レベルによっても変わってくるけど。
624611、617、621:04/07/14 16:45 ID:???
>>619
619さんが書かれてるようにロックを先に行ったら
思うとおりにロールバックができました。
ありがとうございました。

>>622
私のSQLもそのような感じで
UPDATE b SET code32=10 WHERE code32=1;
が、こけてロールバックした際に
SELECT * FROM a が1となってしまいました。

SQLの表記までわざわざありがとうございます。

625NAME IS NULL:04/07/14 17:36 ID:YlrfEVow
蛇足だが、
....
START TRANSACTION; ----- これは無駄。
LOCK TABLES a WRITE, b WRITE;
....


なぜって、LOCK TABLESはトランザクションセーフじゃなくて、
LOCK TABLES実行前に暗黙的にコミットされるから。
(START TRANSACTIONは直後にコミットされるわけ)
だから、実は上の例でLOCK TABLESが有効に機能しているのかどうかもあやしい。

すべてSET AUTOCOMMIT=0の働きのようなきがする。
ROLLBACKできるからいいっちゃいいんだけど。

626NAME IS NULL:04/07/15 01:14 ID:???
>> なぜって、LOCK TABLESはトランザクションセーフじゃなくて、
>> LOCK TABLES実行前に暗黙的にコミットされるから。

これはあまり認識されていないようです。


CREATE TABLE a (code INT) TYPE=InnoDB;
CREATE TABLE b (code INT) TYPE=InnoDB;
INSERT INTO a VALUES (1);
INSERT INTO b VALUES (1);
--- 無駄 --- SET AUTOCOMMIT=0;
START TRANSACTION;
--- 無駄 --- LOCK TABLES a WRITE, b WRITE;
UPDATE a SET code=10 WHERE code=1; -- aがWRITE LOCK
UPDATE b SET code32=10 WHERE code32=1; -- bがWRITE LOCK
--- 無駄 --- UNLOCK TABLES;
ROLLBACK;

テーブルaもbもunique制約がないので、WRITE LOCKはテーブルレベル。


622さんの意図としてはテーブルaとbを同時にWRITE LOCKしたいのでしょうけど、
上の例だと、テーブルbのUPDATEする前に別セッションがbをいじると
UPDATE b SET ....が固まる(ブロックされちゃう)ので
ちょっとずれるか。
627NAME IS NULL:04/07/19 13:30 ID:m6ED5dOm
質問させてください。Ver5.0のストアドプロシージャにてWhere句の中で%キーを使用して
参照したいのですが、うまくいきません。初心者レベルですみませんがどなたかいい方法を
教えてください。以下のコードです。

delimiter $

Create Procedure proc1 (IN parameter1 varchar(20), OUT resultset1 int)
BEGIN
SELECT price INTO resultset1 FROM books_table WHERE title_eng LIKE 'parameter1%';
END
$

Call proc1('Shopaholic', @price) $
SELECT @price$
とすると、結果@price = null となって出てきます。おそらく'parameter1%'を
そのままの文字列と認識して、それに当てはまるレコードがなくnull
が返ってくるのだと思います。ただ(’)をとってしまうとシンタックスエラーになって
しまいます。
よろしくお願いします。
628NAME IS NULL:04/07/19 22:22 ID:SfFDJs2y
update関連の質問なんですが。
たとえば
tableA (id(int),userName(varchar))

tableB(userName(varchar),address(text))
なんて構成のテーブルを作っておいたとします。
それでuserNameで関連づけるのもデータベースによけいな負荷がかかりそうなんで、
tableBにuserId(int)って感じのフィールドを追加して、そのフィールドにuserNameを頼りに、
tableAのid(int)にupdateしたいと思ってます。

どんな方法がありますでしょうか?
以前まで使ってたFileMakerProならtableAのuserNameとtableBのuserNameでのrelationを設定して、全置換で置換できましたが、
MySQLではどうすればいいかわかりません。
どなたかご存じの方がいらっしゃったらお教えください。
ちなみに私の使っているバージョンは4.1.3Betaなので、subQueryを使った方法でもOKです。

すみませんがよろしくお願いします。
629NAME IS NULL:04/07/19 23:54 ID:???
>>628

subqueryで一発。
しかしどちらもInnoDBなら、
tableBに外部キー(userName)を設定すればとも思いますが。
# CASCADEで


ただ、一番いいのはテーブルを再設計することかと。
# 何故テーブルA,Bが分割するのかがわからない。
630NAME IS NULL:04/07/20 01:01 ID:mjEJFd1E
628です。
どんなsubqueryで一発?
テーブルについては、参考にあげたやつは、確かに分割する意味ないよね。ごめん。
あとcascadeの詳細もできれば教えてくれるとうれしいな。
631NAME IS NULL:04/07/20 06:31 ID:ECKaP0Y3
質問させてください。
ストアドプロシージャでWHERE句の条件を2つ指定しているのですが、
条件1(Name)しか合っていないのにレコードが返ってきてしまいます。
一方条件2(Password)が合っていて、名前が違うときはレコードの
カウントは0で正しく動作します。なぜだかわからず困っています。
どなたかご指導お願いいたします。

CREATE PROCEDURE proctest
(IN Username char(20) ,In Pass char(10) ,Out Result int)
BEGIN
SELECT count(*)as count FROM personal where Name like Username AND Password like Pass;
SELECT count, case
when count=1 then 1
else -100
end Result;
END
632NAME IS NULL:04/07/20 23:45 ID:???
BerkleyDBなどの他のデータベースと
MySQLの違いや、MySQLの利点を教えて

MTやるのにMySQL必要かなと思いまして
633NAME IS NULL:04/07/21 01:36 ID:???
BerkleyDBと比較して、MySQLに利点なんてないから、
BerkleyDBを究めな。で,このスレッドには2度と来ないでね >> 632

634NAME IS NULL:04/07/21 08:14 ID:???
>>633
え、そうなの?
635NAME IS NULL:04/07/21 12:40 ID:???
>>633
単に理由を説明できないだけだろ
636NAME IS NULL:04/07/21 15:09 ID:???
>>635
つうか、くれくれ厨房の632にわざわざ詳しく教えることなんかないじゃん。
637NAME IS NULL:04/07/21 15:32 ID:???
しかもマルチだし
638NAME IS NULL:04/07/21 18:14 ID:???
MySQLでxoopsをやってたのですが、使わなくなったので、
関連するDBをすべてdropしました。

しかし、ディスクの使用容量はそれでは減らないと聞きました。
どうすれば、ディスクの使用容量を減らせるのでしょうか?
639NAME IS NULL:04/07/21 18:27 ID:???
>>638
DROP DATABASEならディスクからは消えると思うぞ。
それ、どこから訊いたの?

#DELETEは直ぐには変わらない場合もある。
640638:04/07/21 18:33 ID:???
>>639
あれ、そうなんですか。。。

きいたのは、某レンタルサーバ屋の技術サポセンです。
ま、本来はサポート範囲外なので、さらっときいてさらっと答えられた感じでしたけど。
641NAME IS NULL:04/07/21 18:59 ID:???
>>639
>>DROP DATABASEならディスクからは消えると思うぞ。


MyISAMならばね。InnoDBだとどうなの?
642NAME IS NULL:04/07/21 22:21 ID:???
>>637
てめーがこっちに書けってイッタンダド
643NAME IS NULL:04/07/21 23:17 ID:???
>>641
XOOPSなんで、全テーブルがMyISAM型なんだわ。

InnoDBはMyISAMと違ってDB毎にファイルが分かれておらずMySQL全体で一種類。
また半固定サイズのファイル群で構成されていて、個々のファイルは完全に
不要となるまでは無くならないので、データレイアウトによってはテーブルの
DROPによっても、ディスク占有サイズは(余り)減少しないこともありうる。
但しテーブル定義ファイル(*.frm)はDROPで削除されます。
# この説明ではトランザクションは考慮していない。

データのDELETEによるディスク占有サイズの変化は
MyISAM/InnoDBの場合で、それぞれまた動作が異なるね。
644638:04/07/22 02:12 ID:???
みなさんありがとございます。サポセンのにいちゃんがまちがっていたということで、
解決しそうです。

ありがとうございます。
645NAME IS NULL:04/07/22 10:16 ID:???
あるテーブルのカラムA、カラムB、カラムCは頻繁に抽出を行い、
カラムD、カラムEは抽出回数もWHERE条件にもなる可能性が低い場合
カラムD、カラムEは別テーブルとして保持していたほうが
効率的ということはありますか?

646NAME IS NULL:04/07/22 12:31 ID:???
>>645
ほとんど差はないでしょう。
あったとしても、そのデータをディスクからメモリに読み込む時間とか、
微々たるもののはず(キャッシュ効果もあるし)。

その程度の細かな時間差は、CPU速度をちょっと上げるとか、
データ転送のはやいHDDにするだけで、簡単に吸収できる。

それより、テーブルは論理的に分割したほうが
メンテナンスもSQL作りも楽、システムとしても効率的。
647645:04/07/22 13:16 ID:???
>>646
お返事ありがとうございます。

すいません一つ質問がございます。
論理的に分割とは具体的にどのようなことをするのですか?
よろしければ、ご教授ください。
648NAME IS NULL:04/07/22 13:40 ID:???
"論理的分割"="正規化"の意味で使った。

正規化の是非は、ここで論じるのはやめよう > ALL
649NAME IS NULL:04/07/22 15:42 ID:???
insert関連で質問なんですが、MySQL4.0.20a+Windows2000の組み合わせで使用してますが
「insert into test values ('ソ',null);」というinsert文を実行したら
mysql> insert into test values ('ソ',null);
'>
'>
という状態でinsertが出来ません。色々試してみると文字の先頭に「ソ」がある場合に
上記の状態ないし文字化けしたりするのですが、回避方法がありましたら
ご教授願えませんでしょうか。
650NAME IS NULL:04/07/22 16:44 ID:???
よくわかんないけど、
"
で囲ったら。

'ソ' --> "ソ"
651NAME IS NULL:04/07/22 20:45 ID:3OI4cPS6
検索である複数フィールドの中に特定の文字列が入っていればという処理をしたいのですが
フィールド数が多いのでconcatで結合してやると
例えばAフィールドに'あいう' Bフィールドに'えお' として
'うえ'という文字で検索かけたらひっかかりますよね?
あくまで単体フィールドにその文字列が入っていればという処理を行いたいのですが
普通に ((A like str) or (B like str) or ・・・)と書く以外に
簡単な記述はありませんでしょうか?
652NAME IS NULL:04/07/22 21:05 ID:???
>>650
レスすまそ。
>'ソ' --> "ソ"
それも含め試しましたが、実行出来ませんでした。
653NAME IS NULL:04/07/22 22:01 ID:???
sjisのバックスラッシュ問題じゃね?
654NAME IS NULL:04/07/23 00:53 ID:???
sjisのソは0x835cだからナー。
http://www.tmtm.org/ja/mysql/japanese.html
ここ見ると、--with-charset 付けてコンパイル
すると良いようだが。
655NAME IS NULL:04/07/23 02:00 ID:???
>>653 >>654
まさしく、sjisのバックスラッシュの問題でした。
バイナリパッケージを使ってるので、設定を見直してみるとキャラクターセットがまずかったのを
直したら実行出来ました。
勉強不足でした、どうもすみません。
656NAME IS NULL:04/07/23 09:56 ID:???
こんちわー、質問させてください。
auto_increment で連番をふっていて、
レコード削除すると欠番がでますが、その欠番を
再利用するのはどうしたらよいですか?
657NAME IS NULL:04/07/23 11:24 ID:???
>>656
自動でなく、手動で設定する。
658NAME IS NULL:04/07/23 15:11 ID:???
主キーでなければauto_increment は自動的に欠番を埋めるって前に誰かが此処で言ってたよ、と。
主キーなら自分で探して埋めれ。
659NAME IS NULL:04/07/23 15:27 ID:???
>>658

嘘。
660NAME IS NULL:04/07/23 16:01 ID:???
>>658
単純にそのフィールドの最大値+1を自動的に入れる仕組み>auto_increment
だからそのフィールドで最大値を持っていたカラムの削除を行うと
その場合は再利用される。
661NAME IS NULL:04/07/24 00:17 ID:???
662NAME IS NULL:04/07/24 00:35 ID:???
auto_incrementの欠番を再利用するようなテーブル設計は
ヤバイ香りがするよ。

663NAME IS NULL:04/07/24 23:35 ID:???
データベース設計に関して質問です。
たとえばオークションシステムを開発するとして、
1つのテーブルに全会員の売買履歴を保存する方法と
会員ごとにテーブルを作成し、そこに売買履歴を保存する方法の
2種類があると思います。
速度面で有利なMySQLを使うつもりですが、どちらの方法が
レコード追加、更新、削除処理などで効率が良いでしょうか?
664NAME IS NULL:04/07/25 02:21 ID:???
>>663
会員制オークションなら後者(ユーザに付随)
但し売買の金額的な集計などを取る必要もあるので、
これは別個のテーブルに記録しといた方が良い。
ユーザの履歴から集計するのは現実的ではない場合が多い。
(会員規模にもよる)
665NAME IS NULL:04/07/25 02:42 ID:???
DB情報は通常、ファイルとして保存されていると思いますが、MySQLは
コネクトするたびにファイルを読み込んでいるのでしょうか?
それとも一定期間メモリ上に展開されたままで処理が行われるのでしょうか?

DB設計上、こういったソフトウェア側の仕組みも知っておいたほうがいいと
思いまして。
666NAME IS NULL:04/07/25 14:11 ID:???
667NAME IS NULL:04/07/25 15:54 ID:???
>>663
ふつーは売買情報を1つのテーブルにすると思うけれど。
会員制だからといって、会員ごとにテーブルを作るのはあり得ない。



668NAME IS NULL:04/07/26 01:48 ID:???
>>664, 667

リレーションも正規化もわかってなさそうな素人に
ごちゃごちゃいうのはやめようよ。

まず、RDBの基本を勉強してから、設計したほうがいいよ > 663
669NAME IS NULL:04/07/26 18:46 ID:???
>>668

>>456-457

放置でよろ
670NAME IS NULL:04/07/27 00:15 ID:???
MySQL を使うソフトを客に売るとき、
(1) MySQL のライセンスを自分が買って、客にわたす。
(2) MySQL のライセンスは自分が買わずに、客が直接買う。
のどちらでしょうか?

もし、(2)がOKだったら、客がMySQLのライセンスをすでに
持っていたら、2重にライセンス料を払わずに済むというこ
とになる。

MySQLのライセンスは複雑すぎる。
誰か知ってる人、教えて!ヒントだけでもいいです。

ちなみにASPで使うときは無料です。
671NAME IS NULL:04/07/27 00:58 ID:???
>>670
「MySQLを使うソフトを(所有権/使用権)売る」なら
(1)でないと駄目。受託開発で先方から開発の依頼だけ
を受けて「MySQLを使うソフト」の所有権が初めから
客にある場合は(1)でも(2)でも構わない。
現実的には(2)で開発側が代理購入するかな。

|客がMySQLのライセンスをすでに持っていたら、
|2重にライセンス料を払わずに済むということになる。
客先から機材提供という形で借り受けて、開発〜納品つう流れの
パターンはやったことあるな。MySQLライセンスは数まとめて
買うとディスカウントされるから、余分に持ってたみたい。
672NAME IS NULL:04/07/27 07:04 ID:???
>>671

なるほど。

> MySQLライセンスは数まとめて買うとディスカウントされる
それは知りませんでした。

お手数をおかけしました。
レスもらえて良かったです。
ありがとうございました!
673NAME IS NULL:04/07/27 09:41 ID:kYeSX4AM
MySQLのSQL上でdate_formatして
2004-07-24T09:00:00+09:00の形式で日時を取得する方法はありますか?
知っている方がいたらヒントでも良いので下さい。
宜しくお願いします。
674NAME IS NULL:04/07/27 09:54 ID:Xykl8dEF
>>673
その日付フォーマットは RDFのDC:DATEかな?
select DATE_FORMAT(now(), '%Y-%m-%dT%H:%i:%S+9:00') as dc_date;
でどうでしょう。
675NAME IS NULL:04/07/27 10:59 ID:kYeSX4AM
>>674
レス、ありがとうございます。
>RDFのDC:DATEかな?
まさしくです。
やっぱり'+9:00'は固定になりますか。
どうにかtimezoneを拾って、その値から+9:00というのを導き出せないでしょうか?
676656:04/07/27 11:18 ID:???
すいません。放置してました。
質問に答えてくださった方ありがとうございます。
再利用しない方向でいこうと思いますが、
auto_incrementで桁数の最大値まできてしまった場合エラーになってしまうと思いますが、
最大値までいきそうなデータ登録数の場合、みなさんどうされてますか?

677しろねこ:04/07/27 11:45 ID:La92ZJBm
Access2000でのVBA使用について質問です。フォームを開いた時、そのフォームに対応するテーブルのレコードを
重複する値で分け、カウントしてそのフォームに出力するにはどうしたらよいですか。
(例)
テーブル:レコードA , レコードB , レコードC, レコードA, レコードB
  フォーム:A 2
B 2
C 1
678NAME IS NULL:04/07/27 12:54 ID:???
>>679
ありえない。intがおよそ+-21億まで、bigintがおよそ+-922京まであるんだぞ……足りない事はまずない。
データ登録数が異常。テーブル設計がおかしいんじゃないか。
679NAME IS NULL:04/07/27 13:04 ID:???
bigintをIDにしてテーブル作ったのですが、
IDが足りません。
どういう風にすれば良いですか?
680NAME IS NULL:04/07/27 14:54 ID:???
ラベンダーの香りが・・・・
681NAME IS NULL:04/07/27 16:53 ID:???
DBに入ってる画像をHTMLに表示させるときってどうすればいいですか
682NAME IS NULL:04/07/27 17:22 ID:???
板違い
683NAME IS NULL:04/07/27 20:56 ID:???
>>679
よくわからんけど、ID二つ作れば?
684NAME IS NULL:04/07/27 22:34 ID:???
>>679
何のデータなのか激しく気になる
685NAME IS NULL:04/07/27 22:49 ID:???
>>684

星を数えてます。
686NAME IS NULL:04/07/27 23:29 ID:2OjAMHeh
業務システムをAccessで構築してる奴は頼むから氏んでくれ。
UNIX DB使え、
687NAME IS NULL:04/07/27 23:30 ID:???
signedならunsignedにすれば?
688MAME IS NULL:04/07/28 03:45 ID:???
NULLポ
689NAME IS NULL:04/07/28 05:24 ID:???
690NAME IS NULL:04/07/28 09:06 ID:???
え?DBに画像って挿入できんの??
691NAME IS NULL:04/07/28 09:30 ID:???
すごく初歩的な質問なんですが・・・

MySQLをサーバーにして、Excelをクライアントにして
データベースを管理することは可能なんでしょうか。

データの出し入れをExcelから完全に行うデータベース
をつくりたいと思っています。その場合、VBAのコードに
SQLのコードを埋めこむことになるんでしょうか。
692NAME IS NULL:04/07/28 09:30 ID:???
BINARYでぶち込めばなんでもあり
693691:04/07/28 09:31 ID:???
あ、すみません。
http://pc5.2ch.net/test/read.cgi/db/1057041973
のスレのほうに書くべきだったかもしれません。
694691:04/07/28 09:38 ID:???
あ、でも、向こうのスレにも同じ質問を書いたらマルチになっちゃいますね。

ちなみに、MySQLとExcel、MySQL Connector/ODBCはインストール済みです。
695NAME IS NULL:04/07/28 10:06 ID:R5oCkYgA
いろいろ本を読んでみたのですが、ちょっと分かりませんでしたのでこちらにて
質問させていただきます。

MySQL4.1をWindows2000上で使おうと思っているのですが、MySQLにはOracleでいう
SQLローダーに相当する機能はあるのでしょうか。大量のデータをバッチ的に書き込む
必要があるので、いちいちプログラム中からINSERT文を発行していると、通信の
オーバーヘッドが大きくて実行速度が大幅に低下してしまいます。この手のローダー
について、ご紹介をお願いします。
696690:04/07/28 10:29 ID:???
>>692
自分に対するレスでいいのかな?

そのときフィールド型って何にすればいいの?
てか、どうやってinsert発行すんだろ・・・・
マニュアル読むべきですか?
697NAME IS NULL:04/07/28 10:38 ID:???
>>696
ヒント:blob プレースホルダ
698NAME IS NULL:04/07/28 10:48 ID:???
画像はbase64でエンコードして突っ込んでます
データサイズが1.33倍になってしまうのが悩みです。
画像に限らずなんでも入るから楽です
699NAME IS NULL:04/07/28 12:28 ID:CX0BAnfi
700690:04/07/28 13:19 ID:???
プ、プレースホルダ・・・・・??
勉強不足のようだ・・・・。
まずそこから調べて、実際に画像つっこんでみます。
701NAME IS NULL:04/07/28 15:28 ID:???
>>700
伝説のルチャドール、エル・バンコランのフィニッシュホールドだよ。
702690:04/07/28 17:25 ID:???
>>701
すまん。つっこみたいがわからんかった。
703NAME IS NULL:04/07/28 23:07 ID:???
>>695
4.9.9 mysqlimport(テキストファイルからのデータのインポート)
http://dev.mysql.com/doc/mysql/ja/mysqlimport.html

#こういうツールが無いDBが有れば教えて欲スイ。
704MAME IS NULL:04/07/29 00:28 ID:???
>691
僕はMySQLにDLLを通して接続しているので、
ODBCは知りませんが、VBAでSQLをグリグリかいてます。
705NAME IS NULL:04/07/29 04:20 ID:???
FreeBSD4.10にportsからmysql40-serverを入れて運用してます。
phpのバージョンは4.3.7です。
portsから入れるとデータベース類が/var/db/mysql/以下に保存されるのですが、
これを後から別の場所に変更する事は出来ないのでしょうか?
例えばWindowsにインストールした場合は、winmysqladmin.exe等でmy.iniの該当箇所を
修正すれば、保存ディレクトリの場所を変更できますよね。
FreeBSDでも、このmy.iniのような設定ファイルで変更出来ないものでしょうか・・・。
706NAME IS NULL:04/07/29 05:36 ID:itaSUHVK
int系って正数で使われることが多いじゃないですか。
いちいちunsignedしてますか?
何となく気持ち悪いので俺はしてるんですが
面倒くさくもあります。
707NAME IS NULL:04/07/29 08:57 ID:???
そりゃ扱うデータによるでしょ
708691:04/07/29 09:18 ID:???
>>704
どうも有難うございます。
ODBC経由でない方法もあるんですね。
709NAME IS NULL:04/07/29 15:08 ID:???
ローカルで作成したエクセルデータを
MYSQLにインポートしてるんですけど、
『001』とかのデータが『1』になってしまいます。

『001』のままインポートしたいのですが、
対処方ご存知の方いらっしゃいますか?
710709:04/07/29 15:40 ID:???
あ、タブ区切りにしたらできた。
すいません。板汚しです。
711NAME IS NULL:04/07/29 16:06 ID:???
>>705
FreeBSDでもいっしょ。
今あるディレクトリごとコピー(権限データベースも含む)して、
コピー先ディレクトリの権限を設定して、my.cnf(my.iniじゃないよ)を
書き換えて、mysqldをリブート。
712705:04/07/30 01:53 ID:???
>>711
ありがとうございます。
自分でも調べた結果、portsで自動生成される起動スクリプト、
/usr/local/etc/rc.d/mysql-server.sh
にデータディレクトリの指定がありました。
こちらの方が簡単だったたのでそれを修正して再起動、無事完了しました。
ご丁寧にありがとうございました。
713NAME IS NULL:04/08/01 01:00 ID:VMF5hDfx
EUCで起動していた場合、
テーブル名、カラム名に日本語を使っても問題ないでしょうか?
714NAME IS NULL:04/08/01 04:20 ID:???
日本語カラムはたとえ出来たとしてもやらない方が…
仕様上絶対必要なら止めはしないが。
715NAME IS NULL:04/08/01 09:21 ID:???
そうですか…
単に分かりやすいかなぁという程度なのでやめときます。
716NAME IS NULL:04/08/01 09:51 ID:???
>>715
その程度のことなら、まあ遊びで作ってるDBに使ってるけど問題はない。
標準/社外のツールとか対応してないのが結構あるから、気をつけたまえ。
717NAME IS NULL:04/08/02 06:54 ID:lTW+BMPt
質問:Oracleの'set pau on'みたいに、
   画面出力を制御したいのですが、どうすればよいでしょうか?

>大量のデータを出力するクエリがある場合、画面上でデータが一気に
>スクロールアップするのを見るのではなく、出力をページ表示コマン
>ドに渡して 1 ページ単位で表示させることができる。
> shell> mysql < batch-file | more

調べた範囲だと上のしか見つからなかったYo(´・ω・`)




718NAME IS NULL:04/08/03 02:11 ID:???
>>717
http://dev.mysql.com/doc/mysql/ja/mysql.html
Keyword:--pager[=...] オプション, pager, nopager
719717:04/08/05 09:47 ID:???
>>718
さんきゅ♪
720NAME IS NULL:04/08/05 22:52 ID:???
Execlをクライアントにすることはできますか?
721NAME IS NULL:04/08/05 23:37 ID:???
>>720
ExcelってODBCとかでの、DBの接続機能は標準で持ってるん?
あれば出来る。

アドオンとかVBA組んでやれば出来るか?ってことなら
やれば出来る。
722NAME IS NULL:04/08/06 11:23 ID:???
Linuxサーバ間でMySQLのデータをやり取りしたいと思うのですが、
一番最適な方法を教えて下さい。
CSVにエクスポートしてインポートするのがやはり最適ですか?
723NAME IS NULL:04/08/06 12:11 ID:???
>>721
お答えくださってどうも有難うございます。
エクセルにはデータベースクエリを設定するツールがあるようで、
Microsoft Queryをインストールすれば可能であるようにも思えます。
実際にそれでエクセルをクライアントにしてデータベース・システム
を構築している方がいらっしゃるのかどうか知りたくて質問しました。
724NAME IS NULL:04/08/06 13:44 ID:tJn9qtch
>>722
もうちょっとどうしたいか具体的に書いてくれ。
そのカキコだとそれでも良いんじゃない?としか答えられない。
725NAME IS NULL:04/08/06 14:32 ID:???
>>723
使ったこと無いけど普通に出来そうな予感。
http://www.atmarkit.co.jp/fwin2k/win2ktips/296exceldb/exceldb.html

MySQL ABからWindowsのMyODBCドライバ取ってきてドライバの設定して、
Windowsのデータソース(ODBC)にデータソースとドライバの登録設定して、
Microsoft Queryをインストール&設定で繋がる予感。
まんまだとエンコードはSJISで統一かな。
726NAME IS NULL:04/08/06 14:40 ID:???
>>725
SoftAgencyにいくとEUC対応版のMyODBCあるよ
727NAME IS NULL:04/08/06 17:57 ID:???
>>726
いや、あれだとバイナリデータも変換されちゃうんで用途によっては不適かなと。
あと、多分MySQLサーバもクライアントもWindowsじゃないかと想像したんで。
728NAME IS NULL:04/08/06 18:06 ID:???
あっ、そっか。スマソ
729NAME IS NULL:04/08/06 18:16 ID:???
>>722 どっちもMyISAMならディレクトリをtarで固めてコピーする。
730NAME IS NULL:04/08/07 01:05 ID:???
>>722
ディレクトリごとrsyncで投げちゃうのが一番楽
731NAME IS NULL:04/08/07 02:46 ID:b3We31b9
windowsはなんとかできたが
macにうまくインストールできない。

大体本なさすぎ。
mac

BSDUNIXのくせして冷遇されすぎ。

とりあえずEXELファイルダウンロードされるけど
クリックしても動かん。
どうすりゃいいのーーーー(泣
732NAME IS NULL:04/08/07 03:01 ID:b3We31b9
mysqlはスピードやたらはやいし、無料だしべらぼーにいいよ。

もっとツールあればなあ。gui のmysql control centerてwindowsしかないんだよね。

appleで全面的にサポートして欲しい。oracleに対抗できるぐらいに
appleが支援すれば凄いことになると思う。

ていうかそのときはサーバーがmac osx一色になるかも。
733NAME IS NULL:04/08/07 03:41 ID:???
えーっと、釣りだよね?あまりにも痛々しいんだけど。
734NAME IS NULL:04/08/07 05:17 ID:???
>>732
CCはWindowsだけじゃなかったと思うけど。
まあバイナリ依存症みたいだし、
http://www.navicat.jp/product/system.html
を買えば?
735NAME IS NULL:04/08/07 09:23 ID:???
fedora core 1でmysqlを動かしていますが
ps aux
などとしてみると
なぜかmysqldが複数個(5つくらい)
動いています。
こういうものなのでしょうか?
httpdからmysqlに要求があるたびに
クローンプロセスを起動するように
なっているのでしょうか?
736NAME IS NULL:04/08/07 13:50 ID:???
>>735
あちきん家はFC2なんだけど、
--skip-locking とかいうのが沢山動いてますね
今まで気づかなかった(笑)
737NAME IS NULL:04/08/07 14:19 ID:???
さらに、
safe_mysqldとmysqldが両方動いてる・・。
738NAME IS NULL:04/08/07 14:40 ID:???
>>735
そういうもの。
複数のプロセスが起動しているように見えるけど、実際には単一プロセス内で複数のスレッドが
走っている。
http://www.mysql.gr.jp/mysqlml/mysql/msg/5639

ちなみに、接続ごとに新規スレッドが生成される。
http://dev.mysql.com/doc/mysql/ja/MySQL_threads.html

>>737
safe_mysqld(4.0以降はmysqld_safe)はmysqldを起動するためのシェルスクリプトなので、
それで問題なし。
739NAME IS NULL:04/08/07 15:03 ID:???
Windows版のmysql4.0をcygwinから使ってます。
cygwinのbash上(コマンドプロンプト上)で
mysql -h localhost -u user -p
とやるとちゃんと
Enter Password:
が返ってくるのですが別のコンソールrxvtを使うとEnter Passwordが返ってきません。
ためしにパスワードをなしにしてmysqlとやってもmysqlからの反応は返ってきません。

どんな原因が考えられるでしょうか?アドバイスお願いします。
740739:04/08/07 16:02 ID:???
自己レスです。
ttp://www.mail-archive.com/[email protected]/msg11242.html
にrxvtはバッファして画面上に吐き出さないからって書いてありました。

でも解決法が載ってない・・・知ってたらアドバイスください。
741NAME IS NULL:04/08/07 16:19 ID:???
>>732
|MySQLCC uses Trolltech's Qt toolkit, which means it can run on Microsoft Windows
|and Unix environments, and we plan on support Mac OS X in future versions.
なんてあったんで、Qt/Macじゃ動かんのか...やっぱり諦めなはれ
742NAME IS NULL:04/08/07 16:39 ID:???
>>938
なるほど・・
安心しました。
ありがとうございました
743NAME IS NULL:04/08/07 20:30 ID:???
>>739
rxvt以外でも、cygterm + Tera Term Proとかでも同様になるね(Cygwin DLL 1.5.9-1で確認)。
>>740のスレッドにあるように、mysql.exeが古いCygwinのライブラリをリンクしているのが原因
ぽい。

ソース持ってきてCygwin上でビルドしなおすか、同一窓で起動するのはあきらめて
$ cmd /c start mysql.exe
とかするしかないかも。
744NAME IS NULL:04/08/08 02:19 ID:???
>>722 バックアップのディレクトリコピーとるまえに
lock tableして、flushしろよ。
っていうか、DB一度落とすのが一番。
745739:04/08/08 09:24 ID:???
>>743
ソースからビルドですか・・・当分の間はコマンドプロンプトでやることにします。
アドバイスありがとうございました。
746NAME IS NULL:04/08/09 09:59 ID:???
mysqlのテーブル作成時のフィールドのデータ型で悩んでるんですが、
文字列型のvarcharとtinytextは文字として格納するか、バイナリで格納するかの違いみたいですが
どのような場合にバイナリで格納するべきなんでしょうか?

1、test-kit*alph-base
2、テストはきっとうまくいくはず(euc-jp)

1と2はなんのデータ型を選択するといいでしょうか?
747NAME IS NULL:04/08/09 12:10 ID:lJMnYZ/G
mysql4.0.18をwindowsXPにインストールしてコマンドプロンプトから直接SQL文打って勉強してるんですが、
セキュリティに関しての疑問です。
use mysql;
select user,host,password from user;
で現在は
root | localhost | hogehoge
root | %     | hogehoge
の二つだけなのですが、何故かそれ以外のユーザでも接続ができてしまいます。
例えば
C:\mysql\bin> mysql -u root -p hogehoge
で接続ができるのは理解できますが、
C:\mysql\bin> mysql
だけでも何故か接続できてしかも何でもできてしまいます。
匿名ユーザ等はちゃんと消してあるし、なによりパスワードなしで接続できる意味がわかりません。

どうかエロイ人おながいします。
748746:04/08/09 12:42 ID:???
あれから
char binary

char
をテストしてるんですが、差が感じられません。日本語を入れる時にはあまり関係ないものなんですか?
749NAME IS NULL:04/08/09 17:35 ID:???
create table test (
id smallint(5) not null zerofill
);

ひとつのカラムにnot nullとzerofillの両方のオプションをつけることができないのでしょうか?
今はmysql manualを読んでます。
750NAME IS NULL:04/08/09 20:47 ID:???
>>749
zerofill を指定する順番が違うだけです。

create table test (
id smallint(5) zerofill not null
);
751NAME IS NULL:04/08/10 03:41 ID:???
>>747
my.iniあたりにクライアントで優先的に使うユーザとパスワードを記述してない?
あと権限テーブルの読み込みをスキップさせてるとか。
それと直接データベースのテーブルの中身を弄って、ユーザを変更した場合は
flushしないと駄目だよ。まあmysqldのリブートでもしてれば別だけど。
752747:04/08/10 07:16 ID:???
[mysqld]
basedir=C:/mysql
datadir=C:/mysql/data

[WinMySQLadmin]
Server=C:/mysql/bin/mysqld-nt.exe
user=a
password=0000

>>751
これがmy.iniの中身です。
ユーザは一番初めにrootで接続して
root | localhost | hogehoge
root | %     | hogehoge
以外は消去しました。それからはrootのパスワードありで接続してデータベースつくったり
テーブル作ったりして遊んでます。全部コマンドプロンプトからの作業です。
mysqladminはインストールしたときに一度起動させただけでスタートアップには登録してませんし
まったく使ってません。

テーブルを作ってもそれに権限の設定をしたりは全くしてません。というかrootユーザしかいませんし;
753NAME IS NULL:04/08/10 07:54 ID:???
MySQLmanualの日本語版サイトにGRANT構文についてのページが見つからないんですが
もしかしてないんでしょうか?英語の方はあるので一応なんとなくは理解できるんですが;
754NAME IS NULL:04/08/10 07:56 ID:???
755NAME IS NULL:04/08/10 08:58 ID:???
>>>754
ありがとうございます
756NAME IS NULL:04/08/10 10:00 ID:/StcJr8n
テキストファイルにSQL文を書いてそれを読み込ませて処理させることはできますか?
LOAD DATA INFILEはレコードを挿入するのに使えるみたいですが、
できればプロンプトト上と同じ事をファイルに書いてレンタルサーバで一発で
データベース、テーブル〜ユーザ権限の設定までを済ませれたら便利だなと思います。

不可能でしょうか?
757747:04/08/10 12:12 ID:???
できました。flush privileges;を一応やって、mysqldも一応やりました。
その後知らないうちに匿名ユーザははじかれるようになってました。

てっきりPCの再起動さえすれば、mysqldも再起動しるのかと思ってたましたがちゃんと
直接mysqlデータベースをいじった場合にはちゃんとflush発行しないといけないんですね。
どうもです!
758NAME IS NULL:04/08/10 12:54 ID:???
スーパーユーザーで接続して
GRANT SELECT ON mydb.test to hoge IDENTIFIED BY 'hoge';
でユーザhogeパスワードhoge権限mydb.testテーブルにSELECT構文を使えるように設定しました。
そのユーザを消すには
DROP USER hoge;(4.1以前のサーバですのでこれは使えません)

REVOKE GRANT OPTION ON mydb.test FROM hoge;
で権限を削除してからmysql.userからレコードを直接削除しろとMySQLマニュアルに書いてあるんですが
REVOKE発行後(userは消さずに)にmysql.talbes_privを見てみるとhogeに対する権限が残ってました。
試しにhogeで接続してみると何故か権限が以前と同じままで、SELECTの発行ができてしまいました。???
どういうことでしょうか?一応FLUSH PRIVILEGESは発行してから確認しました。
759NAME IS NULL:04/08/10 13:11 ID:???
>>758
>REVOKE GRANT OPTION ON mydb.test FROM hoge;
指定が足りない。
REVOKE SELECT,GRANT OPTION ON mydb.test FROM hoge;
ちゃんとpriv_typeを指定しる。まあがんがれや


760759:04/08/10 13:16 ID:???
>REVOKE GRANT OPTION ON mydb.test FROM hoge;
っていうかgrant optionなんてpriv_typeないじゃないか!
どっから持ってきたんだよその語句は。

REVOKE SELECT ON mydb.test FROM hoge;

だな。
761758:04/08/10 18:46 ID:???
>>759-760
ありがとうございました!なんか勘違いしてしまってました;
ところで
GRANT priv_type on *.* to user_name WITH GRANT OPTION;
のWITH GRANT OPTIONってグラント構文を発行できる権限ですよね?
どうしてpriv_typeでできないで、最後に付ける形なのでしょうか?
762756:04/08/11 09:59 ID:O6NiGJVB
やはり無理なのでしょうか?
763NAME IS NULL:04/08/11 10:17 ID:???
>>762
もともと書き込みの少ない板/スレなんで回答は気長に待とう。

>>756だけど、mysqlコマンドを使えば簡単にできる。
http://dev.mysql.com/doc/mysql/ja/mysql.html
764NAME IS NULL:04/08/11 13:19 ID:r3tt2I52
画像データをMySQLに入れておくって
負荷的にはどうでしょうか?
何となく、負荷が大きいような気がして
MySQLにはファイル名だけを入れておいて、
画像はファイルとして持っておこうかとも考えています。
ただ利便性からはMySQLに入れてしまった方が
便利だとは思います。
UNIXのファイルシステムとさして負荷が変わらないなら
MySQLに入れてしまいたいのですが。
実際どうなのでしょうか。
765NAME IS NULL:04/08/11 13:36 ID:TUan7ePT
MYSQLをMAC OSXにインストールしたいのですが
http://dev.mysql.com/で
ダウンロードするインストールつきファイルは
excel起動方式らしいのですが、起動途中でとまります。
(インストーラなしはダウンロードできるのですがインストール方法が
わかりません。)

mysql友の会みると mysqlのpkgがあるらしいのですが
どこで入手すればよいのでしょうか」?

WINDOWS版はとりあえずうまくいってますが
どうしてもMACでMYSQLを動かしたいのでよろしくお願いします。
MACのFILEMAKERは汎用度が低いので今1か今2です。

MACを使ってWEBのデータべースを考えています。
お願いします。



766NAME IS NULL:04/08/11 18:40 ID:???
mysql4.0.18-win
コマンドプロンプトからrootで接続して
exit
と打ったらmysqlがエラーで終ってしまいましたが、禁句なのですか?
本当は
quit
exit
で接続切ってからcmdを閉じたかったんですが間違えてしまったのです。
767NAME IS NULL:04/08/11 18:46 ID:???
>>764
画像ファイルへのアクセス形態による。

・多種大量アクセスならファイル形式だとOSのリソースを消費するためDB有利(負荷はシステム全体に掛かる
・少種大量アクセスならOSのファイルキャッシュに期待する
・少種少量アクセスならDBの管理利便性をとる

小さな画像はDBで大きな画像はファイル名参照といったシステムも考えられる。メンドウだが効果はある。
Webサーバーでは蓄積する画像は大量だがアクセスされるのは最新の画像だけだったりする。

ファイル>DB、DB>ファイルの変換も簡単だから
まずはDBに全部入れてみたら? 画像の参照集計・履歴とかも取れるし。

負荷については使用に応じた設計をすればDBの方がOSより少ないよ。
768NAME IS NULL:04/08/12 03:34 ID:sFQeQqK+
>>765
ぁぁ

結局MACOSX については
誰も助けてくれないわけね。。。
769MAME IS NULL:04/08/12 04:20 ID:???
>>768
公式サイトに、インストーラー付きのディスクイメージ置いてあると思いますが?
770NAME IS NULL:04/08/12 05:01 ID:???
>>765
公式マニュアルはインストール方法も説明しています。
まずマニュアルを読んでください。
ディスクイメージ(.dmg)をダブルクリックしてもマウントされるだけで、
その中にあるpkgをダブルクリックしないとインストーラが起動しません。

MySQL Manual
http://dev.mysql.com/doc/mysql/ja/
2.1.3 Mac OS X への MySQL のインストール
http://dev.mysql.com/doc/mysql/ja/Mac_OS_X_installation.html

>>769
インストーラー付きのディスクイメージをダウンロードして
ダブルクリックして「起動途中でとまります」と言っているのでしょう。
771NAME IS NULL:04/08/12 09:59 ID:???
無知な漏れに教えてください
>>765
「excel起動方式」ってなんですか?
772756:04/08/12 10:16 ID:???
>>763
昨日そのページを見たんですが見つかりませんでしたorz
で、今日もう一度見てみたら左側に
「4.9.5 mysqlbinlog(バイナリログからクエリを実行する)」
の項を見つけれました。ありがとうございます。
773NAME IS NULL:04/08/12 12:35 ID:o1vLsNEc
mysql-standard-4.0.20-pc-linux-i686.tar
を解凍して
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &
ってやったけど、
Fatal error: Can't open privilege tables: Can't find file:
'./mysql/host.frm' (errno: 13)
だってさ(´・ω・`)

mysql_install_db
でも実行すればいいの?
774NAME IS NULL:04/08/12 12:39 ID:Kph4YncS
MySQLをコマンドやシェルから操作するときに例えば
INSERT tbl_name SET colum_name = "文字列";
みたいな時に「文字列」をEUCで挿入するとかってできませんか?
775NAME IS NULL:04/08/12 13:18 ID:sFQeQqK+

>>769
>>770

ども。(;;)

公式サイトにインストーラつきのディスクイメージのがおいてない。
わけわからない、ファイルがおちてきてうんともすんともうごかない。

でpkgさがしてきました。ヴァージョン旧いのが鬱(泣) なんだけど。。。
http://www.cosmos.ne.jp/〜kaz6120/maclib/mysql/index.pl?id=mysql01

どっちにしろむずい。
unixつかいこなしてないとしんどい。
WINDOWSより難しい。ていうか本欲しいなあ。MAC用MYSQL。
買いてもお金にならないせいだろうけど
誰かWINDOWSと一緒に欠いていないかなあ。セットアップ方法。

随分MYSQL関係お金つぎこんでんだけど、MACの記述まずないんだよね(大泣)

776NAME IS NULL:04/08/12 13:35 ID:???
>>775
ttp://dev.mysql.com/downloads/mysql/4.0.html
ここにおいてあるどれでうまく行かないの?

10.1以前だったらソースコンパイルしか無い。
書いてあることを読むとそれは無理そうだけど・・・

>unixつかいこなしてないとしんどい。
としたらインストールはうまくいってもその後でも苦労するかもね
777774:04/08/12 13:53 ID:Kph4YncS
すみません774に書き込んだものですが、少し勘違いしました。
共用サーバなので、自宅のテスト環境で可能でもだめでした。
なので質問を変えさせてください。

通常perlやphpからmysqlにレコードを挿入、取り出しするときにはEUCではなく
Shift_JISで挿入するんでしょうか?EUC等で入れてしまうとコマンドやシェルからは
レコードの中身を見たときに
文字バケしてしまうんですが、それを回避する方法は共用サバではありませんよね?

778756:04/08/12 15:09 ID:???
外部ファイルにSQL文を書いて実行させるのに成功しました。

C:\mysql\bin>mysql -u root -p mydb < hoge.sql

hoge.sqlをc:\mysql\bin以外に置いても相対パスで指定できるんですが
それだと少し面倒なので絶対パスでも指定できるといいんですが、無理でしょうか?
一応

C:\mysql\bin>mysql -u root -p mydb < C:\Program Files\Apache Group\Apache\htdocs\public_html\cgi-bin\query.sql
みたいにして試したんですけど、
指定されたファイルが見つかりません。
っていうエラーが出ます。ちゃんとファイルはパスのところに置いてあるんですが、どういうことなのでしょうか?
779NAME IS NULL:04/08/12 15:30 ID:???
>>778
よくわからんが普通はperl or phpで作っとくもんだよ。その方が便利だしな。
特にレンタルサーバなんかでは多分みんなそんな感じでやってるよ。
780NAME IS NULL:04/08/12 17:03 ID:???
>>778
パスに空白が含まれてるからじゃない?
二重引用符「"」でパスをくくればいけると思う。
781756:04/08/12 17:14 ID:???
>>779
あ〜。思いつきませんでした;助かります。
>>780
できました!これでどこに置いてあるファイルでも好きに読みこめるようになりました^^
782NAME IS NULL:04/08/12 20:31 ID:???
ちょっと質問です。
簡単なクラブ所属表のデータベースをMySQLで作っているのですが、

+------------+-------------+
| name | club |
+------------+-------------+
| 木下 | baseball |
| 斉藤 | baseball |
| 佐藤 | soccer |
| 鈴木 | soccer |
| 山田 | volleyball |
| 山本 | volleyball |
+------------+-------------+

このようなデータベースでsql文「〜 Where club = baseball」と検索すると
「木下」「斉藤」が検索されると思います。
ここからが質問なんですが、仮に「斉藤」が幽霊部員化しているので、
上記のsql文で「斉藤」を検索から除外させるという場合にはどうすればいいのでしょうか?
またクラブに復帰するかも知れないので、データベースからの削除や「baseball」という
club名も変えないでこのままの状態で、という仮定です。
783NAME IS NULL:04/08/12 20:44 ID:???
>>782 一人が複数のクラブに所属することもあるんだろうから
正規化しなきゃだめだよその表。
784NAME IS NULL:04/08/12 20:48 ID:???
検索から除外させるかどうかのフィールドを作れば良いだけでは?
785NAME IS NULL:04/08/12 20:49 ID:???
>>782

生徒テーブル
 no name
 1 木下
 2 斎藤
 ・・・

クラブテーブル
 id club
 1 baseball
 2 soccer
 ・・・

所属テーブル
 no id active
 1 1 1
 2 1 0
 ・・・
(斎藤が野球が幽霊部員の場合)

みたいな表にする。selectはjoinして適当に。
786NAME IS NULL:04/08/12 20:50 ID:???
>>782
>>783の言う通り
幽霊部員対策は幽霊フラグのカラムかな?

ってことで、こんな感じでどう?

クラブのテーブル
club_id | club_name
   1 | baseball
   2 | soccer
   3 | volleyball

所属のテーブル
name | club | ghost
木下 |   1 |   0
斉藤 |   1 |   0
佐藤 |   2 |   0
鈴木 |   2 |   1
山田 |   3 |   1
山本 |   3 |   0
787NAME IS NULL:04/08/12 20:51 ID:???
あそっか部員の正規化を忘れてた・・・orz
788NAME IS NULL:04/08/12 21:10 ID:???
782は学校の先生みたいだからちゃんと正規化の勉強してからテーブル作りなさい.
このままだと同姓同名がいると削除不可能なテーブルとか作っちゃうよ。
あるいはExcel使いなさい。
789782:04/08/12 21:33 ID:???
皆様、色々ありがとうございます。
今回の件では複数のclubに所属という事は考えず、
あくまで名前とクラブが1:1という仮定です。

なるほど、activeやghostみたく、
新しいフィールドで設定すれば良いわけですね。
どうもありがとうございました。感謝です。

ちなみに私は教師じゃないですよw
MySQLの勉強としての事例だったのです。紛らわしくてスイマセン。
790NAME IS NULL:04/08/12 22:18 ID:???
それなりに理解していれば、Mac OS XでMySQLを使う事は少し
も苦じゃないはずだけどなぁ。どうしてもインストールがわからん
かったら、Server版(収録されているのは4.0.18)を買うというのも
選択肢じゃねーかと思うぞ。
791NAME IS NULL:04/08/12 22:56 ID:sFQeQqK+
>>790

OSX server版いつかかいたいとも思うけど
これををMYSQLのために買うというのも???

SYBASEでも無料でついているなら買う価値あるだろうけど。
MYSQLって小規模・中規模対応でしょう?

金融なんかでMYSQLが将来使われるという可能性あるんでしょうか?
クラスタリング対応するようになったのは凄いけど。

まだまだORACLE とかSQL SERVERには敵わないという印象。

ただMYSQL は面白い。ただだし。もっとGUIの管理マネージャーとかどんどん
つけて欲しいな。コマンドは辛いです。UNIXの人はコマンド好きなんですか?
SQLやWEBやるときにプログラム書くのは面白いけど
データベースの管理でいちいちコマンド打ち込むのは正直あほらしい。



792NAME IS NULL:04/08/12 23:01 ID:???
大規模の事例だけど
ezweb のメールのユーザ管理や配送制御に使っているみたいだよ。
793NAME IS NULL:04/08/13 03:30 ID:???
>>775
>わけわからない、ファイルがおちてきてうんともすんともうごかない。
「わけわからないファイル」じゃなくてファイル名を書いてください。

国内ミラーサイトのダウンロードページと
インストーラつきのディスクイメージに直リンクします。

MySQL 4.0 Downloads
http://www.softagency.co.jp/MySQL/downloads/mysql/4.0.html
Installer package (Mac OS X v10.2) Standard
http://www.softagency.co.jp/MySQL/Downloads/MySQL-4.0/mysql-standard-4.0.20-apple-darwin6.8-powerpc.dmg
Installer package (Mac OS X v10.3) Standard
http://www.softagency.co.jp/MySQL/Downloads/MySQL-4.0/mysql-standard-4.0.20-apple-darwin7.3.0-powerpc.dmg
794NAME IS NULL:04/08/13 04:57 ID:96XAZt6i
yahooでは
MYSQLで管理していると聞いてる。

まあYAHOOで使いまくりなら、MYSQL はやぱ凄いと思う。
795764:04/08/13 09:13 ID:???
>>767
詳しくありがとうございます。
小種少量アクセスなので、DBでやってみようと思います。
MySQLって結構やりますね。
796NAME IS NULL:04/08/13 09:15 ID:???
>>782-789
なんで
select * from hoge whre club="baseball" && name ne "斉藤";
っていうレスが一個もつかないんだ?785-6のレスが薬立つだろ請けどさ。

まあ将来的に考えれば
797NAME IS NULL:04/08/13 09:57 ID:???
Y!とかGoogleがMySQLなのは有名な話ですよ
と思って調べようとしたらトップページから直リンクしてた。
MySQL ABの顧客企業ってことかな?
ttp://www.mysql.com/customers/
798NAME IS NULL:04/08/13 10:41 ID:???
すげーなー
俺もヘボながら今後も支持するよ
799NAME IS NULL:04/08/13 10:50 ID:vEuYSWkh
数値型についての質問です。
TINYINT(M)
範囲-128〜127
SMALLINT(M)
範囲-32768〜32767

(M)は数値型の桁数を表わすみたいですが、範囲というのはその桁数の範囲ということでしょうか?
でも(M)の最大はどんな型でも255ですよね?そうなると範囲との互換性がないというか、よく理解できません。

初めはTINYINTの範囲は-128〜127なので符号なしで4桁、ありで3桁なのかと思ってましたが、
ためしに
CREATE TABLE test(
id TINYINT(5) ZEROFILL
);
とすると何故かエラーがでないですし。
INSERT INTO TEST SET id="1";
とすると中身は
00001
になってますのでやはり範囲と(M)での桁指定の意味がわかりません。

どなたかおながいします。
800NAME IS NULL:04/08/13 11:15 ID:???
>>799
(M)が桁数だったのか初めて知りました
いやぁ、ほんと夏ですね

ところでINSERTの「TEST」だけ何で大文字なんだ?
801NAME IS NULL:04/08/13 11:55 ID:???
夏っていうかもっとコンピュータの基礎的な本を読んだ方がいいと思う
802NAME IS NULL:04/08/13 16:57 ID:???
ケース依存なしなシステムと、そうでないシステムの差異を突いた釣り。
夏にしては、なかなかやるな。
803NAME IS NULL:04/08/13 17:08 ID:???
100万件を超えるようなデータを検索対象にすると、
普通にインデックスを張った項目だけ、
WHERE条件にしても、order by するとパフォーマンスが悪いです。

解決のためには、やっぱりテーブル分割しかないでしょうか?

select * from テーブル where style='1' order by point desc limit 0,20;

style & point はインデックス張ってあります。
804803:04/08/13 17:10 ID:???
ちなみに、同じqueryを2回連続で投げると…
1度目は9秒ぐらい。
2度目は(キャッシュにのるからでしょうが)1.5秒ぐらい。
805803:04/08/13 17:15 ID:???
13万件ぐらいだと 2回連続で投げると…
1度目は1.5秒ぐらい。
2度目は(キャッシュにのるからでしょうが)0.25秒ぐらい。

これなら許容範囲。
806NAME IS NULL:04/08/13 17:33 ID:???
インデックスを作るときに
「INDEX(style, point)」で作ってたとすると
「ORDER BY point」はインデックスきかなんじゃなかったっけ?
そこんとこどうよ
807803:04/08/13 18:04 ID:???
>>806 さんありがとうございます。
色々調べました…

逆に個別にインデックスを張っているとダメみたいです。
style, point で複合インデックスを張ったら早くなりました。


ところでここでは styleみたいな項目が6個と
pointみたいな並べ変え項目が2個あるんです。

12個のインデックスになっちゃうけど、
特に問題ないですかね??
808NAME IS NULL:04/08/13 19:12 ID:???
インデックスが多いのは、書き込みが遅くなるのと
データがでかくなるの以外は問題ないです。

しかし100万件ぐらいどうってことないけどなあ。
メモリ足りないんじゃないの?
あるいはメモリをちゃんとキーバッファにわりふってないとか。
809803:04/08/13 19:36 ID:???
ダミーデータ作る時間が、かなり掛かるようになった…

>>808
複合でインデックスを張っていなかったために、
Using filesort
になってました。

これが原因だと思うのですが、
それにしても遅すぎますか?
810799:04/08/13 19:54 ID:vEuYSWkh
>>800-802
最大表示サイズですか?どちらにしてもよくわからないんですがorz
範囲と最大表示サイズの関係をエロイ方、バカな僕に教えてください。おながいしますm(__)m
811NAME IS NULL:04/08/13 21:26 ID:???
>>810
基礎がなってないって言ってるでしょ
なんで調べないの?

ただの釣りか、そうに違いない!!
812799:04/08/13 21:42 ID:vEuYSWkh
>>811
MySQLmanualは読んでますが;
ご存知でしたらおながいします。
813NAME IS NULL:04/08/13 23:03 ID:96XAZt6i
MAC OSX X11勉強し始めたが
気が遠くなるほど時間かかりそう。

 BSD UNIXの道は遠い。
でもいいんだ。どーせバークレー大学なんてでてないし。
文系だし。(泣



814NAME IS NULL:04/08/16 10:32 ID:SQ2cXbup
user,db,host,table_priv,columnsがselect出来ません。

mysqldump -all all.dmp で採ったデータベースを
他のマシンに mysql < all.dmpで戻しました。

use データベースとか、普通のテーブルへの
アクセスはOKなのですが、管理テーブルへアクセス出来ません。

ユーザとかも作成できるけど、select * from user;は、
dosen't existとか言われてます。

何で?  mysqlacessもダメ

815NAME IS NULL:04/08/16 18:05 ID:???
>>814
お前バカだな
816NAME IS NULL:04/08/17 11:16 ID:bWPr69Sc
>>814
'use mysql' can be first time.
817NAME IS NULL:04/08/17 13:57 ID:???
>814
mysqlのDBいじった場合は、flushしないといけないんでは?
mysqladminか、もしくはコマンドラインでもあったかな?
まぁ、マニュアルよんでみそ
818NAME IS NULL:04/08/17 14:35 ID:???
InnoDBおせーよー。
select count(*) で 1.8secだよ。
819NAME IS NULL:04/08/17 21:54 ID:ph0AxtK/
mysqlで、選択したデータがNULLだった時に、
文字列の'NULL'に置き換えようと思い、

select ifnull(*,'NULL') from TableName;
としたのですが、エラーになってしまいました。
ifnullは*と併用しては使えないのでしょうか?

全ての列のNULLチェックをしたいのですが
どうしたらいいでしょうか?
どうかよろしくお願いいたします。
820NAME IS NULL:04/08/17 23:02 ID:???
>>818
と言う香具師に限って設計が駄目だったり、
しょぼいハードウェア使ってたりするんで、ちゃんと見直してみろ。
つか頻繁に使うのは結構キャッシュ内で収まってたりするからな...
821NAME IS NULL:04/08/17 23:33 ID:???
失礼します。

フィールド情報の
int(1)てのは、1桁の整数型、ですよね?
1桁ってなってるはずなのにINT型最大の2147483647まで挿入できるんですが・・・
822NAME IS NULL:04/08/18 00:44 ID:???
>>821
int 一個分

intってのは結構でかいよ〜
昔は秒数えたら半世紀ちょっとで終わってたけど
今はなんつーか、宇宙レベルだよ
823NAME IS NULL:04/08/18 00:55 ID:???
>>821
あらかじめ素人なのをお断りしておきます。

ググって見たところ、
MySQLでは、int(n)の「(n)」は、精度=桁数ではないようだ。
#つーか、このあたりって実は実装依存なの?

ttp://www.softagency.co.jp/mysql/Manual/4.1.1/html-split/manual_6.html#SEC403

6.2 カラム型
(略)
M 最大表示サイズを表す。正式な最大表示サイズは 255。
(略)
INT[(M)] [UNSIGNED] [ZEROFILL]
通常サイズの整数。符号付きの範囲は -2147483648 〜 2147483647。符号なしの範囲は 0 〜 4294967295。

「表示」サイズ、ね。
 hoge INT(3)
でhoge=1を入れたら「001」になる、ってことか?

ひと桁の数値、にしたかったら、標準SQLのDECIMAL(1,0)を使うんでないかな。
824NAME IS NULL:04/08/18 01:29 ID:???
うぉ、、桁数ではないのですか・・・
どうもありがとうございました。
825NAME IS NULL:04/08/18 11:14 ID:???
>>823
>
「表示」サイズ、ね。
 hoge INT(3)
でhoge=1を入れたら「001」になる、ってことか?



それじゃ最小表示サイズぽくないか?なんか中途半端な感じだよな。スパっとした説明ってないよね。
826NAME IS NULL:04/08/18 11:22 ID:???
int(4)とかの、カッコ内の数字は、zerofillの時に使われるだけ。
なので通常は、型を指定するだけ十分。
tinyint、midiumint、int、bigintなどなど

一度、MY*ファイルをバイナリエディタとかで覗くと、値がどのように
格納されているかが良く分かります。
827NAME IS NULL:04/08/18 11:28 ID:???
じゃあ一桁のintってのはないの?
Bool代わりに使いたいんだが
828NAME IS NULL:04/08/18 11:32 ID:???
ttp://dev.mysql.com/doc/mysql/ja/Column_types.html
一応BOOLあるよ

といってもTINYINTだけど
829NAME IS NULL:04/08/18 11:39 ID:???
でもphpmyadminにはないんです・・・>Boolean
あれでMySQLの管理やっちゃだめですか?
830NAME IS NULL:04/08/18 11:52 ID:???
ならばTINYINT(1)を使えばよいのでは・・・
同じなんだし
831NAME IS NULL:04/08/18 12:40 ID:???
>>822>>826が言ってることが食い違ってる気がするんだが、どっちかがアフォなの?
それとも両方あってるの?
832NAME IS NULL:04/08/18 13:21 ID:???
>>820
お願いがあるのですが、InnoDBで100万件程度のデータを作成して
select count(*) from tablename;
してみてもらえませんか?
もう、設計うんぬんの話じゃないような気がするのです。
# 1レコードは1,200byteぐらいかな?

ハードウェアは確かにヘボイけど。
Pentium4 1.6
RAM 512MB

MyISAMだと100分の1秒の世界。
InnoDBだと2秒近く。
833NAME IS NULL:04/08/18 14:14 ID:???
>>832
そんな君には、これだ。

ttp://www.innodb.com/todo.php
Long term:
Fast COUNT(*) from a table.
834anonymous:04/08/18 14:25 ID:6zToUUIA

mysql を sparc solaris 2.6 にインストールを考えています。
使用する用途は、Blog movable typeを動かすために必要であるからです。


www.sunfreeware.com

からは Sparc Solaris 2.6 の
mysql-3.23.53-sol26-sparc-local.gz
しか落とせません。

しかし本家では、http://dev.mysql.com/downloads/mysql/4.0.html

Solaris 8 (SPARC) Standard 4.0.20 11.0M Download |
が落とせます。
さて、これはSolaris2.6で使用できるのでしょうか?


835anonymous:04/08/18 14:50 ID:6zToUUIA

http://mirrors.sunsite.dk/mysql/doc/mysql/en/Solaris_2.7.html
によりますと、

2.6.3.1 Solaris 2.7/2.8 Notes
Normally, you can use a Solaris 2.6 binary on Solaris 2.7 and 2.8.
Most of the Solaris 2.6 issues also apply for Solaris 2.7 and 2.8.


大抵,Solaris 2.7 または、2.8で上で Solaris 2.6用に作成されたバイナリファイルを
を使う事ができる。Solaris 2.6で起こりうる大抵の問題は、 Solaris 2.6 と 2.8
で起こりうる事である。



ここでは2.8のバイナリを2.6に適用する事ができるのかどうかは判別できません。

836NAME IS NULL:04/08/18 15:44 ID:???
>>833
ありがとうございます。
どうやら周知の事実だということですね・・・。
837NAME IS NULL:04/08/18 16:00 ID:???
>>831
「食い違ってる」と読み間違ってる喪前がアフォ。
http://dev.mysql.com/doc/mysql/ja/Numeric_types.html
838NAME IS NULL:04/08/18 16:15 ID:???
>>831
お前の言葉でもっとわかりやすく説明しろよ。822のどこが正しいのかわからんな。
839NAME IS NULL:04/08/18 16:16 ID:???
↑は>>837へのレスだな。
840NAME IS NULL:04/08/18 16:57 ID:???
そして837は逃げると
841NAME IS NULL:04/08/18 18:42 ID:???
>>840
お前837だろ?
842819:04/08/18 18:59 ID:wS03NeRR
>>819なんですが、どうなんでしょう?
いろいろやってみたのですが無理でした・・・orz
せめてselect * from TableNameで返ってきた結果を
スカラーにする方法でもあれば・・・
843NAME IS NULL:04/08/18 21:50 ID:???
とりあえず>>822はバカってことで決着か。
844NAME IS NULL:04/08/18 23:29 ID:???
>>843
宇宙レベルのどこが悪い
845NAME IS NULL:04/08/18 23:36 ID:???
バカはバカだな
846申し訳ないです。:04/08/18 23:43 ID:9YX8lYZ0
MySQL4.0についての質問なのですが、
もしかしたら、ふざけるなと怒られるかもしれませんが当方まじめに悩んでいます。
お力をお貸しください。

設定で、my.cnfをいじろうとマニュアルを読んだのですが、
my.cnfに書くことができる設定が多すぎるのと、

パラメータと、設定できる範囲、推奨値等を検索しながらmy.cnfをいじっていたのですが、
マニュアルだと、MyISAM, DBD, InnoDB, sqld, セキュリティとパラメータがべつべつの場所に
記載されているのと、グループもどんなグループが利用できるのかもわからず
どつぼにはまってしまいました。

my.cnfの
システム全体に利用するパラメータ, パラメータの説明, 設定範囲, 推奨値、
グループごとに利用できるパラメータ, パラメータの説明, 設定範囲, 推奨値の
一覧てどこかに無いでしょうか?

環境は
MySQL: 4.0.20
OS: RedHatLinux9.0
言語:PHP4.0
です。

駄文長文申し訳ありませんがよろしくご指導ください。
847NAME IS NULL:04/08/18 23:58 ID:???
848NAME IS NULL:04/08/19 01:01 ID:???
Mysql 3.23.58で

mysqladmin -uroot -p create test1

でデータベースtest1を作成後、rootでmysqlに接続し、

GRANT ALL PRIVILEGES ON test1.* TO testsql IDENTIFIED BY 'testsql';

にてユーザtestsqlを作成後、

mysql -utestsql -ptestsql test1

で接続しようとすると、

ERROR 1045: Access denied for user: 'test1@localhost' (Using password: YES)

と表示され、接続できません。
flush PRIVILEGESを行ったりしたのですが、何が原因なのかさっぱり分かりません。
どなたかご教授くださいm(__)m
849NAME IS NULL:04/08/19 01:11 ID:ggkag9vE
>>847

さっそくのレスありがとうございます。
そのあたりのページは一通り見ました、
また、mysqld --helpコマンドもたたいたのですが、
mysqldに関しては一覧が出てくるものの、

clientやmysqlその他のグループについては一覧の記述が無くて
困っています。自分で一覧を造ろうと2、3日悪戦苦闘したのですが、
点在しているのをつなぎ合わせているうちにぼつぼにはまりました。

まだ、気長に造ってはいますが、できれば総合的に網羅している書籍ですとか、
HPなどを教えていただければと思います。

よろしくお願いします。
850NAME IS NULL:04/08/19 09:56 ID:???
>>848
mysql localhost unix ソケット tcp
あたりでググってみ
851anonymous:04/08/19 16:00 ID:PtZByeIp
mysql-max-4.0.20-sun-solaris2.8-sparc.tar.gz

を落としてきてSolaris2.6上の
mysql-max-4.0.20-sun-solaris2.8-sparc
ディレクトリで
#make
とすると、
# make
make: *** No targets. Stop.
となります。

# ./configureとすると、

NOTE: This is a MySQL binary distribution. It's ready to run, you don't
need to configure it!

To help you a bit, I am now going to create the needed MySQL databases
and start the MySQL server for you. If you run into any trouble, please
consult the MySQL manual, that you can find in the Docs directory.

ld.so.1: ./bin/my_print_defaults: fatal: librt.so.1: open failed: No such file or directory
Neither host 'keeper' and 'localhost' could not be looked up with
./bin/resolveip
Please configure the 'hostname' command to return a correct hostname.
If you want to solve this at a later stage, restart this script with
the --force option


さてどうすればいいでしょうか?
アドバイスお願いでありまする。
852NAME IS NULL:04/08/19 16:20 ID:???
>さてどうすればいいでしょうか?
クイズ番組みたいな言い方だな
問題なのか質問なのか量りかねる。

>アドバイスお願いでありまする。
とかるのでアドバイスをば・・・













何でもいいからまずその英語を読め。
853NAME IS NULL:04/08/19 21:55 ID:???
0. 表テーブル作成
1. バッチ処理で裏テーブル作成
2. 表と裏を取り替える

ということをやろうとしてます。

【問1】
LOCK TABLES 〜 UNLOCK TABLES を使っても、
テーブル自体が(一瞬)無くなるんで、
テーブル無しのエラーが出そうな気がするんですが、
LOCKしてれば、MySQLは止めてくれるんでしょうか?

【問2】
RENAME TABLE構文があるので、これを使うべきな気がしますが、

> 名前の変更は原子的に実行されます。つまり、テーブル名が変更されている間、
> 他のスレッドからはこれらのテーブルのいずれにもアクセスできなくなります。
# 原子的って何だ?

と、書いてあるのは適切なロックをするということなんでしょうか?
適切なロックはしないということなんでしょうか?
854NAME IS NULL:04/08/19 23:50 ID:???
テーブルがなくなるとロックとけたような気がする。
表tableをtruncateして、裏tableを表にinsert into .. select *
で突っ込むのがいいんじゃないかと思う。
855NAME IS NULL:04/08/20 00:02 ID:???
>>853
># 原子的って何だ?
"アトミック"が校正の時のチェックで漏れてんだな、多分。
856NAME IS NULL:04/08/20 02:44 ID:???
ああ、rename tableでいいみたいですね。
857NAME IS NULL:04/08/20 19:49 ID:fiQF3m93
WEBアプリを作って公開、使用料金を取るプランを
クライアントが考えています。
MySQLで開発した場合はMySQL作成元にお金を取られますか?
858NAME IS NULL:04/08/20 23:39 ID:???
>>857
MySQL.comを見てくださいね
859NAME IS NULL:04/08/21 05:08 ID:5JbYmkjy
POSTGRESQL VS MYSQL で決着のつかなかった答えでしょう
これだからMYSQLユーザーは(TY
860NAME IS NULL:04/08/21 11:15 ID:???

どういう意味?
861NAME IS NULL:04/08/21 20:02 ID:vE5DBXiB
mySQL信者は盲目なのか
862NAME IS NULL:04/08/22 14:15 ID:???
>>859 決着でてるぞ。っていうか、mysqlのサイトみれば書いてある。
英語ぐらい読めよ。まったく。
863NAME IS NULL:04/08/22 16:30 ID:???
英語はともかく、自分の使ってる/使おうと思ってる
ソフトのライセンスを読まないのは致命的。
汎用的なライセンスじゃなけりゃ、怖い内容が
書いてあるとも限らんのにな。
864NAME IS NULL:04/08/23 09:14 ID:???
>>857
問題ないよ。mySQLは無料。
865NAME IS NULL:04/08/23 12:49 ID:6gmnvASg
857
ライセンス違反

そのサイトを他社に売った時のみ
866NAME IS NULL:04/08/23 15:59 ID:???
GPLならいいよ
867NAME IS NULL:04/08/24 02:40 ID:???
>>782

PHPでMySQLを扱ってみようと考えています。
782で複数のクラブに所属している場合を考えた時、
個々のクラブから所属する生徒情報を、
個々の生徒から所属しているクラブ情報を読み書きする場合は、
どういった風にやればいいんでしょうか?

クラブテーブル
+------------+-------------+
| id | club | no
+------------+-------------+
| a | baseball | 01 02 03
| b | soccer | 02
| c | volleyball | 02 03
+------------+-------------+

生徒テーブル
+------------+-------------+
| no | name | id
+------------+-------------+
| 01 | 佐藤 | a
| 02 | 鈴木 | a b c
| 03 | 山田 | a c
+------------+-------------+

上記で考えた場合、
フィールドには1つの値しか持てないのでしょうか?
(↑正確な質問ではないかもしれません)
また、もし、そうならば、こういった場合は
(1)クラブテーブルのidが「a」のnoは「01」「02」「03」ではなく、
  「01 02 03」と持ち、それを抜き出してPHPの配列に入れて操作する
(2)関連付けられるnoが増えることにカラムをno01、no02、、、と増やしていく
(3)noの最大数だけnoカラムを持ち、noが増えることにクラブテーブルのnoカラムを増やしていく
この3件しか考えられませんでした。
どれも適当とは思えないのでどうすればいいか、正しいDBの考え方を教えてください。

もともとphpだけで作ろうと思っていて、DBの知識はないんですが、
レンタルサーバーがMySQL使えるので、これを機に勉強してみようと思い立った次第です。
実際に扱うデータは、上の例でいくとクラブが1000程度、生徒が300程度で、
クラブテーブル、生徒テーブルに関連付けられる生徒数、クラブ数は一定ではありません。
DBに関する基本的な知識がごっそりと抜けているために分からないのだと思うんですが、
マニュアルやテンプレサイトを見てもどうも解決できませんでした。
よろしくお願いします。
868NAME IS NULL:04/08/24 04:04 ID:???
>>867
>>782のテーブルは、RDB的には、>>786の言うように

生徒テーブル(no:primary key)
 no name
 1 木下
 2 斎藤
 ・・・

クラブテーブル(id:primary key)
 id club
 1 baseball
 2 soccer
 ・・・

所属テーブル((no,id):primary key)
 no id active
 1 1 1
 1 2 1
 2 1 0
 3 3 0
 ・・・

というのが正しいと思うよ。カラムが横に増えていくのはRDBの書き方じゃないです。
縦に伸びていくのが正しいDBです。

上の場合、例えばbaseballに属している人のリストは、
select b.name from 所属テーブル a left join 生徒テーブル b on a.no=b.no where a.id=1;
で出てくる(はず)。
869NAME IS NULL:04/08/25 02:38 ID:???
チューンノシ方教えてほしいです
870NAME IS NULL:04/08/25 16:32 ID:???
便乗して質問です。
868のレスで

所属テーブル((no,id):primary key)
 no id active
 1 1 1
 1 2 1
 2 1 0
 3 3 0

とありますが、これをidでソートした場合、
昇順なら『ORDER BY id ASC』、降順なら『ORDER BY id DESC』となりますよね。
これをランダムにしたい場合にはどうすれば良いのでしょうか?
単に『ORDER BY RAND()』とすると、全てがランダムになってしまいます。
昇順だと「111222333555・・・」で、降順だと「・・・9997775553332211」と並びますが、
これをランダムに「55522222444111333」や「88844455511112222」のように、
同じidはまとまってランダムに表示させたいのです。
こういうのはどうすれば良いのですか?
ちなみに『ORDER BY id RAND()』だとエラーでした。
871NAME IS NULL:04/08/25 21:38 ID:???
>>870 idのテンポラルテーブル作って、かきまぜてjoin
872870:04/08/25 22:26 ID:???
>>871
もう少し詳しく解説して頂けるとありがたいのですが・・・。
どうか御慈悲を・・・。
873NAME IS NULL:04/08/25 23:10 ID:???
>>872 いま手元にないので動かないかもしれないけど・・・

create temporal table IDS(id int,r float);
insert into IDS select id,rand() from 所属テーブル group by id;
select a.id from 所属テーブル a left join ids b on a.id=b.id order by b.r;
drop table ids;

手元にMySQLないのでクエリは試してないですが流れはこんな感じかと。
table IDSの作り方は他にもいろいろあると思います。
874NAME IS NULL:04/08/26 14:52 ID:???
RAND() 関数の値は「0〜1の範囲」ってことになってるようですけど、
これって 1 も含まれるんでしょうか。ぐぐってもどうもはっきりしなかったので…
一応、バージョンは4.0.20ってことで。
875870:04/08/26 15:26 ID:???
>>873
サンクスです。
自分でももう少し調べてみようと思います。
しかしテンポラリテーブルを使うとは、思いつきませんでした。
876NAME IS NULL:04/08/26 18:11 ID:???
>>874
0を含むが1を含まない。 0 <= x < 1。MySQLはC言語で作られているのでそのまんま。
877874:04/08/26 19:23 ID:???
>>876 ありがとうございます。やっぱり1は含まないんですね。
ドキュメント見ても書いてなくて迷ってました。
878NAME IS NULL:04/08/28 22:13 ID:Kvo5XL7f
innodbでforeign keyを作成してcascadeによって整合性を確保しようと思ったのですがエラーが出てしまいました。
どなたか対処法ご存じないでしょうか?
環境としてはMacOSX10.3上でMySQL4.1.3を使用してます。
送ったSQLは以下の通り。

alter table データベースA add foreign key (データベースAのフィールド) references pud (参照するINDEX) on delete cascade on update cascade;

それで帰ってきたエラー文が以下の通り。

ERROR 1005 (HY000): Can't create table './archweb/#sql-13c_2a.frm' (errno: 150)

errno:150って何なのかが解りません。
どなたか・・・。
879NAME IS NULL:04/08/29 00:27 ID:45ZSdcfD
既存のテーブルのテーブルタイプを調べる方法は
ありますか?InnoDB(デフォルト)かMyISAMかどちらか
調べたいのですが、describeでは出てきませんでした。
880NAME IS NULL:04/08/29 01:29 ID:???
>>878
> errno:150って何なのかが解りません。

そういうときにはperror。
$ perror 150
MySQL error: 150 = Foreign key constraint is incorrectly formed

それから↓も参照。
http://dev.mysql.com/doc/mysql/ja/InnoDB_foreign_key_constraints.html
> 同様に、ALTER TABLE が失敗して errno 150 が示された場合は、変更されたテーブルに
> 対して外部キー定義が誤って作成されています。バージョン 4.0.13 より、SHOW INNODB
> STATUS を使用して、サーバで最後に発生した InnoDB 外部キーエラーの詳細な説明を
>参照できるようになりました。

>>879
SHOW CREATE TABLE tbl_name;
http://dev.mysql.com/doc/mysql/ja/SHOW_CREATE_TABLE.html
881879:04/08/29 03:03 ID:???
>>880
ありがとうございました!
882NAME IS NULL:04/08/29 09:33 ID:???
MySQLで
Shift_JISの"東十条"という漢字を
文字化けさせずにINSERTするにはどうすればよいのでしょうか?

あまりに基本的な質問でもうしわけありません

883882:04/08/29 09:34 ID:???
追加:
Shift_JISのままDBに格納したいのです
884NAME IS NULL:04/08/29 09:58 ID:???
>>882
DBの設定をSJISにする。
「default-character-set=sjis」でググる。

INSERTしてるクライアント側もSJISで吐くように
ちゃんと設定しているかどうかも確認。
# どんなクライアント使ってるかは知らないが。
885844:04/08/29 10:00 ID:???
これが唯一解ではなく、別解もあり。
886882:04/08/29 10:02 ID:???
>>884
早レスありがとうございます!
ただ、使ってるMySQLがレン鯖なのでiniファイルを弄れません_| ̄|○
クライアント側はShift_JISのHTMLフォームからShift_JISでコーディングされたPHPで
キャッチしています。

なんとかdefault-character-setがEUC_JPのままでShift_JISのデータを格納できないでしょうか。。。
887NAME IS NULL:04/08/29 10:05 ID:???
この流れ・・・スゴイ
DB板のスレでこれほど短時間に数レス付くとは
日曜だからなのか
888NAME IS NULL:04/08/29 11:17 ID:???
>>886
つうことは接続クライアントライブラリの方も弄れないってことか。
としたらMySQL3.x及び4.0なら、アプリ側で何とかするしかないね。
DBへのIN/OUTのところで、mbstring関数なりを使って
Shift_JISとEUC-JPの変換処理を噛ませる。

Shift_JISはコード上、素直(というと語弊があるか)な作りじゃないから
簡単にそのまんま入れるのは無理。PHPのクオートの自動エスケープ
というの手もあるし、それを薦めちゃってることもあるのだが
処理として不十分。
889NAME IS NULL:04/08/29 12:57 ID:???
>>886
今回は大丈夫かもしれないけど、
いつか辻褄を合わせられなくなるでしょう。

最終的にはdefault-character-set=sjis
する方法しか残っていません。

なぜEUCじゃダメなのか?
こだわる必要があるか?も考えてみましょう。
890NAME IS NULL:04/08/29 17:00 ID:???
>>889
それを言ったらUTF-8はどうなる
891NAME IS NULL:04/08/29 17:32 ID:???
UTF-8の最大の弱点は・・・
MySQLでは、表示ががたがたになるところですかね。

あと、文字数とバイト数に関係がないところ。
大体、これで企画と製作の間に意思の相違が。


SJISが優れてるのは、
文字幅とバイト数に関係があるところ!笑
892NAME IS NULL:04/08/29 20:11 ID:45ZSdcfD
linuxでmysql(クライアントプログラム)のプロンプトに
日本語を入力できない(変換後エンターを押すと消える)
のですが、ビルドオプションか何か設定が足りないので
しょうか?標準入力から読ませるのはうまく動きます。

ちなみにターミナル自体は日本語を入力できます。

% あいう

mysqlを起動した後の

mysql>

の状態で入らなくなります.
893892:04/08/29 20:16 ID:???
具体的な操作

mysql> set names ujis;
mysql> select * from [table] where [column] = '[日本語]';
(この日本語の部分がエンター後消える)

% mysql << EOT
> set names ujis;
> select * from [table] where [column] = '[日本語]';
> EOT
はOK.
894878:04/08/29 20:42 ID:N+E8Duig
>>880
遅くなってすみません。
これからやってみます。
ありがとうございました
895882:04/08/29 23:20 ID:???
みなさんありがとうございます
mbstringモジュールはインストールされているみたいですので
>>888さんの処理で対処してみようとおもいます。
ところでmbstringは100%綺麗に変換できるんでしょうか?
例えば、”この文字を含んでいると化ける”とかそういうバグ?みたいなものはないのでしょうか?




896NAME IS NULL:04/08/29 23:31 ID:???
>>895
auto を使わなきゃ問題ない
897NAME IS NULL:04/08/29 23:45 ID:???
>>895
マッピングされてる文字なら問題ないよ。
良くShift_JISにない、MSなSJISな文字を化けるとか言い出す香具師がいるがね。

あとHTTPのGET/POST/COOKIEあたりで入出力が完結してるのなら
PHPのHTTPのIn/Outに対する自動コード変換機能を使うって手もあるな。
まあ何にせよ、その辺はMySQLというよりPHPの話だ。
898882:04/08/29 23:45 ID:???
>>896
なるほど。

早いレスありがとうございます
899882:04/08/29 23:48 ID:???
>>897
TILDE問題ですね

親切にレスいただきありがとうございました。
データベース板って結構見てる人いるんだなぁと感心しました。
900NAME IS NULL:04/08/31 17:12 ID:BBi/9PTB
mysqlのバージョンを上げたときにまずやるべき事を教えてください。
mysqlDBを。。とか。
901NAME IS NULL:04/08/31 18:37 ID:???
FreeBSD, apache, MySQL
phpMyAdmin2.5.7-pl1の設定で行き詰っています。
Shift_JISでphpMyAdminからエクスポートしたいのですが

output_buffering = On
output_handler = mb_output_handler
mbstring.detect_order auto
mbstring.encoding_translation On
mbstring.func_overload 0
mbstring.http_input UTF-8,SJIS,EUC-JP
mbstring.http_output SJIS
mbstring.internal_encoding EUC-JP
mbstring.language Japanese
mbstring.script_encoding auto
mbstring.substitute_character no value

の設定で「ファイルに落とす」「gzipされる」で実行しても
圧縮された中身はEUC-JPになり、またSQLでShift_JISで書かれたテキストファイル
を読み込もうとしてもエラーが出てしまいます。
どうすればShift_JISが使えるようになるでしょうか
902NAME IS NULL:04/08/31 23:34 ID:???
>>901
MySQLの話じゃなくてPHPの質問だわな。

phpMyAdminは良く知らないけど、「エクスポート」機能に関しては
php.iniのエンコーディング設定で行うんじゃなく(意味が無いから)て
phpMyAdminに出力設定で行うんじゃないかな。あるとすれば。
ファイルでのSQLの入力も同様。php.iniのエンコーディング設定で
関わってくるのはHTTPでの入出力であって、DBやファイルI/Oなどは
自前でエンコーディング変換を行ってやらないと駄目だからね。

# PHPのスレに質問するなら、PHPとPHPで動くアプリ(phpMyAdmin)
# と言う観点でもうちっと詳細に環境を説明しないと、多分突っ込まれるよ。
903892:04/09/01 00:48 ID:???
892 よろしくおながいします。
直し方でなくて、俺んとこじゃ動いてる
というのでも、そもそもマルチバイト
実装されてるかまだかだけ分かるだけで
十分です。
904NAME IS NULL:04/09/01 09:53 ID:???
>>903
phpinfo() の結果を貼り付けて。
905NAME IS NULL:04/09/01 10:15 ID:???
>>892
readlineの問題だと思う。
~/.inputrcに
set input-meta on
set output-meta on
set convert-meta off
と書くとか、configure時にシステムのreadlineを使うよう指定すればいいんじゃないかな。
906NAME IS NULL:04/09/01 12:01 ID:???
MySQL と MSSQL って紛らわしい・・・
907892:04/09/01 17:32 ID:???
>>905
入力できました!readlineって、設定ファイルが
あったんですね。ありがとうございました。
908NAME IS NULL:04/09/02 11:45 ID:FDBaFuaY
クエリの最適化について質問なんですが。
CREATE TABLE `words` (
`id` INT(10),
`word` CHAR(100),
PRIMARY (`id`,`word`)
);
(データが10,173行)

CREATE TABLE `tab` (
`id` INT(10),
`taba` INT(10),
`ts` TIMESTAMP,
KEY `ts` (`ts`),
PRIMARY (`id`)
);
(データが1,634行)

みたいなテーブルがあります。

SELECT tab.*
FROM tab,words`
WHERE tab.id=words.id
AND word='りんご'
GROUP BY tab.id
ORDER BY tab.ts DESC;
とやると9秒かかってしまいます。

SELECT id FROM words WHERE word='りんご'
とした結果を保存して(PHPなんで内部変数に保存)
SELECT * FROM tab WHERE id IN ( さっきの結果 ) ORDER BY tab.ts DESC;
とすると3秒です。

早いほうを1行のクエリでかけると、PHPとかインターフェースとか通さずにすむんで、もっと早そうな気がするんですが、どうやって書くんでしょうか?
909NAME IS NULL:04/09/02 20:42 ID:???
JOINを調べよう。
910NAME IS NULL:04/09/02 21:44 ID:???
オリビアニュートンジョンも歌ってるしな

JOIN〜 JOIN〜 JOIN JO〜〜I〜〜〜N〜〜
911NAME IS NULL:04/09/03 11:41 ID:VK13PyJP
4.0.20で
select *
from hoge
left join (select id,sum(price) from auau) as tbl on
hoge.id = tbl.id

というSQLはNG?
回避策ってあります?
912NAME IS NULL:04/09/03 12:47 ID:???
>>908
where句で使うカラムと、order byで使うカラムは、
複合でindex貼らないとたぶんダメ。


ってか、ひとまず

クエリーの先頭に explain をつけて実行した結果を貼って。
913NAME IS NULL:04/09/03 14:42 ID:???
MySQL のバージョンを知る SQL はありませんか?

PostgreSQL なら template1 に接続して select version(); ですが、
その MySQL 版を知りたいのです。
914NAME IS NULL:04/09/03 15:35 ID:???
>>913
SELECT VERSION();
915NAME IS NULL:04/09/03 22:19 ID:???
>>912
かかってる秒数を見るに、tabとwordsの積が作られているような気が。
その後で word=? が実行されてるんじゃなかろうかと。

……EXPLAINの結果が見たいのは同意。
916NAME IS NULL:04/09/03 22:20 ID:???
>>911
temporary tableを作るのはだめ?
917NAME IS NULL:04/09/05 23:24 ID:hb0Cr7N1
4.1がついにガンマになった。(4.1.4)
使ってる人いる?
918NAME IS NULL:04/09/07 10:27 ID:/gZ/pCEf
厨な質問だとは思いますがご容赦ください。
MySQLで簡単な住所録を作ったのですが、名前順にソートさせることができません。
テーブル hoge
ID name kana address tel
0 山田太郎 ヤマダ タロウ 東京都特許許可局 03-xxxx-xxxx
1 名無し吾郎 ナナシ ゴロウ 神奈川県湘南の海 045-xxx-xxxx
みたいなテーブルで、
SELECT * FROM hoge ORDER BY kana でやっても正しい50音順になりません。
このような場合はどうすれば良いでしょうか?お願いいたします。
919NAME IS NULL:04/09/07 14:20 ID:???
>>918
取り合えず[テーブルに指定してる/MySQLサーバ]の文字コードが適正かチェック。
920NAME IS NULL:04/09/07 15:24 ID:hCs48S/D
10万件ほど入っているテーブルにinsertするときに1秒強かかってしまう場合があります。

selectの場合に時間がかかるならインデックスを作成することで対応すると思いますが、
insertなどの場合はどのようにしたら速くなるのでしょうか?
921NAME IS NULL:04/09/07 15:49 ID:???
>>920
インデックスをなくす。
922NAME IS NULL:04/09/07 16:38 ID:hCs48S/D
>>921
ああ。そうか。インデックスを無くせばいいんだ。
ありがとうございます。

でもそしたらselectが遅くなりますね。
でもそれしか方法はないか(>_<)
923NAME IS NULL:04/09/07 16:45 ID:???
どんなテーブルなんだ?
100万件でインデックスも色々貼ってるInnoDBでも1秒もかからなかったよ。
924NAME IS NULL:04/09/07 19:02 ID:???
>>918
binary指定する。
925NAME IS NULL:04/09/08 00:26 ID:h24j4m6B
>>923
そうなんですか。1秒かからないんだ。
使ってるマシンはそんなに非力じゃないのにな(>_<)。celeron2G、mem512M。非力?
何が悪いんだろう?
926867:04/09/08 04:43 ID:???
>>868
2週間もレスが遅れてしまってすみません、そして回答ありがとうございます。
カラムが横ではなく縦に伸びていく云々というのが、非常に勉強になりました。
その所属テーブルを使うやり方でやってみようと思います。
927NAME IS NULL:04/09/08 04:49 ID:???
>>925
連続してたくさん追加したい時は追加前にインデックスを消して、
まとまった追加が終わってから貼り直す。
928NAME IS NULL:04/09/08 04:53 ID:???
>>925
多分テーブル設計が果てしなく腐ってる
どんなテーブルなのか晒せ。話はそれからだ
929NAME IS NULL:04/09/08 16:56 ID:86JnOwfE
mysql-4.1.4-gamma-win
ActivePerl-5.8.4.810-MSWin32-x86.msi(モジュールにはDBI、DBD-MYSQLを使用)
windows2000sp4

を使って、perlからmysqlに接続しようとして

$dsn="DBI:$sql{'driver'}:$sql{'database'}:$sql{'host'}";
$db = DBI->connect($dsn, $sql{'user'}, $sql{'passwd'});

とやってみたのですが

failed: Client does not support authentication protocol
requested by server; consider upgrading MySQL client

と出てしまいます。
色々調べると
http://66.102.7.104/search?q=cache:K0QqJeUSSmYJ:dev.mysql.com/doc/mysql/ja/Old_client.html+authentication+protocol%E3%80%80mysql&hl=ja&lr=lang_ja
と書いているのですが
mysqld --old-passwords
mysql --old-passwords
この二つで起動させてみて試しても結果は同じです。

ここは確認したのか?などのアドバイスいただけると幸いです。
よろしくお願いします。
930NAME IS NULL:04/09/08 17:01 ID:???
ガンマ使ってんだから自分で解決しろと苦言を呈してみるテスト
931NAME IS NULL:04/09/08 17:09 ID:???
と思ったが今後の自分のためもリンク先を読んでみたが・・・
答え書いてあんじゃん。
mysqld --old-passwords
した上でパスワード再設定しなきゃいけないんじゃないの?

環境がないからテストできないけどどうよ>>929
932NAME IS NULL:04/09/08 17:18 ID:???
デジャヴ。
933929:04/09/08 17:38 ID:???
>>931
・・・私の見落としでした。本当につまらないことでお手間お掛けしましてすいませんでした。

接続成功しました。
ガンマにしたのはどうしても副問合わせ機能が欲しかったからです。
934NAME IS NULL:04/09/09 19:03 ID:rmFC/2yU
あるテーブルと同じ構成のテーブルで名前を変えて作成したいのですが、どのようにしたらよいでしょうか?

descで構成を見て手で打つしかないでしょうか?
935NAME IS NULL:04/09/09 19:07 ID:???
>>934
CREATE TABLE new_tbl SELECT * FROM orig_tbl;
もしくは
CREATE TABLE new_tbl LIKE orig_tbl;

http://dev.mysql.com/doc/mysql/ja/CREATE_TABLE.html
936NAME IS NULL:04/09/09 19:26 ID:7IZplDLO
>>933
え?副問合わせついたの?いつから?
937NAME IS NULL:04/09/09 19:45 ID:???
>>副問い合わせ
4.1.0から
938NAME IS NULL:04/09/09 20:39 ID:???
CREATE TABLE new_tbl LIKE orig_tbl
が使えないバージョンでテーブル内のデータをコピーしたくないなら、
CREATE TABLE new_tbl SELECT * FROM orig_tbl WHERE 1=0;
という手もあるっぽい。
939NAME IS NULL:04/09/10 00:07 ID:???
データごといれてtruncateするとか
時間の無駄だけど
940NAME IS NULL:04/09/10 10:15 ID:5SZ4GfUz
>>935,938,939
ありがとうございます。
LIKEが使えず(MySQL3)、where 1=0 を使ってやる方法で行おうと思います。
ありがとうございます。

それにしても、where 1=0 というのはさすがに思い浮かばないですね(+_+)
勉強になりました。
941NAME IS NULL:04/09/10 13:13 ID:57HZlsAk
win2000sp4の環境でmysqlのgamma版-最新版をインストールして
mysqlサービスが開始していることを確認して、
\mysql\binで、mysqladmin create databaseとやっても
ローカルホストにつなげないというエラーがでてしまいます。
いろいろなページを検索しても、インストールの次にwinmysqladminを使うページや
使わないページなどがあり、混乱しています。
何がいけないのでしょうか?ご教授いただけたら幸いです。
942NAME IS NULL:04/09/10 13:34 ID:N09ASFq1
InnoDBのデータファイルなのですが、
データ件数を減らしても、ファイルサイズは減らないようです。
稼動したまま、このデータファイル(ibdata1)のサイズを、
減らすことは可能でしょうか?
可能な場合、その方法を教えてください。

マニュアルの該当ページでもいいです。
よろしくお願いします。
943NAME IS NULL:04/09/10 16:04:46 ID:???
>>941
aaaっていうdatabaseを作るとき、
> mysqladmin -u ユーザー名 -p create aaa
PASS: *******
でいいはず。

ログインしてから、
mysql> create database aaa;
でもいいが。
944NAME IS NULL:04/09/10 16:42:50 ID:???
>941
>ローカルホストにつなげないというエラーがでてしまいます。
自分で要約しないでコピペを貼りましょう
FAQクサいのでそうすればすぐに答えが出そうでふ
945NAME IS NULL:04/09/10 17:30:54 ID:???
>>942
InnoDBはそういうもんだ。InnoDBのサイトとか
MySQL的なこと(ファイルサイズの縮小等)なら
書籍「実践MySQL4」のメンテナンス関係なども参照。
946NAME IS NULL:04/09/12 02:45:15 ID:???
質問です。
4.1を業務で使っている方はいらっしゃいませんか?現在の安定度は
どうでしょうか?

実は、4.1をやや大規模なシステムに採用することを検討しています。
サブクエリが使えるので4.0よりSQLが書きやすくなり、また(必要な場合)
他のDBへの移行もしやすくなると考えたのです。システムが完成するまで
には正式版がリリースされるのではないかとも思っています。

4.1について、皆さんはどのようにお考えでしょうか?どうかお教え下さい。
947NAME IS NULL:04/09/12 09:13:35 ID:???
4.1.4を試してみようと思ってFreeBSD4.10のPortsでmakeしてみたら
md5.cでsyntax error出まくってmake失敗。シクシク。
948NAME IS NULL:04/09/12 21:07:55 ID:???
過去の経験からすると、ガンマ=リリース候補に近い感じだった気がするので、
いいんじゃないですか。

4.1から変わっている部分が多いので(文字エンコディングの扱いとか、パスワードとか)
今から新規に使うのなら4.1.xにしておいたほうが良いかもしれない。
(4.0.xからの移行は、MySQLの割にはちょっと面倒だし)
949NAME IS NULL:04/09/12 22:07:27 ID:???
厨房な質問で申し訳ない

WinXP SP1にインストールしようとしたら
「ファイル C:\mysql-4.0.16-win\SETUP.EXE(または必要なファイル)が見つかりません。
パス及びファイル名が正しいか、必要なライブラリがすべて使用可能かどうか、確認してください」

というメッセージが出ました。
ファイル、パスは正しいのですが、
必要なライブラリとはどういうことですか?
950946:04/09/12 22:12:22 ID:4+n+nB7W
>>948
ありがとうございます。逆に言えば、4.0で構築したシステムの4.1への移行は
なかなか困難なのですね。

実は、すでに部分的に4.0で構築を始めてしまっています。それらは4.1では
そのままでは動かないのですね…。

既存のコードが動くことを取るか、今後の開発効率を取るか、悩ましいところ
です。
951949:04/09/12 23:12:45 ID:???
>>949
ぐぐったら対応策分かりました。
スレ汚しスマソ
952NAME IS NULL:04/09/13 00:11:58 ID:???
>>950
いいんじゃない?4.0で。自分としては市場での
4.0→4.1への移行は結構掛かると思ってる。
接続ライブラリの互換性の問題で。
953NAME IS NULL:04/09/13 11:25:23 ID:fbc7TE9H
>>952
ありがとうございます。
私はサブクエリに馴染んでいるので、できるなら4.1を使いたかったのですが、
接続などに問題があるのですね。うーん。

しかし、パフォーマンスをあげるためにヒープに一時テーブルを作ったりしたら
他のDBとの互換性がまったくなくなるからなあ…。

接続部分をどこか一箇所でまとめて定義しているアプリケーションなら、
4.0 -> 4.1 への移行は比較的容易に行えないでしょうか?
954NAME IS NULL:04/09/13 11:46:48 ID:???
MySQLの質問ではないのですが。
MySQLのGUI管理クライアント(MySQL CCとかかねやんとか)で
Unicodeに対応したものはありますでしょうか?

Navicatが対応していますが、フリーウェアでは無いでしょうか?
955NAME IS NULL:04/09/13 12:41:52 ID:???
>>953
他のDBとの互換性を考えている時点で、
もう4.1の接続性なんて問題は関係ないのでは?
956NAME IS NULL:04/09/13 12:46:07 ID:???
>>953
互換性を問題にしている以上、4.1の接続性なんてのは小さな問題だよね。

どっちに主眼があるわけ、互換性と接続性。
それによって4.0でやるか、4.1でやるか決まるんじゃないの。
957NAME IS NULL:04/09/13 13:59:20 ID:fbc7TE9H
>>955-956
ありがとうございます。
私自身は互換性を重視していますが、プロジェクトのメンバ全体では意思の統一は
なされていません。引き続き検討します。

いろいろありがとうございました。
958952:04/09/13 17:09:00 ID:???
市場での浸透性には巷にばら撒かれてるクライアントライブラリの対応が
関わってくるってだけで、自分ところのことだけ考えれば良いような
(MySQL C/Sの範囲で)閉じたシステムならば、さくっとライブラリを
対応するものに置換すれば良いだけです。下位互換性は残ってますし、
問題になることは少ないでしょう。
959946:04/09/13 20:35:54 ID:???
>>958
ありがとうございます。
おかげさまで 4.1 の推進の決意が固まりました。
部内でも 4.1 を試験的に導入することで、意見がまとまりました。

お世話になりました。
960270:04/09/13 21:22:05 ID:???
何度もすみませんが、また質問させてください。

MySQL の 4.0 系と 4.1 系を 1台のマシンで共存させられるのでしょうか?
サーバOS は Windows2000 です。
961946:04/09/13 21:22:57 ID:???
すみません。上の270 は 私です。他板の番号が出てしまいました。
962NAME IS NULL:04/09/13 21:52:27 ID:???
>>953
クライアントはそんなに気にしなくても大丈夫、な気がする。
少なくとも、古いクライアントから繋げない、ということはなかったんじゃないかな?(未確認)
ただ、パスワードの形式が変わっているので、その辺りは気をつけないといけないけど。
(old-passwdを使わないといけない)

テーブルについては、charとかvarcharの扱いが変わったので、
(バイト数じゃなくて文字数になった)
そのあたりにどの程度依存してるかによる。
日本語はtextで長さを気にせずつっこむよ、というコードばかりなら
(僕はそういうのが多い)
あまり困らない、かも。
963NAME IS NULL:04/09/13 21:53:16 ID:???
>>960
配置ディレクトリとポート番号を変えれば不可能じゃない。
ただし、

1. 設定ファイル(my.ini, my.cnf)は共有されるので、4.0と4.1で起動オプションを変えたい
場合にはプロセス起動時にコマンドラインオプションを指定する必要がある
2. Windowsのサービスとして登録した場合にサービス名(MySql)が重複するので、片方を
レジストリいじって変更するか、サービスとして登録しない(別の方法で起動する)ようにする
3. クライアントからの接続時、(標準でない方は)ポート番号を明示的に指定する必要がある

てな感じで結構面倒なので、素直に複数のマシンに分けたほうがいいと思う。
964963:04/09/13 21:55:19 ID:???
ごめん、訂正。

>>963
> 1. 設定ファイル(my.ini, my.cnf)は共有されるので、4.0と4.1で起動オプションを変えたい
> 場合にはプロセス起動時にコマンドラインオプションを指定する必要がある

my.ini (my.cnf)に [mysqld-4.0] みたいなセクション名を指定すれば、1つの設定ファイルで
それぞれのオプションを指定可能だった。
965NAME IS NULL:04/09/13 22:07:42 ID:???
>>960
インストーラでぶちこんだ場合は無理。手動で入れれば可能。
マニュアルの「複数のMySQLを動かす」云々の項目を参照。
勿論DBを共通に使える訳ではありませんよ。
966946:04/09/13 22:09:13 ID:???
>>962-964
大変、勉強になりました。ありがとうございました。
967946:04/09/13 22:12:02 ID:???
>>965
すみません、リロードし忘れました。
http://dev.mysql.com/doc/mysql/ja/Multiple_servers.html
これですね。ありがとうございました。
968NAME IS NULL:04/09/14 08:32:17 ID:???
質問です。
REVOKE ALLではGRANT権限の剥奪はできませんが、
GRANT OPTIONは

REVOKE ALL, GRANT ON …

のように、列挙できないのでしょうか。
969NAME IS NULL:04/09/14 09:30:43 ID:???
>>968
4.1.2以降ならそんな感じで全権限を剥奪可能。
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
4.1.2より前のバージョンでは、ALLとGRANT OPTIONの2回に分けてREVOKEする必要がある。
REVOKE ALL PRIVILEGES ON *.* FROM user [, user] ...
REVOKE GRANT OPTION ON *.* FROM user [, user] ...

http://dev.mysql.com/doc/mysql/en/GRANT.html
970968:04/09/14 16:50:29 ID:???
>>969
ありがとうございます。
4.0.20ですので、2回に分けることにします。
971NAME IS NULL:04/09/15 01:53:29 ID:c6myJgX5
4.0.21から4.1.4-gammaに変えてみました。
テーブル名に日本語使ってたら見事に全部化けるようになりました。
しかたないのでmysqldumpしたヤツからデータベース作り直したのですが
テーブル名がやはり一部化けます。(「者」という字が化けるみたい)
4.0から4.1のところでエンコーディングの設定の仕方が変わったのでしょうか?

972NAME IS NULL:04/09/15 05:52:38 ID:SsTXT8DJ
質問です

http://dev.mysql.com/doc/mysql/ja/GRANT.html

>注意: GRANT コマンドでデータベース名を指定する際、`_' および `%' ワイルドカードを使用できます。
>データベース名の一部として、たとえば `_' 文字を使用したい場合、GRANT コマンドでは
> GRANT ... ON `foo\_bar`.* TO ... などのように、`\_' として指定するようしてください。
>そうしないと、ワイルドカードパターンに一致する別のデータベースにもユーザがアクセスできるようになります。

とありますが、foo_barデータベースに対してtestuserに権限を与えるため

GRANT SELECT ON 'foo\_bar'.* TO testuser@localhost;

を発行したところ、下記のエラーとなります

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 ''foo\_bar'.* TO testuser@localhost' at line 1

何が原因でしょうか
MySQLのバージョンは4.0.2です
基本的な質問で申し訳ありません
973972:04/09/15 05:59:00 ID:???
すいません。自分の書き込みを見て気付きました

' ではなく ` で括るんですね

お恥ずかしい・・・
974NAME IS NULL:04/09/15 19:04:40 ID:???
MYSQLに直で入れてる画像を表示させる時
サイズ変更するにはどうすれば・・・・。
getimageでWarning発生・・・。

DBに縦横サイズ格納してない場合です。
975974:04/09/15 19:44:39 ID:???
すいません。板違いですた。
976971:04/09/15 23:23:20 ID:c6myJgX5
自己レスです。
4.1からテーブル名もutfでつけるようになったんですね。
テーブル名=ファイル名なんでutfでつくろうとするけどWindows側のファイル名はsjis。
無理やりutfでファイルを作るんで一部の文字が化けるみたいです。
カラム名はともかくとしてテーブル名に日本語使うのはやっぱりやめたほうがいいようですね。
977NAME IS NULL:04/09/16 01:38:43 ID:???
>>976
個人的には「テーブル名=ファイル名」の部分の作りはオカシイと思うけどね。
日本語や文字コードがどうのこうのじゃなくて、ファイルシステムの
制限がテーブル名に影響するって点がね。UnixとWinでの大文字小文字違い然り。
978971:04/09/16 08:20:44 ID:???
>>977
うん、漏れもそう思う。
979NAME IS NULL:04/09/16 09:48:05 ID:b2eo1p8i
当たり前かもしれませんが、INDEXをつけていてもシステム起動後、
1発目のアクセスがかなり遅いです(数十万レコードのテーブル)。

2回目はメモリ上にあるのか、通常どおり爆速です。
しかし、相当時間ほっとくとメモリから消えるのかまた遅くなります。

とりあえず今はcronで定期的にselectするようにして対応しているのですが、
常にINDEXをメモリ上に置いておくような事を指定することは出来ますか?
(MySQL3)
980NAME IS NULL:04/09/16 10:24:34 ID:???
>>979
"メモリにおけ"とか指定はできない。
だから、少なくとも1発目が遅いのはしかたない。

ただ、時間がたつとメモリから消えるってのはkey_bufferが小さいから。
key_buffer_sizeを可能な限りでかくするとよい。
すくなくとも通常使うインデックステーブルの合計サイズよりも大きく。
物理的に無理ならcronしかないんじゃない?
981NAME IS NULL:04/09/16 19:40:15 ID:b2eo1p8i
>>980
ありがとうございます。そうなんですね。
key_buffer_sizeはもうメモリと相談しながら結構上げてしまっているので、
cronでこれからも対処します。ありがとうございました。
982NAME IS NULL
>>981
SolarisとかAIXとかなら高そうだけど
PCアーキテクチャならメモリ安くない?