【MySQL】下らねぇ質問はID出して書き込みやがれ 2

このエントリーをはてなブックマークに追加
936NAME IS NULL:2012/09/26(水) 18:26:10.80 ID:???
>>935
俺もそんなに詳しくはないけど、
MySQL(や、その他GPLが適用されたプログラム)に含まれる
ソースコードそのものを取り込んで(改変して)いなければGPLは適用されない。

WEBアプリケーションを外部からアクセス可能にするだけでは
「再頒布」に当たらない(GPLなソフトウェアからの出力、と看做されたと思う)ので
GPLv2の再頒布にかかる規定(ソースコードの公開etc.)に従う必要はない。

ただ、客先への納品は再頒布だから、
・GPLが適用される ⇒ 客先へのソースコード公開が必要
・GPLが適用されない ⇒ 客先との契約次第
になる。いずれも客先への公開の問題で、世間一般に公開する必要はないはず。
937NAME IS NULL:2012/09/26(水) 19:24:05.06 ID:???
>>935
「MySQLの派生物じゃない」部分だけ納品するのなら当然GPLに従う必要はない。
938NAME IS NULL:2012/09/30(日) 12:05:15.66 ID:SqWyzZVW
初心者の質問です。
以下のような連想配列があります。

$_SESSION["login"]=array(
"name" => $row["name"],
"ID" => $row["ID"]
);

これの$row["ID"]1つだけを取り出したいとき、
どのように指定したらいいですか?
$user_ID に代入するとして教えてください。
939NAME IS NULL:2012/09/30(日) 12:06:38.06 ID:SqWyzZVW
間違えました…ここmysqlの質問板でした。
上の質問はスルーしてください。
940NAME IS NULL:2012/09/30(日) 15:18:51.96 ID:???
>>936, 937
さんきゅ。

>> 937
つーことは、MySQLのインストール作業をこっちでやらなければOKという解釈でもいいのか。
941NAME IS NULL:2012/10/02(火) 14:36:06.88 ID:/3YxDOCL
CREATE TABLE students (
 name CHAR(32) NOT NULL,
 PRIMARY KEY (name)
);

というテーブルがあって、name の頭文字を基準にパーティショニングしたい場合、
このテーブルに

 pn INTEGER NOT NULL // パーティション番号

のようなフィールドを持たせ、
データを挿入する際は、アプリケーション側で name の頭文字を判別し、
パーティション番号と共に挿入するという方法は安易な考え過ぎますでしょうか?

より精錬された一般的な方法があればご教授下さい。
942NAME IS NULL:2012/10/02(火) 15:56:42.19 ID:???
>>941
どうしても頭文字を基準にパーティショニングする必要がある?
ただ(それなりに)均等に分散すれば良いなら、KEYパーティショニングがすっきりすると思うけど。

ttp://dev.mysql.com/doc/refman/5.1/ja/partitioning-key.html
943NAME IS NULL:2012/10/02(火) 20:16:39.40 ID:???
rootで特定のデータベースに接続して、今現在どういうユーザーがそのデータベースに接続しているかって知る方法ありますか?
944941:2012/10/02(火) 20:22:21.86 ID:/3YxDOCL
>>942
パーティション関数に ASCII() を使えないということだけが問題だったので、
KEYパーティショニングで代用できそうです。ありがとうございました!
945NAME IS NULL:2012/10/02(火) 20:29:10.27 ID:???
>>943
SHOW PROCESSLIST;
946NAME IS NULL:2012/10/02(火) 20:33:43.37 ID:???
>>945
即レスtonですm(__)m
947NAME IS NULL:2012/10/07(日) 00:00:58.57 ID:???
mysql 5.5.15

mysqldumpでバックアップする時に外部制約の関係上、テーブル単位でバックアップ
しています。

それでテーブル以外のもの、ストアドプロシージャなどは

mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt hogehoge --default-character-set=cp932 -u xxxx -p > G:\Data\MySQL\fff.sql

