1 :
名無しさん@お腹いっぱい。 :
02/01/22 16:08 ID:kMbsTQE3 リモートから家(常時接続)のmysqlサーバにつなげません 状況を詳しく書きます PHPが動くプロバイダーのディレクトリにおいた自分の家の mysqlサーバを操作するPHPに $db = mysql_connect("mysqlサーバのip:3306","ゆーざ","ぱす"); と書いたのですが、駄目でした。 どうすればいいのでしょうか?
で、エラーメッセージは?
3 :
名無しさん@お腹いっぱい。 :02/01/22 16:15 ID:kMbsTQE3
Warning: Can't connect to MySQL server on '場所 Warning: MySQL Connection Failed: Can't connect to MySQL server on '場所' エラーじゃないんですが はっきりつなげないと出てしまって・・
リモートにDBサーバを置いて つーのはやったことないからよくわからんが、 他の手段でそのリモートにあるmysqlサーバを使うのはできるの?
当然家のサーバーはポート開いてるよな?
MySQLはちょろっとしかやったことないがアクセス制限とかかかってないの?
7 :
4 :02/01/22 16:25 ID:???
>5 そういうことが言いたかった。 ウツダ。
8 :
名無しさん@お腹いっぱい。 :02/01/22 16:26 ID:kMbsTQE3
そのDBサーバーは自宅のPCにインストールしてあるので、 もちろんローカルにおいたPHPからは操作できます。 でもそのMYSQLサーバーのローカルIPアドレスを PHPのmysql_connect関数にかいて、外のプロバイダーに おいても接続できないと出てしまいます。ポートは デフォルトでは3306ですよね・・ どうすればいいん でしょうか。
すいません、ネタにマジレスしようとしていた私は爆死いたします。
10 :
4 :02/01/22 16:32 ID:???
11 :
名無しさん@お腹いっぱい。 :02/01/22 16:33 ID:kMbsTQE3
5> 6> 家のポートというのは、要するにMYSQLを起動しているという 事ですか? アクセス制限はROOTでアクセスしてDBに入ろうと思ってるので、 大丈夫だと思いますが・・・
さて
まず
>>1 の接続している環境を考えてみよう。
ずっと接続されていると仮定して。
なんで外から中に接続できないのか。
やっぱり考えていただこうではないか。
めんどうかもしれないがネット接続関係の専門書をお勧めする。
13 :
4 :02/01/22 16:57 ID:???
>11 家のポートというのは、要するにMYSQLを起動しているという事 違う。
14 :
名無しさん@お腹いっぱい。 :02/01/22 16:58 ID:kMbsTQE3
すいません 分かりません あのmysql_connect関数の引数のIPはMYSQLのenvironmentの LOCALIPADRRESSというところの194.22.〜.〜でいいんですよね。 後、逆にどうやったら、プロバイダーにおいたPHPから 家のDBを操作できるようにできるんでしょうか?
16 :
名無しさん@お腹いっぱい。 :02/01/22 17:05 ID:kMbsTQE3
13>ポートを開くというのは具体的にどうすれば よいのですか?
17 :
4 :02/01/22 17:09 ID:???
>16 OSによります。
18 :
名無しさん@お腹いっぱい。 :02/01/22 17:16 ID:kMbsTQE3
>17 家のOSはウィン2000です。 プロバイダーのサーバはおそらくリナックスだと思います もちろんMYSQLはconfigでwith-mysqlでついてました。
19 :
4 :02/01/22 17:24 ID:???
20 :
名無しさん@お腹いっぱい。 :02/01/22 17:29 ID:kMbsTQE3
19>わかりました。 関数使ってIP指定したら簡単にDBを操作できると 思ったんですが、そうは問屋がおろさないみたいですね。 まだまだハードルがありそうだ・・・
IPが。。。以下略
ポートが。。。以下略
23 :
4 :02/01/22 17:48 ID:???
>20 このスレでは全てを語り尽くせません。 パッシュシュビドゥバー♪ 頑張れ。
24 :
名無しさん@お腹いっぱい。 :02/01/22 18:03 ID:kMbsTQE3
ところで何の本を読めばいいんでしょうか? サーバー構築の本でしょうか? プロバイダーのサーバはいじれないから、家のサーバーっていうか PCか。それとmysqlサーバーの設定かな。
25 :
4 :02/01/22 18:16 ID:???
26 :
名無しさん@お腹いっぱい。 :02/01/22 18:32 ID:kMbsTQE3
25>やっぱりローカルとは違うんですね 見たらめまいがしてきましたよ。 ローカルならPHPにmysql_connect(localhost,root)で簡単に 操作できたんですけど ネットワークにサーバか・・
27 :
4 :02/01/22 18:43 ID:???
誰もが一度は通る道さ。
そして俺も通った道さ
mysql.userは?
インストールだけして起動していない。
チェックリスト
1・MySQLの該当ユーザーのアクセス権限がどうなっているか。
外からアクセスできるように設定されているのか
2・ローカル(家)のルータ|FWはport 3306をmysqlサーバーに通すようになっているか。
3・リモートのサーバーから外部のport 3306に接続することはできるのか。
エラーメッセージからは
>>5-6 のいうとおり 2,3っぽいね。
3を確認するためには
>>4 のいうとおり、他のmysqlサーバーにあたってみよう。
2を確認するためには外部から telnet TARGETHOST 3306してみよう。
最近MySQLの勉強を始めたのですが、ユーザー権限の設定で行き詰まってしま いました。周りに質問できる人もいないし、どなたか私を助けてくれませんか? やりたいこと 下のような権限を持つユーザーを作る 1.テーブルは自由に作成、削除できる 2.他人の作ったテーブルは見れない、消せない 3.データベースの作成、削除はできない こんな感じで意図は伝わりましたか?もう頼るところが無いんです...、 よろしくお願いします。
>>32 1.グローバルな権限は全部Nにしてユーザを追加(3.に対応)
2.データベースをつくって、テーブルをつくりたいユーザーに
CREATEをGRANTする。(1に対応)
3.テーブルを作るときに、テーブルをつくったユーザーに
すべてをGRANT。それ以外には権限をあたえない。(2に対応)
って感じじゃない?たぶん。
あ。 1=グローバルの権限 2=データベースの権限 3=テーブルの権限です。
35 :
32 :02/02/14 23:57 ID:???
>>33 しょしんしゃさん、お返事ありがとうございます。
> 3.テーブルを作るときに、テーブルをつくったユーザーに
> すべてをGRANT。それ以外には権限をあたえない。(2に対応)
この作業はテーブル作成時に管理者さんがしないとダメですよね?
ユーザー自身が自由にテーブル作成・削除はできるけど、他人の作った
テーブルには一切アクセスできない、というようなことができればなぁ、
と思ってたのです。やっぱり無理なのかな?ふぅ。
となると、ユーザー毎にデータベースを作るのが現実的なのかな?
36 :
nobodyさん :02/07/05 13:21 ID:sTJoXJtl
質問です。 分散データベースの研究をしております。 同じテーブル定義のテーブルを分散しているのですが、 その分散したテーブルを一つのテーブルにしたいのですが、 なにか方法はありませんか?
38 :
nobodyさん :02/07/08 18:54 ID:lARTVJ7d
mySQLがWindowsNT上でローカルホストとして 接続できません。 コマンドプロンプトの画面で、 「net start mysql」と入力しても、 途中でエラー:1067が発生し、 中断します。 コントロールパネルの「サービス」からも 同様の結果になります。 なぜでしょうか?
39 :
クラさん :02/07/24 12:45 ID:tjNyt0k2
MySQLmax-3.23.51-winをWin2000proにテスト的に導入しています。 WinMySQLadminからサーバーのコントロールは出来ますが VariablesやProcess、Database、Reportなどの情報が WinMySQLadminでは取得できません。 その他、DOS窓やクライアントプログラムから接続は出来て 特に支障ないです。再インストールしてみたりもしたのですが 状況が変わりません。わかる方いらっしゃるでしょうか?
40 :
nobodyさん :02/08/23 00:39 ID:rUynFkaj
MySQL 3.23とMySQL Max 3.23 何がちがうの?
41 :
nobodyさん :02/08/23 15:44 ID:BcNB4bej
>> 40 Maxと付く方はトランザクションをサポートしている
42 :
nobodyさん :02/09/02 00:40 ID:dngEI4Fe
>>38 スタンドアロンならうまく逝くんでない?
それと深いdirに置いてない?
c:\mysql なんかに置いてみれ!
43 :
nobodyさん :02/09/03 08:03 ID:fHvwXYyd
先日よりMySQLの勉強を始めました。 tinyint=1byte smallint=2byteと思っていたのですが、 show tableすると、Typeに tinyint(3) と表示されます。これは3バイトってことですよね? 1バイトの大きさのカラムを作るにはどうすればいいのですか?
えっと、僕はWindows2000でApache+MyAQL使ってますけど、ダウンローダーや 巡回ソフトなんかで集中的なアクセス食らってもサービス落ちしないような 設定を考えてみたんですが、こうでいいでしょうか? [client] #password=my_password #port=xxxx port=3306 #socket=MySQL [mysqld] port=3306 #socket=MySQL skip-locking #default-character-set=sjis set-variable = key_buffer=64M set-variable = max_allowed_packet=4M set-variable = thread_stack=512K set-variable = flush_time=1800 set-variable = table_cache=256 set-variable = sort_buffer=1M set-variable = record_buffer=1M #set-variable = long_query_time=1 basedir = D:/MYSQL/ datadir = D:/MYSQL/DATA/ <<本文が長かったり改行が多いと板に怒られるから次のレスへ続く>>
<<
>>44 からのつづき>>
#innodb_data_file_path = ibdata1:200M
#innodb_data_home_dir = C:\ibdata
#set-variable = innodb_mirrored_log_groups=1
#innodb_log_group_home_dir = C:\iblogs
#set-variable = innodb_log_files_in_group=3
#set-variable = innodb_log_file_size=30M
#set-variable = innodb_log_buffer_size=8M
#innodb_flush_log_at_trx_commit=1
#innodb_log_arch_dir = C:\iblogs
#innodb_log_archive=0
#set-variable = innodb_buffer_pool_size=80M
#set-variable=lower_case_table_names =0
#set-variable = innodb_additional_mem_pool_size=10M
#set-variable = innodb_file_io_threads=4
#set-variable = innodb_lock_wait_timeout=50
<<本文が長かったり改行が多いと板に怒られるから次のレスへ続く>>
<<
>>45 からのつづき>>
language=D:/MYSQL/SHARE/JAPANESE
tmpdir=D:/DOCUMENTS AND SETTINGS/ADMINISTRATOR/LOCAL SETTINGS/TEMP
[mysqldump]
quick
set-variable = max_allowed_packet=16M
#default-character-set=EUC-JP
[mysql]
no-auto-rehash
#default-character-set=EUC-JP
[isamchk]
set-variable= key=16M
[client_fltk]
help_file= D:\MYSQL\SQL_CLIENT\MYSQL.HELP
client_file= D:\MYSQL\MYSQL.OPTIONS
history_length=20
database = test
queries_root= D:\MYSQL\QUERIES
last_database_file= D:\MYSQL\LASTDB
[WinMySQLAdmin]
Server=D:/MYSQL/BIN/MYSQLD-MAX-NT.EXE
user=ないしょ
password=ひみつ
自信がないので、「これならほぼ大丈夫だぜ!」っていう設定があれば
教えてください。おながいします。
ホッシュアゲロゲーロ
48 :
nobodyさん :02/09/17 02:37 ID:p6Xmi4dv
>43 >tinyint(3) それは文字数とおもわれ。
49 :
nobodyさん :02/10/07 21:53 ID:m57T57IB
JDBCドライバを使ってMySQLの日本語名DB(「テスト」など)に アクセスする場合どうしたらいいのでしょうか。
50 :
nobodyさん :02/10/13 02:41 ID:NZn49T9i
すんません便乗なんですが redhat7.3にrpmでmysqlインストールして mysql -u root set password for root=('設定するパスワード'); flush privileges; で最後のとこで ERROR 1045 Access denied for user: '@localhost' (Using password: NO) ってでてつまってます。 なんか他のユーザー作成とかなにかやろうとするとすぐ同じエラーがでてきちゃう んですけど、だれかたすけて〜
SELECT で対象を あるデータベース内の全てのテーブルにしたいのですが、 どのように SQL を書けばよいのでしょうか?
数値の合計とか平均とか出したい場合、CGIで計算して表示するのとsqlで計算して表示するのどちらがいいのでしょ?
55 :
nobodyさん :03/01/01 02:13 ID:g22yKLaX
Windows版のMySQL-MAXの公開やめちゃったの?
56 :
nobodyさん :03/01/01 19:19 ID:pXgJfOxP
当方,テキスト形式のデータをperlで整形して,
perl scripからmysqlに読み込ませてきましたが,
新しいMySQLのバイナリー配布版で,"LOAD
DATA INFILE"が利用できなくて,困っており
ます。
ttp://www.mysql.com/doc/en/LOAD_DATA_LOCAL.html これまでは,perl scriptから一度に複数のテキストファイルをmysqlに読み込ませました。
foreach ("load data infile 'list.txt' into table list", "load data infile 'lemmafe.txt' into table lemmafe"){
$out2 = $dbh->prepare("$_");
$out2->execute;
}
現在は,この作業をterminalから
mysql -u hogehoe -p --local-infile=1
とmysql clientを立ち上げて,手作業でtext
データを読み込ませています。
sourceファイルからmysqlをコンパイルすれば,
問題は解決できるようですが,コンパイルには
自信がありません。
local-infile=1でコンパイルしたosx用のバイナリ
ーファイルを配布しているサイトはありません
でしょうか?
57 :
nobodyさん :03/01/01 19:38 ID:g22yKLaX
58 :
nobodyさん :03/01/01 19:42 ID:g22yKLaX
Ver3.23.49からデフォルトでLOAD FILE LOCAL文が使用できなくなっている。 もしphpMyAdminでCSVファイルのアップロード等を行う必要がある場合、 「--with-local-infile」オプションをつけるか、 mysqlコマンドで「--local-infile=1」というオプションをつけて実行することで有効になる。
59 :
nobodyさん :03/01/01 19:45 ID:g22yKLaX
60 :
ID:g22yKLaX@59 :03/01/01 19:47 ID:g22yKLaX
すまそ、59のURLはブラウザにコピペしないと適切な箇所にジャンプしません。
61 :
56 :03/01/01 21:52 ID:pXgJfOxP
> mysqlコマンドで「--local-infile=1」というオプションを >つけて実行することで有効になる。 mysqlサーバを立ち上げるときに,--local-infile=1を次のように 入れても,無効でした(osx) /Volumes/mysql/mysqlNew/bin/safe_mysqld --user=mysql --local-infile=1 & mysqlのソースをコンパイルするときに,local-infile=1を指定しないと, サーバーでは有効にならないのでしょうか?
62 :
nobodyさん :03/01/06 00:49 ID:YMUOqc9Y
auto_incrementとprimary keyを設定しているフィールドのあるテーブルで、
2つのレコードを入れ替えたいのですが
例)
num,site__,url
_10,2ch___,
http://2ch.net/ _22,Google,
http://google.com/ ↓
num,site__,url
_10,Google,
http://google.com/ _22,2ch___,
http://2ch.net/ こんなことできますか?
それとも手作業的にupdateしないとダメ?
63 :
山崎渉 :03/01/15 13:36 ID:???
(^^)
64 :
nobodyさん :03/02/28 17:53 ID:XIiZ4aB7
hogeと言うデータベースがあるとします。 このデータベース「hoge」にはMySQLのユーザ「root」でしかアクセス出来ないようにするにはどうしたら良いでしょうか。 逆に、「foo」と言うユーザーは「boo」と言うデータベースにしか接続できない様にするにはどうすれば良いのでしょうか。 よろしくお願いします。
65 :
nobodyさん :03/03/11 13:25 ID:pS3CSiOr
>>64 かねやんMySQLAdminってソフト使ってみたらどうでしょう。
質問させて下さい。
$sth->fetchall_arrayref();で
NAMEやTYPEを取得したいのですがどうすればいいですか?
$sth->fetchrow_array();なら
$names=$sth->{'NAME'}とすれば
$names->[0]で取得できますが、
2回もfetchするのは、効率悪い気がします。
お願いします。
66 :
nobodyさん :03/03/12 04:14 ID:txYiwVgf
age
>>65 MySQLの質問というよりはDBIモジュールの質問ではないかな。
$sth->execute;
$name = $sth->{NAME};
$type = $sth->{TYPE};
$data = $sth->fetchall_arrayref;
これで漏れは全部のデータが取得できるんだが。
68 :
nobodyさん :03/03/12 12:18 ID:myMG93+U
>>67 ありがとうございました。
たしかにDBIモジュールの質問ですね。
ORACLEだとfetchall_arrayrefでも
$sth->{NAME}->[0]とかすれば
最初のNAMEを取得できたのに
MYSQLではエラーになったので
ここに質問してしまいました。
以後気を付けます。
69 :
nobodyさん :03/03/12 23:17 ID:PTQ2BK4j
副問い合わせが使えないからどうすればいいですか?
70 :
山崎渉 :03/03/13 16:58 ID:???
(^^)
71 :
nobodyさん :03/03/25 16:25 ID:BGwX64RN
InnoDBを導入することになりました。 けど読み方がわからないのでおしえてください。
72 :
nobodyさん :03/03/27 03:03 ID:Ya09dI5I
PHPを使って、webよりユーザー登録、ユーザー削除、権限の設定などをする スクリプトはありますか?
phpmyadmin?
74 :
山崎渉 :03/04/17 12:11 ID:???
(^^)
75 :
山崎渉 :03/04/20 06:22 ID:???
∧_∧ ( ^^ )< ぬるぽ(^^)
76 :
nobodyさん :03/05/17 17:45 ID:ghc51a2p
Unicode(UTF-8)で接続出来ませんか?
77 :
nobodyさん :03/05/17 17:55 ID:/0gIo8DK
78 :
nobodyさん :03/05/18 16:45 ID:NH4N97Dj
>76 Unicodeはあくまでも文字のコードであって、 通信の方式やツールのことじゃないから、質問意味不明ナリ データベースの文字型の扱いをUTF-8にしたいってんなら、 MySQL4あたりだと出来るはずだよ。
79 :
nobodyさん :03/05/18 16:46 ID:aNJYcTmW
リンクスタッフは登録無料!1クリック10円。
バナー紹介料として、リンクスタッフ登録の度に1000円の報酬。
掲示板などに宣伝すればクリックや紹介がある度に報酬が得られます。
登録はメールアドレスと任意のパスワードを入力すれば完了です。
メールアドレスはフリーメールでもOK!
今なら登録するだけで1000円プレゼント。
ちなみに私の先月分の収入は、1日30分ぐらいの宣伝で138340円でした。
http://accessplus.jp/staff/in.cgi?id=9140 直リンクできないのでアドレスをコピーして貼り付けてジャンプしてください。
80 :
動画直リン :03/05/18 17:08 ID:rGbr42DC
81 :
nobodyさん :03/05/19 17:16 ID:O90Qa4tT
TIMESTAMP型を使って自動的に更新日時が入るようにしたいんですが、 YYYYMMDDHHMMSSのように区切り文字なしでDBに格納されてしまいます。 DATETIME型のようにYYYY-MM-DD HH:MM:SS のフォーマットで DBに格納されるようにしたいんですが可能でしょうか?
82 :
梨 :03/05/20 23:52 ID:Y6HkOJuA
>>81 マニュアルにズバリ書いてあったよ。頭使ってもわかりそう。
ヒント: 4バイト
で、DATE_FORMATじゃだめなん?
初歩的な質問ですが、データ数が少ない場合(100とか200) テキストファイル使った方が効率良いんでしょうか。 最近は楽さを選んでみんなDB使っちゃってるんですが、 無駄にサーバーに負担かけてるかな?
84 :
梨 :03/05/21 16:21 ID:AbGSjTDt
>>83 何をするかによるんでないかい?
「データ数」の定義も微妙だし。
行数が200程度しかないフラットな掲示板のログファイル1つのために
DB使うのはやりすぎって気もするけど、
書き込みが多いからロックファイル作って云々考えるとどっこいかも。
漏れは基本的にMySQLかな。
いろんなサーバに入れる場合は、ファイルで管理する事が多い。
85 :
山崎渉 :03/05/22 01:57 ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
86 :
81 :03/05/22 11:01 ID:rjjMwksk
>>82 レスありがとうございます。
確かにマニュアルにフォーマットを指定できるようなことは書いてあるのは
読んだのですが、具体的にどのような書式で指定すればいいのかがわかりません。
4バイトだとYYMMという形式になってしまうのではないんでしょうか?
DATE_FORMATも読みましたが、私がやりたいのはCREATE TABLEで作成する際に
TIMESTAMPで何か書式が指定できるのかな、と思いまして。。。
87 :
bloom :03/05/22 11:08 ID:x2YZ4VCE
88 :
梨 :03/05/22 13:51 ID:meYOXQTH
>>86 ごめん。TIMEか何かと勘違いしていたので訂正します。
MySQLの日付型は次のフォーマットを持ちます。
a. 格納フォーマット
b. 表示フォーマット
c. (指定用の)共通フォーマット
結論から言うと、TIMESTAMPは、
aが4バイトのUNIX秒型、bがYYYYMMDDHHMMSSの桁数指定型、
cはDATEやDATETIMEと共通のフォーマットになっています。
bで指定出来るのは桁数だけなので、
表示フォーマットを指定するにはcで調整するしか無いです。
それが嫌ならば、DATETIME型を手作業で更新するという手もあります。
詳しくは「6.2.2.2 DATETIME, DATE, TIMESTAMP 型」に全部書いてあります。
http://www.mysql.gr.jp/jpdoc/3.23.x/manual.ja_Reference.html
89 :
81 :03/05/22 15:50 ID:rjjMwksk
>>88 なるほど。やはりbの表示フォーマットは変えられないんですね。
リファレンスのその部分は何度か読んだのですが、
表現的によくわからなかったので、ここで質問しました。
これでスッキリしました。DATETIME型でやってみます。
ありがとうございました。
90 :
nobodyさん :03/05/22 22:23 ID:jBpXLiPH
テーブルのカラム名にdescという名前が使用できません。 SQL> create a_table ( desc varchar(64) ); ERROR 1064: You have an error in your SQL syntax near 'a_table (desc varchar(64) )' at line 1 どうしたらいいっすか?
92 :
90 :03/05/22 22:41 ID:jBpXLiPH
>>90 descもdescrもdescriもdescribもdescirbeも使えない。
93 :
90 :03/05/22 22:47 ID:jBpXLiPH
>>91 ごめん、まちがい
mysql> create table a_table (desc varchar(64) );
>>92 descとdescribeがカラム名として使えない
DESC 、 DESCRIBE は予約語 テーブルやフィールド名として使用できないれす
95 :
90 :03/05/22 23:55 ID:???
>>94 ぐぅ、残念。「'」や「"」で囲んでもだめだった。
Oracleとは違うのね。
>>95 「`」 で囲んでみたら?
「`」は Shift+@ ね。
97 :
90 :03/05/23 09:40 ID:???
>>96 mysql> create table a_table ( `desc` varchar(64) );
Query OK, 0 rows affected (0.00 sec)
mysql> desc a_table;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| desc | varchar(64) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
1 row in set (0.00 sec)
すげー、できたよ!
めっちゃ多謝です >96
98 :
nobodyさん :03/05/23 09:53 ID:5VJPohZk
質問。 次のようなテーブルがあります。 mysql> select * from sample; +----+-------+ | id | count | +----+-------+ | 1 | 100 | | 2 | 100 | +----+-------+ ここで mysql> update sample set count=count+10 where id=1; とすると mysql> select * from sample; +----+-------+ | id | count | +----+-------+ | 1 | 110 | ← 10増えている | 2 | 100 | +----+-------+ のようになります。 このupdate文は、アトミックなんでしょうか? つまり、多人数で同時に実行しても必ず意図した 結果が保証されるんでしょうか?
100 :
nobodyさん :03/05/24 15:42 ID:+sQLJUip
ついでなんで、100age
101 :
nobodyさん :03/05/24 16:38 ID:oDSDORJV
>>99 返事がおくれたけど、ありがとう。
これで安心して眠ることができるよ。
でも、なんで弊害なの?害となることが思いあたらん。
103 :
山崎渉 :03/05/28 17:07 ID:???
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
MySQL4.0.5 、WinXP 、Apache1.3.24の環境で質問です。 以下のような二つのテーブルがあります。 テーブル名 j_table +----+-------+ | id | jusho | +----+-------+ | 1 | 新宿 | | 2 | 渋谷 | | 3 | 新宿 | | 4 | 新宿 | +----+-------+ テーブル名 k_table +----+-------+ | id | konomi | +----+-------+ | 1 | giko | | 2 | giko | | 3 | giko | | 4 | mona | +----+-------+
@gikoが好きな人は何人か? mysql> select count(*) from k_table where konomi="giko"; だと3 Agikoが好きで新宿住まいの人は何人か? mysql> select count(*) from k_table a,j_table b where a.konomi="giko" && b.jusho LIKE "%新宿%"; だと3 Bgikoが好きで渋谷住まいの人は何人か? mysql> select count(*) from k_table a,j_table b where a.konomi="giko" && b.jusho LIKE "%渋谷%"; だと3 Cgikoが好きで中野住まいの人は何人か? mysql> select count(*) from k_table a,j_table b where a.konomi="giko" && b.jusho LIKE "%中野%"; だと0 テーブルを結合させると該当する行があると、住所の条件に関係なくgiko好きが3人と出てしまうのですがこれは何故でしょうか? 該当する行が無い場合はキチンと0になるのですが・・・ 普通Aは2、Bは1になるはずなのですが、結合の仕方がまずいのでしょうか? だれかぜひ教えてください・・・おながいします!
>105 aのidとbのidはどのような関係が? countしないでどこかに出力してごらん。 SQLの基本なので良い機会なので入門書を買って味噌。
>>106 おお、そうですた。
a.id=b.idするのを忘れてますた。
なぜこんな初歩的なミスを・・・
ありがとうございました。
>107 いや言いたかったのはWHEREの条件に混ぜるんじゃなくて、 必要ならリレーション(関係)を張っては?ということ。 "外部キー"とか"JOIN"とかその辺の単語でぐぐーる。
109 :
nobodyさん :03/06/17 12:58 ID:0HXSsTQY
auto_incrementの初期値を0にする方法を教えてください。 テーブル作成時にauto_incrementをカラムに指定した場合、 初期値は1になります。この初期値を0にしたいんですが、できますか? 1以上の正整数に指定するのは、次のような方法でできました。 create table table1 ( id integer not null auto_increment, value varchar(64), primary key(id) ) auto_increment = 100; しかし100を0にしても、初期値は1にしかなりません。 auto_incrementの初期値を0にする方法があれば、 教えてください。
カラムA、カラムBが合った時に、その両方が一致する行をユニークにしたいのです。 A B aa 11 bb 11 aa 22 cc 22 aa 11 ←こいつはINSERTさせたくない イメージ的にはABの2カラムを合わせてPRIMARY KEYにしたいのです。 こういう場合はどうすればいいんでしょうか。
>>110 You can use "primary key(A, B)".
----
create table sample (
A varchar,
B integer,
primary key(A, B)
);
----
>>111 めちゃサンクス。primary key(A, B) でいけました。
#実際にはAがBLOBなのでprimary key(A(128), B) としました。
113 :
nobodyさん :03/06/18 23:51 ID:TnNRaExh
mysqlではレコードを追加したらそれに張ってあるインデックスも自動的に 追加されるのでしょうか?
追加されないDBなんてあるの?
115 :
nobodyさん :03/06/19 00:34 ID:70FTCJ+V
A,Bのテーブルがあるとします。 A ID1りんご ID3みかん ID4ぶどう B ID2メロン ID3みかん ID4ぶどう この二枚のテーブルでどちらかのテーブルに存在すればヒットする ようなselec文はどう書いたらいいのでしょうか。重複する行は、 一行のみ抜き出したいです。 こういうかんじにです。 ID1りんご ID2メロン ID3みかん ID4ぶどう よろしくお願いします。
116 :
113 :03/06/19 02:25 ID:70FTCJ+V
> 114 追加されました。確認もせずに投稿してしまいました。 すいませんでした。
117 :
nobodyさん :03/06/19 02:36 ID:tb30wkPm
118 :
nobodyさん :03/06/22 22:04 ID:xUqQ3nDm
119 :
nobodyさん :03/06/27 20:50 ID:HoNlAHtV
mysqlのインデックスファイルであるMYIを見るツールはないのでしょうか。 どんな感じでインデックスがはられているのかみたいのです。
>>119 バイナリーエディタ…
MYDとかと同じ。つかバイナリー見ても理解できんでしょ。
インデックス情報見るなら素直にSHOW INDEXコマンド。
有効にインデックスが機能しているかはEXPLAIN SELECTでチェックすれ
121 :
119 :03/06/28 17:10 ID:3aXiHYmQ
すいません、説明不足でした。 インデックスが英語のFULLTEXTインデックスなんです。 どんなワードがインデックスに入っているのか確認したかったのです。 stringsというコマンドでバイナリにはいっている文字列がみえるのが わかりましたが、MYIファイルをきれいに表示する方法はないでしょうか? ないとは思うのですが、もしあって知らなかったらとおもって聞いてしまいました。
122 :
nobodyさん :03/06/30 12:25 ID:5tKrGL8Q
123 :
nobodyさん :03/07/10 00:05 ID:yUDG6lLt
一個の項目をとある文字で分割して検索する事ってできますか? splitみたいな。 no|key| 1|a,b,c| でkeyを「,」で区切って「b」があるかどうかで検索…。 正規表現を使う事も考えましたが、できるならうれしいなっと。
124 :
無料動画直リン :03/07/10 00:14 ID:YKCrjqtm
>>123 key LIKE '%,b,%' OR key LIKE 'b,%' OR key LIKE '%,b'
126 :
125 :03/07/11 01:30 ID:???
正規表現といっているから効率は度外視。 本音を言えば「外部キーくらい正規化すれ。」
127 :
123 :03/07/11 04:21 ID:ET0riVu5
レス有難うございます。 「外部キーくらい正規化すれ。」 について勉強してきました。 こんな効率的なやり方思い浮かびませんでした。 そして、新たなる壁に当たりました…。 例えば、keyを別テーブルの置き、keyにbが含まれているものを検索した場合… 普通にヒットしますが、このとき、ヒットしたnoのそれ以外のキーをSELECT時に取得する事は出来るでしょうか? ちなみに、テーブル構成はこのような感じです。 --TableA no|省略 1 |省略 --TableB(キー) no|key| 1 |b| 1 |a| 1にはaとbが登録されているとして、bで検索した場合、それ以外の「a」も取得できるようにしたいのです。 一生懸命検索もしたんですが、どうしても分かりませんでした(T.T) 参考サイトでも良いので誰か助けてー
128 :
123 :03/07/11 08:52 ID:???
noでグループ化して登録keyの「数」を取得するとこまではいけました。(countで) が、欲しいのは中身なのれす…。
129 :
123 :03/07/11 15:18 ID:???
すみません、む板の方に移動してきます。
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
131 :
nobodyさん :03/07/31 19:38 ID:AJvCrklt
mysql3.23.55使用してます。 テーブルを作成する時にデフォルト値を設定できますが、 NOW()をデフォルトにはできないのでしょうか。 create table member( username varchar(60) NULL, createdate datetime default "NOW()" ); とし、 insert into member (username) values('AAA'); 実行しても mysql> select * from member; +----------+---------------------+ | username | createdate | +----------+---------------------+ | AAA | 0000-00-00 00:00:00 | +----------+---------------------+ となり、入力した日時が入ってくれません。 どうすれば良いのでしょうか。。
132 :
nobodyさん :03/07/31 21:57 ID:VMyHT8tg
>>131 それをやるなら createdate は TIMESTAMP型じゃないか?
134 :
131 :03/08/01 14:23 ID:???
MySQLってどうよ
http://pc2.2ch.net/test/read.cgi/tech/1008316065/642 から勝手に移動してきました。重複して見る方スマソ。
質問をコピペします。
↓ここから
GROUP化したタプルに現れるデータに条件付けするにはどうすればよいですか?
No ID 名前
--------------
2 a あほ
1 a ばか
3 a まぬけ
SELECT * FROM table GROUP BY ID
で取り出すとき、3つのタプルのどれが出てくるかを制御したいんです。
例えばNoの1番小さいやつ(1 a ばか)を取り出す、とか。
↑ここまで
よろしくです。
>>136 やっぱできないのかなあ。
自分で調べた限りではできなかったけど、調べ方が悪いのかと思って2chを頼ってみた。
>>135 が実際に必要となる場面としては、
----------------------------
UserName Date EMail Amount
----------------------------
というテーブルがあって、UserNameごとの合計金額をSUM(Amount) GROUP BY UserNameで集計しているんですけど、
その時ついでにEMailも出力しているのです。
ところが、同じUserNameでも複数のEMailが存在する場合があるんです。
その場合はDateが最新であるタプルのEMailを出力したい。
というわけだったのです(最初からこれを書いた方が分かりやすかったですね。すいません)
今は一旦UserNameを取り出して、各UserNameに対してDateが最新であるタプルのEMailを取得しているんですが
UserNameが多くなってきたので時間がかかるようになってしまいました。
何かアドバイスがあればよろしくおながいします。
>>137 これではだめ?
実際に試してないから、このままで実行できるかわからないけど、
テーブル名をlogとした場合、
CREATE TEMPORARY TABLE temp
AS SELECT UserName, MAX(Date) AS Date, SUM(Amount) AS Amout
FROM log GROUP BY UserName;
SELECT * FROM temp, log
WHERE temp.UserName = log.UserName AND temp.Date = log.Date;
適切なインデックスを作成してあれば、速いはず。
ただ、設計自体が間違っているような気がしないでもないが...。
∧_∧ ( ^^ )< ぬるぽ(^^)
∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ
>>138 あ、なるほど。
MAX(Date)をSELECTするとDateがMAXなタプルのEMailが取り出せるんですね。
今実験環境がないのでできませんが今度試して報告します。ありがd。
この最新のEMailが欲しいという要望は後から出てきたので
今までのプログラムに付け足す形でやったので
>>137 に書いてあるようになってしまったんです。
>ただ、設計自体が間違っているような気がしないでもないが...。
・・・うーん。特に変な設計したつもりはないんですけどねぇ。
142 :
nobodyさん :03/08/09 06:13 ID:ykXF7Sbd
MySQLのバックアップは、 /usr/local/mysql/var/ 配下の目的のDBのディレクトリをコピーするだけでOKですか? 復元時は、このディレクトリを戻してやるだけで使えるのでしょうか? 何となく、乱暴すぎる気もするし…どうなんでしょう?
>>142 サーバダウンが迫ってるとか緊急時はそれでおーけー
それ以外の時は、きちんとコマンドラインからやるのが吉
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
LIKE %A% みたいに一文字検索って出来るのですか?
147 :
nobodyさん :03/09/02 15:19 ID:nC941VSc
MySQLのユーザーを削除するにはどうするの? drop user hogehoge; じゃだめだった。 マニュアル読んでも、どこにかいてあるのかさっぱり。
新しく作ったユーザでうまくログインできん。 パスワードありではログインできず、なしだとログインできる。 パスワードを設定したにもかかわらずだ。 ## MySQLにrootでログインし、ユーザを作成する bash$ mysql -u root -p Enter password: mysql> grant all on *.* to user1 identified by 'passwd1'; Query OK, 0 rows affected (0.00 sec) mysql> exit; Bye ## 作成したユーザでログインすると、パスワードありではログインできず、 ## パスワードなしだとログインできる。なぜ? bash$ mysql -u user1 -p Enter password: ERROR 1045: Access denied for user: 'user3@localhost' (Using password: YES) bash$ mysql -u user1 mysql> なぜ?どっか抜けてる?
>>148 ユーザ名だけでなくホスト名も指定する。
mysql> grant all on *.* to user1@localhost identified by 'passwd1';
mysql> grant all on *.* to user1@"%" identified by 'passwd1';
150 :
nobodyさん :03/09/03 02:32 ID:uWREVGUN
>>147 MySQLはユーザ管理をデータベースのテーブルで行っているので、
該当するユーザにマッチする行を削除する。
具体的には、
USE mysql;
DELETE FROM user WHERE User='該当ユーザ';
FLUSH PRIVILEGES;
確かにマニュアルではそれらしい記述が見つかんないな。
とは言え、ユーザ管理を自身のデータベースデーブルで行うという
MySQLのちょっと変わった部分は、MySQLの本を買えばどこにでも
出ているような内容なので、何か本買った方がいい。
>>150 さんくす。
そうか。やっぱり入門書かなんか買おうかな。
お勧めの本とか、逆に勧めない本とかあれば教えて。
田舎なんで、本屋にいっても置いてなくて読めないんだ。
152 :
nobodyさん :03/09/03 12:16 ID:737CDtFn
割り込んですいませんが、 InnoDBって、なんて発音するんでしょうか?
>>151 MySQLの入門なのか、スクリプト言語をつかって
RDBMSにアクセスするアプリケーションの入門なのかによるな。
MySQLの入門なら「MYSQL徹底攻略ガイド」が良いかな。
また、これには言語毎の接続と簡単なアクセスの仕方も
載ってるので「マニュアルが読める」様なので問題なく
理解できるレベルだと思います。MySQLの使い方メインで
もっと深めるなら「MySQL徹底活用」。
これは本当にRDBMSとしてのMySQLの話(運用とかツールも)に
限定してちゃんと書いてある。
RDBMSにアクセスするアプリケーションの入門が欲しいなら、
言語毎に色々出てるのを適当に選んでも支障はないと思います。
http://www.mysql.gr.jp/books.html の中で、その言語もタイトルに書いてある奴。
あとユーザ削除の追記で正確にはmysqlという名の管理データベースに
ある全てのテーブル(何個かある)のUser='hoge'にマッチする行を
DELETEする必要があります。ユーザ単位に細かく、特定データベースや
テーブルのアクセス権を設定していない場合は不要ですけど。
というか入門系って、結局著者のヘンなクセがつくだけだから、今後も使い続けるのであれば オライリーのMySQL & mSQL買って必要な事項をひきつつ前に進んだ方が、あとあと良いだろ。
俺もMySQL徹底活用の方がおすすめかな。 MySQL & mSQLは内容が古い。
157 :
nobodyさん :03/09/14 00:03 ID:kQoNWvNk
>>152 XOOPSの集まりに行ったら、MySQLの開発者Montyさんが来てたので聞いてみた。
MyISAM=マイアイサム(いさむじゃないのか...)、
InnoDB=イノディービー
で良し。ソフトエージェンシーの立岡さんも同じなので、日本語でもいっしょ。
>157 #152じゃないけど、さんくす
159 :
nobodyさん :03/09/27 17:43 ID:kMMUBk/8
AUTO_INCREMENT なフィールドを後から追加して さらにそれをプライマリキーにしたいんだけど 簡単な方法を教えてください。
>>157 ISAM はMySQL特有ってわけじゃないぞ
161 :
_ :03/09/27 18:00 ID:???
162 :
nobodyさん :03/10/10 14:59 ID:wsQ4ga7c
MySQL+PHPなんですけど、 DBのデータを月ごとにバックアップしたいんですが、どんな方法が最良かご教授下さい。 毎月、cronでCGI版PHPを動かし、 先月分のデータはCSVでバックアップ。 バックアップした分のデータはDBから削除。 なんですけど、普通にselectで取り出してCSVで保存→deleteで削除 で良いんですかね? 一月分のデータ量は1000件も無いとおもいます。 なにかいい方法があれば教えて下さい。
cronならmysqldumpでいいじゃないか。
164 :
162 :03/10/11 11:56 ID:kzrER8VP
>>163 mysqldumpで指定したレコードだけバックアップできましたっけ?
ざっと調べてみたんですが、それらしいことは見つからず。
月ごとにバックアップファイルを分けたいんですよ。
165 :
162 :03/10/11 12:00 ID:kzrER8VP
ああ! --whereオプションがありました。 すみません・・・ これでやってみます。
>>78 >
> データベースの文字型の扱いをUTF-8にしたいってんなら、
> MySQL4あたりだと出来るはずだよ。
Blobを使うのじゃなくて、データベースの文字コードをUTF-8にできるの?
マニュアル読んだけどわからん。
ヒントをください。
あー、リリースノート見ると4.0.6で
http://www.mysql.com/doc/en/News-4.0.6.html Added syntax support for CHARACTER SET xxx and CHARSET=xxx table options
(to be able to read table dumps from 4.1).
となってるので、4.0.xでも一部サポートしてるかも知れぬ。
4.0固有の機能をちゃんと使ったこと無いので判らんが。
170 :
166 :03/10/19 08:48 ID:???
>>167 遅レススマソ。
あれからマニュアルあさって4.1からサポートされるのを知って、
今4.1でテスト運用してます。
漢字はちゃんと3バイト消費するんだね。でもアルファベットなんかは
元のままと。
しかし、4.0.X系でもサーバ全体でならUTF-8が使えるって言うのは
初耳ですね。もう一度マニュアル読んでみます。
ここって次スレからはmysql総合質問スレにしよう。
と思ったらデータベース板なんてできていたのね。 次からはそっちで野郎。
>172 DB板って今は正常に機能してるの?
>>173 正常にって?
何か異常あるの?今日見つけたばかりだからわからない。
>174 うん。出来てすぐのころドラゴンボール板だとか 結構わやくちゃだったんだけど...今はそうでもないみたいだね。
. - _ _,..,_ ノ´//⌒ ミヾヽ、_ _____ ,r'´ ``'' - 、ーニ三彡´〃 ! ゙ゞヾ、_`ヽ [|<|____├{ /´ { l | // ヽ`ーr' } ″ ! `、 ' ノ l. ||l i l / l ああっ、つ、つらいです... ', | ̄``''''ー―- ,'´l l |!` ‐--| l l l ', | l l | リ,! l ', | | | ,! ' リ ,.r''ヽ、 _ ', | |. | ,' ` ' ' ' ' ' ' ´ `ヽ ! | | / ,.r'´ ̄ '''''' ─−-........__ ,.r' | '''"''‐-、 ~´  ̄ ̄ ̄
177 :
nobodyさん :03/11/05 18:13 ID:ETjgtmUY
テーブルAには、メンバーの名前・メールアドレス、URLなどの情報があり テーブルBにはタイトル・内容などの掲示板の書き込みがあります。 この時、どのメンバーが投稿したかを判断するのに、テーブルB側にはメンバーID も記録していますが、記録時に一緒に名前・メールアドレス・URLもテーブルAからコピーし 内容と一緒に保存した方が良いのか、それとも 読み込み時毎に、AとBを結合させてメンバーIDから名前やメールアドレスを呼び出したらいいのか迷い中です。 後者のメリットとしては、容量の軽減と、メンバーデータを編集した時に投稿記事にも反映される と言う感じですが、テーブル結合は、どの程度負担が掛かる物なんでしょうか? #全てのパターンを一時的に作成するようなので、素人考えて、データ数が多くなった時に かなり負担が掛かってしまうんじゃないかと考えて、踏み切れないんですが…。
>>177 想定する件数や更新頻度などにもよるが。。
俺の美的感覚だと、BテーブルにAデータを埋め込むべきじゃない、と思うね。
>>177 正規化したほうがいい
考えてるほど負担はかからん
180 :
nobodyさん :03/11/13 05:34 ID:XrP6U/53
カラムのデータをインクリメントしたい場合、 一回のクエリーでは無理ですか? 今はロックしてから、selectで読んで1を足してupdateしています。
>>180 UPDATE table_name SET hoge = hoge+1 WHERE ・・・
みたいなことってできなかったっけ?
できゆ。
183 :
nobodyさん :03/11/13 07:00 ID:XrP6U/53
>>181-182 本当だー。ありがとうございます。
この場合もやっぱりロックはしておいた方がいいでしょうか?
1行の場合、AutoCommitがはたらいて、 ロック→更新→ロック解除 が自動的に行われる
188 :
nobodyさん :03/11/15 06:00 ID:ZDgVRzRD
いちいちターミナルでいじるのが面倒です。 PHPなどで出来た、 MySQLをウェブ上でいじれるプログラムなんてないでしょうか?
>>189 まさにそのもののもの!ありがとうございます〜
CSEなんかの方が良いと思うが・・・
192 :
189 :03/11/15 13:31 ID:???
カラムAのレコードをカラムBに移す事ってできますでしょうか? カラムA カラムB 232 0 422 0 433 0 ↓ カラムA カラムB 232 422 433 MySQLでそのまま移動できれ良いのですが。
>>194 updateだけで出けた! ありがとでした。
197 :
nobodyさん :03/12/03 18:39 ID:TwnN/agA
レンタル系サービスをしているのですが、 コネクションが多すぎて接続できない、というようなエラーが出たので、 maxconnectionを2500にして再起動しました。 今のところ、正常に動作しているようですが、 maxconnectionの妥当な値とか限界ってどのくらいなのでしょう?
>197 おいおい、2500たぁすげえな。 サーバ資源追いつくのか(笑 デフォの100は少ないやね。直ぐに限界がくる。 #ウチは500。
>>197 サーバの能力次第としか言えんと思うけど・・・。
200 :
nobodyさん :03/12/03 23:21 ID:TwnN/agA
>>198 えっ…!!
100→500→とあげてきたので、もう一気にずばーんといってやれって感じで
5倍にしました。多すぎますかね?今のところは普通に動作しているようですが…。
>>199 topで見ると一つのmysqlがメモリ6〜7%くらいくってます。
全部のmysqlの数字が同じようなのですが、
これは全部まとめて6%ということでしょうか?
やばい数字ってtopで見ていくつくらいになりますか?
>>200 サーバの能力にも拠るが、DBへの問い合わせの負荷(テーブル設計に依存)にも
拠るので、単純にnコネクションなら大丈夫とか言えないということ。
ぶっちゃけ調べるの面倒なのでとりあえずyesかnoだけで簡単に教えてください。 WinMySQLのデータベースの内容をMS-Accessで編集できますか?
ところでWinMySQLって何だ?そんな製品ないぞ
205 :
202 :03/12/11 22:46 ID:???
>>203 ありがとう。
>>204 winのmysqlの略でした。winmysqladminならあったっけ。
206 :
nobodyさん :03/12/13 11:03 ID:F92TNOCR
バージョンアップしようと思うのですが、 今稼働中のmysqlをシャットダウンして、 インストールした時と同様にインストールすればそれでOKですか? 稼働中のmysqlのデータファイルに変に上書きしたりしないでしょうか。
一応バックアップ取っとけ。
>>206 上げなきゃいけない問題点とか最近あったっけ?
>>205 winmysqladminはあるよ。MySQL管理ソフト(クライアント)ね。
>>208 MySQL4.1.1が出たからそれに、とか。
210 :
206 :03/12/15 07:08 ID:???
>>207 ありがとうございました
>>208 微妙に古いのを使ってたことが分かったので3.23.58にしました
makeに予想以上の時間(1時間以上?)がかかって、
その間ちゃんとインストールできるのかドキドキでしたが
無事バージョンアップできますた。
> makeに予想以上の時間(1時間以上?)がかかって、 素朴な疑問なのですが makeに1時間かかるマシンでもMySQLは実用になるのでしょうか? できればマシンスペックを教えて下さい。
212 :
nobodyさん :03/12/15 10:19 ID:6kUbsNOb
レプリケーションをするために バイナリログを取得する設定にして、 lsで見ていたら、 2秒で1万バイトくらい、ログのサイズが増加していくのに気づきました。 これではあっという間にディスクを食い尽くしてしまうと思うのですが こんなものでしょうか?
213 :
212 :03/12/15 13:08 ID:???
214 :
206 :03/12/16 00:16 ID:???
>>211 三年くらい前に借りたさくらのレンタル鯖です
調べたらセレロン400/メモリ64Mでした。
今となるとかなりショボいっすね
MySQLはマシンスペックが素直に反映するらしいので乗り換えようかな。。
insert文を使うとき、 insert TABLE名 set COLUMN名='内容' みたいにupdate文形式でも使えてしまうんですが、この文体で書いても問題ないんですか?
php+mysqlでシステム組んでいるのですが order by nameを使うとエラーが出てしまいます。 おそらくDBの作り方が悪いのだと思いますがどのように作るとよいのでしょうか? phpmyadminで作っています。 フィールド名=omise フィールドタイプ=varchar(100) 表示=なし 空の値=いいえ 基本値=なし です これ以外はなにも設定変えてません。 ヘルプよろしくお願いしますm(_ _)m
それはホントにorder byの部分でエラーがでてるのか?
219 :
217 :04/01/30 09:37 ID:???
すみません解決しました Nullを設定してないだけでした
ふつーのMySQLが使えるレンタル鯖って、innoDBはどれくらいの割合で使えるんでしょうか? 汎用系作ってるんですがロールバック使いたいので、どんなもんかと・・・。 よろしければご教授おねがいします。
>>221 割合が言えるほど資料も経験もない。
ただ最初からロールバックが使えるホスティング(innoDBかは知らん)と
innoDBが使えるように変更して貰ったホスティングの両方の経験はある。
「当てずっぽうで借りたら使えた」って程、一般的なもんではないので
ちゃんと契約する前に訊けばよい。
てか汎用系を連鯖で運用するのか?
224 :
nobodyさん :04/02/20 04:49 ID:DNjtjE82
新しく借りた鯖にMySQLを移そうとしているのですが、 鯖屋が無料インストールしてくれたバージョンが3.23.56です。 今まで稼働していたのが3.23.58。 かなり些細なバージョン違いですが やはりデータの形式に齟齬が出るでしょうか? バイナリのデータをまるまるコピーできるのは あくまでバージョンアップの時だけですか? 今テストしているのですが微妙にバギーな感じで、 もしかしたらバージョンの違いが原因なのかな、と思ったのですが…
旧鯖でphpmysqladminとかでSQLをTEXTに吐き出して, そのSQLで新鯖へデータ移行してみれば?
レスありがとうございます。 そうします。 Got error 127 from table handler というエラーが出ました。 テーブルが壊れている時に出るエラーのようです。
227 :
nobodyさん :04/02/24 18:12 ID:FnpMfmB+
localでのテスト用にMySQLをインストールしました。Win98です。 Apacheを起動して、MySQLも起動しなければならないのですが、 どれを実行したらいいのかよくわかりません。 winmysqladmin.exeを実行すればよいのでしょうか?
すみません。 mytableから$sortで並べ替えてaddressを検索してlimitで$PAGESIZE * ($page - 1) ."$PAGESIZE を取得したいのですが、 $sql = "select * from mytable order by $sort desc where address like '%$address%' limit " .$PAGESIZE * ($page - 1) ."$PAGESIZE"; これって間違ってるのでしょうか?
↑ごめん 解決した
230 :
nobodyさん :04/03/02 03:25 ID:U9B/qlfA
テーブルにつけたコメントをphpで出力したいのですが どうすればよいのでしょうか?
select comment from table into 出力ファイル名 by php;
232 :
nobodyさん :04/03/03 12:43 ID:zpH+WglD
検索にかかった時間を取得するにはどうしたらいいのでしょうか?
query流す直前と流した直後の時間を取る。
234 :
nobodyさん :04/03/04 15:50 ID:muAKEQzl
データベースに同時にアクセスしたらどうなるのでしょうか? flockのようなものはないのでしょうか?
>>234 複数からの接続はあってもSQLは順に処理されるから、
データが壊れるとかは気にする必要なし。
(これは一般のリレーショナルデータベースなら、みな同じ)
けれども、ひとつのクライアントが複数のSQLを発行していて、
その間に別のクライアントからのSQLが割り込んでもらったら困る場合は、
テーブルをロックする必要がある(たとえば、途中で更新されては困る場合など)。
マニュアルの
6.7.2 LOCK TABLES/UNLOCK TABLES 構文
を読むべし。
MySQL以外のリレーショナルデータベースは通常、
こういう用途のためにトランザクション機能を持っている。
MySQLもバージョンとテーブル型を選択することによって、
トランザクション機能が利用可能だ。
236 :
nobodyさん :04/03/05 06:31 ID:fxR/ujQS
webminを入れました。 webminにDBD::mysqlを手動で入れろと言われたので 入れようとしたのですが perl Makefile.PLを実行すると、 Can't exec "mysql_config": No such file or directory at Makefile.PL line 174. と言われてしまいます。 mysql_configはmysql/binに入っていたので それをDBD-mysqlディレクトリにコピーしてみても同じことで…。 いったいどうすればいいのでしょうか?
>>236 Perlのスレ(確かDBIのもあったはず)で訊け。
238 :
nobodyさん :04/03/05 18:33 ID:6f95vfYH
テーブルのカラムの型をどういうように決めればいいのでしょうか。 char, varchar, textはどのように使い分ければいいのでしょうか? 例えば、次のようなカラムを作ろうとした場合、文字列型は何が適切なのかで悩んでいます。みんなvarcharでいいような気もしますがどうなんでしょう。 id (半角英数) password (半角英数) 名前(全角) ふりがな (全角) メルアド 郵便番号 住所 電話番号 >235はありがとうございました。トランザクション機能についてはよく分からないのですが、自分で勉強してみます。
>>238 CHARの方がVARCHARよりも検索スピードでは有利なんだけど、
MySQLはCHARとVARCHARとの間で暗黙(勝手に)の型変更があるので、
CHARだと思い込んで設計しない方が良いよ。
あと末尾のスペースの扱いも、ちっと他のDBMSと違うのにも注意。
レコード数が19万、テーブル全体で40MBほどのサイズになる予定のDBがあるんですが これをレンサバ(Valuedomain)で運用する場合、やはり大きな負担になってしまいますかな? 使途はBBSなんですが、都合上スレッドの追加、削除をかなり頻繁に繰り返さなければ ならないので上記の形(レス単位でレコード化)ではなくスレッド単位でレコードにしてしまおうか、 かなり悩んでおります。 形としては当然前者がスマートなんですが1分間に数百回insertするシステムて果たしてどうなのか・・・
242 :
nobodyさん :04/03/07 10:55 ID:EF5NuiF0
あげ
掲示板データは書き込みの時にDBに追加して表示用のHTML作成して 表示の時はDBから毎回生成しなければそんなに負荷は掛からないんじゃないの まあ 書き込み:読み込み のアクセス比率によっても変わるけどね でも1分間に数百の書き込みって凄いと思うんだけど本当ですか?
1つの書き込みで数十のテーブルに書き込むような構造にしてんじゃね?(藁
>>243 レスどもー
スレッド単位で激しい増減があるので結果的に数百というレコード数になってしまいますな
ただ先ほど、やはりBBSデータそのものをDBに保存するのは得策じゃないという結論に達しました
全文検索も簡単に出来るし使い勝手も良いのでなんとなくDBを使いたがっておったんですが、
スレッド毎にファイル保存して読み込むという、シンプルな手法を取ることにしました
DBはスレッドのいわゆるヘッダ情報のみを取り扱うことによってBBS群を管理しようかと思います
>>245 正直、全文検索が必要になるほどの価値のある書き込みのBBSを運用してみたいものよ。
MLのログアーカイブはDBに入れちゃって処理してるけどねぇ。
247 :
246 :04/03/07 22:40 ID:???
補足:有料のGAME鯖のはCHATも含めてBBSもDBで運用してます。 (データのロギングやアナライズが結構必要なんよ)
MySQLの全文検索ってどうやるんですか?
GoogleってMySQLなの?
251 :
nobodyさん :04/03/08 02:28 ID:Ajodln9P
あー、なんかそんな記事を見た気が
ageスマソ・・・
へぇー MySQLってすごいんですね。
googleの機能を全てMySQLで賄っている訳ではないと思うよ。 必要なところにはOracleだって使ってるだろうし、他のDBMSだって同様。
Oracleは使ってないだろう、多分。
大部分は独自のエンジンだべ。
>>256 むしろ量での割合は結構使ってて、胆のフロントエンジンや
DBの分散PROXY(当然使ってるだろう)辺りは完全独自じゃないかと
思ってるんだけど。なんで量かっていうとキャッシュなどの部分で
ストレージっぽく貯めてるのがMySQLじゃないかな。
create table user( ID varchar(10), Name varchar(20), Pass varchar(40), No int(2), unique(ID,Name,Pass) ); でテーブルを作成しました。 僕が望んでいる動作はID,Name,Passが絶対に重複しないようにしたいんです。 ID:a Name:あいう Pass:1234 ID:b Name:あいう Pass:1876 この場合でも重複とみなしたい、ということです。 ですが、今は、IDとNameが重複したときのみ、エラーが出るんですが・・・ MySQLのエラーコードを見るには a-あいう-1234・・・・ って出るので、もしかして、1列でまとめてデータ比較するから、だめってことですか?
259 :
258 :04/03/08 22:31 ID:???
よく分かりません。。。 MySQL側に頼り切るより selectで呼び出して、重複して無いか調べるべきですね・・・
260 :
nobodyさん :04/03/09 02:46 ID:AUivw7LZ
テーブル作成時にidはauto_increment、nameはuniqueキーを指定しればいいと思う。 うちは重複してなんぼのDBだからよく知らないが・・。
constraint 句は使えんの? postgreSQLは使えるよ
mysqlというかphpMyAdminで質問です. mysql(MySQL 4.0.18nt)でphpMyAdmin(phpMyAdmin 2.5.6)を動かしています.PHPはVersion 4.3.4. phpMyAdminで,データベースの各テーブルの【SQL】メニューから, テーブルにテキストファイルの追加を選ぶことでcsv形式のファイルで登録しようと思ってます. で,以前使っていたときはcsvファイルをuploadするときに文字コードを(EUCとかSJISとか)変換する チェックボックスがあったのですがOSなどをインストールたところ,それがなくなってしまいました… 何か設定項目がありましたらどなたか教えてくださいm(_ _)mよろしくお願いします.
263 :
262 :04/03/10 01:41 ID:???
自己解決しました. php.iniでphp_mbstringを使えるように設定がうまくいってなかった模様でした.
みなさんは何でmysqlに入って管理してるんですか? 僕はWindowsのコマンドプロンプトから入るんですけど その場合、マルチバイトの文字がフィールドにあると、化けますよね?(文字エンコードをEUCにしてるから) それで、マルチバイトのデータがあるテーブルを見るときは、phpmyadmin使ってるんですが、こればっかりはどうしようもないものなのでしょうか?
なんだっけ?CSEだったかな?そんなSQLクライアントソフトがある。 それにeucかsjisのプラグインぶちこんであげれば 表示の文字化けが直る。ただエディタ機能はsjisしかないのかな? だからうちもSSLでコマンドプロンプト。
267 :
266 :04/03/12 10:59 ID:???
解決しますた
>266 自己解決したなら原因理由を書くのがマナー
269 :
266 :04/03/12 16:10 ID:???
解決してません!。。。
>>266 TEXTじゃなくBLOBにするとか
VARCHAR を BINARYにするとかじゃないの。
271 :
266 :04/03/12 18:12 ID:???
レンタル屋さんに問い合わせしてみました。 テーブル作るときに文字コード指定したらいいとのことだったのですが テーブルってphpで作れますか? 作れるとしたら教えてください。。。 また、コマンドプロンプトやMySQLManagerで接続しようと試みたのですが どうあがいても接続できませんでした。。。(約4時間) TableのSQLステートメントのDEFAULT CHARACTER SETというパラメータで 文字コードが選択できるらしいのですが、 ただテーブルを作るだけなのですが、わかりません。。。 よろしくお願いします。
>>271 コントロールパネルやphpMyAdminがついてるようだけど。
273 :
266 :04/03/12 19:09 ID:???
phpMyAdminでCREATE TABLE のSQLステートメント DEFAULT CHARACTER SET使えないので。。。
274 :
266 :04/03/12 19:12 ID:???
あ、使えるのかな
275 :
266 :04/03/12 20:02 ID:???
どうもお騒がせしました。 以上で解決いたしましたm(_ _)m
>>266 つか、Query windowでSQLクエリ発行すれば
権限ある行為は基本的に全部出来るだろ。
SQLはMySQLのマニュアルなり本買ってきて読め。
277 :
266 :04/03/13 13:28 ID:???
すみません、解決してませんでした。 この構文が実行できないのです create table hoge (name varchar(10) character set ujis); ついでにこちらもできません alter table table1 add (name varchar(10) character set ujis); character set ujisを外すと実行できるのです ちなみにcreateもalterも権限はあります。ujisもサポートされているとのことです。 よろしくお願いします。m(_ _)m
ていうか、そんな構文あったんかー my.iniのdefault-character-set=ujisで全データベースのキャラクタセットが決まると思ってたんだがな・・ テーブルごとに変えれるとは知らんかったよ
>>277 MySQLのバージョンは?
ujis対応してるといっても、MySQL3.xまではサーバ単位
MySQL4.0.6以降でも単に"構文"が許されただけだよ。
(MySQL4.1からdumpしたのをぶち込むため)
"構文"の対応度もリビジョンで色々と細かく違うが、
実際に機能はしないので普通は関係ない。
実際にカラム、テーブル、DBでキャラクターセットを指定して
設定できるようになったのはMySQL4.1から。
http://www.mysql.com/doc/ja/Nutshell_4.1_features.html 貴方の使ってるところがMySQL4.1より前のだとしたら…
その程度で仕事してるとは、いい商売だな>レンタル屋の回答
280 :
266 :04/03/13 22:24 ID:???
>>279 何言ってるかよくわかりませんが
バージョン聞いてるってことは4.1以下ではできないってことですか?
>>280 >何言ってるかよくわかりませんが
20年早いってことだよ。
わかるようになってからおいで。
283 :
266 :04/03/17 13:21 ID:???
先ほどメールが届きまして プログラミング系のご質問はサポート外ですので当方ではご対応できません。 とのことでした。 これ以上僕にはどうすることもできません。。 ちなみにバージョンは3.23.58 2ちゃんねらのみなさん。ありがとうございましたm(_ _)m
MySQL超初心者です。2点質問があります。 MySQLをRedHat9にインストールしているのですが、 インストール終了後に行うDBの初期化で下記エラーがでてしまい、先に 進むことが出来ません。 ERROR: 1064 Something is wrong in your syntax : '"REPLACE works exactly like INSERT, except that if an old\nrecord in the table h' 付近 : 1 行目 make installは上手くいったと思うんですが。。。。やはりインストール失敗 しているのでしょうか?ちなみにMySQLのバージョンは4.1.1-alphaです。 もう1点はRedHat9に収録されているMySQLをRPMでインストールしようとすると [loca@llocalhost root]# rpm -ivh /mnt/cdrom/RedHat/RPMS/mysql-server-3.23.54a-11.i386.rpm エラー: Failed dependencies: mysql = 3.23.54a is needed by mysql-server-3.23.54a-11 というエラーメッセージがでてしまいます。 自分なりにいろいろ調べてみたのですが、どうしても解らない為、 どなたかご教授お願い致します。
超初心者がalpha版をmakeして使おうって事自体おかしくないか?
>>285 知らない人間は黙っていましょう
僕みたいに(笑
>>284 上は4.1.1-alphaだとそうかもな。折れの場合起こらなかったけど。
同様のケースをMLだったかWebで見かけた。多分2chだったと思うけど、
自分で対処の仕方を探して見つけ、処理できないなら4.1使うのは止めとけ。
貴方に限らず良くAlpha版とかBeta版を選択する傾向があるみたいだけど何でなん?
AlphaやBetaのレベルは製品や会社毎で、出来合いの程度が違うから
その見極めが出来る前に、正版以外を選択するのはどうかと思う。
下はRPMの依存関係。要は3.23.54a-11.rpmは差分しか入ってないから
それ以前の3.23.54a自体も入れろってこと。
RPMの事まで説明すんの面倒くさいから、
http://www.softagency.co.jp/mysql/LAMP/ の配布パッケージ使っとけ。
288 :
nobodyさん :04/03/29 20:12 ID:WLZZ269x
select クエリでoutfileで出力したときのファイルをphpから消す方法しりませんか〜 mysqldの実行権限の問題だと検討つけてるんですけど、、、
289 :
nobodyさん :04/04/03 13:28 ID:HKxnmMLJ
重複登録を防止するために 1)ロックをかけてその間にプログラムで検索する 2)MySQLのユニークキーを用いる の2案を考えています。 この場合、 1)ではタイムアウトのおそれがあります。 2)では同じタイミングで複数からコネクトされたときに重複するおそれはないのでしょうか? MySQL側で対応してくれるのでしょうか? 初歩的なことで悩んでいます。 よろしくお願い致します。
>>289 漆芝写璽芝社煮質射舎悉釈痔斜湿。ヲ治竺疾治嫉痔煮痔蒔痔痔痔屡痔蒔痔痔痔屡治爾
治隘軸治射璽赦璽?謝璽紗璽捨痔斜磁?ァ射治湿磁識磁鹿治湿痔?紗痔痔痔。ヲ
治隘軸治射痔蕊痔煮屡竺痔失磁質磁痔磁釈磁?鴫痔蕊写璽質?辞痔宍磁赦磁識磁縞痔七痔。ヲ質痔縞痔鹿痔射漆芝写璽痔嫉痔。ヲ蒔痔漆痔。ヲ煮痔写痔痔痔斜痔蕊痔執痔ツ示痔辞治自
治隘赦璽?謝璽紗璽捨篠示痔蕊篠社竺?痔執痔屡痔識痔。ヲ。ヲ斜痔蕊痔執痔ツ示痔辞治自
磁酌磁。ヲ蔀磁嫉磁。ヲ偲磁舎痔蕊屡鴫室?執痔屡痔示痔汐治爾痔漆痔。ヲ辞痔煮痔識磁。ヲ識磁耳磁嫉磁縞痔煮
1痔柴痔者痔縞痔柴漆?痔七痔。ヲ酌痔嫉痔辞痔爾漆芝写璽痔嫉痔。ヲ宍痔縞痔煮痔写痔痔痔蕊痔嫉治璽
291 :
290 :04/04/03 17:33 ID:???
うーん、コード変換が上手くいってないな...
>>289 重複登録防止の手法云々はおいておいて、
>2)MySQLのユニークキーを用いる
>2)では同じタイミングで複数からコネクトされたときに重複するおそれはないのでしょうか?
>MySQL側で対応してくれるのでしょうか?
マルチスレッドで動作してようが、それらから届くリクエストは
1つひとつ処理されますから、重複することはないです。
>>291 了解です。
たぶん、ちゃんとやってくれているんだろうなぁ・・・とは思っていたのですが、なにせ
確認する手段が無かったもので不安でした。
ロックかけてしまうとノロノロサーバなのですぐにタイムアウトしそうで・・・
どうもでしたm( _ _ ;)m
293 :
nobodyさん :04/04/06 16:50 ID:RzzYT55p
PHP + MySQL で test001 というテーブルがあるかどうか確認する手軽な方法はなんでしょうか?
>>293 状況がいまいちわからんがphpMyAdminを入れたら?
>>290 なんか、妙に「痔」という文字が目に付くのだが・・・
296 :
nobodyさん :04/04/07 15:09 ID:4leqw1vc
>>293 マニュアルでは
<?php
mysql_connect ("localhost:3306");
$result = mysql_list_tables ("wisconsin");
$i = 0;
while ($i < mysql_num_rows ($result)) {
$tb_names[$i] = mysql_tablename ($result, $i);
echo $tb_names[$i] . "<BR>";
$i++;
}
?>
297 :
nobodyさん :04/04/07 17:41 ID:VgqQfo5b
今まで char(3) の フィールドで使ってました。 で、文字数を5文字に増やしたいので char(3)を、char(5)に変えましたら、 フィールドタイプが可変長のverchar(5)になりました。 (3文字固定が5文字になったので、当然でしょうが・・) やっぱり、やめようと思い、再び フィールドタイプchar(3)に設定しなおしたのですが verchar(3)になり、charタイプに変更出来ません。 データの追加等々はしていません。 一度、vercharに変更すると、charには戻せないんでしょうか?
298 :
nobodyさん :04/04/07 18:14 ID:qUHh0KEC
299 :
297 :04/04/07 20:32 ID:YKOta6fC
ありがとうございます。 Mysqlは、VERCHARでやります。<(_ _)>
300 :
nobodyさん :04/04/08 01:14 ID:/bs+vyyX
テーブルがあるかの確認? show tablesとかでできないの?
>>293 コンソールで mysql プログラムじゃだめなの?
shell が無いとだめだけど
302 :
:04/04/11 12:41 ID:???
ERROR 1030: Got error 127 from table handler が、突然出ました。 復旧したのですが、 これって、どういう場合になるんでしょうか? お分かりの方いらっしゃいますか?
突然 ERROR 1030: Got error 127 from table handler というエラーメッセージが表示されました。 その後、特に何も対処しなかったのですが復旧しました。 このエラーメッセージはどういった場合に表示されるのか ご存知の方いらっしゃいますか?
>>303 302=303で、且つ別のスレにマルチポストしてる
香具師じゃないのか?
本人だったら投げるばっかりではなくちゃんと見ろ。
別人だったら情報を収集する能力をもちっと身に着けろ。
305 :
303 :04/04/11 20:33 ID:???
PHP + MySQLで、問い合わせ結果のソートをしたいのですが、ソートした物をさらに別の条件でソートする方法がわかりません。 どなたか解る方、いましたらご教授ください。 SELECT * FROM hoge ORDER BY id ↑このようにまずidでソートした結果にさらに、date(最終更新日データを持つint型のフィールド)でソートしたいのです。
307 :
306 :04/04/13 13:34 ID:???
追記です。 最初にソートした結果が重複した場合に並べ替えたいという意味です。
308 :
306 :04/04/13 13:37 ID:???
文書くのヘタですいません。 上記の内容で伝わるか不安なので、もう少し書きます。 例えば、スコアを競うゲームのランキングを表示する時に、スコア順でソートした結果、同じスコアの人が2人以上いた場合に、更新時間順で、順位を並べたいといった感じの SQL文を書きたいのです。
310 :
306 :04/04/16 06:43 ID:???
>>309 参考になりました。
ありがとうございます
311 :
nobodyさん :04/04/30 11:42 ID:6/qGIiuk
mysqlのconfigureを後から調べるにはどうすればいいですか?
>>311 # more ./config.nice
普通にinsertで入れると化けないんだが、load dataで一気に読み込ませるとソだとか5Cが化けてしまう。 信頼のおけるデータに特化していないとはいえ、やっぱりかっこ悪いんで直したいんだけれども…。 全ファイルEUCに直しちまうかな。
まさかSJISでやってるとか・・
316 :
nobodyさん :04/05/05 01:31 ID:arqfTLfp
point|col_A|col_B ――――――――― +1|りんご|バナナ -1|りんご| -1|バナナ| +1|もも |りんご -1|バナナ| こんな感じのテーブルがありまして、各果物ごとの合計数を出したいんですが、どうもうまくいかないんです。 (こんな感じが理想↓) sum(point)| col ――――――――― +1 |りんご -1 |バナナ +1 |もも 今、winローカルのMyQL4.0で勉強してるんですが、4.1なら select col,sum(point) from table where not(col="") group by col = (select col_A as'col',point from table union all select col_B,point from table); こんな感じで通用しますか? 他に方法が思いつかないのですが……
317 :
316 :04/05/05 01:38 ID:???
言い忘れましたが果物の名前は適当です。 実際に何が入るかはわからないので、where col = "りんご" とかは文に入れられないです。
webシステムでPHPなりASPからMySQLと連携する時 おまえら様はHTMLの文字コード何使ってんの? おれは面同だからhtmlもmysqlもsjisに設定してるんだが。 EUC使うべきなんだろうか?
MySQLは当然EUC、PHPの内部処理も当然EUC、出力はたいていEUCだが気まぐれでSJISもあり。
sjisで使ってる奴って、ネタでやってんの? 内部処理とか考えたことあるの? よくそれでずっとsjisで出来るな
321 :
nobodyさん :04/05/05 14:07 ID:BMQ0QdDe
HTML側はShift-jis、MySQL側をujisに設定してる場合、 フォームから拾ってきた値の中に、ソ、表、能などの文字があった場合 やっぱり文字化け起こすの?
はぁ、もうバカだなぁ・・・ Sjisで受け取ってPHP(cgi)内でEUCに変換して MySQLに書き込むんだろが・・・ Web出力はS-JISが望ましいので SJIS受け取り→スクリプト内でSJIS->EUC変換→MySQL書き込み MySQL受け取り→スクリプト内でEUC->SJIS変換→SJIS出力 がセオリーだろ
>>322 SUGEEEEEEEEEE!
目から隣だぜ!
・・・ バカにされてるのか
えー だってASPだと文字コード変換する関数がないんだもん PHPにはあるの?
ASP+MySQLって組み合わせはあんまし聞かないね ASPならACCESS(MSSQL)でやれば文字コード気にせずSJISで統一できる。
>>325 ASPでMySQL使うか?
PHP+MySQLが一番多いパターンだと思ったんだが
何も考えずEUC-JPで統一すれば幸せになれるかもしらん
>>325 >えー だってASPだと文字コード変換する関数がないんだもん
BASP21のKconv使え。つか俺の場合ASPの言語比率はPerlの方が高いので、
ASP=VB/JScriptとするのは止めてくれんか。
Apache::ASP?
全部UTF-8でやってるけど問題なし。
332 :
329 :04/05/05 18:45 ID:???
>>330 いやいや、普通にIIS+ActivePerl。
Apache::ASPを採用したことは今のところ無し。
移植するなら大いに有り得るが、シチュエーションがないですね
WinでApache+PHP+MySQLやってみようかと思ってるんですが、 PHP4.3.6でMySQL使えるようにするにはどうしたらいいですか? 試しにPHP5用のphp_mysql.dllをextensionsに入れて、 php.iniに設定追加などしてみましたがやはり認識しませんでした。
334 :
333 :04/05/05 20:08 ID:???
すいませんでした。 PHP4まではphp_mysql.dllは必要ないんですね。 php.iniいじらないといけないのかと勘違いしてました。 phpinfoみたら正常に動いてました。
335 :
nobodyさん :04/05/06 20:10 ID:5CuaifxE
>>326 basp21のkconv上手く使えないんすけど
ASPのinsert文でexcuteの所でエラーになる(型が一致しませんと)
リファレンス見てみると、なんだか戻り値にバイト配列受け取ってるのが原因っぽいんですがどうなんでしょう?
↓
[out] : 変換後の漢字コードを文字列(UNICODEの場合)あるいはバイト配列で
返します。
outtype = 0 なら漢字のタイプを数字で返します。
↑
HTMLはshift-jis、MySQLはujisに設定していて
shift-jis→EUCにしたいので、
out = bobj.Kconv(moji,2,1)
のように処理しているのですが・・・
mysql MySQL Support enabled Active Persistent Links 0 Active Links 0 Client API version 3.23.49 Directive Local Value Master Value mysql.allow_persistent On On mysql.connect_timeout 60 60 mysql.default_host no value no value mysql.default_password no value no value mysql.default_port no value no value mysql.default_socket no value no value mysql.default_user no value no value mysql.max_links Unlimited Unlimited mysql.max_persistent Unlimited Unlimited mysql.trace_mode Off Off odbc すみません。 これはphpinfoで示した物をコピペしたのですが mysqlは動いているのでしょうか? 環境は Apache2(win32)+php4.3.4+mysql-4.0.18-win+perl です mysql以外の動作は問題なく動いています どうしてもweblogをやりたくて今回初めてmysqlを入れたのですが良くわかりません。 ググって調べてやれることはやったつもりなのですがうまくいきません。 申し訳ないのですがいい知恵が有りましたらお願いします
>>336 phpinfo()の表示からはMySQLが動作してるか/していないかの判別は出来ない。
>環境は Apache2(win32)+php4.3.4+mysql-4.0.18-win+perl
手元のPCに入れてるようなのでPHP+MySQLの組み合わせの簡単な
初心者本が何冊も出てるので、それみて基本から勉強した方がいい。
# MTとかの本にも環境のインストールから書いてあるものがあったとは思うけど。
338 :
336 :04/05/08 20:32 ID:???
とりあえず、本当に”mysqlが動く”だけじゃできんよ まずデータベースを作成しないと そしてユーザー作成も その辺はWebで漁ったらいくらでもある しかし、そのレベルにも達してないような・・・
>>338 じゃあ、mysqldは動いてるね。
あとはmysql(クライアントツールの方ね)から接続できるか試してみて、
動作テストはMySQLのマニュアルに出てるでしょ。
# 「コマンドプロントで動作確認」がその指示に従ってるなら不要だけど
で、その設定(my.cnfのクライアントのところの設定)をPHPに反映させる手順かな。
phpinfoの表示からはmysql拡張モジュールは組み込まれてるのが見て取れるので、
アプリの設定だけで、多分上手くいくよ。
339が言ってるようにアプリによっては事前に専用の
ユーザやデータベースの作成が必要/推奨されてるかも。
その辺はアプリの話なので付属のドキュメントかblog系のスレをあたる。
大抵はユーザやデータベースをmysqlで先に作っておくのが常套。
phpかperlがあれば、load data infileうんぬんを使わなくても大丈夫だね。 web上にうpしたデータのパスの指定がわからんかったから、結局あきらめてfgetsで1行ずつ読んじまったOTL
342 :
336 :04/05/09 22:22 ID:???
皆様ありがとうございます。大変ご親切な指導のおかげで動作しました。
うまくいかなかった原因は
http://www.dream-seed.com/server/mysql.html ここのサイトの下の方に
ここで入力したユーザー名とパスワードはDBにアクセスする際に使用するもので、
PHPスクリプトなどでも使います。
こんな一文があり、この時点でユーザーとパスが設定されているものだと思い込んでいました
サイトに書いてあるからと鵜呑みにしては駄目ですね
>>340 さんの
大抵はユーザやデータベースをmysqlで先に作っておくのが常套。
この一言が解決へつながりました。ありがとう御座います。
その他の皆様も真剣に答えていただき大変感謝しております。
これを機に少しでも多く覚えられるよう勉強していきたいと思います。
本当にありがとうございました
>>342 解決おめ。
>サイトに書いてあるからと鵜呑みにしては駄目ですね
そうだな。できる限り原典(公式マニュアルとか)にあたるか、複数ソースでウラを取ったほうがいいよ。
そう、公式マニュアルが当然一番詳しい。 良く分からん解説ページなんて、見るのは時間の無駄だ。
>>344 技術的な間違いはともかく、そういう抽象的な指摘は良く判らん。
少なくても俺よりはデザイン力があることは判ったが、
技術的な記述はやった手順だけで、それ以外のルートやTipsなんかが
無い点で解説としては物足りないが、全然資料がないソフトなんかだと
単なる作業ログの公表だけでも充分有益なんだけどね。
# 本当に、誰かやったことがある人が「いる」ってことだけでも。
347 :
nobodyさん :04/05/13 11:34 ID:ivEny0gv
windows98/ie6 すでにperl5とhttpdは漏れのパソコンに入れてるんだけど、mysqlも入れて色々試してみね? ってとりあえずzip形式の香具師を入れてみますた。 setup.exeが済んで次はwinmysqladmin.exeをクリックしてmy.iniファイルを作れ!って指令だったから その通りにしますた。 次はmysqldをクリック! ????出てきたプロンプト画面が数秒で勝手に閉じてしまった・・・・・何度やっても同じですた。 誰か漏れを助けて_|~~|○
>>347 青信号だったらすでにmysqldは起動しているので問題ない。
349 :
347 :04/05/13 12:28 ID:???
青信号ですた!よし!とりあえずインストールはokということで先に進んできます。 漏れを救ってくれてありがとう!
350 :
347 :04/05/13 14:49 ID:???
今MS-DOSプロンプト画面からの命令をお試し中。 そのプロンプトから mysql -h ホスト名 -u ユーザ名 -p password**** を入力するとこんなエラー文が出てきますた。 ERROR 1045:access denied for user... 翻訳すると「ユーザのために否定されたアクセス」となりますがユーザ名はちゃんと mysqladmin.exeで設定したものツカタから間違ってると言われてもね・・・・ 漏れの何が悪いんだ_|~~|□
>>350 -pはたぶんいらない
-hもたぶんいらない(localhostなら)
-uもついでにいらない
たぶんmysqlだけでOK
ユーザ名に@localhostつけてユーザ設定してないんじゃない?
TinyFTPdとMySQLって共存できないのかな? Serviceは動いてるのに MySQLadminのServerInfo空っぽになっちゃう Tinyアンインストールすると問題無し ほかにもこんな人いる?
354 :
347 :04/05/13 15:54 ID:???
>>352 してませんですた。そんな話すら知りませんですた。で、今mysqladmin開いてmi.ini.setupのとこのユーザ名を
とりあえず、a@localhost、ってやって、
mysql -h localhost -u a -p
password:****
ってやってみますたが、やっぱりエラー文は変わりませんですた。他にも色々やってみますたがエラーの奴隷になっていまつ・・・
>>351 匿名で接続はうまくいくんだけど、一応ホスト名・ユーザ名・passを指定しての接続もできるようになておきたい。
>>354 とりあえずwinmysqladminのユーザとパスワードは関係ないので忘れてくれ。
356 :
347 :04/05/13 16:30 ID:???
そうですたか・・・まあ今はまだmysql初日。勉強を進めていけばそのうちわかる日がくると 思うでつ。 ところで共用鯖のmysqlの安全性ってどれくらいだろう。共用鯖でクレジット決済とかやったら無謀? まったくやる気はないけど後学のために聞いてみたいでつね。
357 :
336 :04/05/13 17:20 ID:???
>>356 がんばってください
>>355 のヒントは非常に重要かと
私もその辺りで引っかかっていました
>>347 このスレ最初から読み直して見るといいと思われ
359 :
347 :04/05/13 18:37 ID:???
>>357 ありがとでつ
今はperlからmysqlを操作する為にとりあえずDBIモジュールが必要ってんで初めてcpanに行くが
落とし方わからず1時間経過_|~~|○・・・・なんで青い画面が出てから動きがないんだろう・・・
青い画面を前に右往左往してる漏れ、情けない;
ならばソースをブラウザからコピーだ!・・・一杯ファイルがあって撃沈。DBI.pmだけでいいはずと思うが自信なし・・
みたいな状況でつ。頑張りまつ!
perlが君の得意な言語じゃなくて、ただmysql操作のツールとして使いたいってのなら phpインストールしてphpmyadmin入れるとか EUCも使える日本製のDBクライアント「かねやんなんたら〜」を入れるとか
MYSQLCCってのもある
>>347 はきっとMySQLadminからデータベース作れなくて
焦ってるんだろうなと推測してみる
362 :
347 :04/05/13 21:05 ID:???
>>361 プロンプト画面から、データベース作ったりテーブル作ったりは問題なしでつ。まだユーザ名の
問題は解決してないけど、とりあえずそれは置いとく事にしますた。
>>360 今のところperlが一番マシでつね。初めてHTMLタグを見てから2ヶ月くらいなので、たかが知れてるけど;
363 :
nobodyさん :04/05/13 21:46 ID:rgBd1RCO
すいません、質問させて下さい。 Fedora core1に全てソースから apache 2.0.49(./configure --enable-so) php 4.3.6(./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-sigchild --enable-mbstring --enable-mbregex --enable-zend-multibyte --with-mysql) mysql 4.1.1(./configure --with-extra-charsets=all --with-charset=ujis --prefix=/usr/local/mysql) で、インストールして テストのために <?php $ID = mysql_connect("localhost:3306","ID","Pass") ?> というスクリプトをサーバーに設置してブラウザから開いたのですが いろいろと試してみたのですが Warning: mysql_connect(): Access denied for user: 'nino'@'localhost' (Using password: YES) in /usr/local/apache2/htdocs/sqltest.php on line 2 というエラーメッセージが出るところで止まってしまいます。 原因、解決法等、どなたか御教授願います。
364 :
kuro :04/05/13 21:51 ID:Enx3JY3V
>>363 >原因、解決法等、どなたか御教授願います。
そこまで人まかせってのも凄いな
>>363 このMySQL拡張モジュールは、4.1.0以降のMySQLのバージョンでは動作しません。 これ以降については、MySQLiを使用して 下さい。
367 :
363 :04/05/14 15:04 ID:RjPRbRx2
>>366 すいません、どのMySQL拡張モジュールなんでしょうか?
368 :
366 :04/05/14 15:20 ID:???
>>367 マニュアルからの引用です
マニュアル嫁
369 :
366 :04/05/14 15:25 ID:???
追加 注意: mysqli拡張サポートはMySQL 4.1.2以上で動作するよう設計されています。 それ以前のバージョンについてはMySQL 拡張サポートのドキュメントをご覧ください。 MySQL4.1.1は仲間はずれのようだ。 おとなしくMySQL4.0にしておいたら
370 :
363 :04/05/14 16:17 ID:RjPRbRx2
>366 そうですか? 了解しました。 おとなしく4.0に落とします
371 :
363 :04/05/14 16:18 ID:RjPRbRx2
いかん、文字化けしてなめた口調になってる(汗 失礼しました。 とてもためになりました。 ありがとうございました。
mysqlってインスコしてmyadmin初めてクリックした時に名前とパスワード決めるよね。 とりあえずそんな事は忘れて、 mysql -h localhost -u root -p enter pass:空白 ってやると接続成功するね。ついでに set password for root=password('newpassword'); ってやるとrootのパスを変えれるね。 このrootって要はユーザ名のデフォルト値みたいだけど、このrootっていうユーザ名はどこで変えられるんだろう。 1行目に書いたmyadminのユーザ名・パス値の設定は無関係みたいだし。 今grant構文で躓いてまつ。で、この辺りを知れば少しは理解も深まるかなと思いつつもう夜に・・・ 一日やってgrantから抜け出せないのは悲しいから、応援を頼みに来ますた;
373 :
nobodyさん :04/05/14 20:04 ID:T1nzoUOS
Linux に MySQL 4.1 を RPMでインストールしたんですけど server, client は問題なくインストールできましたが Maxはlibxxxがないとかでエラーになってしまいました。 トランザクションを使いたいんですけど、Maxをインストールしてないと 何か問題が起きますか?
このスレレベル低すぎだろ・・・ 複問い合わせとか複雑なselect構文の質問とかしてるのかと思ったら インストール後のログインとか rootのパスワードとか grantとか・・・ つま、myadminは、ただの”設定ツール” その時に求められる名前とパスワードのものは”myadmin”のもので M y S Q L の ア カ ウ ン ト と は 一 切 関 係 あ り ま せ ん あー、腹立つ 最低限の知識ってもんがあるだろが
しかしスレタイになかなか良くマッチしたレベルだと思うぞ
376 :
372 :04/05/14 20:54 ID:???
>>374 ごめんでつ。頑張ってgrant成功させるよ。
>>373 MySQL4.1だと、Maxじゃなくてもトランザクションを
使えるデータストレージ、InnoDBはサポートしてるから
「トランザクションを使いたい」なら関係ない。
378 :
372 :04/05/14 21:38 ID:???
grant成功した・・・・・でも未だにperlからのconnect成功しない。なんかそこらへん の事詳しく説明してるとこ少ないね;たいていサイトの手順とおりやるとエラーだし。 それじゃ
>>378 DBI/DBD::mysqlはいんすとーるしましたか?
380 :
372 :04/05/14 23:04 ID:???
>>379 !!??
ACTIVEPERL使ってるので、ppmでDBIはインストールしましたでつ。DBIに一緒にDBDもくっついてきますた。
でもmysql.pmっていうのはなかったのでppm mysqlってやてみまつ。
381 :
372 :04/05/14 23:40 ID:???
漏れが馬鹿だった・・・DBIだけでいいと思いこんで疑わなかった・・・ とりあえず、Data-Dumperを入れるの成功。Msql-Mysql-modulesを試みたら Error installing package 'Msql-Mysql-modules': Read a PPD for 'Msql-Mysql-modules', but it is not intended for this build of Perl (MSWin32-x86-multi-thread) パッケージ「Msql-Mysqlモジュール」をインストールするエラー:「Msql-Mysqlモジュールs」のためにPPDを読む、しかし、それはPerl(MSWin32-x86マルチスレッド)のこの構造のために意図されません。 ってエラー。もしかしてMsql-Mysql-modulesっていうモジュールはppmからじゃインストールできないのかな。 ppm install Msql-Mysql-modules じゃなくてちゃんとコンパイラ入れてやらなきゃだめぽ?
もはや個人の日記帳
384 :
372 :04/05/15 00:00 ID:???
>>382 >>383 ごめんなさい
>>379 どうやらDBD-mysqlでもいいとのことで、そっちはppmでインストールできました。
みなさんごめんなさい
372の日記がなくなると廃墟だなここ。
そう考えるとなんで
>>383 はそんなにうざがったんだ?
自分の思い通りにいかない事が
おまえら板違いですよ
だから、PHPやPerlにおけるMySQLの運用のためのスレなんですってば。 板違いとか言う奴は今後一切mysql_queryと書いたらイカン。コピペもダメ。辞書登録もダメ。
そもそも只の単発質問スレに
>>392 のような重厚な意義があるとは思えん
DB板以前からあるんだから使い切るまではまったりつかっときゃ良いだろ。
395 :
nobodyさん :04/05/24 09:31 ID:dSsrxF7S
select で得た結果の中から特定のIDの表示順を一回のSQLで取得する方法はあるでしょうか? 例えば、成績テーブルがあり、カラムが2つ(生徒ID、得点)あるとします。 select 生徒ID,得点 from 成績テーブル order by 得点 DESC; で得点順に並べられますが、生徒IDが「10」の生徒は何番目か?を知るということです。 結果をループさせて生徒IDを見ればできるのですが、これくらいSQLでサクっと出せないか と思いますが、どうでしょうか?
>>395 サブクエリ使わないと1回では無理でしょう。
ID=10の得点をselectしてその得点以上をcount()する。
397 :
395 :04/05/24 11:19 ID:dSsrxF7S
君たち、副問い合わせを使えばできるってことは一発って事なんだよ。君たち。
select1個につき1回とかおもってるんじゃねーの
複問い合わせ=select後、select つまり2回してる、とこういうことが言いたいんだろう
サブクエリを使えないバージョンだから 副問い合わせを使わない方法を聞きたい、って話じゃないの?
402 :
395 :04/05/25 10:39 ID:xFzsgML9
言葉足らずでした。バージョンは3.23.54 です。
>>402 マニュアルに古いMySQLでの副問い合わせの置き換え
のTipsがまとまってるし、他のサイトでも情報はあるので
他のDBMSの思考のまま「副問い合わせが無い」ってだけで
考えが停止しなけりゃ、大概のものは何とかなる。
データベース設計も考慮せにゃならんこともあるので
単純に移行つうケースでは難しい局面もあるけど。
404 :
nobodyさん :04/05/26 18:28 ID:tBH3RGFO
質問させてください。 PHPからMySQLのデータをselect文で抽出しようとしているのですが、 データの最後から任意の数を昇順で収得することはできるのでしょうか? WHERE sample=1 ORDER BYsample_id DESC LIMIT 0, 5 こういう感じでやってみましたが、これだと降順になってしまいます。 DESCを入れないと最初からの5件になってしまう・・・ 今は仕方なく後でarray_reverse()でひっくり返してるんですが 抽出段階で希望の順番になってくれると処理を簡略化できるのにと思っています。 以上よろしくお願いします。
ASC
406 :
nobodyさん :04/05/27 11:39 ID:uyBl2d4s
>>404 DESC を入れなくて昇順にならないのはおかしいですね。
sample_id は数字ではなくて文字ですか?
>>405 order by のデフォルトはASCでは?
>>404 最初すげー初歩的な質問かと思ったけど、よくよく見ると
結構難しいなそれ
>>406 DESCを入れないと(昇順で)最初からの5件って言ってると思われ
>>404 SELECT * FROM table ORDER BY sample_id ASC LIMIT count(*)-5, 5;
みたいなことがやりたいんでしょ?(できないけど)
俺には泥くさい方法しか思い浮ばんorz
409 :
407 :04/05/27 14:04 ID:???
>>404 とりあえずプログラム初心者の俺が即興で考え付いたのは、
SELECT COUNT(*)で取得した全レコード数を、PHPで変数$hogeにセット
↓
$hoge -= 5
↓
WHERE sample=1 ORDER BY sample_id LIMIT " . $hoge . ", 5
でどうだろう
410 :
407 :04/05/27 14:06 ID:???
411 :
404 :04/05/27 16:51 ID:MHGXoj5w
みなさんレスありがとうございます。
>>406 実際作ろうとしているものはsample_idの部分は時間です。
10桁の数字でデータベースに格納されてます。
>>407-408 やっぱり前処理か後処理が別途必要になるわけですね。
参考になりました。ありがとうございます。
作りたいものを具体的に書くと、この2chのレス表示みたいなことがさせたいんです。
板トップだと各スレッドは1さんの後に、最新投稿が時間の古い順に10件表示されてます。
このレス部分を抽出段階でこの順番で収得するにはどうすれば良いんだろ?と
いろいろ考えてました。
412 :
nobodyさん :04/05/28 09:40 ID:yz9ImxWf
windows98+Mysql3系です。 コマンドプロンプトから外部SQLファイルを読み込ませようとしているんですが、 うまくいきません。 mysql> use test Databese changed mysql> test < tmp.sql ERROR 1064: You have an error in your SQL syntax near 'test < tmp.sql' at line 1 になってしまうんです。SQL分はネットのサンプルからコピーしたもので 間違い個所等はないように思えるんですがアドバイスお願いします。
test < tmp.sql が1行目
415 :
nobodyさん :04/05/28 13:18 ID:6cZBVmMM
>>412 外部ファイルの実行は
mysql>\. filename
じゃねーの。
416 :
412 :04/05/28 20:47 ID:???
どうもです。 \. filename 又は source filename でできました。
質問です。 次のようなテーブルがあります。 ・table_program ----- ID 番組名 番組名かな ----- ・table_song ----- ID table_programID 曲名 曲名かな ----- 「曲名」で検索して、検索結果には「曲名」と「番組名」を表示したいのですが、 どのようなSQL文になるのでしょうか? 無理ではないと思いたい のですが。 よろしくお願いします。
たぶん入門書を読んだほうがいいんでない?
>>417 SELECT s.曲名,p.番組名 FROM table_song AS s LEFT JOIN table_program AS p ON s.table_programID=p.ID WHERE s.曲名='ちんこ音頭';
>>419 ありがとうございました。
>>418 買ってみたのですが、どうも分かりづらくて・・・
で、mysql.comのマニュアルを見てたのですが、あまりにも多すぎて・・・
>>419 から逆引きで調べてみます。
/* 週末には本屋に行って来ます。 */
Windows2000 に Mysql4.0.20aをインストールしました。 WinMysqlAdmin.exe を実行すると、 ダイナミック リンク ライブラリ LIBMYSQL.dll が指定されたパスC:\mysql\bin;;C:\WINNT\system32;C:\WINNT\system;C:\WINNT;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem に見つかりませんでした。 というエラーメッセージが出ます。 \bin フォルダにはもちろん LIBMYSQL.dll は見当たらないし、\WINNT フォルダの中にも My.ini がありません。 LIBMYSQL.dll は全部で2つ見つかりました。 WinMysqlAdmin.exe を実行するには、および、不足しているファイルを補うにはどうしたらよいでしょうか?
>>421 C:\mysql\binにlibmysql.dllがないのが、なんとなくおかしい。
# MySQL4.0.18のレイアウトから4.0.20aで変わってるのかも知れんが。
MySQLのサービスを停止してから、MySQLをアンインストールして
再度インストールしてみれ。
>>421 試しにダウンロードしてみた。
確かにdllが無い。
元の4.0.17に戻しました。
424 :
421 :04/06/01 20:54 ID:???
>>422 >C:\mysql\binにlibmysql.dllがないのが、なんとなくおかしい。
そうですよね。
起動そのものができてないです。
アンインストールして再インストールしてみました。
やはり同じだ…。
ダウンロードしなおしてやってみてもダメでした。
425 :
549 :04/06/01 21:44 ID:???
>>423 なんと無かったですか!
こういうことってよくあるんでしょうか。
4.0.17 とか 4.0.18 あたりを入れたいんですが、
ダウンロードできるページが探しても見つからない。
本のCD-ROMとか使うしかないだろうか。
426 :
nobodyさん :04/06/01 22:30 ID:HgyXjo5H
427 :
421 :04/06/02 00:00 ID:???
>>426 おおお!
ありがとうございます。
(421=425=549←間違えた)
428 :
421 :04/06/02 00:33 ID:???
ちゃんとインストールできました。^^
mysqlの勉強がしたいです。 今は、win98に入れてます。それでサーバを起動させてmysqlとプロンプトに入力すると、 接続ができ中のものがなんでも見れちゃいます。 勉強したいのはそうゆう基本部分で、例えば普通レンタルサバではshellとかでサバにインスコしてある mysqlにつなげられますよね。でも、mysqlと打っても当たり前だけど、接続ができない。自分がもらってる ユーザ名とかでなきゃ。 大元のルート権限・パスワードとかを変えるにはどうすれば。とかが知りたいです。簡単に言うと 自分のwin98に入れてあるmysqlにプロンプトからmysqlとユーザ名・パスワードをなしでやっても 接続できないようにしたいんです。 接続後のことはmysqlマニュアルとかにも書いてあるので、いいのですが、基本の基本がどこに書いてあるか わからないので、どこのサイトに行けとか、mysqlマニュアルのこのページを読めとか教えて下さい。 低レベルなし津文ですみませんがどなたかお願いします。
>>429 >今は、win98に入れてます。それでサーバを起動させてmysqlとプロンプトに入力すると、
>接続ができ中のものがなんでも見れちゃいます。
確かあれだろ。mysqlって打って接続できるのはwin(普通UNIX)のroot権限を持ってるやつだけだろ。
だからサバは普通mysqldをroot権限で行わないで、別のユーザを作って行わせる。
なんか違うな・・・
mysqldで起動させたユーザだけがmysql(ユーザ名なし)で接続できるんじゃなかったっけ?
だからtelnetとかで、外部から接続してもそのユーザはmysqlを起動させたユーザじゃないから
与えられたユーザ名でしか接続できないと思う。
だから自分のパソに入れてあるなら、ユーザを二つ作ってaっていうユーザに起動させた後、bっていうユーザに
でログインするとmysql(ユーザ名なし)では接続できないんだったと思う。
間違ってるかもしれんから、先に謝る。ごめん。誰か補完してくれ。
とりあえずWinのmysqlのrootにパスを設定する。 これでrootしかアクセスできなくなる。 次にrootでユーザデータベースを作る。 GRANT 権限 ON ホスト名 データベース名 ユーザ名 IDENTIFIED パスワード みたいな感じ 俺も良く分からんからmysql grantとかで検索してくれ。
rootになってまず全てのユーザ(名無しさん)を削除せんとだめだな。
433 :
429 :04/06/02 16:06 ID:???
>>430 >>431 >>432 こんなに一杯ありがとうございます!かなり嬉しいです。
>>430 今試してみました。aユーザに起動させてaユーザを一度ログアウトしてbユーザで戻ってこようと思ったら、
ログアウトした時にmysqlもダウンしてしまいました・・・
>>431 データベースをひとつ作ってそれを扱えるユーザ・パスワードを設定するGRANT構文はできるのですが、
>とりあえずWinのmysqlのrootにパスを設定する。
がわかりません。それは名無しで接続して、名無しにパスワードを設定するってことですか?
それとも
mysql -u root;
で接続してrootという名前のユーザのパスワードを設定するってことですか?
>>432 ユーザの削除?それをやらないと名無しでいつまでたっても接続ができてしまうということですね。
mysql ユーザの削除
でぐぐってみます。
435 :
429 :04/06/02 16:37 ID:???
>>434 ありがとうございます。今、mysqlっていうデータベースでユーザ情報を管理してるらしいので、
rootで入って、use mysql して
delete from user where host='localhost' and user='';
ってやってみたらQuery OK, 1 row affected (0.16 sec)と出たので、
やった!と思って一度quitして試しに名無しで接続できるかやってみました・・・
何故か名無しで接続できてしまいました。なんかが違うみたいです。
436 :
429 :04/06/02 17:13 ID:???
use mysql; delete from user where host='localhost' and user=''; ってデータベースmysql内のテーブルuserの中からフィールド名hostの値がlocalhostで 且つ、フィールド名userの値がnull?のレコードを削除するっていう命令ですよね。 今mysqladmin内のDatabaseってタブを見てみたら今まではmysqlとか元々あるデータベースの 情報があったんですが、全て消えてました・・・ もしかして、databaseを全て削除してしまったのかもしれません。インスコしなおししなきゃいけないですよね。
437 :
429 :04/06/02 18:39 ID:???
一度インスコしなおして、またななしユーザの削除に挑みました。今度は use mysql; select user from user; で名無しがあること確認してから delete from user where user=''; として、レコード2つ消したよっていう返事をもらいました。 select user from user; で見たら確かに消えていてrootが二つ並んでるだけになりました。 その後一度mysqlをシャットダウンして再起動してみると、今度は信号が赤から青にかわらくなって しまいました。 名無しユーザを消すと何故か次の起動でおかしくなるんですが、名無しユーザは消すべきでないのでしょうか? でも普通のレンタルサーバとかなら名無しユーザなんて消していますよね。 とりあえずまた再インスコして今度は名無しユーザにパスワードでもつけてみようかと思います。
439 :
429 :04/06/02 19:24 ID:???
>>425 >こういうことってよくあるんでしょうか。
パッケージングミスは良くあることではないが、
自分では良くやるな...バージョン管理してんのに
別の混ぜちゃったり。
libmySQL.dllはnoinstall版には入ってたよ。
トップのダウンロードページのWinの項はバージョンは4.0.18
だったりするので、Win版の4.0.20aはまだ微妙なのかもしんない。
一応レポ、出しとくけどね。
なんつうか、 ・クライアントコマンドmysqlの(OSの)実行ユーザ ・DBMSであるmysqldの(OSの)実行ユーザ ・MySQLデータベースのユーザ は、ちゃんと区別して考えてくれ。 Webプログラムで利用するなら、区別の無いOS(Windows) じゃなくて、普通に区別する環境で使うことが多いだろ。
442 :
421 :04/06/03 09:27 ID:???
>>440 うーん、やっぱり人間のやってることなんだなぁ。
結局4.0.18をインストールしたんですが、dllの他にも結構足りないファイルがあるみたい。
4.0.20aと「a」がついてるのは、マイナーバージョンアップの更にマイナーなバージョンアップなんだろうか。
一応知らせたほうがいいのかなと思ったけど、レポートの出し方わかりませんでした。^^;
443 :
421 :04/06/03 09:29 ID:???
>dllの他にも結構足りないファイルがあるみたい。 4.0.18と比べてみると4.0.20aで足りないってことです。
444 :
nobodyさん :04/06/03 20:25 ID:XU5SaHAn
PHPでDBを呼び出して表示させるようにしたんですが エンコードが間違っているのか文字化けを起こしてしまいます。 ブラウザ側でエンコードを変えて見てもDBから引っ張ってきた部分は文字化けしたままになります これはMySQL側で設定を変えれば回避できるのでしょうか? またその方法等を教えていただけませんでしょうか。よろしくお願いします ちなみに PHP Version 4.3.6 MySQL 4.0.14b を使ってます
>>442 足りないファイルはレイアウトの変更もしくはパッケージングのミス。
例えばlibmysql.dllはlib/optに入っているが、パッケージされている
プログラムの中で/binにあることが前提でコンパイルされているものが
あるのでパッケージングミスと考えられる。
この辺はビルドの設定/ノンインストーラ/インストーラ版を比べてみて
調べるのが確実だが、ノンインストーラとインストーラ版では敢えて外したり、
入れたりしてるファイルもあるので、ファイルの有無でみるのではなく、
そのパッケージでエラーなどが出て整合性が取れなくなっている箇所があれば
その部分はパッケージミスと思うという感じで良いよ。
レポは日本語のバグレポからの吸い上げがどの程度進んでるかわからないので、
今のところは本家のバグレポートでpackingのカテゴリで出すのが良い。
その前に本家のMLでもチェックしとくべきだけど、まあそこは端折っても可。
447 :
444 :04/06/04 00:34 ID:???
>>446 ありがとうございます。
最近始めたばかりで書いてあることはよく理解できませんが
いろいろ見て勉強したいと思います。
448 :
421 :04/06/04 10:59 ID:???
>>445 昨日バグレポートを見ていたら、4.0.20aに関する報告は2つあっていずれも同じエラーについてでした。
一つはロシア人の人(う〜んわーるどわいど)で、「足りないファイルは足してちょ」というような答えが返ってました。
もう一人の人は私と同じように「どうしたらいいんだ〜助けてくれ! ファイル梱包してないんとちゃうん!」と焦っていた。
ノンインストーラ版をビルドする腕もないのでどんなファイルが入っているか見てみたこともなかったですが、インストーラ版と中味は一緒だと思ってました。
まさかパッケージミスに遭遇するとは思わなかったですが、今後もエラーで見分けたいと思います。
449 :
nobodyさん :04/06/07 14:22 ID:AVijgqxq
質問っていうか相談っていうか。 order by してlimitした結果を、さらにorder by で並び替えたい場合は どうすればいいでしょうか。 「日付が最新のものから5件分のデータを日付が古い方から順に並べて取得」 みたいな感じです。 以下は現在のコーディングです。 select count(*) from table; でレコード数を取得しておいて、 select * from table order by date limit レコード数-5, 5; これをSQL一発でやりたいです。 select * from table order by date desc limit 0, 5 orcer by date; こんなことがやれれば最高なのですが、もちろんこれはエラーでした。 SQL文の結果の並び順をひっくり返す方法があればそれでもいいです。
mysql にはダミー表(oracle でいうところの dual 表)みたいのはないのでしょうか? select password( 'hoehoe' ) from dual ; のようなことがやりたいのです。
451 :
450 :04/06/07 15:07 ID:???
すみません、解決しました。 select password( 'hoehoe' ) ; でできました><
>>449 select @target := id from table order by date desc limit 0, 5;
select * from table where @target <= id order by date limit 5;
何度やってもタスクバーにMySQL紹介サイトで言われている 信号のアイコンが出ないんですがこれは何が原因なのでしょうか? phpdevを使ってインスコしました。XPでSQLはVer4です。 C:\phpdev\mysql\bin\mysql.exeで起動させてます。
>>453 WinMySQLAdmin.exeを起動してみなはれ。
>>454 そのファイル名も紹介サイトに書いてあったんですが
どこを探しても見当たらないんです。ちなみにphpdevは動作確認後4.30にうp済みです。
インスコ場所もデフォルトのままです。
よければどのフォルダにあるか教えてもらえませんか?
自分で探せや
>>455 普通はmysqlのbinディレクトリだけど、phpdevは違うのかもね。
先ずは検索しる。なければパッケージされていないのでしょう。
まあ、タスクバーの信号アイコンなど無くても支障ないんで、
あきらめれば良いんじゃないか?
>>457 検索したんですが無かったので、パッケージされてないのだと思います。
>タスクバーの信号アイコンなど無くても支障ないんで
え!?あれが動いてる目安になってるものだと思ってました。
じゃあ安心ですね。これでようやく集中できます。ありがとん
459 :
457 :04/06/09 22:53 ID:???
>>458 Unix上のMySQLにはあの信号アイコンはないからねぇ。
生存確認したいなら、mysqladmin pingとかするがよろし。
会社で聞いた話だけど、Mysql+PHPで1GBのデータを5分ぐらいで検索できるって本当? っていうか、そんなにかかるものなの?
どっちだよ はっきりしろ
>>460 たった1GBで5分もかかるわけ無いだろ?
MySQLとは関係ないけどPHPのループは本当に遅いみたいね。
463 :
nobodyさん :04/06/11 23:13 ID:ReUB/uB4
教えて下さい。 MyAdminで、商品の金額が税抜きなのを 税込みの価格に一気に変更する方法を 知りたいです。お願いします。
486 32MB くらいのサーバなら5分くらいかかるかもよ。
465 :
nobodyさん :04/06/12 10:38 ID:9j+7vS6Z
>>463 UPDATE 金額テーブル SET price=price*1.05;
price が INTの時に小数以下がどうなるかはしらね。
466 :
ぺぷし :04/06/17 13:39 ID:t9pcSu9t
PHP初心者のため、ご教授いただけたら幸いです。 MySQLのデータベースのBLOBフィールドにバイナリデータとして格納してある複数の画像ファイル(JPEG)をPHPでブラウザに全て自動的に書き出すようにしたいのですが、 下記のようにDo Whileを使ってフィールドの全データを書き出そうとすると"Cannot modify header information- headers already sent by output started ..."というエラーになり、画像ではなくバイナリデータのまま出力されてしまいます。 ちなみに、ループにいれず、クエリで抽出した単一の画像だけを出力する分にはこのようなエラーは出ず、画像を表示することができるので、 ループに入れることで、header情報のContent-typeの指定が繰り返されるのがいけないのだと思うのですが、試しにループの外に header("Content-type: " . 'image/jpg'); の部分をおいてみるとファイルダウンロードダイアログボックスが開いてしまいます。 ループでの全データ書き出しはできないのでしょうか? どなたかご存知の方、いらっしゃいましたらお助け下さい。 *********************************************************************** <table border="1"> <tr><td>ID</td><td>Image</td></tr> <?php do { ?> <tr><td><?php echo $row_rs1['id'] ; ?></td> <td> <?php header("Content-type: " . 'image/jpg'); echo "<img src= {$row_rs1['image'] } >"; ?> </td> </tr> <?php } while ($row_rs1 = mysql_fetch_assoc($rs1)); ?> </table>
>>466 mysqlとは関係ない話ですが。
ブラウザ サーバ
--------- -------------
このファイルをよこせ---->
<----ほらやるぞ中身はtext/htmlだよ
htmlの中にimgタグがあるので
画像ファイルをよこせ ---->
<----ほらやるぞ中身はimage/jpegだ
htmlとjpegを一回の通信で同時には送れませんので。
>>467 さらにmysqlとは関係ない話ですが。
mhtml(mht)というものがあります。
げー
hogera.html ------ <html><body><img src="pakera.php"></body></html> pakera.php ------ <?php //なんとかしてMySQLに接続してデータを取得 Header("Content-Type: image/jpg"); echo mysql_result($result,0,0); ?> で、いかんかね?
471 :
ぺぷし :04/06/18 11:18 ID:kLx9QR2S
467、468さん 解説どうもありがとうございました。なるほどです。PHPをいきなりかぶりつきでやり始めたので、 基本が今ひとつわかっていない自分です。。。もう少し勉強します。 470さん アドバイスどうもありがとうございました。ヒントを元に少しいじってみようと思います。 ところで今回のこのスクリプトは、サイズは小さいけれどかなりの数の画像を表示する ウェブページで、例えば画像を追加するたびに、HTMLを書き換えなくても良いように、 画像をDBにアップロードしさえすれば、自動的に全画像がDBから書き出されるように したいなーと思ってトライしているものです。 ただ、あまりに多くの画像をバイナリとしてDBに格納するのは、表示の際の速度とか 実際、どうなのでしょうか。 別の方法として、画像ファイル自体は別のディレクトリにアップロードするようにして、 そのファイル名とパスだけをDBに格納して、HTMLに出力するようにすることも 可能かと思うのですけど、どちらの方法の方が適しているでしょうか・・・?
>>471 後者
あと画像を処理するPHP書くなら
getimagesize()とか調べとくといいかも
>>471 画像はファイルとして置いといたほうが扱いやすいと思う。
>>471 それよりその画像格納専用ファイルにおいてあるファイルの一覧を取得して自動的に作成。
画像以外にタイトルとかそれ以外が欲しけりゃDBかXMLでも。
475 :
ぺぷし :04/06/19 23:37 ID:M2Vk26m1
472,473,474さん レスどうもありがとうございました。 画像と一緒に文字列も書き出すようにしたいと考えているので、 後者の方法のほうがやはり無理がない気がしてきました。 ちなみにもう一つ質問させて下さい! 画像表示にかかる速度的にはどちらの方法のほうが速いと思われますか? 現時点ではDBを使わず、多量の画像をHTMLタグでハードコーディングして 全て書き出していますが、既に結構表示し終えるのに少し時間がかかって いるのですが・・・
>多量の画像をHTMLタグでハードコーディングして全て書き出していますが めんどくさいですよね。自動にしとかないと。 >既に結構表示し終えるのに少し時間がかかっているのですが・・・ 速度だけで話すなら、サムネイル用画像でも用意した方がいい。
477 :
nobodyさん :04/06/20 15:36 ID:BKvShsgW
age
>>475 一回テストでDBに画像ぶち込んで一覧表示みたいなのを
作ったことあるけど展開する時にメモリ喰いまくりだし遅いし
パフォーマンスは凄く悪い
よっぽど専門的知識があってそれ用に
パフォーマンス最適化できる自信があるか、
どうしてもDBに格納しなきゃいけないって理由でもない限り
普通は画像はDBに入れない方がいいんじゃないかと
479 :
ぺぷし :04/06/22 12:33 ID:F+BhnZqz
476さん、478さん レス、どうもありがとうございました。 478さん やっぱり画像を直接DBに入れるのはイマイチっぽいですね。 パフォーマンスを最適化するような知恵はありそうもないので、 おとなしく画像を別ディレクトリに保存する方向で行こうと思います。 ありがとうございました!
MySQLでの日付計算を教えてくだされ。先月末日を知りたいのです。 PostgreSQL なら SELECT to_char(EXTRACT('month', CURRENT_TIMESTAMP) - '1 day'::INTERVAL, 'YYYY-MM-DD'); でスコーンっと先月末日が出るんですけど、MySQLじゃどうするんですかいのぉ バージョンが3台なもんでLAST_DAY(date)が使えないんです。 SELECT DATE_FORMAT(DATE_SUB(LAST_DAY(CURRENT_DATE()), INTERVAL 1 MONTH), '%Y-%m-%d') とかアウチ もちろん SELECT DATE_FORMAT(DATE_SUB(EXTRACT(MONTH FROM CURRENT_DATE()), INTERVAL 1 DAY), '%Y-%m-%d') はエラー です。よろしく。
>480 自己解決。お騒がせ。 SELECT DATE_SUB(CURRENT_DATE(), INTERVAL EXTRACT(DAY FROM CURRENT_DATE()) DAY) すっきりせんが、どうにかなった。フロ入って嫁と一発やって寝るよ。
俺とも一発やってくれ。
483 :
nobodyさん :04/06/27 16:33 ID:dc5u0+Vm
t1とt2が全く同じ構成のテーブルであり、それを連結したいと考えているのですが 連結条件に「t1.id=t2.id」などを付けずに連結し、更に$whereを「t1.id=1」 ではなく「id=1」などで処理させる方法はないでしょうか? SELECT * FROM t1,t2 WHERE $where
>>483 t1 CROSS JOIN t2
t1の全行にt2の全行を追加
>>484 SELECT * FROM t1 CROSS JOIN t2 WHERE t1.id =1;
では成立するのですが、
SELECT * FROM t1 CROSS JOIN t2 WHERE id =1;
ではエラーになってしまいます。
テーブルを2個以上JOINする場合にWHEREを
「t1.id =1 || t2.id =1 || t3.id =1」と記述して行くしかないのでしょうか?
マニュアルには「同様に、JOIN と CROSS JOIN に関しても、MySQL 4.0.11 以降
でのみ条件を指定できます。」と書いており、4.0.11以降でなければ「id=1」という条件
では出来ないという事でしょうか?
486 :
nobodyさん :04/07/01 14:23 ID:7y8AL+GJ
検索結果を表示させるのに、 総検索件数と、10件ずつ表示させたいのですが、 現在、2回クエリ使って結果を得ています、 1回には出来ないのでしょうか? <現在> select count(*) from hoge where flag=1; select * from hoge where flag=1 limit $a,10; このような感じでおこなっていたのですが、 レコードが1万件をこえてくると、結構時間がかかってしまいます。 なにか良い方法ありませんでしょうか?
487 :
486 :04/07/01 16:08 ID:???
このような感じでおこなっていたのですが、 レコードが1万件をこえてくると、結構時間がかかってしまいます。 なにか良い方法ありませんでしょうか? ん? なんか変な質問してますね・・・。 すみません。 perlでCGIスクリプトを作成してます。 DBIでMysqlに接続していますが、 このモジュールのあたりで、先の質問のようなことを 行うことは出来ませんでしょうか? 質問するって、結構難しいですね。
>>487 phpだとmysql_num_rows()とかあるんだけどね。
Perlってそんなのないのかしらん
perlもあるよ。 一発で取ろうとするとlimit使えんねっつー話じゃね?
490 :
486 :04/07/01 17:42 ID:7y8AL+GJ
>>489 そうです。
そんな感じです。
なにか、いい方法ないのでしょうかね。
DBIモジュールのマニュアルをじっくり読んでなかったので、
今読んでみたりしてます。
>>490 http://dev.mysql.com/doc/mysql/ja/Miscellaneous_functions.html の FOUND_ROWS() を見れ。(以下触り)
> 状況によっては、LIMIT を指定しなかった場合にいくつの
> レコードが返されるかを、ステートメントを再度実行する
> ことなく確認したいことがある。このレコード数を確認する
> には SELECT ステートメントに SQL_CALC_FOUND_ROWS
> オプションを指定し、その後 FOUND_ROWS() を呼び出す。
> LIMIT なしで再度クエリを実行するより時間がかからない。
しかし、1万件程度で時間が掛かるってのも、DBのチューニング
や作りがおかしくね?
492 :
486 :04/07/02 08:11 ID:???
>>491 おお〜〜〜〜〜〜〜。
> > オプションを指定し、その後 FOUND_ROWS() を呼び出す。
> > LIMIT なしで再度クエリを実行するより時間がかからない。
確認しました。スバラシイです。
FOUND_ROWS()の呼び出しは瞬時にかえってくる。
自分のもってるオライリーのl本って、かなりバージョン古いな・・・。
新しいの買うか、ボロボロやし。
> しかし、1万件程度で時間が掛かるってのも、DBのチューニング
> や作りがおかしくね?
1万件でなく10万件でした。失礼。しかもさらに増えるし・・・。
likeとかで検索かけると、大変なことに。
チューニングもさらにシビアになりますね。
なにはともあれ、有難う御座いました〜。
491様に感謝!
>>491 知らなかったよ「FOUND_ROWS()」
しかし「MySQL バージョン 4.0.0 以降で使用できる」。
また旧版と新版で2パターン必要なのか...
494 :
nobodyさん :04/07/09 11:51 ID:+WklyQCB
今回初めてMySQLをインストールした初心者です。 参考書を見ながらインストールしたのですが、 EnvironmentタブのMyODBCのところに NotFound Driver3.51Not Found と出ています。これは、参考書ではDriver Version 〜というふうに なっていました。 あと、Databasesタブには、testのみが表示されていて、 mysqlが表示されていません。show dababasesコマンドでもmysqlは 表示されません。C:\mysql\dataには、ちゃんとmysqlのフォルダはあります。 この場合、MySQLにmysqlを認識させるにはどのようにしたらいいのでしょうか? 上記のNotFoundエラーを解消すればいいのかな・・・と思うのですが、 どのようすればいいのか分かりません。 ご存知の方がいらっしゃいましたら、よろしくお願いいたします。
質問! オラクルマスター銀って学生でも比較的簡単に取得可能でしょうか?
>>494 用語(名称)が正確でない。だから他人から
見ると意味がつかみづらい。
>EnvironmentタブのMyODBCのところに
>NotFound
>Driver3.51Not Found
これはMyODBCの状態だから、ODBC経由で接続を
行わないならそのままで構わない(正常)。必要であれば
ODBCドライバ(MyODBC)をインストールする。
>あと、Databasesタブには、testのみが表示されていて、
>mysqlが表示されていません。
恐らくWinMySQLadminで接続に使っているMySQLユーザが
データベースmysqlを参照できる権限がないものと思われる。
接続ユーザをrootに変えるか、GRANTで該当ユーザに権限を与える。
>>495 受験費用だけの問題。覚える"だけ"だから
むしろ若いうちの方が取りやすい。
あとベンダー資格なんぞ学生が持ってても
意味無いよ。無駄。会社入ってからで充分。
>あとベンダー資格なんぞ学生が持ってても >意味無いよ。無駄。会社入ってからで充分。 いやそうでもないよ、 大企業は効果薄いかもしれないが 中小だと結構はったりが利くぞ 大企業無理で中小に入る可能性があるなら損は無い。 あとシスアドとか情報処理1種などもそれなりに効果あり。
499 :
名無しさん@そうだ選挙に行こう :04/07/11 12:16 ID:xhyXSdhv
MySQLのデータベースに出てくる「オーバーヘッド」って サーバーへの負荷とイコールで考えて問題なっしんぐでしょうか?? ぐぐったけど、全く関連説明がデテコナインダス
>>499 オーバヘッドと言ったら一般的には遅延やロスのこと。
負荷とは違う。
INSERT INTO $t1 SELECT * FROM $2 の場合、t1とt2のフィールド数及びフィールドタイプは同等 でなければならないのでしょうか? t1の方のフィールドは$t2+3フィールドであります。
なんだそのめちゃくちゃな構文は INSERTにSELECT・・・
503 :
501 :04/07/12 07:39 ID:???
めちゃくちゃね・・・
2行を1行で処理したいだけなんだけどなぁ
WHEREに全部書かないとダメかな
>>502 MySQLを使った事がありますか?
朝からわらた
505 :
501 :04/07/12 12:39 ID:???
スマートではありませんが自己解決しました INSERTにSELECTを使った、めちゃくちゃな構文ですが正常に処理されています
質問内容の大予想(or透視)を要求することに素で気がついてなかったわけね。 その上“正常に処理”って、ゴミプログラムをゴミ箱行きにしたとかいうオチか?
>>501 お前みたいに偉そうな質問者初めて見た。
そろそろ夏か?
502=506=507=508 本当に夏だよな
認定厨降臨か・・・
=510
512 :
nobodyさん :04/07/13 00:12 ID:AIgAJnQb
>>497 ご返事、ありがとうございます。
また、読み辛い文章で大変申し訳ございませんでした。
本題に入らせて頂きます。
GRANTで権限を与えようと試みましたが、以下のエラーが出ます。
ERROR 1045: Access denied for user: '@localhost' (Using password: NO)
これはパスワードが違うということでしょうか?
OSへのログインの時やMySQLのmy.ini.Setupタブに書いてあるパスワードや
Administrator(←UserName) で試してみましたが、同じエラーが出ます。
原因等、ご存知の方がいらっしゃいましたら、ご教授の程、よろしくお願い致します。
>>512 >'@localhost'
ユーザが指定されてないように思われ。
もちっと前の、コンソールで入力した操作から書き出して味噌。
514 :
nobodyさん :04/07/14 20:43 ID:CWlcyttG
>>513 ご返事、ありがとうございます。
自分のやった作業を全て以下に記します。
・MyODBC-standard-3.51.8-win.msiをインストール
→これは特に特別な作業がないので問題はないと思っています。
・mysql.exe で以下のコマンドを実行
mysql> GRANT ALL PRIVILEGES ON *.* TO ユーザ名@localhost
IDENTIFIED BY 'パスワード' WITH GRANT OPTION;
→結果
ERROR 1045: Access denied for user: '@localhost' (Using password: NO)
ユーザ名とパスワードは以下に記したものをいろいろ組み合わせてやってみましたが
全て同じエラーになります。
●ユーザ名
・PCにログインするときの名前:Administrator
・my.ini Setupタブに書いてあるuser=xxxxxxxxx
●パスワード
・PCにログインするときのパス:xxxxxxxxx
・my.ini Setupタブに書いてあるpassword=xxxxxxxxx
何かお気づきの点があれば、よろしくお願い致します。
>>514 ふむ。Windowsでインストールしたばっかりの状態ということね。
とすると初期ユーザとして管理ユーザrootが、"パスワードなし"の状態で
セッティングされているので、新たにGRANT権を持つユーザを作るのであれば、
mysql.exeを次のように実行
コマンドプロンプト> mysql -uroot [ENTER] (rootをパスワード無しでログイン)
管理ユーザrootはGRANT権を持つユーザを設定できるので、
mysql> GRANT ALL ON *.* TO ユーザ名@localhost
IDENTIFIED BY 'パスワード' WITH GRANT OPTION;
(ALLはALL PRIVILEGESの省略記法)
で、 WITH GRANTな新しい管理ユーザが設定できるはず。
次に、
mysql> EXIT
コマンドプロンプト> mysql -uユーザ名 -pパスワード [ENTER]
で新しい管理ユーザでログオンできるか確認。
またrootにはパスワードを設定しといた方が良いね。
あと「PCにログインするときの名前」つまりOSのユーザと MySQLのユーザは連動しません。mysql.exeなどのmysqlのツールを 使う際にMySQLユーザを指定しなかった場合、OSのユーザ名が代替として 指定されるます(Windowsだと普通'ODBC'というユーザだったと思う)が ユーザの管理上は別のものになっています。 mysql.exeに対して、[Administrator]というユーザ名を指定した場合 MySQLでは登録されていないMySQLユーザと判断されて、匿名ユーザ としてログオンしている状態だと思います。デフォルトインストール で初期ユーザとして匿名ユーザの設定がなされています。 #最近のバージョンでは初期設定で匿名ユーザは削除されてた気もする。 それとmy.iniのuser/passwordですが、これは先のツールを使う際に 無指定だったときに代替で使われるものです。指定されているセクションで 例えば[WinMySQLadmin]であれば、その範囲のみの設定となります。 またuser/passwordの組ではなく単独で代替されるので、例えばユーザ名だけ 指定してパスワードは省略した場合などは注意が必要です。 基本的には[WinMySQLadmin]以外には指定しないのが良いです。 # WinMySQLadminはメニュー上でログオンユーザの切り替えが出来ないので。
517 :
nobodyさん :04/07/15 22:03 ID:rmg2BJyi
>>515 ,516
いつもありがとうございます。
すいません、いきなりつまづいてしまいました。
最初のコマンド「mysql> mysql -uroot;[enter]」を行うと以下のエラーが発生します。
ERROR 1064: You have an error in your SQL syntax. Check the manual that
corresponds to your MySQL server version for the right sytax to use near
'mysql -uroot' at line 1
他のところを探してみましたが、どうもよく分かりません・・・。
すいません。。。
>>517 「 mysql -uroot [ENTER]」はOSのコマンドプロンプトで行う。
故に;(セミコロン)は不要。mysql.exeにパスが通ってる
ディレクトリで入力。
OSのコマンドプロンプトは
>>155 の文中では「コマンドプロンプト」、
MySQLのプロンプトは「mysql>」と書いてます。
520 :
nobodyさん :04/07/16 23:43 ID:Nh7Z2qfw
パソコンを買い換えたので、サイト作成時のローカルテスト環境を再構築してます。 とりあえずapacheとperlは完了したので、mysqlを入れようと思いますが、 久しぶりなのでダウンロードするファイルに疑問が。 win用のmysql4.0.18を使いたいのですが、ZIP形式のものが3つありました。 1.mysql-4.0.18-win.zip 2.mysql-4.0.18-win-noinstall.zip 3.mysql-4.0.18-win-src.zip とりあえずインストーラなしの2ではないんですが、1と3の違いがわかりません。 どんな違いがあるのでしょうか?
srcというのはsorceの略 ソースコードだ というか、なぜ全部解凍して調べようとしない?
522 :
522 :04/07/17 02:19 ID:RBk3Iaoi
>>521 じゃあインストールはできないんですか?というか自分でコンパイルするってこと?
見てみます。
ニブイやっちゃなぁ。 まあ解凍してわかっただろうな。
524 :
522 :04/07/17 02:47 ID:RBk3Iaoi
ソースコードが記載されてる、ファイルがあるかないかですね。 私みたいなバカは黙って1をインスコすることにしました。
BerkleyDBなどの他のデータベースと MySQLの違いや、MySQLの利点を教えて
>>525 データベース板で効いた方がいんじゃない?
>>527 自分でちょっと探してみようかな、と全く思わせない態度が素敵♥
すごい夏厨降臨だな 探す気0かよ おそらく、厨2かなぁ?
ランダムに行をソートするselect文はどうかいたらいいですか?
532 :
nobodyさん :04/07/22 01:40 ID:BlXlQybJ
DB板にて回答がえられなかったので、こちらで質問させてください。 ストアドプロシージャで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
>>532 ワイルドカードの使い方なんて、ぐぐれば腐るほどヒットする
534 :
532 :04/07/22 10:30 ID:u/8YGDyZ
>>533 自分の聞きたいのはストアドプロシージャ内での使用方なんですが。
例えば
SELECT count(*) FROM personal where Name like Username'%' ;
にするとシンタックスエラーになりますし、
SELECT count(*) FROM personal where Name like 'Username%' ;
とすると文字列"Username%"そのものが検索キーワードになってしまうのです。
ググれば腐るほどヒットするが。
>>532 どう見ても釣りだよなぁ。
delimiter $
create procedure proctest (
in Username char(20),
in Pass char(10),
out Result int
)
begin
select count(*) into Result
from personal
where `Name` like Username and `Password` like Pass;
if Result = '1' then
select 1;
else
select -100;
end if;
end
$
call proctest('name1', 'pass1', @Result);
537 :
532 :04/07/24 02:53 ID:OJZpo2Ke
>>536 うまくいきました!本当にありがとうございました。
Mysqlのストアドプロシージャについて参考になるようなサイトってありますか?
>>533 ,535
いろいろと検索をかけてみてはいるんですが、適したサイトがみつかりません。。
もしよければ教えてもらえませんか?
質問ばかりですいません。宜しくお願いします。
538 :
536 :04/07/24 20:38 ID:???
539 :
nobodyさん :04/08/01 02:07 ID:nV30chx5
insert直後、 autoincrementのidを取得するいい方法はないでしょうか? ユニークと思われるカラムがあれば、それで検索出来るのですが ない場合はどうすればいいでしょう?
>540 LAST_INSERT_IDですね。 こんな簡便な方法があるとは知りませんでした。 ありがとうございました。
542 :
nobodyさん :04/08/06 16:35 ID:sKXbLEqO
順番を持った、可変個数の変数をMySQLに格納する時、 一レコードに、,などで区切ってつっこむか、 レコードを個々で別にして、順番を入れたカラムを作るか、 どっちがいいでしょうか? 順番カラムを作ると、そのぶんデータが無駄な気もするし、 かといって,で接続して格納するのも、DBらしくない気がします。 あるいはもっといい解決法があれば教えてください。
>>542 後者が正しいです.文字列で「,,,」は普通しませんそんなこと。
データの無駄なんか気にしないのが正しいDBです。
544 :
542 :04/08/06 21:52 ID:???
やっぱりそうなんですね。ありがとうございました。
何のためのカラムだと思ってるんだ
テーブルの3から5行目を取得したい場合はSQLをどうかけばよいのでしょうか?
mysqlの LOCK TABLE は有効なのでしょうか? かけちがいか、データが飛んでしまったよ。 何もしないほうが安定してたんですが・・・。
3から2個 3,2
550 :
nobodyさん :04/08/10 15:07 ID:oBY5B1dB
Limit
レンタルサーバのMySQLにAccessでODBC接続して データ操作していたのですが、 昨日から突然接続できなくなりました。 Can't Connect 〜〜 (10060) と出ます。 原因は何なのでしょうか。ご存知の方がおられればお願いします
553 :
nobodyさん :04/08/10 19:18 ID:Wtg2rx9f
すいません、mysqlのパスワードを紛失してしまいました。 サーバーのrootパスワードはもっているのですが、 どうすればデータベースを新規に作成できるのでしょうか? どなたかお教えください、。おねがいします。
554 :
nobodyさん :04/08/10 20:41 ID:5nTlbA9N
>552 ロリポなら障害が有ったみたいだが違うか?
556 :
nobodyさん :04/08/21 16:00 ID:kIitMI6t
order by num でnumをソートして表示しようとすると 100 110 90 80 という風な並びになってしまうのですが 80 90 100 110 とソートするにはどう記述すればいいのでしょうか?
557 :
556 :04/08/21 16:01 ID:???
間違えました 100 110 80 90 と並んでしまうのを 80 90 100 110 と並べたいのです
order by num asc
559 :
556 :04/08/21 16:06 ID:???
>>558 order by num ascでも同じ結果になっちゃうんです
order by num descだと
90
80
110
100
と並びます
560 :
556 :04/08/21 16:09 ID:kIitMI6t
あ、ごめんなさい、正確に書くべきでした。問題っぽいのが 小数点付の数値が入っている場合があるんです それも小数点以下1位までだったり2位までだったりします ここが問題っぽいですよね。 101 110.3 81.25 95.4 この様に並んでしまうのを 81.25 95.4 101 110.3 と並べる方法は無いでしょうか?
文字列型→数値型
562 :
nobodyさん :04/08/22 18:09 ID:fCwPrUXs
パスワードやIDなんかを暗号化した状態でDBに入れたいのですが、 Windows環境で復号化が可能の良い方法ってありますか? Mcrypt暗号化関数みたいのが理想なんですが……
(゚Д゚ )ハァ? 普通は暗号化されたパスと ユーザーが入力したパスを暗号化して見比べるんだろが
564 :
562 :04/08/22 18:49 ID:???
ああ、そうだ、本当だ……何考えてんだ俺……すいません。。
まぁ気にスンナ ちょっとムキになった俺も悪かったよ
>>563 でもさ、リマインダーとか作ったときどうする?
(゚Д゚ )ハァ? なんでそこでリマインダーの話が出るわけ?
>>566 どうするってどういうこと?
リマインダーで再生成して、それを暗号化して格納すりゃいいじゃん
新しいパスワードにしないでパスワードを再送する場合
パスワード再送するなんてセキュリティ何も考えてない奴しかせんだろ 普通はランダムなのを生成して新しいパスワードとする。
VARCHARの最大255では少なすぎで、TEXTの65535では多すぎるのですが TEXTの最大数を指定する方法はないでしょうか? 1つずつ追加する場合は、PHP側で文字数を指定できるのですが、他人に 使わせるもので、LOAD DATA INFILEでも追加させるので、良い方法が あるとよいのですが。
572 :
nobodyさん :04/09/10 21:17:24 ID:ChbHudjL
MySQL3.23で、テーブルの一番古いレコードを1件削除したいのですが、 Ver4ではないので、delete from table order by no limit 1; が使えません。 なにか手軽に削除する方法はないでしょうか? (selectで一番古いのを探し出してってやれば出来るんですけど)
4では消せるのかい?
574 :
nobodyさん :04/09/13 20:44:08 ID:DiNpN1u+
phpMyAdminのリレーション登録の仕方がわかりませんので質問させて下さい。 areaというテーブルと、shopというテーブルがあるのですが、 shopの「area_id」はareaの「id」とリファレンスしています。 phpMyAdminで、どこをタブのどの部分を設定すれば 紐付けされるのかがわかりません。 一応create table貼り付けます。 sqlそのまま打てるみたいなので、sqlでどう書けばいいのかが解れば 紐付けできると思うのですが…。 create table area ( idsmallint(8)not null, namevarchar(200)null, primary key(id) ); create table shop ( idsmallint(8)not null, area_idsmallint(8)not nullreferences area(id), namevarchar(200)null, 以下略 ちなみに…、翔泳社の『MySQL徹底活用』という本を 買ったのですが、本で書かれているphpMyAdminのver.が古いため 操作方法が微妙に違っていてわかりません(T_T) 初歩的な質問お許し下さい。
>>574 mysql_query(create table shop(idsmallint... ) );
576 :
nobodyさん :04/09/13 21:23:52 ID:DiNpN1u+
575さん、レス有難うございます。 ちょっと短くてよくわからないのですが…、 shopのcreate tableをmysql_query();でかこんで実行すれば良いのでしょうか? いったんshopのテーブルをドロップした後、 phpMyAdminでSQLクエリー実行してみましたが エラーになってしまいました。
577 :
575 :04/09/13 22:16:25 ID:???
578 :
574 :04/09/13 22:24:03 ID:DiNpN1u+
>>577 レス有難うございます。
phpのファイル上ではLEFT JOINで複数のテーブルから値を呼び出して
問題なく表示させています。
ただ、phpMyAdminからデータを追加する際に
例えばshopのデータを追加している時area_idにエリアの名前が
でないと不便なので、リレーションの登録をしたいんです。
579 :
574 :04/09/14 01:18:43 ID:m/olOuEy
すみません、追記です。 本に書いてあるphpMyAdminのver.は2.3.3pl1で、 そこでは『構造』タブの下の方が、 ● フィールドの追加 ● リレーション表示 ● テーブル構造の確認 [ヘルプ] となっているのですが、私のphpMyAdmin 2.5.7-pl1 だと ● フィールドの追加 ● テーブル構造の確認 [ヘルプ] となってます。 verが上なのに● リレーション表示 が設定できないのは ちょっと変だと思うのですが…。 どなたかロリ○ップのレン鯖を利用されていて phpMyAdminを使ってらっしゃる方、いらっしゃいませんか? (スレ違いだったらごめんなさい。 検索したら、以前にもphpMyAdminの話がでていたので…。)
580 :
nobodyさん :04/09/14 21:17:20 ID:TFDgdHfq
order by no desc 等で並び替えたレコードの上6行目から10行目までを表示したい場合はどうすればいいんでしょうか?
SELECT ..... WHERE id IN(1,3,2) で複数行を選んだ場合、 この 1→3→2 の順番で読むことはできないんでしょうか? 1回ずつSELECTしないとダメですか?
583 :
nobodyさん :04/09/18 15:24:35 ID:jJIXNQco
テーブルの構造が以下のようになっていた場合に、 テーブルA------------------ ID、人物 テーブルB------------------ ID、テーブルAのID、持ち物 持ち物のデータに(すいか、ばなな、みかん、ぶどう)があるとします。 で、すいかとみかんを持った人物を検索したい場合にMySQL以外だと SELECT テーブルA.ID FROM テーブルA, テーブルB WHERE (持ち物 LIKE %みかん%) AND (テーブルA.ID = (SELECT テーブルAのID FROM テーブルB WHERE (持ち物 LIKE %すいか%)); のように副問い合わせを使って検索できるのですが、 この場合MySQLだとどのように検索することができるのでしょうか。 わかる方、ご教授お願いします。
>>582 IN (value, ...) で返されるレコードの順番を指定することはできない。
というか、order by節を使わない場合のレコード順は不定となる。これは他のRDBでも同じ。
order byを何とかして使うか、1回ずつselectするか、プログラムの側で並び替えるしかない。
>>583 MySQL 4.1以降ならサブクエリをサポートしてるよ。
http://dev.mysql.com/doc/mysql/ja/Subqueries.html けど、その例なら自己結合を使ったほうが簡単だと思う。
select b1.テーブルAのID from テーブルB b1, テーブルB b2
where b1.テーブルAのID = b2.テーブルAのID
and b1.持ち物 like '%すいか%' and b2.持ち物 like '%みかん%';
585 :
583 :04/09/19 02:06:03 ID:0NH761Ca
>>584 ありがとうございます。
自己結合の存在を忘れていました(^^;
質問です。PHP未経験ですみません。 現在PHPでマルチスレッドを想定したWebシステムを作成しています。 クライアントからの要求時、MySQLからSELECTの結果オブジェクト を取得して表示し、終了後DBを切断する処理を行っているのですが、 切断前にmysql_free_result関数で開放するようにした方が宜しいの でしょうか? PHPマニュアルによると、mysql_free_result()はスクリプト実行の メモリの使用量が多すぎると懸念される場合にのみ必要になります。 となっているのですが、データ量が多いために検討しております。 マルチスレッドで扱った場合、mysql_free_resultを実行した際に 他に影響が出てしまうようなことはあるのでしょうか?
>>586 PHPでマルチスレッド…
マルチスレッド型のhttpdと組み合わせた場合の影響の話?
取り合えず、mysql_free_resultでフリーにされたりする
結果オブジェクトは、各"mysqlクライアント"のもの。
mysqlユーザ毎のものでもないし、mysqlサーバ側のものでもない。
588 :
nobodyさん :04/09/23 11:03:54 ID:dmhyGv3h
以前、web制作をやっていたものの、今の会社の本業の仕事の合間に webのリニューアルをやってるます。 そこでお伺いしたいのでつが、新しく鯖を借りてMy SQLとPostgres SQLが 標準で使えるものにしました。 当方、Perl,PHP,SQLを一通り勉強した事があるので管理ツールphpmyadmin などで簡単にテーブルぐらい組めるのではないかと思っていたのですが Webで検索してもオペレーションに関するドキュメントが見つかりません。 英語はTOEIC750ぐらいで大体できると思いますが、何かオペレーションを 簡単に解説するサイトなり本なりあるのでしょうか? それとも本屋さんでMy SQL,Postgres SQLをフルに勉強する必要がありますか? ご叱咤、ご指導お願いします。
589 :
nobodyさん :04/09/23 11:57:25 ID:/TBsLWrJ
591 :
nobodyさん :04/09/25 05:59:33 ID:B6UlPK9C
MySQLって同じOSの下に2つインストールして、2種類のデータベースサーバを建てることってできる? 練習用にdefault-character-set=ujisのとdefault-character-set=sjisと2種類建てたいんだけど
592 :
nobodyさん :04/09/25 09:14:22 ID:4AK3lwq0
当方、perl ActivePerl-5.8.4.810-MSWin32-x86.msi からmysql mysql-4.1.4-gamma-win を使っているのですが mysql側のタイムスタンプなどで時間記録を残す時に perlのtimeのような1970/01/01を基準とした関数はないのでしょうか? おそらく、unixなんたら〜に該当する関数でありそうなんですが 日数表示などはあっても秒数表示がみあたりません。 お力添えしていただけないでしょうか。お願いします。
594 :
529 :04/09/25 10:07:19 ID:???
レスありがとうございます。 私もそこは見つけて create table timestamp ( id MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT, TimeStampName VARCHAR(50), time TIMESTAMP(14) NOT NULL, time2 UNIX_TIMESTAMP() NOT NULL, PRIMARY KEY (id) ); このようなテーブルを作ってみたのですが ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNIX_TIMESTAMP() NOT NULL, PRIMARY KEY (id) )' at line 5 このようなエラーがでてwinでは無理なのかと思っていました。 これはwinではなく、verエラーもしくは構文エラーになるのでしょうか? 先ほど マニュアルにあるように SELECT UNIX_TIMESTAMP(); という使い方をすれば正常に動作してくれましたので構文エラーだと思うのですが 上に書いたようにテーブル作成の要素の一つとして設定することはできないのでしょうか・・
596 :
529 :04/09/25 18:42:53 ID:???
>>595 どうもです。
リンク先読ませていただきました。
ない知恵絞った結果、mysqlから抽出したTIMESTAMP(14) データを
再度select unix_timestamp(抽出したデータ)
というような形で変換しました。
mysqladmin -u root create testdb と実行して、エラーなしでmysql\dataにtestdbフォルダが生成されているのですが、 mysqlshowと打ってみると +-----------+ | Databases | +-----------+ | test | +-----------+ となっていてtestdbが出てこないのですが、原因は何でしょうか・・・ mysqladmin -u root drop testdb と実行して、yを選択すると Database "testdb" dropped と表示されてmysql\dataのtestdbフォルダも削除されるのですが。
>>597 mysqlshow -u root
でどうぞ。
>>598 あぁぁ・・・できました><
やはり付け焼刃でつつくとこうなるんですね;;
どうもありがとうございました。
600 :
nobodyさん :04/09/28 15:47:09 ID:O7ctbSQ2
スレに便乗して悪いけど、 windowsのMySQLはMySQLのディレクトリの直ぐ下にdataディレクトリがあってそこにDBのデータが蓄積されてるけど Linux版のMySQLはどこのディレクトリに格納されるんですか? dataディレクトリが見当たらないのですが。
>>600 ディストロによって違うと思うけど、rpmとかdebを調べるんじゃないかな
ソースから入れてるならMakefileを見れば分かる
それ以上の詳しいことはLinux板で聞いたほうが早い
602 :
nobodyさん :04/09/30 15:57:16 ID:6hdui1am
MysQLのCREATE TABLEをSQLファイルに入れて読み込むにはどうすればいいのですか?
604 :
602 :04/09/30 17:37:07 ID:6hdui1am
でも、PHPファイル上から読み込むには?・・・
InnoDB Hot Backupって一度購入したら他のサーバデモつかえる?
>>604 ファイルを読んで、そのSQLをPHPのmysql関数で叩く。
>>605 期限付きまたは無期限の、サーバ毎のライセンス。
サーバの入れ替えに伴う移動は出来るだろうけどね。
608 :
602 :04/09/30 23:34:28 ID:6hdui1am
>>606 読みました、でもDBを作る関数がわかりません
609 :
:04/10/01 01:23:01 ID:???
こそこそageる暇があるのなら「php mysql」でぐぐれば? いくらでもヒットするぞ
>>608 ちゃんと探せ。ただ俺が言ってるのはDBを作るSQLを使った方法。どっちでも良いけど。
PHPのリファレンスマニュアルぐらい読んだら?あと、いちいち訊くより
入門本一冊買った方がスムーズに学習できると思うけど?
なんであそこまで懇切丁寧なマニュアルがあるのに読もうとしないんだろうね。
613 :
nobodyさん :04/10/01 17:28:26 ID:TVRBqqbo
vachar項目で全角文字が入っている項目同士の 外部結合はできない? select a.zzz,b.xxx from a left join b on a.aaa b.aaa aaaには全角文字で同じ値が入っている b.xxxがnullになってしまう
614 :
nobodyさん :04/10/01 20:27:40 ID:syLlomTs
マニュアルのmysqldumpの項目で、いまいちわからんのですよ・・・ データベースサーバA から データベースサーバB に、 mysqldump で データベースをコピーしたいと思ってます。 サーバAのデータベース(テーブル)はLockしたくないのですが、 サーバBのデータベース(テーブル)はLockしてもOKです。 --add-locks と --lock-tables これ、どんなLockになるのか、マニュアルから読み取れませんでした。 教えてもらえませんでしょうか?
615 :
614 :04/10/01 21:09:26 ID:syLlomTs
dumpはdumpとるだけだから、lockしたくなかったら、 両方のオプションをつけない方向ですね… 続けて質問なのですが、 mysqldump では 複数のテーブルを一度にdumpすることはできないでしょうか?
>>615 "tables"つうのは「テーブル名をスペースでセパレートして列挙」つうこっちゃ。
617 :
616 :04/10/01 22:32:10 ID:???
ああ複数のDBに跨ってということなら、やりかたは俺は知らない。
618 :
nobodyさん :04/10/02 19:45:56 ID:zf6X98MX
自動インストールプログラムでインストールしたのですが、 プロンプトで実行しようとするとcannot conect local hostというのが 出ます。 どうしたらよいでしょうか?
619 :
618 :04/10/02 19:59:52 ID:zf6X98MX
もっと詳しく書くとこれです。 can't connect to mysql server on 'localhost' 環境はwindous xp homeです。
>>618 単純に考えてMySQLサーバ(mysqld)が起動していない。
621 :
618 :04/10/02 20:12:20 ID:zf6X98MX
c:\mysql\bin>mysqld と入力したのですが、何の反応も無く改行します。 その後、 C:\mysql\bin > mysqladmin -u root password root_s_pwd という感じで入力すると、can't connect to mysql server on 'localhost' など、何行かエラーメッセージが出てきます。
>>621 >c:\mysql\bin>mysqld
>と入力したのですが、何の反応も無く改行します。
起動して無いと思われ。つかインストーラでインストールすると
自動的にサービスに自動起動するように登録される。
(コマンドラインでmysqldとして普通のプロセスとして起動させるのも間違いではない)
エラーログが出てるから読んでごらん。
623 :
618 :04/10/02 22:55:17 ID:Mfak8V2G
>>621 >>エラーログが出てるから読んでごらん。
それがこれなのですが。
can't connect to mysql server on 'localhost'
625 :
618 :04/10/03 00:23:15 ID:mW2Tv4q+
>>624 なんとか起動できました。
最初のマスター登録をしてなかったので起動しなかったことが
わかりました。
ありがとうございました!!
626 :
nobodyさん :04/10/03 16:41:42 ID:HbeYcF9z
mysql-4.1.5-gamma-win.zipをインストールしている最中なのですが、 MySQL Server Instance Configuration Wizardの最後の画面で、Execute をクリックした後にStart serviceの項目に×印が入りFinishができません。 どうしたらよろしいでしょうか?
627 :
626 :04/10/03 17:01:54 ID:HbeYcF9z
MySQL Server Instance Configuration Wizardの最後の画面を 終了しないままMySQLを起ち上げたのですが、コマンドプロンプトで mysqld is aliveと出ました。 正常動作しているみたいなのですが、 このままMySQL Server Instance Configuration Wizardの最後の画面を Cancelで終了しても良いのでしょうか?
628 :
nobodyさん :04/10/11 10:38:34 ID:29ynadmT
質問させて下さい。MySQL 4.0.14です。 例えば、日記のデータが保存されているDBで、 8月1日からのデータから過去に10日分表示させたい場合のセレクト文がわかりません。 ※データは必ずしも毎日入っているわけではありません。 このテーブルのPRIMARY KEYはtoday(データ型:date)です。 SELECT today FROM diary WHERE today = '2004-08-01'; だと1日分ですが…ここから10件表示させたいんです。 ヨロシクお願いしますm(_ _)m
SELECT today FROM diary WHERE today <= '2004-08-01' limit 10; じゃないの?俺もよくわからんけど。
630 :
628 :04/10/11 12:09:30 ID:29ynadmT
できました(*^▽^*) 有難うございました♪スレのレベル下げちゃってゴメンナサイ。 629さん有難うございました。
XREAでMySQLのデータベースを使用しているのですが、 PHP上で、 mysql_query("CREATE table temp1 AS SELECT id FROM m_act_imp WHERE (name LIKE '%".$act."%');"); という文を発行すると、テーブルtemp1はできますが、 LIKEにマッチしてるにも関わらず空になってしまうのです。 phpmyadmin上でならばtemp1上のidにデータが格納されるのですが・・・。 何故空になってしまうのでしょうか? よければお教えください。お願いします。 MySQLは3.23.58です。
>>631 思わぬ勘違いをしていることもよくあるから、まずはqueryに渡す文字列を画面に
も表示してみることから始めてみましょう。
633 :
631 :04/10/12 17:49:38 ID:???
ローカルにサーバー立ててやってみたら、できました。
単にレンタルサーバのユーザーに権限がなかっただけ・・・ですかね。
MySQLは4.0.12ですが関係ないでしょうし・・・。
>>632 それはやってたんですよね。
結果的にはあまり関係はありませんでしたが、
お早いお返事ありがとうございました。
634 :
nobodyさん :04/10/13 08:01:16 ID:pwP4Zh+W
phpMyAdminのランタイム情報の、 o 時毎 とはどういう意味でしょうか?
635 :
困りました :04/10/13 18:56:57 ID:4r9iZ+Q4
教えてください。 MySQL+PHP4.Xで開発をしているのですが ある不特定のユーザーが登録済みのデータや画像ファイルを変更しようとすると 登録してあるデータおよび画像ファイルが消えてしまう現象が起きました。 消えない場合もありました。 PHPのソースを追いかけても削除しているロジックがありません 内部で再現テストをしてもまったく起きる気配がありません。。。 しかし、ユーザーから「データが消えた」とクレームがいまだ来たりしています。 一般向けに公開しているサイトであるため複数アクセスはあるので トランザクションの問題かと思ったりもしたのですが テスト上ではこういう現象はやはり起きませんでした MySQLの設定でこういう問題は回避できるのでしょうか? それともユーザーの回線が細いとこういう現象がおきやすいのでしょうか? OSはRedHat7Jです
636 :
困りました :04/10/13 18:58:58 ID:4r9iZ+Q4
追記です MySQL のバージョンは、3.23.54 です
>>635 そんだけの情報で何か判断は付かんわ。
不完全なデータで更新(上書き)されちゃってる感じか。
再現テストは「ユーザーの回線が細い」と問題がでると思われる
ような作りの部分があるなら、ちゃんとネットワークの延滞を作ったり
帯域を絞って仮想環境作ってテストした方が良いよ。
638 :
困りました :04/10/13 20:53:13 ID:4r9iZ+Q4
ありがとうございました。 ネットワークの延滞を作ったり 帯域を絞って仮想環境作ってテストしていないので まずはそこら辺を考慮したテストを行っていきます。
>>638 あとDBMS側で更新クエリログを取るのと、PHPスクリプト側で
要所要所でログ出力してテストしないと意味が無いので忘れずに。
640 :
nobodyさん :04/10/14 18:09:39 ID:bdzAlbua
MySQL4.0.20なんだが、 name | DATA -----+------ neko |ねこ nuko |ぬこ giko |ぎこ (以下略) こーゆーテーブル試しに作って、 select * テーブル where data 'ね%'; を実行すると、[ねこ]と[ぬこ]がマッチしてしまうのだが、これはなぜだ? select * テーブル where data 'ぎ%'; だとちゃんと[ぎこ]だけがマッチするんだけどなぁ。
>>641 すばやい回答さんくす。
SQL自体勉強始めたばっかりなもので。
これからがんばってドキュメント類ばりばり読み進めます。
海より深く感謝。
643 :
nobodyさん :04/10/15 17:26:39 ID:K5MUiGQA
MySQLって個人のウェブサイトの運用に役に立ちますか? 掲示板の書き込みの管理くらいしか思いつきませんが… みなさんはどんな用途でMySQL使ってるんですか?
>>643 水泳大会の記録を保存している。
携帯で検索できるようにして大会会場でも記録の確認ができます。
PHP+MySQLで掲示板を作ろうと思ってるんですが、ログとMySQLに保存するようにすれば排他処理はしなくていいんですか?
何をどう排他処理したいのかわからないが やらないよりはやったほうがいいんじゃないの? 複数人で使う掲示板ならなおさらだね
>>645 ファイルロックを気にしてんの?
しなくていいよ。 複数人で使う掲示板であっても
648 :
645 :04/10/17 02:59:46 ID:???
>>647 ありがとうございます。ファイルロックの事です。
PHP+Mysqlで掲示板作り私も興味あります 処理早いよね?
>>649 あなたの書いたコードによるのであなたの書いたコードで実測してください
652 :
650 :04/10/17 16:20:49 ID:???
653 :
nobodyさん :04/10/18 11:46:27 ID:x7S7FTDO
すみません。質問させてください。 【環境】 OSX10.3.4 PHP4.0 phpMyAdmin Version 2.6.0, pl2 上記の環境をローカルに作成したのですが phpMyAdminがうまく動作しません。 言語の変更やテーブル作成をしようとクリックすると サーバが見つかりませんというエラーが出てしまいます。
PHP4.0に驚いた
655 :
653 :04/10/18 12:26:21 ID:x7S7FTDO
またmySQLを「mysql」コマンドで起動させようとすると command not foundで認識されません。
>>653 phpMyAdmin だけをインストールして MySQL 本体をインストールしていないと見た。
657 :
653 :04/10/18 13:25:01 ID:x7S7FTDO
お返事ありがとうございます。 おそらくMySQLのほうが怪しいです。 手順通りインストールしたものの コマンドが使えません。 書籍にはインストールしたらすぐに コマンドを使用できると書いてあるのですが。 もちろんMySQLは起動してます。。。
サーバーが見つかりません ↑ そのままだと思うw サーバーがないんじゃ・・・w
659 :
:04/10/18 15:47:18 ID:???
660 :
653 :04/10/18 18:31:28 ID:x7S7FTDO
どうしてもmysqlに入れないです。。。 command not found。。 mysqlコマンドを使用するのに 特別な設定が必要なのでしょうか??
>>660 ・(そのユーザに対して)パスが通ってない。
・コマンドツール類がサーバとは別パッケージで、それをインストールしてない。
本の記述通りのもの(同一バージョン/パッケージ)を、指示通り入れてるか確認
662 :
653 :04/10/18 19:04:27 ID:x7S7FTDO
>>661 お返事ありがとうございます。
一番目のパスの設定は特にしていないです。
どのように設定するのでしょうか??
パスの設定方法が本に書かれていないわけがないと思うのだが
この手のオチは「本の記載通りにきちんとやっていませんでした」が大半。
665 :
nobodyさん :04/10/18 21:56:32 ID:x7S7FTDO
結局パスは通さずにディレクトリ指定で コマンドたたいて入りました。 mysql> create database XXX; ERROR 1044: Access denied for user: '@localhost' to database 'XXX' これはどういう状態なのでしょうか??
666 :
:04/10/18 22:04:34 ID:???
anonymousでログインしたってことじゃ?
667 :
nobodyさん :04/10/18 22:04:36 ID:x7S7FTDO
ユーザの権限なんですかね。。。 今度はrootで入ったら mysql> create database XXX; ERROR 1006: Can't create database 'XXX'. (errno: 13) というエラーが発生してしまいました。
>>667 > ERROR 1006: Can't create database 'XXX'. (errno: 13)
errno 13はOSが出してるエラーで、EACCESS (Permission denied)。
MySQLではデータベースをディレクトリにマップするので、このエラーが出たということは
mysqldはデータディレクトリ内にサブディレクトリを作る権限がないということ。
データディレクトリのパーミッションを確認してみたら?
669 :
nobodyさん :04/10/18 23:36:36 ID:x7S7FTDO
すみません。 回答が質問を呼ぶ形になって申し訳ないです。 mysqldとは一体なんなのでしょうか?
670 :
668 :04/10/18 23:49:38 ID:???
671 :
nobodyさん :04/10/19 22:13:12 ID:rQaAfL61
mysqlのデータ飛んだぞ やっぱりwindowsサーバはゴミだな
ロックしないだけでデータが飛ぶなんて普通ありえないだろ?DBなんだから
すみません、己の不明を恥じつつ質問させてください。 メールアドレスの重複を許さないテーブルを作成したいと思います。 メールアドレスをprimary keyとして指定すればいいのだと思うのですが、 255文字以上の文字列はprimary keyにできないのでしょうか。 RFC2821で許されるメールアドレスの最大長は64byte@255byteとのことで、 255文字を超えてしまいます。 ハッシュをprimary keyとすることもできるようなのですが、 SHA1やMD5などのハッシュを使うと非常にまれに異なるメールアドレスから 同一のハッシュが生成されてしまうのではないでしょうか。 どなたか知恵を貸していただけませんでしょうか。
>>675 バージョンがわからないのでなんともいえないけど
1. TEXT型とする(格納前にアプリケーション側で長さチェック)
CREATE TABLE mailaddr(addr TEXT NOT NULL, PRIMARY KEY(addr(320));
2. local-partとdomainに分けて複合キーとする
CREATE TABLE mailaddr(localpart CHAR(64) NOT NULL, domain CHAR(255) NOT NULL,
PRIMARY KEY(localpart, domain));
3. 最大キー長を変更してmysqldをコンパイルしなおす
4. 「このシステムはRFC821に従いました」と主張する、または255文字を超えるメールアドレス
は格納できない仕様だと主張する
677 :
675 :04/10/20 15:56:42 ID:???
>>676 × CREATE TABLE mailaddr(addr TEXT NOT NULL, PRIMARY KEY(addr(320));
○ CREATE TABLE mailaddr(addr TEXT NOT NULL, PRIMARY KEY(addr(320)));
閉じ括弧が1つ抜けてた。
ハッシュを簡易チェック用(サーチ用インデックス)として、 アプリ側で厳密チェックという作りではいかんのか? SQLのユニークエラーでは弾けないけど。
679 :
675 :04/10/20 17:26:25 ID:???
みなさまどうもありがとうございます。
>>676 少なくとも手元の環境(debian stableとtestingの3.23.49と4.0.21)では1.が蹴られましたので、
3.が必要となると思われますが他のアプリケーションへの影響が怖いのと、
そもそもの255文字という制約が2.の解を採るべきだと示唆しているように思えますので、
今回は2.で行こうと思います。それでも手元では500byteまでみたいですが。
クライアントがいる場合は4.もアリですね。
>>678 Webアプリでページからメールアドレスを登録できるようなものを考えていて、新規エントリを
加える際にいきなりinsertして、それが成功したか否かで重複を検出しようと思っているのです。
今回は最大320文字なのでこれをインデックスに使っても効率の問題は出ないと思うのですが、
これが桁違いに大きいデータの場合はどうすればいいのでしょうね。
世の中的にはSHA1の衝突確率を0とみなしてハッシュのみをprimary keyとすることになっている
のでしょうか(データ自体の比較は行なわない)?
>>679 現実的にはドメイン部分はサブドメイン有りでも100文字あれば足りるので
255で切っても良いと思うけどね
可能性を考えたら切りないし現実的な対応も設計者のセンスだと思うよ。
おれなら255で切って、これで入力出来ないとか言う人は愉快犯として無視するね。
681 :
nobodyさん :04/10/20 21:48:24 ID:5ZEjjEhO
win2000+mysqlなんですが、 cmd.exeからc:\mysql\bin\mysqlにログインして「set globals ○○=××;」とすると 設定が変更されるんですが、マシンを再起動すると初期値に戻ってしまいます。 何度やってもそうなります。なぜなんでしょうか?
>>681 そういう作りになってるから。
正確には貴方が恐らく欲しいと思われる結果に対しての
操作の選択肢として間違ったものを選んでいるため。
683 :
nobodyさん :04/10/20 23:30:08 ID:5ZEjjEhO
>>682 どうしたらいいんでしょうか。お願いします、教えてください。
686 :
nobodyさん :04/10/21 13:25:01 ID:a34sr5QL
AUTO_INCREMENT で a001 -> a002 -> a003 って可能ですか? 何か特別な設定が必要でしょうか?
test
どうしたらいいんでしょうか。お願いします、教えてください。
>>686 それは auto_increment じゃなくて magical_increment じゃん www
create table T1 (
a int not null primary key auto_increment
);
select concat('a', lpad(a, 3, '0')) from T1;
692 :
nobodyさん :04/10/21 20:51:48 ID:B+QZBvw9
textとvarcharって負荷的にかなり違うんでしょうか? 文字の最大長のみが違う二種類のデータがあるんですが、 テーブルを別にするべきか、 全部textにして一つのテーブルに入れちゃうべきか、悩んでいます。 あまり違わない気もするし…どうなんでしょう?
int(11)と tinyint(11)ってどうちがうんでしょうか?
>>692 まずは正規化とかそういうのをちゃんと勉強して
まっとうなスキーマ設計ができるようになれ
負荷とか効率とかで悩むのはそれからでいい
bigintを一意なIDとして使った場合、 64bit =2^64 =18446744073709551616 つまり仮に1日に1億IDを消費しても、 184467440737日=505390248年もつ この計算であってますか?
696 :
681 :04/10/22 04:50:08 ID:???
>>684 ありがとうございます。my.iniに直接書けば良かったのですね。
ご親切なレスに感謝いたします。
>>694 そうですね。
今まで間に合わせの知識でやってきて
ちゃんとモデリングの勉強をしてなかったので、一度勉強してみます。
知識欲からパフォーマンスチューニングについて質問です(素人、勉強中です)。 例えば2ちゃんねるみたいな大量アクセスがあり、頻繁に書き込みがある スレッドと、そうではなく過疎化しているスレッドからなる掲示板があって、 1つのテーブルでユニークID、板ID、スレッドID、記事ID・・・のように 管理するとします。細かい話をしだすとキリが無いので、なんとなく一般的に ベストなインデックスがついているとします。この場合、メモリ管理はどのへんの 設定を変えるとパフォーマンスに一番効果があるでしょうか?query_cache_sizeでしょうか? ちなみにあくまでMYSQLの知識欲を満たしたいので、HTML化しろとかは無しで。
>>698 >細かい話をしだすとキリが無い
ここをちゃんと出してくれなきゃ、最適化なんて出来ないべさ。
特に掲示板の仕様(DB周辺)と掲示板の使われ方(アクセス)の割合とか。
ROMが多いなら、チューニングも変わってくるだろ。
700 :
698 :04/10/22 21:52:08 ID:???
>>699 では書き込みをするユーザ1に対してROMが99人いるという前提にしてください。
また、いわゆる「祭り」状態はイレギュラーなので、条件から除外してもらってもかまいません。
もちろん、「祭り」込みでの提案も歓迎です。
>>700 まだまだ足りないが…
まあ、オーソドックスで正しいDB設計のBBSにおいて
書き手(UPDATE/INSERT)に対して、読み手(SELECT)が圧倒的に
多ければクエリキャッシュは充分にパフォーマンスアップに貢献する。
実際自分のところで早々にMySQL3からMySQL4に移行した理由のひとつ。
但し、アプリがキャッシュがきちんと働くクエリが組み立てられるつくりに
なっているか、その辺の見直しは必要。普通に作っても変なクエリは
投げてないと思うけど。読み出しカウンターを同一のテーブルに
入れてる目も当てられない作りにする香具師がいないとは、
昨今のレベルをみてると、言い切れないからね。
702 :
nobodyさん :04/10/23 01:04:29 ID:fI1cafOM
MySQLの接続ドライバに関して質問です。 UnixのMySQLサーバから一覧情報を取得して、Excelに一覧表示を行い、 再度入力された条件から、MySQLサーバにデータの登録を行う処理を 考えております。 経験者の方おりましたら教えていただきたいのですが、Windowsから Unixのデータベースに接続して処理を行うためには、クライアント側の 設定はODBCの設定でホストIPアドレスにUnixサーバのIPアドレスを指定 することで対応できるのでしょうか? 急きょ調査することになりまして、数少ない情報のなか、ご存知の方お りましたら宜しくお願いします。
>>702 アプリ側がODBC APIを使って接続するなら、純正のMySQL用
ODBCドライバー - MyODBCについて調べてみてください。
>>701 >読み出しカウンターを同一のテーブルに
>入れてる目も当てられない作り
ここんとこ、もう少し詳しくお願いしたい。
ぶっちゃけるが、「読み出しカウンター」という言葉すら知らんかったので。
>>704 その記事が何回読まれたとか、そういう変化の激しいフィールドを
含めてたりしてないかということ。要するにテーブル内の値が
変化するとキャッシュが毎回無効になるでしょ。
もしそれが本当に必要なら別枠で保持して無いと駄目。
707 :
704 :04/10/23 21:23:18 ID:???
>>706 理解した。
ところで、query_cache_sizeでFAなわけ?>ALL
708 :
nobodyさん :04/10/24 01:08:51 ID:AzGved6L
php+mysql min(hoge)で0は返さないように、あるいはmax(hoge)でnullを返さないようにするのはできますか?
>>708 事前に0やnullのデータをテーブルから削除しておくといいよ
where hoge is not null
>709 それは無理です >710 それも無理です count()のdistinctみたいなのがmin()やmax()にもあるかと期待しただけなんです
マジレス
他人と最低限の意思疎通ができる文章力をまず身につけることだな
何が「無理」なんだ?
>>708 の文章から相手に何が伝わると思うんだ?
なんで min と max で 必要なん? 君は書き方勉強し
714 :
nobodyさん :04/10/25 19:37:05 ID:wXNHm+JO
Windows2000Pro上でMySQL4.0.20-bを使っていましたが、 サービスが立ち上がらなくなってしまったので MySQL4.0.20-bをアンインストールし、MySQL4.0.21を 4.0.20-bと同じC:\mysql\以下にインストールしなおしたところ C:\mysql\data\の内容を読んでくれないのです。 my.iniには datadir=C:/mysql/data と記述されています。 どうしたら4.0.20-bのデータベースを読み込む事が出来るのでしょうか? アドバイスをお願いいたします。
715 :
nobodyさん :04/10/25 21:51:57 ID:L0lPqJ99
こんな処理をSQLだけで出来るでしょうか。 今SQL文は勉強中なのですが…質問させてください。 環境は、PHP4.3.8 + MySQL 4.0.20です。 ゲームの結果を入出力、計算出来るシステムを作っています。 テーブルがT1とT2の2つあり、 T1には試合結果、T2にはメンバーデータが入っています。 T1テーブル(試合結果)には、主に4v4で行うゲームのため、 勝者ID1〜4、敗者ID1〜4という8個のカラムが含まれています。 また、T2テーブル(メンバーデータ)は、上記からご察しの通り、 1レコードが1プレイヤーのデータで、主キーとしてプレイヤーID(AUTO INCREMENT)があります。 このシステムを構築する上で、なるべくSQL側に処理をさせようと考え、 勝敗数などのカラムをプレイヤーデータには作っていません。 で、なんとかなるだろうとやっていたんですが、そこで行き詰まりました。 SELECT プレイヤーID,勝数,負数,(勝数*100/(勝+負))as勝率 FROM 両方のテーブル(T1,T2) ORDER BY 勝数(負数や勝率等も) みたいなことがしたいのですが、どうも分かりません。 サブクエリというのが使えればいけるかと思ったんですが、MySQL4.2からのようで。 INNER JOINなんかを使うのかな、なんて思ったんですが、 どうもテーブルの結合(?)というのが理解し辛く、壁にあたっております。 どなたか、模範解答なんぞを示してくださると助かります。 mysql ヘルプ!
716 :
715 :04/10/25 21:56:02 ID:???
また、余談なんですが、 このシステムは、試合データは数百以上、 メンバーデータは50レコードに満たない程度のものです。 実は最初、T2テーブルのほうに、勝数や負数のカラムを配置して、 ログベースで処理していたんですが、 自分のスキルアップのために、上記のような形に挑戦しています。 この程度のものでしたら、前者と後者で、どちらの処理のほうが、 理想的なものなのか、助言も頂けると幸いです。 よろしくお願いします。
717 :
nobodyさん :04/10/25 23:37:40 ID:9fphDW68
助けてください。 以下のエラーで困ってます。 ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (61) MYSQLのページのエラーマニュアルを呼んだんですがさっぱりです
>>717 おいらはアンタがどういう環境でどういう状況(インストール直後なのか運用中で)に
そうなってるかが、その書き込みからだけだとさっぱりだよ。
>>715 > 勝者ID1〜4、敗者ID1〜4という8個のカラム
ここが少しひっかかる。主に4v4というけど、この対戦人数は変わったりするの?
勝敗の集計をプレイヤーIDごとに出したいんだったら、
プレイヤーマスタテーブル
プレイヤーID
氏名
他、詳細データ…
対戦組み合わせテーブル
組み合わせID
プレイヤーID
東西区分
勝敗テーブル
組み合わせID
勝敗(東or西)
勝敗を表わすのにどうしようか迷ったけど
相撲に倣って東/西と称してみた。
720 :
715 :04/10/27 03:54:49 ID:???
>>719 お返事遅れて申し訳ないです。
ありがとうございます。
> 主に4v4というけど、この対戦人数は変わったりするの?
そうですね、可変です。
勝者ID1と敗者ID1というカラムが必須で、後はNULLが入る可能性もあります。
書いて頂いたテーブル構成での「組み合わせID」ですが、
現在、1試合(=対戦組み合わせテーブル1レコード)に、
こちらもAUTO INCREMENTでIDを振っていますんで、これでいけそうです。
頑張ってみます。
重ね重ねありがとうございました。
721 :
nobodyさん :04/10/27 09:54:33 ID:fSBouGHv
mysql+perl DBIなんですが、 取得したデーターの何個目からfetchするとかできますかね? 今は、 1 while $sth->fetch and ++$count < $s_; みたいに、fetchをから回し($s_がスタート地点)してるのですが、 スタート地点が大きい場合(ぶっちゃけ10000とか)があるので、 ちょっといやなんですが、、
普通はSQLでlimitするもんじゃないの。
723 :
721 :04/10/27 10:32:53 ID:???
スマン selectでオフセット指定できました。
724 :
:04/10/27 13:29:38 ID:???
>>719 似たようなDB作ろうとしてるんだけど、
例えば1選手の、1試合の成績を収めようとしたら
選手分だけのTableが必要になる?
選手200名を1人ずつTable管理するのは大変だよね
どうしてます?
MySQL4.1以上になると2次元扱いが可能になるらしいけど、
Installがミスって何故か弾かれる、、、
725 :
:04/10/27 13:59:29 ID:???
The service cannot be started.error0 OTZ....
726 :
719 :04/10/27 14:13:24 ID:???
ちょっと修正
プレイヤーマスタテーブル(プレイヤー1人あたり1レコード)
プレイヤーID
氏名、他、詳細データ…
試合マスタテーブル(試合1回あたり1レコード)
試合ID
勝利チーム(NULL or 紅 or 白)
開始年月日、試合場、他、詳細データ…
対戦組み合わせテーブル(試合×参加プレイヤー=1レコード)
試合ID
プレイヤーID
チーム区分(紅or白)
>>724 1選手1レコードのテーブルひとつで済むよ
727 :
719 :04/10/27 14:17:02 ID:???
>>726 の補足
> 対戦組み合わせテーブル(試合×参加プレイヤー=1レコード)
っていうのは、8人参加の場合は1試合あたり8レコード
6人参加の試合が4回あったら24レコード
という意味です。
728 :
:04/10/27 14:35:43 ID:???
もう少し詳しくお願いします 私が考えてるのは 例えば、 目的:野球140試合、全選手の成績を格納する id、所属球団、選手名、生年月日等のDATA・・・と 各試合での成績(三振、ヒット)など 1打席目 2打席目 3打席目 4打席目 5打席目 ・・・・ 1試合目 三振 2試合目 ・・・ 140試合目
729 :
719 :04/10/27 15:30:57 ID:???
>>728 CREATE TABLE Player (
id int,
team int,
name varchar(100),
birth date
);
CREATE TABLE Team (
id int,
name varchar(100)
);
CREATE TABLE Score (
player int,
game int,
box_no int,
score varchar(10)
);
成績を表わすScoreテーブルは特定の試合の特定の打席を1レコードとして記録する。
1打席あたりの結果はどう表現するのか分らなかったので仮にvarchar(10)。
730 :
:04/10/27 16:22:45 ID:???
>>729 くだらない質問に答えてくれてありがとう
私の理解度が乏しいから、確認しますけど
選手 日時 何打席目か 成績
A 10/27 1 三振
B 1 ホームラン
C 1 アウト
A 2 ヒット
B 2 アウト
C 2
・・・
こんな感じでしょうか
731 :
719 :04/10/27 18:07:51 ID:???
join で読み出ししたこと無いのかなあ? まあ、テーブルの設計が終われば八割終わりみたいなもんだから DBプログラミングは、ひたすらがんがれ。
733 :
nobodyさん :04/10/28 12:21:42 ID:y89QF6Ze
マスタの停止なしに InnoDB形式のテーブルでレプリケーションが 狂ってしまった場合、復旧させる方法はありますか? MyISAM形式では、テーブルのファイルコピーで無理やり整合性を 保っていたのですが、InnoDBでも可能でしょうか?
MySQL上の日本語全文検索について書かれた 書籍やサイトがあれば教えてください。 自分では、 「実践MySQL4」に、 少し書かれているのは知っています。
736 :
nobodyさん :04/10/30 12:57:52 ID:Gk5lEdxU
複数選択可能のチェックボックスをつかってアンケートをを取るとします。 例えば、あなたの趣味は? ■パソコン ■アウトドア ■読書 ■ドライブ ■スポーツ ■映画鑑賞 〜〜〜 こんな感じで、複数の項目にチェックしてもらってpostした情報はどんな風に データとして格納すれば良いのでしょうか? それぞれのチェックボックスをフィールド一つを割り当てて1か0で・・・てのは アホくさ杉でしょうし。 また、レコードを修正するときに、フォームで登録時にすでにチェックされていたもの を自動的にチェックが入るようにするのもわかりません。 radioとかtextだったら読み込み直す方法はわかってるんですが。 リファレンスのどこらへんを読めばよいのかだけでもいいので教えて下さい。
737 :
nobodyさん :04/10/30 14:07:52 ID:x49/edM7
どなたかご教授ください。 mysqlを打ち込むと ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (61) またmysqladmin versionを打ち込むと mysqladmin: connect to server at 'localhost' failed error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (61)' Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists! と表示されます。 指示の通りmysqlは稼働していますし、ソケットもディレクトリに存在しています。 最近変更した事と言えば mysqlをインストールし直した(全く同じバージョンでアップグレード)のと パスを通したことくらいです。
>>737 ソケットファイルが変な状態になってるかも知れんので一端削除して作り直してみる。
739 :
nobodyさん :04/10/30 15:04:11 ID:x49/edM7
>>738 ソケットファイルは0バイトのからファイルでいいんですよね?
今試したところ
ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (61)
だったエラーメッセージが
ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)
となりました。
また元のソケットに戻してみたところ
ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (61)
に戻りました。
う゛〜ん。。。
>>739 だとしたらmysqldとソケットファイルの権限のマッチングが駄目なのかもしれん。
741 :
nobodyさん :04/10/30 16:48:01 ID:N1vJ8kvj
拝啓 2ちゃんねらー様 MySQLで重複したレコードを一括して削除する構文を教えて下さい。
delete
AとBが重複していたとして AもBも両方とも消していいなら割と簡単だが Aだけ残してBだけ消したいということになるといろいろ面倒かもしれん
744 :
nobodyさん :04/10/30 17:49:34 ID:x49/edM7
>>740 ソケットファイルの権限はrwxともにOKです。
mysqldの権限の変更、およびソケットファイルとのマッチング
を整える方法がわからないです。
745 :
741 :04/10/30 18:38:13 ID:N1vJ8kvj
>>743 それです。
perl使ってるので、DBIのメソッドでも構いません。
746 :
nobodyさん :04/10/31 00:13:12 ID:R5h305R8
MySQLのコマンドはオラクルのSQLplusなどを 普通に扱えていれば全く問題なく扱えますか? いつも叩いてるSQL文で問題なく作業できるのなら 導入しようかと思っている者です。 微妙な違いなんかは存在するんですかね?やはり。
>>746 SQLの基礎が出来てれば、
リファレンス引いて命令文引っ張ってくるだけだから、出来ると思うよ。
文法はほとんど一緒。
748 :
nobodyさん :04/10/31 00:30:38 ID:R5h305R8
>>747 リファレンスをちらっと見たら
USE DB みたいなコマンドがあって困惑したので。
749 :
748 :04/10/31 01:38:56 ID:R5h305R8
このuse database ってコマンドから察するに このdatabaseってのはoracleでいうスキーマにあたるもので、 oracleだとログイン時にどのスキーマを使うか選択するが MySQLでは最初にuseコマンドで明示的にどのDBを使うか 決定してからテーブルなどの操作を行う必要がある。 って理解は合ってます?
750 :
nobodyさん :04/10/31 03:24:35 ID:H+tIg089
DBで配列構造のデータ格納する時って、 一般的にはどうするのでしょうか? 自分としては単純に、 id,order,valueのカラムを作って、 データの削除や移動があった時には orderを順番に書き換えていく、という方法を考えたのですが、 少し面倒な気がします。 もっと画期的な方法はありますか?
751 :
750 :04/10/31 18:34:08 ID:???
よく考えたら、orderをずらすのは1クエリで多分できますよね。 ループで回してクエリ出しまくりかと思って躊躇してましたが、 この方針でいってみようと思います
>>741 dump して unix/linux上でuniqして元に戻す。
しょっちゅうこれをやんないといけない場合には、
データベース設計にそも問題がある。
>>744 ソケットファイルを消すまえに
mysqldは停止させたんだろうな
754 :
nobodyさん :04/11/03 22:23:52 ID:r8FwY29X
MyISAMの場合、 select * from table で行数を数えると、瞬時に答えが返ってくるはずなのですが、 スロークエリログに多数、このSQLが残っています。 どんな原因が考えられるでしょうか?
select count(*) from table じゃなくて?
756 :
754 :04/11/03 22:53:07 ID:???
行数は mysql_num_rowsで数えていました。 countに直して様子を見てみます。ありがとうございました。
758 :
nobodyさん :04/11/07 11:49:12 ID:w/j/GLX7
Win2kのバッチファイルをつかって 自動でMySQLのログインから処理、ログアウトまでをやろうと思っているのですが、 mysql -u ユーザ名- p の入力後に Enter password: が着ますよね? ここでリダイレクトを使ってpassを読み込ませるにはどうしたらいいんでしょうか?
>759 そんなことしなくても。。。 mysql -u ユーザ名 -pパスワード でできるよ
761 :
759 :04/11/07 20:08:04 ID:???
あ、-pの後にスペース入れるとダメなんですね…ありがとうございます。 もう一つ… 上記をバッチファイルに書き込んで、その後 DB選択>既存のテーブルを削除>新しく作成> 別のテーブルからランダムソートしたものを新しく作ったテーブルに挿入>ログアウト という流れをバッチファイル開くだけで行うためには、 use DB; drop table TB; create table TB(...); insert into TB (select * from TB2 order by rand()); exit; であってますでしょうか? バッチファイルに書いても、mysql > で止まってしまいます。
>>761 バッチでやろうとしてるのに、対話モードでmysql動かすなよ…
マニュアルの標準ツールでmysqlの項嫁。
mysql -uUserName -pPassword < hogehoge.sql やりたい処理は全部 hogehoge.sql に書く
764 :
757 :04/11/09 12:09:30 ID:lXsYUd1S
typelib.hはわかりました。 しかしmysql_configが指定するリンクをいれても コンパイルがどうしても通らないです /usr/lib/mysql/libmysqlclient.a(my_compress.o)(.text+0xbc): In function `my_compress_alloc':: undefined reference to `compress' /usr/lib/mysql/libmysqlclient.a(my_compress.o)(.text+0x13a): In function `my_uncompress':: undefined reference to `uncompress' collect2: ld はステータス 1 で終了しました どういった原因でしょうか..
765 :
:04/11/11 05:46:25 ID:???
うー どうしてもvariableでのcharacter_setが latin1から変わらない。 Windowsでmy.iniの[mysqld]に default-character-set=ujisにしてるのに〜 文字化けするよ〜〜(´・ω・`)
766 :
nobodyさん :04/11/14 04:41:09 ID:B/SXTDdi
/etc/rc3.d/に起動スクリプト(S○mysql)のシンボリックリンクを置いた場合、 マシンの再起動時にはちゃんとmysqlをstopしてくれるんでしょうか? 参考にしたサイトにも 終了時スクリプトについては書かれていないのですが。
767 :
766 :04/11/14 04:41:49 ID:???
/etc/rc.d/rc3.d/ でした
mysqlで評を作ったんですけど、列がおおすぎて ドス上でみたら2行になってすごいみずらいです 一行でドスのサイズにあわせて表示するコマンドかなんかあるんでしょうか? どなかたご存知のかたおしえてください。
769 :
nobodyさん :04/11/18 17:02:00 ID:E/PAFSQf
オートインクリメントで、 a001 -> a002 -> a003 みたいな増加の仕方はムリポですか?
ユニークとプライマリキーの違いがよく分かりません。 ともに重複したデータは不可能なんですよね?
>>769 数字と文字列は別の扱いだから無理。
>>770 ユニークは重複を許可しないだけ、
プライマリは複数のフィールドを関連づけることが出来る。
ざっくり言うとこんな感じだけど言葉で説明するのは難しい。。。
本とかで勉強して色々実験してみれば何となく分かってくるはず。
>>768 \Gくっつけて出力したら?
縦表示になるから少しは見やすい。
洩れは mysql -H < select.sql > result.html start result.html としてブラウザから見る派。
ごめん
777 :
nobodyさん :04/11/26 17:08:56 ID:LVzAOA0n
MySQLについてです(内容が初歩的なので回答して頂けるかどうか不安ですが) 次の様な内容で"sample"という名のテーブルの複合キーを定義しました。 //--------------------------------------------------- create table sample ( A varchar, B integer, primary key(A, B) ); //--------------------------------------------------- それでこの複合キーを変更(削除)したいので "alter table sample drop primary key(A, B);" を発行してみたのですがエラーになってしまいます。 どなたか正式な複合キーの削除方法を教えて頂けないでしょうか? よろしくお願いします。
何故エラーをそのままコピペしないのか。
779 :
nobodyさん :04/11/26 18:01:24 ID:LVzAOA0n
777投稿の者です。 エラー内容を貼り付けます。 alter table sample drop primary key(A, B); →ERROR 1064: You have an error in your SQL syntax near '(A, B)' at line 1 またCREATE TABLEのSQL文も間違っていました。 正式なSQLは次の通りです(すみません) 。 create table sam( A varchar(10) not null, B int not null, primary key(A, B) ); よろしくお願いします。
alter table sam drop primary key;
781 :
nobodyさん :04/11/26 18:07:52 ID:LVzAOA0n
779投稿の者です。 create tableのテーブル名は"sam"ではなく"sample"です(すみません...)。
783 :
:04/11/26 22:55:24 ID:???
かねやん使ってるんだけど、 かねやんでアドミン設定・新規ユーザー作っても LOCK TABLES権限ないじゃんか!!! 1時間悩んだじゃないか〜〜ばかぁ〜
>737 通常はデーモンを起動すれば大丈夫です。 % safe_mysqld &
野球の成績管理をするために、
>>729 のようなテーブルを考えています。
この場合、「あるイニングでの先頭打者」を検索することは可能でしょうか?
不可能であれば、どのような情報を追加すればよいでしょうか?
>>785 無理だな。
どんな情報以前に、自分で判断できないって事の方が、重大な問題だと思うけどね。
787 :
:04/11/29 01:20:44 ID:???
ん? 先頭打者かどうかは、アウト数を別に作って3の次とするか すればいいんじゃ? 成績とリンクさせるなら、三振→アウト数+1 セカンドゴロ→アウト数+1と1つずつ作っていけばいいんじゃ? 良く分からないけど。
代打のことまで考えると全打席に通し番号を振った方が良さげだが まあ好きにやれや
アドバイスするためには、その前に野球のルールと用語を詳しく教えてくれ。
表裏が… コールドの時は… 代打、代走、リリーフ… 一打席に複数のバッターが出たら… 盗塁死、牽制死はどうする… FC、エラー… 投球内容とかいらんのか… ってな辺りを考えてからの話だろ、というか野球のルールの話だろ、これ…
「イニング」「イニングで何人目の打者か」という情報を追加すれば? 「選手」「日時」と合わせてこれらが主キーになるのかな。
>>791 「日時」ってどこから出てきたんだYO!
793 :
nobodyさん :04/11/30 23:28:06 ID:IAxT8j7A
TRUE/FALSEの ブーリアン値は ENUMのYとNにするしかないのでしょうか?
tinyintの1か0
BOOLEAN型もあるけどな。 中身はTYNYINT(1)だが
796 :
793 :04/12/01 20:34:26 ID:???
CGI側から、データベースやテーブルの使用している容量を取得することは出来ないでしょうか? webページデータとDBも含めて、使用できるHDD容量をwebページ上に表示させたいんです。
799 :
797 :04/12/06 11:33:57 ID:???
場合によっては quota コマンドかもしれん
いずれにしてもスレ違いな話だな。
802 :
797 :04/12/06 13:10:54 ID:???
なんとか取得できました。 ありがとうございます。
MySQLxPHPについて質問したいのですが、 日中などは大丈夫なのですが、夜になってアクセスが多くなると DBの接続エラーが多発してしまいます。 $linkid = mysql_connect(host,name,pass); if(!$linkid) { echo "MySQL接続失敗"; exit(); } こんな感じので、接続失敗が多発します。 何を直せば接続エラーを無くすことができるのでしょうか?
>>803 SQLdの見直し、バージョンアップ。
サーバースッペクにも問題ありかも。
>>803 ・アクセス量を日中と同程度に抑える。
・もう少しコネクションに余裕のあるサーバ/サービスに移行する。
・自分の管理下にあるサーバならmysql定義ファイルのコネクション上限を見直す。
場合によってはマシンスペックを上げる
806 :
803 :04/12/07 12:56:03 ID:???
804
>>805 >>
レスありがとうございます
サーバースペックなんですが、
OS:win2003server
メモリ:1G
CPU:P4-2.4G
です。
レンタルですが専用サーバーを使っています。
SQLdは、自分なりに値だけ大きく変更してみてるんですが、
エラーは消えないんです。
table_cache = 10000
max_connections = 50000
max_user_connections = 20000
など…やり過ぎですかね…
PHPのプログラミング方法によってもエラーがでたりとかするんでしょうか?
>>806 msqld のエラーログには何か関係ありそうなメッセージは出てないの?
MySQLって、1つのデータベースの中に作成できるテーブルの最大数って、 何か制限などあるんでしょうか?
810 :
803 :04/12/08 18:58:45 ID:???
mysqldのエラーログというのは、 そこを見ればいいのでしょうか…(すいません
811 :
803 :04/12/08 19:00:30 ID:???
※↑打ち間違いました mysqldのエラーログというのは、 どこを見ればいいのでしょうか…
812 :
nobodyさん :04/12/09 15:32:33 ID:fa9vd1ze
mysqlを止めるにはどうすればいいでしょうか? 起動するたびに立ち上がって染まします。
>>811 どうやってインストールしたかによるが
拡張子が .err のファイルがどっかのディレクトリにできてないか?
815 :
nobodyさん :04/12/20 07:25:09 ID:FA8OSGsZ
ローカルな環境でMySQLとPHPの練習をしているのですが PHPからMySQLへのアクセスができません。 エラーメッセージは mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in となっています。 環境 WindowsXP PHP4.3 MySQL4.1.8 Apache1.3 文字コードはMySQL以外はShift-JISにしています。 MySQLはインストールしてrootのパスを決めた以外は変更していません。 コマンドラインからのroot権限でのアクセスはできています。
>>815 PHP4.3.9以前はMySQL4.0とMySQL4.1のライブラリが別になってるんだよ(4.3.10では一緒になったらしい)
libmysqli.dllをシステムディレクトリにコピー
818 :
815 :04/12/20 17:48:46 ID:???
>>816 ,817
ありがとうございます。
おとなしくMySQL4.0を使うようにします。
819 :
nobodyさん :05/01/01 08:13:01 ID:QrQCkT/a
PHPとMySQLで掲示板を作っています。 コマンドラインで select count(*) form bbs_table; と実行するとちゃんと「11」という結果が返ってくるのですが PHPでmysql_query($sql, $conn);と実行すると なぜか「8」(Resource id #8)と返って来ます。 当然同じデータベース・同じテーブルでやっているのですがどうしてでしょうか?
820 :
nobodyさん :05/01/01 09:17:19 ID:QrQCkT/a
勘違いしていたっぽいです。 $result = mysql_query("select count(*) from bbs_table"); $row = mysql_fetch_row($resutl); print($row[0]);で「11」と表示されました。 これで私の思っている通りの結果にはなりましたが データベースのカラム数(掲示板で言うとレス数)を求めるには上記の処理で合っているでしょうか?
>>819 > なぜか「8」(Resource id #8)と返って来ます。
この8というのはリソースのIDのことだよって書いてあるのに
何で件数だと思ったのか、こっちが聞きたいくらいですから。
残念!
822 :
nobodyさん :05/01/02 17:22:22 ID:MfYqAlNX
MySQLで論理型(true,false)を格納する場合、皆さんはどの型を使っていらっしゃいますか? PHPで使っているのですが、他のDBでも使えるようにif ( $a )の形式でチェックできるように したいのですが、ENUM('true','false')だとチェック時にif( $a == 'true' )のように 文字列比較をしなくてはならないのでTINYINTで0か1が良いのかとか色々と考えています。 もちろんこれでやればできるのですが、経験豊富な方に伺いたいと思いましてどうかよろしくお願い致します
>>822 BOOLEAN型。要するにTINYINT(1)
>>822 MLとかでもたまに話題になるけど、TINYINT(1)が一番適してるってことになってる。
825 :
822 :05/01/05 00:15:38 ID:???
確かにTINYINTなら他のDBでも統一的に出来ていいですね ありがとうございましたm(__)m
開発環境Java言語で、tomcatからMySQLを使用してるのですが、 java側からはMySQLに、UnicodeをShift-JISに変換して書き込めるのですが MySQL側からデータをJava側に読み込むとShift-JISからUnicodeに変換 されずに、文字化けしてしまいます。 データを書き込めるのですが、それを読むと文字化けしてしまう状況です。 一応、JDBCドライバを呼び出す時は jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=sjis &mysqlEncoding=sjis とし、 my.iniにも default-character-set=sjis と記述しています。 それでも文字化けしてしまうのです。 無事に変換できて文字化けしないようにするにはどうすればよいのか でどうか対処法を教えてくださいませ。
開発環境PHP、MySQLを使ってfreemailの判定を行っています。 テーブルfreemailの中は空。 $mailにはフォームから登録したメールアドレスが入ってるとし、仮にaa@bbとします。 $str_mail=strstr("$mail","@"); $str2=mysql_escape_string($str_mail); $rs=mysql_query("select * from freemail where freemail='$str2'"); $res=mysql_fetch_array($rs); $f_res=$res['freemail']; この状態で $str_mail、$str、$f_resをそれぞれprint文で出力すると。 全部が同じ出力になる…この場合@bbになるとしたら、原因は何処にありますか? これは判定だけで、テーブルfreemailに追加はしてないです。
ミス… print文で出力するのは $str_mail $str2 $f_res です。
ごめんなさいすっごい自己解決しました。
830 :
nobodyさん :05/01/15 00:33:23 ID:NZnuK1eg
PHP+MySQLでプログラムを作ろうとしてるんでずか、共用鯖なのでDB接続パスワードを 直接PHPファイルに書くのに抵抗があります。 聞く話によるとMD5ハッシュ化したパスワードで接続することが出来るらしいのですが、 検索してもやり方がわかりませんでした。 どのようにすればMD5ハッシュ化したパスワードで接続できるのでしょうか。
>>830 ハッシュ化したパスワードで接続できるほうが危ないと思うんだけど。
ハッシュはサーバのどこかに保存されてるので見られる可能性がある
生パスはサーバには無いので絶対に見られない
832 :
nobodyさん :05/01/15 10:54:23 ID:NZnuK1eg
>>831 共用鯖でmod_php利用なのでアクセス権を604としなければならなく、
同じ鯖の人から見ようと思えばphpの内容が観覧できてしまいます。
なので、生パスワードをphpに記載するほうが怖いんですが・・・
>>832 生だろうがハッシュだろうが、スクリプトに記述してしまうならいっしょ。
mod_phpならsafe-modeの制限に頼るしかない。
>>833 少なくとも生パス抜けないから一緒ではないと思うが。
>>834 照合する側がハッシュで照合してるならともかく
(MySQLサーバ側は確かにそうしてるが)
PHPのスクリプトでMySQLにアクセスする部分のパスワードを
どこぞに列挙するなら、それが生だろうがハッシュ化されてようが
普通にパスワードとして使えるのだから一緒でしょ。
列挙するパスワードをどこか他の認証と共用してるシステムなら
共用してる部分については「生パス抜けない」ということになるけど。
MD5は復号できんけど?
>>836 そうだね。
でも複合できるかどうかは関係ない、てことが分かってないようで・・
そんなに気になるなら CGI で 600 で動かせばいいじゃん。
838 :
nobodyさん :05/01/18 03:47:13 ID:KC0Yllm6
phpを使って、 mysqlのBLOBにバイナリデータを入れる時は、 普通にmysql_escape_string()しておくだけで問題ないのでしょうか? なんとなくおかしなクエリになってしまうケースがありそうで恐いのですが…
839 :
nobodyさん :05/01/18 11:58:44 ID:4Eo/wmNT
環境:mysql Ver 11.18 Distrib 3.23.58, for redhat-linux-gnu (i386) 自動的に(人間がmysqlを立ち上げないで)データベースとその中のテーブルを作る手っ取り早い方法はどんなものでしょうか? もちろんデータベース名、テーブル名とそのフィールドは固定です。
>>839 mysqlにそのDBやテーブルのDDLを記述したファイルを
リダイレクトでぶちこんで作成。
841 :
nobodyさん :05/01/19 21:46:19 ID:JHcmHOhC
ある値を入れるとき、その値が入っていない場合は挿入、入っている場合は更新したいのですが 単純に思いつくのは ・SELECTで値が入っているかどうかを調べる 入っていない場合 -> INSERT 入っている場合 -> UPDATE のように2回クエリを送らなくてはならないため、もう少し良い方法があればと思いまして ご存知の方がいらっしゃいましたらどうかよろしくお願い致します。
replace into 但し 内部的には DELETE→INSERT だからunique制約とかprimaryの制約がないとだめだけど。
843 :
842 :05/01/19 22:00:53 ID:???
早速、調べて実行してみたいと思います ありがとうございました
844 :
nobodyさん :05/01/21 11:23:46 ID:Z6ezIjZ/
ばかばかしい質問かもしれないんですが bluequartz上でC/C++ CGIがどうしても動かせなくて困ってます。 gcc バージョン 3.3.2 20031022 (Red Hat Linux 3.3.2-1) コンパイルしたファイル(xxx.cgi)はコマンドラインからはちゃんと動くのですが、 これをブラウザから見ると、 「 xxx.cgi このファイルをダウンロードしますか?」となります。 もちろんapacheはちゃんと動いています。 これを回避してブラウザから xxx.cgiの出力を見るようにするにはどこを変更すればよいのでしょうか
>>844 適切なヘッダを吐いてから出力。
HTMLならtext/htmlとか。
>>844 マルチ?
すれ違いに気づいただけだよね。
848 :
ぐぐっても見つけられんかった :05/01/28 21:12:40 ID:ox6Cyfvr
mysql_errnoで1046が吐き出されるんですが、 考えられる原因は何でしょうか。。。
>>848 Error#1046,ER_NO_DB_ERROR,No Database Selected,データベースが選択されていません.
phpMyAdminについて質問します −−−環境−−− OS:windows2000 Pro DB:mysql 4.1 PHP:5.0.3 SJIS設定 MyAdmin:2.6.1 サーバー:IIS DocRoot:D:\WEB MyAdminの設定で Language を japanease に設定をすると Fatal error: Call to undefined function PMA_reloadNavigation() in D:\WEB\CGI_BIN\phpMyAdmin\header.inc.php on line 132 のメッセージが表示されます 他の言語に設定するとエラーは発生しません インクルードファイルの読み込み出来ていないのかと思ってファイルの最後に echoを書いてチェックしてみると読み込みは出来ています テーブルを追加する最にコメントに日本語が入っていると Warning: mb_strpos() [function.mb-strpos]: Unknown encoding or conversion error. in D:\WEB\CGI_BIN\phpMyAdmin\libraries\string.lib.php on line 112 のエラーも表示されます どのように設定したらいいか教えてください 都合で今はIISしか使えない状況です
852 :
nobodyさん :05/01/31 00:03:31 ID:BLcpMt62
現在のパスワードに "'() の文字を使ってるのを修正する場合、どうすればいいのでしょうか。 set password for root="'()('newpassword'); でできないっす
853 :
EK :05/01/31 00:04:33 ID:pCNLnhtE
>>853 SELECTするときに順序かえる。
データベースを理解して無いみたいだが、
気になるならALTERすれば?
855 :
EK :05/01/31 08:49:37 ID:abXFv+ha
ALTERの方法が知りたいです.
857 :
nobodyさん :05/02/01 06:06:35 ID:Ous9jt79
4.1をインスコしたんですけど(コンフィグ設定はsjis選択)、 コマンドプロンプトから2バイト文字のデータを入れると文字化けします。 jspを使ってブラウザからsjisで入れたり出したりする分には いまのところ正しくできてるっぽいのですが、 そのデータをコマンドプロンプトでみるとやはり文字化けしてます。 4.0を使ってるときはコマンドプロンプトで出し入れするのも データを見るのも文字化けせず大丈夫だったんですが、 何がいけないのでしょうか?直す方法はありますでしょうか。
858 :
857 :05/02/01 06:50:26 ID:Ous9jt79
書き忘れましたがW2Kです。よろしくお願いします。
MySQL 3.23.58を使い始めた者です。 +--+--------+-----+ | id | name | price | +--+--------+-----+ | 01 | hoge | 100 | | 02 | fuga | 200 | | 03| puni | 200 | | 04 | hage | 100 | …… ここで、価格:100(2件)〜200(2件)というように 最低価格、最高価格とその件数を導きたいのですが、 どのようなクエリをかけばよろしいでしょうか。 今はMAX()とMIN()で最大・最小値は求められるのですが その件数が上手く求められないのです。 よろしくお願いいたします。
SELECT ( bin(6) / bin(4) ) - ( FLOOR(bin(6) / bin(4) ) ) , ( bin(2) / bin(4) ) - ( FLOOR(bin(2) / bin(4) ) ) これを計算してみると 0.10 0.10 と2つ等しい結果が得られるのですが、 SELECT * FROM `table` WHERE ( bin(6) / bin(4) ) - ( FLOOR(bin(6) / bin(4) ) ) = ( bin(2) / bin(4) ) - ( FLOOR(bin(2) / bin(4) ) ) というふうにWHEREにした時だけ何故か等しくならず、テーブルの中身が全く表示されません。 これはSQLのバグでしょうか?それとも何か間違っているのでしょうか? 2進法計算で込み入っていて申し訳ないのですが、どなたかご存知でしたら教えて下さい。
863 :
857 :05/02/01 17:25:28 ID:Ous9jt79
>>859 my.iniをsjis設定にしてもかわらず。
コマンドプロンプト立ち上げるたびに「set names sjis;」するしか
ないのでしょうか。
>>863 いや、それは面倒くさいやろ。
クライアントライブラリのエンコードを自分の欲しいものに
きちんと指定して再度コンパイルでOK。
>>864 そうですか。それはちょっと敷居が高い…
とりあえずブラウザから使う分には問題なさそうだから余裕ができたらチャレンジします。
ありがとうございました。
866 :
nobodyさん :05/02/02 05:05:35 ID:TSxm2UhN
phpMyAdminで char(16)のカラムを作ろうとしてもvarchar(16)になりますが 何故でしょうか?
868 :
nobodyさん :05/02/04 00:22:56 ID:FzOGXEjc
Apache+PHP+Mysqlをいれて phpmyadminをいれて、接続したら真っ白な表示がされるだけです。 どのあたりを見ればいいのでしょうか?
>>868 PHPのエラーログ。つかエラーを表示させるようにPHP設定しなさい
870 :
nobodyさん :05/02/04 00:35:52 ID:FzOGXEjc
すいません。の設定はどこでしょうか?
>>816 オラクルなら
select 項目 , count(*) from テーブル名 group by 項目
872 :
質問です :05/02/11 01:47:17 ID:bxpVru70
MySQLでテンポラリテーブルを見るにはどうしたらいいのでしょうか? もちろん、select文で表示はできるのですが、 show tables; では見れないですよね? そもそもメモリ上にあるテンポラリテーブルは見れない仕様なのでしょうか?
873 :
nobodyさん :05/02/18 01:17:47 ID:oRUItyUu
1クエリで、 あるカラムをインクリメントして、その値を取得することは可能でしょうか?
874 :
sage :05/02/24 23:50:55 ID:MSi8NK1E
ロックの権限の設定はglantでできるんですか? ロックの権限の確認方法はどうすればできますか?
875 :
nobodyさん :05/02/25 20:01:28 ID:QqsT661L
助けてください。 本日 RedHut9にMysql4.1.10をrpmでインストールしました。 現在STATUSを表示すると Connection id: 15 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 4.1.10-Max-log Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: ujis Client characterset: ujis Conn. characterset: latin1 UNIX socket: /var/lib/mysql/mysql.sock セグメンテーション違反です となってしまします。 どうしたらいいのでしょう・・・
MySQLのユーザーをスクリプトなどで自動的に追加できるよう出来ませんか? CGIでコマンド発行してみても受け付けて貰えなかったです。 PHPのMySQL関数には、ユーザー作成に関する物がないみたいですし。 宜しくお願いします
>>876 普通にmysqladminで発行できるが...マニュアル100回読んできな。
mysqlにユーザ作成コマンドをぶち込んでも同様にできると思うけど、
明確にadmin操作と一般操作は分けといた方が管理上は良い。
>>877 mysqladmin ユーザ追加のコマンドがありましたっけ?
マニュアル見てもその辺り載ってないんですが。
CGIやPHPでGrantコマンドを投げても実行されないんで困ってます。
>>878 サーバー管理者に聞くか、マニュアルを100回読むのがいいと思う。
接続に使用してるmysqlアカウントにgrant権限がないとかそういうことでしょ。
あと、マルチはどこへいっても嫌われるぞ。
>>878 ごめん、adduserコマンドは俺拡張(中身はGRANT)...
回線切っ首。
スクリプトからGRANT発行して駄目なのは、
adminのアカウントを使ってないためか、
GRANT権限に制限のあるmysqlユーザだとか、その辺では?
コマンドライン上で同じものを指定して試行してみれ。
>>880 ありがとうございます。
練習用として自宅サーバに入れたMySQL使ってますんで、
adminアカウントでやってます。
mysqlのコマンドライン上にてgrantするとちゃんとユーザが追加されるんですが、
phpのsystem関数でコマンド投げても受け付けて貰えません。
・・そもそもやり方が間違ってるような気もするのですが、
phpの関数にユーザ追加ってのが無いですし、どうしたものかと思いまして。
何か他のやり方があるのでしょうか?
ただ「受け付けて貰えない」だけじゃなく、必ずエラーを吐いてるはずだから なんとかしてそのエラーを見つけてきたまい
>>881 PHPからやるならMySQL関数でadminアカウントを指定し
GRANTのクエリを発行すれば良いです。
system関数で駄目なのは根本的にコマンドが通ってないと思われるので
もっと簡単なコマンドを発行してみて結果がどのように返ってるか
を確認しながら作業すべし。
>>882 >>883 了解です。
アドバイスを参考に、もう一度最初から見直してみます。
ありがとうございました。
PostgreSQLからMySQLに乗り換える際に、データを効率よく引き継ぐ方法はありますか? パーミッションなどは引き継げなくても、テーブルの中身だけでもOKです。
>>885 MySQL→PostgreSQLでもそうだけど、dumpして流し込み。
ただ、どちらにせよ型のマッチや予約語あたりはちょこっと気にせんとね。
887 :
885 :05/02/28 14:31:31 ID:???
テーブルを作るところはちょっとした修正でうまくいくのですが、 PostgreSQLのdumpは、COPYというコマンドで値をセットしているのに対し、 MySQLのdumpは、INSERTコマンドを繰り返してセットしており、 COPYコマンドは受け付けてくれないみたいなのです。
>>886 ほんとにすいません。pg_dumpのオプションに、こんなのがありました。
-d, --inserts dump data as INSERT, rather than COPY, commands
-D, --column-inserts dump data as INSERT commands with column names
あとは手動でどうにかします。
php.ini において、magic_quotes_gcp = on にしていれば、 SQLインジェクションに対して安全でしょうか? やはり mysql_real_escape_string() とか mysql_escape_string() とか addslashes を 使うべきでしょうか?
Fedora Core 3標準のMySQL 3.23.58を使っています。主な用途はxoopsです。 FC3での日本語がutf-8なので、MySQLにutf-8で日本語を詰め込んでしまいました。 このMySQL上のデータベースを、MyODBC経由でMS-Windowsから操作したいのですが、 utf-8を正しく扱えるMyODBCドライバ、もしくは関連する情報をお持ちでしたら教えて頂けませんか?
891 :
890 :05/03/03 16:39:07 ID:???
>>890 もちろん、utf-8を完璧に扱えなくても、主要な日本語が通ればOKです。
892 :
nobodyさん :05/03/05 02:18:48 ID:80ZPRUuI
ある月の範囲内のdateカラムを探す時、どうやるのがベストでしょうか? 私は where date like '2005-03%' としていますが、これは妥当なのでしょうか?
3.3.4.5 日付の計算
最近勉強し始めたばかりの者なんですけども、 エディタって何使ってますか? もちろんコマンドから操作すれば不要なのは分かるんですが、 phpmyadminみたいに、sqlコマンドが色分けされる(デフォになくても SQL用の強調表示ファイルが存在する)エディタがあれば良いなぁと。
895 :
890 :05/03/10 18:17:59 ID:???
>>890 mysql4にすれば、SET CHARACTER SETでコードを設定できますね。
mysql4にあげてみることにします。
ありがとうございました。
896 :
nobodyさん :05/03/12 16:14:26 ID:nH5XpFGK
4.0を使っています。 記録されていたデータを全部deleteしたにもかかわらず、 新しくデータを記録するとauto_inclementのint型フィールドの値が、 消す前の続きから始まってしまいます。 これは仕様ですか?
897 :
nobodyさん :05/03/12 16:23:53 ID:nH5XpFGK
追記ですが、もし仕様だとしたら巻き戻す方法はないでしょうか。 適当にデータを入れ、Updateして無理やり1にしてみましたが、 更にまた新しくデータを追加してみると、2ではなく 消す前の値の続きからになってしまいます。
特定のシーケンス番号が必要ならそもそもauto_incrementを使うのは 間違ってる。 last_insert_id()はコネクションごとにIDを保持するから、一度コネクションを 切ってから再接続してやってみたら1から始まるかもしれない。
>>896 一旦、カラムを削除して、そのカラムを作成しなおせば、1から始まるはず。
長いクエリについて PHP+MySQLで組んでます。 項目が多いのでクエリが長いんですよね・・・ で、ダラダラと横一列に書くのではなく、各カラム毎に改行して見やすくしたいのですが、 どうすれば良いのでしょうか? __ ←を使うと良かったと思うのですが・・・ 宜しくです。m(_ _)m
>>901 ああ、手遅れか。
ALTER TABLE table_name AUTO_INCREMENT=0;
>>898 とてつもなく勘違いしてるな。
903 :
nobodyさん :05/03/15 16:08:27 ID:veLUi2yw
同じテーブルに二つ以上primary keyを持ったフィールドを指定する事が出来ない。 でも検索をする時に各値が一意なものであることが分かっていれば、 一つ目の該当レコードを見つけた時点で検索を打ち切る事が出来て効率化するはず。 だから二つ以上のフィールドに一意である事を示したいのだけど、やり方がわからない。 もしかしたらフィールド作成時に明示しなくてもMySQLが勝手に判断してくれるのかも? 教えてください。
unique index を学べ
>>900 $sql = "SELECT * FROM Table "
."WHERE Field1=100 "
."AND Field2=200;";
>>900 えぇえぇっ!
俺普通に、
$sql = "SELECT * FROM Table
WHERE Field1=100
AND Field2=200";
って適度に改行して書いてるんだけど…
だから何
ごめん 906 へのレスかと思った
ごめん 905 と書くところを 906 と書いてしまった
>>906 print $sql;
してhtmlソース見てごらん
>>906 それ、連続した無用なスペースと改行が$sqlに入るけど
mysql_query()に渡す前にちゃんと処理してんの?
それともほったらかし?
書き方が話題になってるので便乗質問。 参考書などで、よく、 $sql = ""; ←これ $sql .= " SELECT * FROM table" ・・・ と見かけるんだけど、 この1行目はどういう意味があるんでしょうか。。。
>>910 mysql_queryかける時点で、そのままんま
改行と空白がいくらあっても無問題だろ。
>>913 それをいっちゃおしまいよ。
SQL文の書き方の「美しさ」の問題だから
>>912 前後のソースを見ないと何ともいえんが、変数になんか入れておかないと
エラーになる場合があるから、保険みたいなもんだ。
>>914 SQL文の美しさより、PHPソースの美しさ
>>912 無いと変数が未定義でNotice error
>>917 それもあるけど、""で初期化の意味合いが強いと思う。
$sqlなんてクエリ文字列用の変数として使いまわす可能性が
高いし、中に何か入ってるか判らないところに結合するのは怖い。
内部的には「.=」はコピーして新規だったと思うので、 最初から「=」として代入しないのは、無駄といえば無駄だけどね。
$sql = " SELECT * FROM table"; で十分
SQL文を書くときは複数行にわたるわけで $sql.=" select"; $sql.=" 名前 as name"; $sql.=" 年齢 as age"; $sql.=" from 個人情報"; $sql.=" where"; $sql.=" 店舗ID=".$t_id; $sql.=" 性別=".$sex; $sql.= ........... 最初のselectだけドットをつけないのを見逃すかもしれない 単純なselect一発なら大丈夫だと思うけどね だからSQL文は全て .= にしてその代わり $sql=""; を頭に置く ちなみに漏れもよくやる コピー&ペーストで楽ができるからね
書き方は個人の好みの問題だからどうでもいい
>>923 それだとスペースと改行が入っちまうじゃん。
とはいえ長さが問題になるほどのクエリーになるとも限らんし、
クエリのサニタイズの処理で考慮しえあるなら、別にいいけどな。
>>926 書き間違えが多い文章になったが、最後の2行を読んで理解してくれ。
$sqlをその後どう使うかは判らん場合「無問題」とは言えないだろ。
てかスペースが無駄に入るSQLは美しくない。 美しさを無視する奴はプログラマ失格。 「いいじゃん、動けば」
美しさ≠効率的
クエリなんてレスポンス重視で書けばいいんだよ
効率的≒美しさ
論理的な美しさにはこだわって欲しいが、見た目の美しさは割とどうでもよい
こぴぺした時に問題が発生しにくいっていうのは作業量によっては利点となるな
コーディング規則はいろいろってことで
935 :
PHP初心者 :2005/03/24(木) 00:01:54 ID:vk1AucmH
id | name | rosen1 | rosen2 1 | 山田 | 山手線 | 中央線 2 | 田中 | 埼京線 | 山手線 3 | 加藤 | 総武線 | 京王線 山手線を使用している人を表示したい場合など、 複数のフィールドからの検索は可能でしょうか? rosen1から山手線を検索して表示する場合は、 select * from aiueo where rosen1 like '山手線' とすれば山田さんが表示されるのですが、 rosen1とrosen2の両方から検索し、山田さんと田中さんを表示させることは可能でしょうか?
937 :
PHP初心者 :2005/03/24(木) 17:13:57 ID:aYVGSrBn
936さん、ありがとうございました。 「or」で上手くいきました!
A、B 共にユニークではないフィールドがあります。 このA、Bの組み合わせをユニークにすることはできますか? 現状、 1、SELECT の where a=A AND b=B で行数を取得。 2、1が0ならINSERT。 のようにしていますができたら1回だけでINSERTしたいのですが、、、
>>938 それってAとBの中身によるんじゃないの。
例えばAの3番目と5番目のレコードが同一でユニークになっていなくてそれ以外はユニークで、
Bも3番目と5番目のレコードが同一でユニークになっていなくてそれ以外はユニークな場合、
AとBを組み合わせた時3番目と5番目が同一のものになりユニークにならない。
でも例えばBが2番目と4番目のみが同一な場合はユニークになるけどね。
ただしAとBでおよそ被らないであろう全く異なるデータを扱っているという前提で、だが。
同一レコードが何番目にあるのかをABそれぞれで調べて被ってないかを調べればユニークになるかどうかは分かる。
april
941 :
nobodyさん :2005/04/02(土) 10:44:26 ID:ftpZSEGb
auto_incrementじゃないintのprimary keyで、 レコードが追加される時に このプライマリキーを用いた降順あるいは昇順にソートして追加していきたいんだけど mysqlにこれをやってくれる機能はありますか?
max ○○
>>941 RDBのテーブルはINSERT時に格納順序を指定することはできない
順序はSELECTするときに指定するもの
944 :
nobodyさん :2005/04/05(火) 09:09:14 ID:R5kNClWz
intのprimary keyフィールドがあり、 検索条件に該当するレコードがprimary keyの特定の範囲内にしか存在する可能性が無いと分かっている時、 その範囲を検索条件で指定する事は出来ませんか? 検索回数の減少に繋がると思うのですが。
945 :
944 :2005/04/05(火) 09:18:22 ID:???
付け足し。 単純にwhere primarykey > 下限 and primarykey < 上限とすると、 全てのレコードに対してこの条件に一致するかが比較されてしまいそうですが、 直接下限から上限の間のprimarykeyのみに絞って比較を行いたいという事です。 indexを作成しておけば2行目の条件式で4行目の処理をmysqlが自動的にやるんでしょうか。
以下の処理をmysqlで行う事は出来ますか? 縦がフィールド横がレコードと見た時の1マスに複数のデータを持たせて、 検索時に複数レコードがヒットした時に、被っているデータはまとめて出力したいのです。 レコード1のAフィールド{1,2,3,4,5} レコード2のAフィールド{3,4,5,6,7} とある時、レコード1と2がヒットしたらAフィールドの内容として{1,2,3,4,5,6,7}と出力したいという事です。 {1,2,3,4,5,3,4,5,6,7}と単純に内容をつなげて出力するのであれば、 各データをコンマで区切った文字列として入力してあるものを繋げて出力するだけで済みそうですが、 まとめて出力する方法が思いつきません。 これに相当するような処理でも構わないのですが何か方法はあるでしょうか?
>>944-945 整数型のカラムだったら単純に、インデックスを張る=効率的に検索してくれる
と考えてオーケー。
それよか SQL には between という指定方法もあることを覚えておいてほしい。
>>946 1マス…っていうか1カラムに複数のデータを突っこむのは
RDBの特長や性能を殺すようなものだからやめといたほうがいい。
その例だと本来は10レコードになるように表を設計する。
そうしておけば重複をまとめるのは distinct で一発でできる。
>>946 セパレータで結合する関数はあるが分割する関数は無い(と思う)から無理じゃね
PHPとかと組み合わせたら何でもできるけど
文字列型だと255文字以上使えて、10進数で255桁以上も表せるのに、 数値型だと符号なしbigintでも20桁しか使えない。(40桁くらいの数字を扱いたいのに・・・) なんで? 文字型は数字以外の文字もカバーしてる分、余計にデータが長くなると思うのだけど。 たぶん数値型は内部では2進数で直接数量が表されてるよね? もしそうだったら文字型よりだいぶ短そうなのに。 色んな演算を加える可能性があるから数値型は短いものしかダメなのだとしたら、 演算をしないけども数字ばかりのデータを扱う場合は文字列型が適してる?
>>950 ちなみに40桁の数字って何で使うものなの。天文学?
>>950 「何で?」つうかデータベースは今も昔も
別に学術的な数値計算を行うシステムではないので。
データベースに限らず今のマイクロプロセッサの設計に置いてもね。
SQLでどうしてもやりたいなら、MySQLのユーザ関数に計算ライブラリを
組み込む手もあるが、データベースは単にデータを蓄積するものとして、
(ここはWebProg板だし、それっぽく)PHPのGMP関数で処理するのが良いんじゃね。
>>950 なんでという理由なら一般のCコンパイラの整数値が
long 型の、-9223372036854775808 〜 9223372036854775807 の範囲までしか扱えないから
でしょう
954 :
nobodyさん :2005/04/07(木) 12:34:57 ID:M6scFfsm
複数の同様なフィールド構成のテーブルの中からいくつかのテーブルを選び検索をしたいのですが、 select field from table1,table2,table3; という記述ではemptyしか出ません。 このような記述では出来ないのでしょうか? それと、mergeテーブルというものがあるようですが、MyISAMにしか対応していないようで、 トランザクションセーフで無ければならないので困っています。
>>954 各テーブルごとに検索を繰り返すしかないと思う
mergeテーブルの中の動的な複数のテーブルを通してauto_incrementされるフィールドを作る事は出来ますか? レコードが追加される可能性のあるテーブルが一つで他は静的なテーブルであればやり方が分かるのですが、 全てのテーブルにレコード追加の可能性がある場合です。
update table set field = field.string where no = int; と書いてみたのですがfield = field.stringのところでエラーが出ます。 field = field.'string'等も試したのですがダメでした。 文字列を追加するにはどう記述すれば良いのですか?
>>958 文字列の結合?
concat()でできないですか。
961 :
nobodyさん :2005/04/11(月) 15:04:52 ID:AZghOiam
PHP+mysqlで、and検索をやってみようと思って考えたのですが、 POSTで受け取ったスペース区切りキーワードをexplodeして、 for($i=0;$i<$countKey;$i++){ $wheresql .= "search like '%{$keyArray[$i]}%' and "; } (search=検索ワードを詰め込んだカラム) って感じで繋いで、where $wheresqlしたんですが、結果は通ってうまくいくときはあるんですが、結果0になったり、それらのワードが含まれてるのに出ないレコードがあったりします。。 どこか根本的に間違っているのでしょうか・・・。 and検索って普通どうやってやるんですか?
>>961 スペースが連続したり全角スペースの場合を考慮すれば、preg_split()が望ましいと思う。
あとはforeachとかで回しながらqueryを作ればいい。
likeと%の意味は理解してるかな?
963 :
961 :2005/04/11(月) 16:21:22 ID:???
>>961 ありがとうございます。
一応
$keyword = str_replace(' ',',',$keyword);
$keywords = str_replace(' ',',',$keyword);
こんな感じで全半スペースを,に変えてexplodeしてました。
likeは、パターンに一致、前後%%は前後に〜○○〜と続く、みたいな意味でしたっけ。。
それだと、前に何もない文字列が引っ掛からなくなりますか・・・ためしに、loopで回す文字列を
$wheresql .= (search like \"%{$keyarray[$i]}%\" or search like \"%{$keyarray[$i]}\" or search like \"{$keyarray[$i]}%\") and "
にしてみましたが結果変わらず・・・。
964 :
nobodyさん :2005/04/11(月) 20:03:55 ID:zHJjbS9v
mysqlの全文インデックスについて、対象となる文字コードは限定されているのでしょうか?
>>964 文字コードは特に限定はされてなかった筈。ただ単語と認識するのが
スペースでセパレートされてるワードだけなんで、
そういう作りではない言語(日本語とか韓国語とか中国語とか)には
そのままでは使えない。
966 :
nobodyさん :2005/04/12(火) 00:26:29 ID:FxpxEm5t
like検索で、私も苦しんでいます。 私の環境は、PHP(4.3.10) + MySQL(3.23.58)、文字コードはEUCです。 2バイト文字を含む部分一致のlike検索において、以下のような問題が起きます。 「L」(全角のエル)を検索した場合に、「藤木」を含む文字列にヒットします。 原因は、Lをあらわす文字コードが、藤木の藤の後ろ半分と、木の前半分を同じ であることでした。 binaryにすれば大丈夫という話を見かけたので、この2バイトの文字列は、 それまでtext型で持っていたのですが、BLOB型にしました。 like検索の高速化を図った4.X系列では2バイト文字列を考慮していないため、 こういう症状が出るバージョンがあると見たのですが、3.23.58もそうなのでしょうか? 解決策があるなら、ご紹介いただければ、幸いです。
PostgreSQL なら簡単なのに
968 :
nobodyさん :2005/04/12(火) 15:23:41 ID:6tLufYli
mysql4.024なんだけどカラム名を日本語にしても問題ない?
PHP+MySQLで、 SELECT * FROM table WHERE id=1というクエリを実行した時、 id=1のデータは無いのに検索に成功し、エラーを吐かずに処理を続行してしまいます。 同じ処理をPerlで行った時は成功するのですが何が原因なのでしょうか? 環境はWin+Apache1+PHP4+MySQL4.0.18 文字コードはスクリプト、データともEUCです。
データがないときの処理とかをphpで条件分岐させれば よいのでは。それ以上はわかりません(素人でつ)。
>>969 > SELECT * FROM table WHERE id=1というクエリを実行した時、
> id=1のデータは無いのに検索に成功し、エラーを吐かずに処理を続行してしまいます。
検索に成功した。(ただし、Hitしたのは、0個。)
こういう結果が返ってきてる。
つまり、アルゴリズムが変。つーか、MySql関数が返す値をマニュアルで調べるべし。
972 :
nobodyさん :2005/04/13(水) 00:09:23 ID:P5BMPkuz
フィールド、テーブル、データベース等が削除された時に、 そこに使われていたインデックスも削除されるんですか?
974 :
969 :2005/04/13(水) 00:51:56 ID:???
>>970-971 返信ありがとうございます。解決できました。
エラートラップにorを使っていたのが拙かったようです。
if文に変えたら正常に動作しました。
975 :
969 :2005/04/13(水) 01:30:22 ID:8dY+nynK
と思ったら全然関係ありませんでした。 もしかしてmyslq_queryの成否って検索結果とは関係ありませんか? クエリでたらめにしたらエラートラップ引っかかりました。 検索結果に対しては別にエラー処理を考える必要があったってことですね。
mysql_num_rows() でええやん
>>975 そうだよ。
クエリーとは、データベースに対して、これこれこういう条件のデータを探してくれ、という”問い合わせ”の事だ。
これに対して、データベースは、こんなんが有るよ。あるいは、そんなの無いや。等を返す。
つまり、クエリー(問い合わせ)は”成功”している。”無いよ”と言うのも立派な答えだ。
mywql_queryがエラーを返すのは、”問い合わせ方がおかしいだろ!”とか、"そんなテーブルなんてねーよ!"ってな時だ。
マニュアルを読みなさい。
978 :
nobodyさん :2005/04/13(水) 18:42:29 ID:P5BMPkuz
my.iniのdefault-character-setがインストール時にlatin1になってますが、 でもこの状態でもマルチバイト文字列のデータを格納・出力出来ますよね。 (latin1は西欧の文字コードのはずなのに) my.iniで設定しているdefault-character-setって何に影響するんですか?
ソートとか。
>>978 latin1ではAとaを同一視して扱う処理になる場合がある。
代表的なのは
>>979 とかね。