としているんですけど、viewの定義とかはここには出てきていません。
viewの定義をバックアップする方法、教えてください。
948NAME IS NULL:2012/10/07(日) 22:48:59.87 ID:???
>>947
--no-create-info外せば取れるよ。
949NAME IS NULL:2012/10/07(日) 23:53:29.88 ID:???
>>948
ありがとうございます
テーブル定義と一緒にビューの定義も取れました。
950NAME IS NULL:2012/10/10(水) 14:22:18.59 ID:dQ01q0rX
LIKEで使える記号って % 以外に何があったっけか
951NAME IS NULL:2012/10/10(水) 15:07:22.57 ID:???
アンダースコア"_"とエスケープのための"\"
952NAME IS NULL:2012/10/12(金) 01:19:35.74 ID:???
>>951
ありがとう
953NAME IS NULL:2012/10/13(土) 01:13:59.81 ID:???
ODBC Connector 5.1.11だとプロシージャにOUTの引数を設定するとエラーになるけど、これはバグなのかな…
5.2.2にあげたら起きなくなったんだけど。
954NAME IS NULL:2012/10/13(土) 19:36:00.68 ID:VrFqSmlP
csvを標準入力からloadしたいんだけど、可能?
ファイルから入れる方法はありましたが、直接入れられる方が素敵です。
できなかったらcsvをinsert文に加工して入れようと思ってます。

mysql5.1
955NAME IS NULL:2012/10/14(日) 17:50:15.48 ID:SkZKtE+u
mysql-binってレプリケーションを利用していなかったら削除していいんですか?
それともMySQLがクラッシュした時にここからリカバリしてるんでしょうか?
956NAME IS NULL:2012/10/14(日) 21:07:11.70 ID:ZQIxLy7/
自然結合っていうのが具体的によく分からない。
RSの自然結合って例えばどういうことなのですか・
957NAME IS NULL:2012/10/14(日) 21:55:21.92 ID:i3Of/uN+
質問です
取引IDとかユーザIDとかを重複しない乱数で設定したく、乱数の一覧をまず用意しようと思います
で、5桁の16進数で乱数を作るとして乱数テーブルを3万行くらい作りたいんですがどうしたら良いでしょうか?
id, is_used
10001, 0
10002, 0

という形ですが、思いつくのはPHPで3万ループでinsertなんて方法だけです
もっと効率のいいやり方ありますか?どうしたら良いでしょうか
958NAME IS NULL:2012/10/14(日) 22:15:24.22 ID:???
>>957
insert select.
create table selectもあったっけ。
959957:2012/10/14(日) 22:41:15.41 ID:???
>>958
ご意見ありがとうございます、しかし知識不足のためかよくわかりません
それはデータをinsertするときやテーブルを作るときに既にあるテーブルからselectした値を
まとめて挿入する方法ですよね?
自分がしたいのは、
1)テーブルを作る
2)それに3万行のデータ(5桁の16進数で10001から3万)を入れる
という効率的な方法です
insert selectやcreate table selectするのに必要なselect元のテーブルが存在してない状況です
(自分の最初の説明がわかりづらかったならすみません)

自分のアイディアじゃPHPで10001〜40000を16進数に変更、それをinsertしか思いつかないので
もっと良い方法ないかなぁと。よろしくお願いします
960NAME IS NULL:2012/10/15(月) 00:18:26.67 ID:???
>>954
不可能。
でもINSERTに加工しなおさなくても、LOAD DATA [LOCAL] INFILEで入れた方が速いよ。


>>955
要らなければ消しても良い。
前のフルバックアップから、データ消失直前までのデータをリカバリする、なんて時に必要。
ただし、このリカバリは手動で実施。
あとは更新系のDMLが全部記録されるから、監査目的とか。

my.cnfにexpire_logs_days = 14とかやると、14日以上前のは勝手に消える様になるよ。


>>956
t1 NATURAL JOIN t2は
t1 LEFT JOIN t2 ON (t1.c1 = t2.c1 AND t2.c1 IS NOT NULL) AND (t1.c2 = t2.c2 AND t2.c2 IS NOT NULL) AND ..
と同義だったはず。
c1,c2..は、t1とt2で持っている同じ名前のカラム全てが列挙されるかたち。


>>959
乱数はどこかに行ったの?
10001〜40000が既に登録されてるテーブルを作って、
UPDATE t1 SET c1 = HEX(c1);
が楽なんじゃない?
961NAME IS NULL:2012/10/15(月) 00:23:18.57 ID:???
>>956
あ、ごめん、NATURAL JOINは結合に使用したカラムは一度しか現れないのがLEFT JOINと違う。
t1(c1,c2,c3) と t2(c1,c3,c4) なら、
SELECT * FROM t1 NATURAL JOIN t2;
は、
SELECT t1.c1,t1.c2,t1.c3,t2.c4 FROM t1 LEFT JOIN t2 ON (t1.c1 = t2.c1 AND t2.c1 IS NOT NULL) AND (t1.c3 = t2.c3 AND t2.c3 IS NOT NULL);
と同じになると思う。
962NAME IS NULL:2012/10/15(月) 15:45:20.59 ID:ZaN3mqjF
先ほどからmysqlを学び始めました
ストレージエンジンという設定があることがわかったのですが、
InnoDBっていうのとMyISAMというのがあります。
トランザクション機能をサポートしているとかしてないとかの違いがあるのですが、
このトランザクション機能というのがいまいちよくわかりません。
わかるように教えてください。
963NAME IS NULL:2012/10/15(月) 15:50:19.34 ID:???
トランザクションは簡単に言えば複数のSQL操作で
途中キャンセルした場合に最初の操作時まで巻き戻せる機能。
964NAME IS NULL:2012/10/15(月) 15:53:35.63 ID:ZaN3mqjF
>>963
なるほどありがとうございます。
それってコンソールから操作した場合の話ですよね?
PHPからコマンド実行した場合はどうなるんですか?その場合でもstart transactionとかcommitとか打たないとだめなんですか?
965NAME IS NULL:2012/10/15(月) 16:39:33.00 ID:???
IPSて話題の森口見てこのスレの基地外おっさん思い出したよ
もういなくなったみたいだね
ああいう感じの人だったんだろうなぁ
966NAME IS NULL:2012/10/15(月) 20:08:43.48 ID:ZaN3mqjF
ユーザ作成するときに、identified by 'test'
って書くこの名前は何を意味していつ使うんですか?
967NAME IS NULL:2012/10/15(月) 21:10:00.01 ID:???
>>964
php (mysqli,pdo_mysqlなど)からも同様。
ただし、使うライブラリによっては autocommit がデフォルトになってることもあると思う。

>>966
msyql に cli などでつないで、
help grant をみると幸せになれると思う。
968NAME IS NULL:2012/10/15(月) 21:44:52.05 ID:ZaN3mqjF
>>967
なるほど
ありがとうございました!

今までずっとsqlite使ってたんですが、charとかtext型使ってたんで、
mysqlみたいにいちいち文字数やバイト数を指定するのに違和感を感じるんですが、
普通はちゃんと指定して作ってるんでしょうか?

それともmediumtextとかlongblobとか使ってるんでしょうか?
969NAME IS NULL:2012/10/15(月) 21:49:17.29 ID:ZaN3mqjF
何度も質問で申し訳ないんですが、

identified by '文字列'


ここの文字列の部分はパスワードってことでいいですか?


でもたまにidentified by password '文字列'

の構文もあったんですが何が違うんでしょうか?

後者の方はユーザ作るときだけとかでしょうか?
970957:2012/10/15(月) 22:43:18.44 ID:???
>>960
どうもありがとうございます、おかげで解決方法にたどり着きました
971954:2012/10/15(月) 22:59:52.78 ID:???
>> 960
ありがとうございます。cronでshellを動かすので遅くていいのですが、できないならしょうがないですね。

>> 959
ごめんなさい、複数行の生成ができるのはpostgresでした。
# select generate_series(1,3);
generate_series
-----------------
1
2
3
972NAME IS NULL:2012/10/16(火) 05:37:52.51 ID:???
>>969
identified by 'foo'
の場合は、password('foo') (パスワード暗号化関数を実行)した結果が登録される。

identified by password 'foo'
の場合は、foo がそのまま登録される。

mysql はユーザー認証の際に、password('foo') した結果と、
mysql.user の password カラムで内容が一致するか確認するので、
前者は password: foo でログインできるが、後者はできない。

identified by password はどっか別の DB から mysql.user をみてコピーする際や、
手元で selelect password('foo') とかして履歴にパスワードの生文字列を
残したくない場合に使うぐらいなのかな?

つまり foo をパスワードとしたユーザーを登録したい場合は、
identified by 'foo'
または
identified by password '*F3A2A51A9B0F2BE2468926B4132313728C250DBF'
となる。
ちなみに、password 関数は MySQL 4.1 あたりで変更されてるので注意
973NAME IS NULL:2012/10/16(火) 07:40:45.08 ID:yFJZYlxr
>>972
そんな仕組みがあったとは・・
勉強になりました
ありがとうございました!
974NAME IS NULL:2012/10/17(水) 16:53:18.86 ID:ZQKaKcpQ
MySQL5.5でutf8mb4を使いたいのですが、自作したPHPでpostして保存すると、
コマンドからもPHPMYADMINからも文字化けしてしまいます。
show variables like 'character_set%';をしても文字コードはあってると思うのですが。(以下がその結果です)
character_set_client | utf8mb4
character_set_connection | utf8mb4
character_set_database | utf8mb4
character_set_filesystem | binary
character_set_results | utf8mb4
character_set_server | utf8mb4
character_set_system | utf8
PHPでデータを読み込む場合は文字化けせず表示されています。
どうすれば解決するでしょうか?よろしくお願い致します。
975NAME IS NULL:2012/10/17(水) 17:00:03.95 ID:tlC3fdR4
mysql5.5を使っています
show column from table を実行した時に成功する時と失敗する時があります
最初は対象テーブルに行(データ)がない時はエラーになるのかと思ったのですが、
データがあっても失敗するものもあります
どういう条件で失敗するのでしょうか?
976974:2012/10/17(水) 18:27:47.23 ID:???
再インストールで直りましたすみません。
977NAME IS NULL:2012/10/17(水) 19:25:23.65 ID:???
>>975
失敗したことがないからわからないのだが、
どういうエラーが出るのか教えて欲しい。
# show columns from table_name の typo だよね?

あと、
desc[describe] table_name;

select * from information_schema.columns where table_schema=db_name and table_name=table_name;
だとどうなるか。
可能性としてはテーブルの情報がおかしいからテーブル作りなおしたほうがいいんじゃないかなと思う
978975:2012/10/17(水) 20:26:18.28 ID:tlC3fdR4
>>977
ありがとうございます、typoしてましたすみません

desc order するとshow columnsと同じエラーが出ます
#1064 - You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use near 'order' at line 1

select * from information_schema.columns where table_schema=dekitala and table_name=order;
だと以下のエラーです
#1064 - You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near 'order LIMIT 0, 30' at line 1

対象のorderテーブルは以下のクエリで作りました。おかしいでしょうか
create table `order` (
id varchar(30) primary key not null,
sellerType varchar(20) not null,
sellerId int(11) not null,
buyerType varchar(20) not null,
buyerId int(11) not null,
is_used tinyint(1) not null,
seller_addressId int(11),
buyer_addressId int(11),
)
979NAME IS NULL:2012/10/17(水) 21:12:26.12 ID:???
>>978

desc `order`;
980975:2012/10/17(水) 21:22:11.51 ID:???
>>979
ありがとうございます
しかし、エラーです
>#1064 - You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use near 'desk `order`' at line 1

なんでだろう。。
981NAME IS NULL:2012/10/17(水) 21:26:41.89 ID:???
>>980
× 'desk `order`'
○ desc `order`;
982975:2012/10/17(水) 21:28:29.85 ID:???
あっ!うまく行きました!
alter table `order` rename to `orderx`;
してテーブル名を変えたところ、
desc `orderx`; が正常にテーブル構造を返しました!

どういうことでしょうか?
と、思って調べたら、テーブルに利用禁止な予約語だったみたいです
お恥ずかしい、お騒がせしました。ありがとうございました
983975:2012/10/17(水) 21:37:48.16 ID:???
すみません、やはりもう少しお願いします
deskの失敗するテーブル`color`を`colorx`に名前変更し、さらに`color`に名前変更したら
今度はdesk成功しました
どういうことなんでしょうか? 流れは以下のようになります

desc `color`; →失敗
>#1064 - You have an error in your SQL syntax; check the manual
>that corresponds to your MySQL server version for the right syntax to use near 'desk `color`' at line 1
//テーブル名変更
alter table `color` rename to `colorx`;
//desk
DESC `colorx` →成功
//テーブル名元に戻す
alter table `colorx` rename to `color`;
//color
DESC `color` →成功

984975:2012/10/17(水) 21:40:17.10 ID:???
>deskの失敗するテーブル
descでした、すみません
985NAME IS NULL
>>974
接続時に文字コード指定が要る
http://www.artful.jp/blog/archives/2006/07/xamppmysqlphpmy.html

set namesとかでぐぐれ

「PHPでデータを読み込む場合」はなにで接続してるんだ