MySQL 総合 Part25 [転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
ORDER BYを使用しないと結果順序が保証されないのは記述どおりなんだが、特定の条件下でLIMITで抽出した部分のみに対してORDER BYされる気がするんだが。 limitで抜き出した時に、order byに指定がないカラムがある場合、順序が一定してないと思った。
これのことかな? >>3
ORDER BY自体は効いてて実効タイミングがLIMIT後になるので若干違う様な気がする。
LIMITすると全カラムORDER BY必須になると言うのも驚愕だけれど。 ある時点から、各テーブルに追加・削除されたデータ
の一覧を知りたいんだけど、どうしたらわかりますか?
各テーブルを事前と事後でCSVでダンプしてdiffで比較
が一番簡単ですかね それで済むならそれで
トランザクションログ使うてもあるが、、、 mysqldumpで、1行ごとに改行させるにはどうしたらよいですか?
1行ごとにINSERT文を吐かせたくは無いので、バルクのままで
改行だけ足したい 1行ごとに改行??
行を改めるで改行なんだけど何言ってんの? >>8
1レコードごとに改行させたい
ですすみません mysql使ったことのない俺が言うのもなんだけど、mysqldumpって1レコードごとに改行されないの? 例えば、こんな感じ
INSERT INTO `t_test` VALUES (1,3),(1,4),(1,5),(2,4),(3,1),(4,1),(4,2),(5,1); ちょっとマニュアルみてみたけど、
--skip-extended-insert
つけたらどうかな? 違うのか、>>11 はこう出したいという例も書いてくれ、、、
VALUES (1,3),
(1,4),
(1,5),
・
・
こうしたいの?
sed挟んだら すまん、オレは質問者じゃない。
>>13
うん、オレもそうしている。 >>12
そのオプション指定すると、
各行に INSERT INTO が入るので、
質問者の意図する出力になるかどうかだな rootでログインしようと思って以下のようなコマンドをうったら
mysql -uroot
以下のようなメッセージがでてきました
mysql: unknown variable 'default-storage-engine=innodb'
何が原因なんでしょうか?
解決方法ご存知のかた教えて下さい。
環境はcentos6です。 なんだそれ、マジで聞いてんのか?w
どう考えても設定ファイルのdefault-storage-engine=innodbって設定を見なおせって書いてあるように思うが。
/etc/my.cnf調べりゃあるべや >>18
ご回答ありがとうございます
ただ、その設定があることは知っているんですが
何が間違っているのかがよくわかりません。
innodbの設定は間違ってますでしょうか? LinuxでMySQL使うときデータファイルはOSと別パーティションに置いてるんだけど、マウント位置どうしてる?
/varの下に適当に作ってるんだけど、ふと気になった。 >>19
設定が[mysql]セクションに入っているとそうなる
そのパラメータは[mysqld]セクションに入っていないとおかしい ビッ○カメラ札幌店の副店長の佐藤伸弦が暴行事件が起きていた
佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦
佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦
佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦
佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦
佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦 データベースが重くなってきたのでインデックスを作ろうと思っているのですが以下のどちらが参考になるでしょうか?
・エキスパートのための MySQL …
(技術評論社)
・MySQL トラブルシューティング
(オライリー)
データベースはMariaDB 10です。 csvをmysqlに自動的にテーブルも作成して読み込ませたいです。
phpmyadminでcsvを読み込むときに自動的にテーブルも作成してくれますが、
mysqlimportやload data infileでは私が調べた限り無理のようでした。
なにかいい方法はありませんか?
csvファイルは100近くあるのでできればphpmyadminのようなGUIではなく、
コマンドラインでどうにかしたいです。 >>24
どちらもすでに良く設計されたデータベースの運用のための本であって、
インデックスの作り方のコツなんかは書いてない。
実践ハイパフォーマンスMySQL 第3版(オライリー)
をまずじっくり読むべし。電子版もあるよ。MariaDBでも同じ。 >>24
今月出たばかりの「理論から学ぶデータベース実践入門」でもいいんじゃまいか
11章でインデックスの仕組みや種類、適用すべきパターン等それこそ詳しく解説してるぞ >>27
ありがとうございます。
待ちきれずに「エキスパートの…」を買って家に戻った所でレスが…。
(´;ω;`)
あと30分待てば良かったと後悔しつつ
再度本屋に行って「実践ハイパフォーマンス…」を買いました。
インデックスだけでなくレプリケーションも詳しく掲載されていたので助かりました。
>>28
本屋でその本にも目を通したのですが本当に理論の部分が詳しくて私のように「具体的なやり方」を求めている初心者にはハードルが高かったです。 >>29
背景となる理論の裏付けがないと勘違いする人多い
みんなDB設計でインデックス設定するよね。でも
DB設計→SQLを書く→インデックスを設ける
が本来あるべき姿 あるテーブルの一つのカラムに存在する値の種類一覧を取得する方法ってDISTINCTしかないんですかね?
hoge
hoge
huga
fizz
fizz
fizz
みたいな感じの時に、
hoge
huga
fizz
と返してほしいんです
distinctのいっぺん全取得してから削除ってのは無駄が多い気がするし、かといってexistsで書き換えるのも難しいし…
何か良い方法はないでしょうか? >>31
group byでもできるけど内部処理は多分同じ。
効率を気にするなら最初から第二正規化しとけばっていう話かも。 条件結合みたいな方法ってあるのでしょうか?
・ユーザーテーブルのgroup_idが1ならプロフィールテーブルと結合
OR
・ユーザーテーブルのgroup_idが2なら会社テーブルと結合
と言ったイメージなのですが、ググっても出来そうな気がしません。
もし、ググり方が悪くて出来るのでしたら、結合方法を教えてください。 >>33
良い方法はないと思う。UNIONで書けるかどうか考えてみて、
UNIONで書けるようなら、そもそも会社テーブルとプロフィールテーブルを
分けた意味があったのかどうか考えてみよう。
SELECT … FROM user JOIN profile ON user.profile_id = profile.id
WHERE user.group_id = 1
UNION ALL
SELECT … FROM user JOIN company ON user.company_id = company.id
WHERE user.group_id = 2 >>34
UNIONで書けません。テーブル名の通り、全く用途(カラムの構成)が違います。 じゃあ普通に横に外部結合で足せば?
from ユーザーテーブル
left join プロフィールテーブル on (group_id = 1 and ユーザーIDとなにか)
left join 会社テーブル on (group_id = 2 and ユーザーIDとなにか) >>36
なるほど。つまり、ユーザーテーブルに2つテーブルを結合するんですね。
どっちかのテーブルに値が存在することで「一般会員」と「会社会員」と分けられそうですね。
参考にします。ありがとうございました。 某所で話題になったMySQLの寿司ビール問題
これみんな知ってた?
古いモバイルサイトなんかヤバそうなんだけど。
http://blog.kamipo.net/entry/2015/03/23/093052 なぜ"古いモバイルサイト"がヤバそうだと思い至ったのかがわからない >>38
別にあたりまえの実装だし、照合順序の違いもわからないやつが、
明示的に utf8mb4 を指定するとは思えない。
ましてや古いモバイルサイトが最近実装した utf8mb4 を使って居るとも思えない >>38
そういう文字の検索に対応しなきゃいけない人達は
そもそも _ci の照合順序は使わないんじゃないかな こんにちは、質問です。
TINYTEXTとVARCHARの違いはなんでしょうか?
どのように使い分けていいかわかりません・・・ 理由はよくわかりませんが、
調べたらVARCHARを使った方が良いとあったのでそうすることにします
TINYTEXTの存在意義って何なんですかねぇ。。。 少ないテキスト数で荒らしたい時に使用。
tinyintとかsmallintとかと一緒。 SELECTしたデータをWebに表示しているDBがあるのですが、このDBに一定の時間帯でWebでスクレイピングしたデータを取り込むようにしています。
同一サーバー内でデータ挿入用のDB(もしくはテーブル)と参照用のDB(もしくはテーブル)に分けてレプリケーションすると多少は負荷の軽減になりますか? 脱会届
平成××年 ×月 ××日 (※文書を書いた日付)
東京都新宿区信濃町32番地
宗教法人 創価学会 理事長 正木正明 殿
私こと○○○○○は宗教法人創価学会を脱会いたします。
今後、私が了解しないかぎり、入会勧誘、及び、支援政党の票依頼等を目的にした、
創価学会員による自宅来訪を一切拒否いたしますので、地域幹部の方々にも、その旨
よろしくご指導のほどお願い申し上げます。ただちに名簿からの削除等、脱会手続きの
迅速な処理を執行願います。
東京都世田谷区○○町○○丁目○番○号(※ご自分の住所)
×田○策 印(※氏名)
……………………… 例 文 ………………………………
☆★必ず『内容証明郵便』および『配達証明』を使うようにしてください★☆ テーブル名:access_log
日付列:access_datetime
2015-04-01 15:11:49
2015-04-02 15:11:49
2015-04-03 15:11:49
2015-03-10 15:11:49
2015-03-12 15:11:49
2015-02-03 15:11:49
この場合にgroup化により1日ごとのアクセス数を調べるには
どういうクエリを書けば良いでしょうか?
2015/04 3
2015/03 2
2015/02 2 >>48
月ごとだよね?
SELECT YEAR(access_datetime), MONTH(access_datetime), COUNT(*)
FROM access_log
GROUP BY YEAR(access_datetime), MONTH(access_datetime); カテゴリごとのリストページをページングしたいです。
SELECT c_id, c_name, c_spec FROM t_item WHERE c_category = '日本製' ORDER BY c_id DESC LIMIT 61, 60;
offsetを使うと余計なレコードまで取得するので遅くなるとの事です。どのように書けばoffsetを使わずに同じ結果を取得出来るでしょうか?
c_categoryで抽出してc_idで降順に並べ替えた後に新しく連番を振り直す事が出来れば比較演算子(?)を使って解決出来そうな気がするのですがその手段がわかりません。
よろしくお願いします。 >>51
c_id がユニークなら
並び替えだけじゃなく読み飛ばしたい行の切り捨てにも使えるよね >>52
c_idはユニークな連番の数字です。
それだと方法があるのですか? INSERT 〜 ON DUPLICATE KEY UPDATE や、REPLACEを使って、
・無ければINSERT
・有れば「とある条件の場合」「まるごと」UPDATE
について考えています
以下、「無ければINSERT」「datetimeが更新されていたらUPDATE」とする例ですが、
INSERT INTO test_table
( unique_key, column_a, column_b, datetime )
VALUES
( 1, 100, 200, '2015-04-01 00:00:00' )
ON DUPLICATE KEY UPDATE
column_a = (
CASE WHEN datetime < VALUES(datetime) THEN VALUES(column_a)
ELSE column_a END),
column_b = (
CASE WHEN datetime < VALUES(datetime) THEN VALUES(column_b)
ELSE column_b END),
datetime = (
CASE WHEN datetime < VALUES(datetime) THEN VALUES(datetime)
ELSE datetime END)
これでも動くのですが、「CASEの判定条件が同じ」「全部VALUESの値で更新」と
なってるのでもっと綺麗なSQLはないかなーと思ってるんですがありませんかね?
(実際はもっとカラムや条件が多くさらに長ったらしくなるので・・・) >>53
SELECT * FROM t ORDER BY id LIMIT 20 OFFSET 60
↓
SELECT * FROM t WHERE id > 60 ORDER BY id LIMIT 20
任意のページには直接飛べない(Nページ目の1番目に来るidが判らない)から
事前にキャッシュを作るなりしてね
>>54
INSERT INTO ...
SELECT (ここを考えて)
ON DUPLICATE KEY UPDATE ...
で条件は一か所にまとめられるけど、あまり見やすくはないかな >>55
遅くなりましたがありがとうございます
まだイマイチ理解できていないので色々試してみます >>56
>>55の読み飛ばしは、
1ページあたり60件表示でかつ、order by c_id ASCである場合は、
c_idの小さいほうから 60*(ページ番号 - 1) 件は、間違いなく不要となるため
切り捨てることができるという考えかなと。
ただ、c_id DESC だし、データ内容や抽出条件次第で、
たとえば21ページ目を表示するにあたって1200件はじいたところで
焼け石に水になるのは目に見えてるので採用しなくていいと思う。
まずは適切なインデックスを作成することからはじめてみては。 PHP5.4+MySQL5.5を使ってます
ユーザーの入力した個人情報を暗号化して保存しようと思うのですが、
どのようなデータ型にすればいいでしょうか?
例えば住所なんかは文字数が長くなることが容易に想定できるので、
それを暗号化して更に文字数が増え、DBに設定したカラムの長さを超えてしまい復号化できなくなる心配があります
可変的な文字列を保存するカラムにしたいのですが、皆様はどういう風に作られていますでしょうか? 別に住所が暗号化されてる必要もないとは思うけど
長さはTEXT型にしとけば問題ないじゃない。
検索とか困らない?
個人情報って特定の個人に結びついてる情報が問題なんだから
個人が特定されなけりゃいいんでないの? >>60
ありがとうございます、検索する予定は今のところないのでTEXT型にしてみます
>個人情報って特定の個人に結びついてる情報が問題なんだから
>個人が特定されなけりゃいいんでないの?
住所はそこに住んでる人がわかってしまうので個人情報だと思ったのですが、違うんですか?
そうであれば電話番号とかも暗号化して保存する必要はないんですかね? 誰にでも見える場所に置くの?
それなら暗号化は必要かな。 いえ、万が一の話ですがハッキング等によってDBが流出した場合を想定してのリスクヘッジです
みなさんがどのようにされてるか気になったのでそこも合わせて質問させていただきました プロはどうしてるんだろうね?
自分も同じく初心者だから、エンコードして格納しておけばいいのかな?程度だよね。
たしかに検索するとき不便になっちゃうね。 報道されるような流出事件の場合、氏名や住所とかまで流出してるよね。
つまり、それらは暗号化してないことが多いのでは。
もちろん、パスワードは暗号化するのが一般的だろうけど。 暗号化にも復号可能な暗号化と復号不可能な暗号化があるのは理解してるの?
パスワードは暗号化してもパスワードとして成立するけど
氏名住所暗号化しちゃダメでしょ >氏名住所暗号化しちゃダメでしょ
いやこれ復号可能な暗号化前提でしょ
じゃないと保存する意味がない。それくらい読み取ろう
で、暗号化はMySQL側でやる手もある
AES_ENCRYPTならBlob型にすればおk
更にHEXを使えば文字で扱えるがVARBINARYもアリ
その場合は元の2倍くらいの長さを確保しておけば良い >>66
分かって書いてると思うけど、複合不可のものは暗号とは言わないよ。MD5とか >>68
復号可能な暗号化前提だとパスワードの暗号化って部分でおかしくなるんだよな >>65
暗号化と言っても、ディスク、通信レイヤー、データベースファイル、アプリケーション‥‥どこに適用するかによって、守れるもの、守れないものがあるやね。 59はパスワードなんて一言も言ってないのに、突然パスワードがーって言い出す低脳な奴がいるなw 結局、どれが一番プロの方からすると正しいんでしょうか? >>76
ハッシュ化で調べたたら有用な情報がぞろぞろ出てきたっす。
ありがとうございます。 不可逆な暗号ってなんだよと数年前にも話題になってたな 個人情報など後で利用するものをハッシュ化するって・・・無知も程ほどにしておけ パスワードはハッシュ化して入力値と照らし合わせることができるが、
>>73も言ってるがパスワードの話なんてしてないだろ >>69の流れで>>76書いたんだけど
ややこしかったかな
一つの質問から話が派生していくことなんてよくあると思うけど、頑なに>>59がそんな話してない!って言うのはどうして? >>66 があいまいな文章を書いたのがきっかけじゃないのかな ver 5.6.20です
初歩的なんでしょうがちょっと教えて下さい。DBに誰が何時ログインし、どのデータベースにアクセスしたとかの追跡はバイナリログを設定し、
そこから…になるんですか?
別に深い意味は(今んところは)無いのですが >>83
バイナリログではできない。
一般クエリログならできるけどログが多すぎて現実的ではない。
お金を払ってMySQLの商用版を買えばできる。
https://www-jp.mysql.com/products/enterprise/audit.html >>84
ありがとうございます。ログの種類について確認しなおさんといかんですね
それにしても商用はやはりそれなりの価値があるんですねw 5.6がなんもしなくてもメモリを300M使ってるんですが
そういうもんですか? googleのmysql魔改造に関する論文ありますか? >>86
5.6で機能強化されたPerformance Schemaがメモリをバカ食いするので、
VPSなどメモリが少ない環境ではOFFにしてもよいかと。
[mysqld]
performance_schema = OFF UNIXドメインソケットだけじゃなくて ネットワークでも待ち受けさせるのって
my.cnf に何書けばいいんだっけか >>90
bind_address
ただデフォルトでネットワーク待ち受けしてるはずだけど >>91
ありがとう
デフォルトで待ち受けしてたわ
ファイアウォールで閉じてた 外部キー みたいに連携しているキーで、でも制約は無い状態のキーのことを
なんと呼べばいいの? 外部キーでいい? 制約があるから連携していると言えるんであってそれが無いんだったら単にカラムが一致してるってだけなんでは? workbenchの6.3.3、ファイルパスに日本語があると保存できなくない?
6.2.4で修正済みになってるのに直ってないわこれ >>97
だから、それが外部キーなのかと。
MySQLの狭義の外部キーではない、
と俺は思う。
話の中で、外部キーといって
制約がないとか言われたら、
混乱必至。 >>98
だから外部キーではないよ。 それは最初から言ってる。 >>99
あなたが繰り返し言ってる「連携している」ってのは具体的にどういうこと?一致している以上に具体的な何かがあるんだよね
それを言ってよ
それが言えないんだったら俺様用語を勝ってに振り回してろとしか言えんよ 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 'cleate table dead lockに関する質問です。
mysql version: 5.6.12
tx_isolation: REPEATABLE-READ
create TABLE tmp ( id bigint(10) NOT NULL auto_increment, name varchar(128) NOT NULL, PRIMARY KEY(id),UNIQUE KEY uk_name (name)) ENGINE=InnoDB;
insert into tmp values (null, "20");
insert into tmp values (null, "30");
この状態から以下の手順を1,2,3,4,5と実施すると手順5でdeadlockが発生します。
こちらの原因はなんでしょうか?
トランザクション1
手順1
begin;
手順3
insert into tmp values (null,"30"),(null, "35") ON DUPLICATE KEY UPDATE name = VALUES(name);
手順5
insert into tmp values (null,"10"),(null, "11") ON DUPLICATE KEY UPDATE name = VALUES(name);
トランザクション2
手順2
begin;
手順4
insert into tmp values (null, "20"),(null,"25") ON DUPLICATE KEY UPDATE name = VALUES(name); 外部キー制約をテーブルに定義しなくても結合はできるからそういうことでしょ >>109
insertとupdateしかしてないのにほんとかよとか思ってやってみたら再現したw
なにこれw > name = VALUES(name);
何をしたいのコレ? >>113
データが存在するしないに関わらずデータを更新または挿入するためです
こちらのことサンプルではほぼ無意味ですが、問題を簡素化して抜き出したものです JOIN してるだけで外部キーとか言わない方がいい、混乱するだけ 制約かけるかどうかは置いといて
そのキーを使って結合出来るならそれは外部キーでしょ 外部キーみたいに
って最初から書いてるんだけどそこはスルーなのかな 先頭1文字がAとかBとかの製品名一覧を作りたいのですが
「WHERE productname like 'A%'」とするとAで始まるもの見つかるのですが
「あいうえお」みたいな関係ないものまで見つかってしまいます
これは何が原因なのでしょうか コンピュータの全ての分野を網羅したい場合、何学科に行くのが良いでしょうか?
情報科学科?電気電子工学科?物理学科? 行くとこ行くとこにこの質問貼ってあってイラっとくるな 質問させてください
テーブル rank に id good bad の3つのフィールドがあります
good - bad を計算して id のランキングを select するにはどうしたら良いでしょうか?
よろしくお願いします select id from rank order by good-bad; >>109
暗黙にロックがかかってるんでしょ。
INSERT ... SELECT ...でもロックが
かかるときがあるし、
MySQL(InnoDB)のくせと思うしか
ないのでは。 100個のデータの相関関係を管理する
テーブルを作成しようと
id,code1,code2,soukankeisu
のようなテーブル定義を考えています。
これだと相関関係を更新する際に何度もselectしなければならず、時間がかかりすぎるのでは?と考えています。
何か方法はありませんか? 全角数字、全角英字、全角ひらがな、全角カタカナ、漢字以外の文字が文字列内に含まれるか否かを判定したいです。
下記select文で書くとすると、'?????'の箇所はどのような記述をすればよいでしょうか。
select '文字列' regexp '?????' >>109
手順3で name="30" を INSERT した時に、uk_name インデックスにおいて name="30" の参照先(PK)が
新しい id に変わるじゃないですか。それによって、uk_name インデックスの name=20〜30 の間に
ギャップロックがかかってるみたいです。
ですので、手順4で name="20" or name="25" を入れた時にロックの解除を待ち続けてしまうわけです。
なお、name="15" とか name="40" とかはギャップロックの範囲外なのですぐに INSERT できます。
uk_name はユニークキーなので、ロックをかけなくともファントムリードは起きえない
気がするのですが、なんでギャップロックを取ってるのかはよくわかりません... だれか教えて
なおこの不具合は、分離レベルを READ-COMMITTED にすると発生しません。 >>139
仕様だろ。
コストに配慮して、広くロック
しちゃうんだろ。 新聞購読を止めて、月3000〜4000円、年間36000〜48000円の節約
新聞にそのような金を払う価値はない
ただでさえ要らない
なぜなら新聞は国民の方を向いておらず、広告主のための報道しかしないからだ
それに金を払って購読することは自らの首を絞める自殺行為に等しい 確かInnoDBって普通の行updateでもテーブルロックかかるよね。
where句でindexじゃないカラム指定してるとフルスキャンでテーブルロックされるとか >>142
インデックスがないならしかたない。
ロック対象レコードを特定してる
時間は読めないししても不毛かも
しれないし。
悪くない判断だと思うけど。 以下のテーブル(1行分)を出力するためには
どのようなクエリをかけばよいですか?
列1:1
列2:2
列3:3 すいません
行と列間違えました
以下の3行分です
行1:1
行2:2
行3:3 select 列1 from テーブル where 列1 in (1, 2, 3) >>146
カラム名はどうでもいいです
テーブルはありません >>149
select 1
union
select 2
union
select 3
これでできるかな? >>151
同じ事をSQLServerでかくとどうなりますか? >>153
PostgreSQLだと全く同じで行けたけどSQLiteは無理だったな。
SQLServerはそのままじゃ無理なん? バージョン次第かもね。
とりあえず、複数行insertするときのやり方を切り取れば、そのRDBMSにおける>>145の答えになるよ。 XamppのMySQLを使うとローカル接続でもタイムアウト連発して使い物にならない
SQLiteで動いてたコードを移行しただけだから別に重たい処理はしてないのにな
よくこんな欠陥品が標準で使われてるもんだ 重たい処理をしてないならそんなことになるわけない
安いノートでも動くぞこんなん >>158
ネットワーク接続してないからだろう
コアの部分がそれなりに作られてても周辺ツールがまるで素人の作ったゴミだ
SQLiteに比べて排他制御に優れてるというから試しに浸かってみたら
排他制御どころかクエリを同時に叩くだけでエラーになるから自前で排他制御を作る羽目になるし
戻り0行のSQL分を叩くだけでタイムアウトになるアホさ加減だ
大小比較分が3つ以上並んだらそうなる
最適化されたDBなら所要時間は単純に3倍で済むロジック量だけど
MySQLは内部構造が完全にイカレテル >>160
.NetのMySQL.Data.MySQLClientを使って127.0.0.1に接続
テーブルは適当に数字の項目を持たせて10万レコード以上
この状態で「A>10 and B<100 and C=1」みたいな条件で検索するとタイムアウトで死亡する
そもそもMySQLDataReaderを完全に閉じないと同じコネクションで2個目のDataReaderが使えない時点でアホみたいだけど
10万レコードで「oder by A limit 100」ならオンラインじゃなくても死ぬぞ
もうなんだこれ >>161
テーブルにプライマリキーとかインデックスとか設定してる?
mysqlサーバの設定見直した?
つか内部構造がどうこう言う前に、まずどこがボトルネックになっているか調査しようよ。 初心者が通る道だな
必ず解決するから、あきらめないようになw >>162
当たり前だろ
だから言ってるだろ
大小比較を3つ以上並べるのがボトルネックだと
2つなら一瞬で終わる
エンジンそのものか,Net用クライアントのバグってことだろう
日本語を使わないものも試したから文字コードのせいでもない
問題の切り出しをすべてやった上で使えないから頭に来てるだけ Sqliteで運用してるものを移行してるって時点でテーブル構造やSQL文に問題がないのは分かるだろうに
いかにも言いだから一応行っておくと127.0.0.1だから名前解決が〜とか意味不明な返しは要らないから 手元にあったら一瞬で解決してやれるけど
間にわけわからんのがいると難しいわな >>164
要するにお前のスキルが低すぎるんだよ。
素直に教えを請えばいいものを、頭も悪いんだな。 解決なら分かってるから必要ない
MySQLは使わない スキーマもクエリプランもデータの統計値わからないので、話のしようがないね そういえば、MySQLって今でもインデックスは一度にいっこしか使えないんだっけ?
あれって改善されたりした? 引き継いだデータベースのあるテーブルにidのカラムがないのはなんか意図があるのかなあ
追加してもいいよね そんなもん、ここで聞かれたって返答のしようがあるか、バカ
好き勝手にしろ >>165
> いかにも言いだから一応行っておくと127.0.0.1だから名前解決が〜とか意味不明な返しは要らないから
そんなことを言い出しそうだと思いつく時点で、よほど斜め上の発想をする人かなぁと思ってしまう
>>164
> エンジンそのものか,Net用クライアントのバグってことだろう
> 問題の切り出しをすべてやった上で使えないから頭に来てるだけ
切り出しはできるけど切り分けはできないってことかい? >>164
MySQLの負の特徴である「一度にひとつのインデックスしか使わない」に
モロ引っ掛かってるだけじゃない?
インデックスの張り方を工夫するか、条件式を工夫するかしないとダメだろ。
いちいち仕様に切れてるようじゃ技術者としては三流だね。
仕様は乗り越えるものだぜ。 ここで文句を言うよりも、再現できるサンプルを公開して、
どうやって最適化したら良いかを聞いたらいいのに。
その方が得るもの多いと思った。 >>177
Lightが本家に文句をつけてる時点でネタ 1分1秒で金稼ぎしてる人間だから初期設定状態でSqliteに劣る時点で使えないゴミでしかないよ
RDMSを名乗る資格はない そんな人間は自分が使うんじゃなく、使える人間を使う立場にいるべきなんじゃ ストアドプロシージャで変数の@が付いてる時と付いてない時の違いがよくわかりません
@をつけるとユーザ変数を参照するということはググってわかったのですが、
@をつけてない時でもユーザ変数を参照してるんじゃないのでしょうか?
わかりやすく教えて下さい よくわかりませんが、@をつければdeclareしなくても使えたので
そういうもんだと思っときます
ありした 読むだけなら@無しでいいけど、渡した先で書き換えるなら@必要、ということでは >7. ストアドプログラムを多用しない
>残念ながら、MySQLはストアドプロシージャ、ストアドファンクション、トリガなどの性能はあまりよくない。
>出来るだけそれらを利用せずに、ロジックをアプリケーション側に持っていくといいだろう。
http://nippondanji.blogspot.jp/2009/02/mysql10.html
全く使わない方がいいのかそれとも実行してタイムを計ってみるべきか? >>189
プログラミング経験がないならそう書いてくれればよかったのに インターネット上にあるmysqlを使った自作の掲示板やブログのデータを定期的(1日一回程度)にバックアップ取る場合、どう言う手法がお勧めですか?そのホストは自分で管理しているとして。OSはWindowsのサーバー系で。バックアップ先は、自宅のwin7パソコンに。 >>194
このコマンド、ネットワーク経由でバックアップ出来ますか? できるけど、バックアップはDBのある場所でcron使って
できたファイルをftpでもってきては cron、、Windowsだからatもしくはタスクスケジューラ MySQLもDBも初心者なんですが、WordPressとMySQLインストールしたんですが、WordPressでブログ書いて文字や画像貼り付けたらそういうデータ全部がMySQLのDBデータに保存されているんですか? >>199
はい。アップロード処理があるのは、DBに格納しているからです。 >>200
データベースって画像データでも文字データでも何でも保持出来るんですか。
知らなんだ。 データベースなんだからデータと名のつくものはなんだって保持出来るだろ。
むしろ何故出来ないと思ったのか。 >>199
画像はDBには保存されない。
確かuploadディレクトリにファイルとして保存される。 >>202
MySQLはバイナリファイルは苦手なんじゃないかと。そんなこと無いか。
ところでデータベースのデータって様々なデータがひとつの巨大なファイルになっているんですか? >>203
バックアップで
mysqldump
使うとそういう画像データもdumpにまとめられるんですね。 >>205
いや、まとめられない。
だから、uploadディレクトリをftpなどで別にダウンロードする。
つーかWordPressスレで聞いたほうが正しいアドバイスを貰えるよ。 データベースに画像を保存しようかと思ったらメモリを
食うから止めた方がいいという記事を見たけど
データベースサーバーを分けて画像専用にすれば問題ないよな?
パフォーマンスが要求されるデータは容量を絞ってメモリに載るようにして
遅くても問題ない画像は専用のデータベースサーバのように。 >>207
詳しい解説有難うございます。
でも私の場合、単なるレンタルサーバー1台なんで、複数のサーバーでの構成は難しいです。定期的にzipにまとめてftpで転送するのが簡単かな。より高度な手法は徐々に勉強します。有難うございました。 >>200
> アップロード処理があるのは、DBに格納しているから
この理論と、DBがなければアップロード処理はできない、は両立するはずだよね PDOなどで
select * from HOGE where VAL in (?,?,?,?);
この in の対象を増やしたいときには ? の数を増やす
つまりクエリを動的生成する必要があるけどダサいよね
回避策ある? >>211
アンケート画面でチェックされた項目を含むレコード一覧取得
をやりたかった 検索条件が可変でその都度変わるなら、query使う方がいいんじゃ? >>210
パフォーマンス比較はしてないから使い物になるかどうかは不明だけど、
WHERE MATCH(VAL) AGAINST(? IN BOOLEAN MODE)
とか。 >>210
知る限りないので我慢して動的生成する。
>>214
パフォーマンスの観点を除外したとして、
前提条件をいくつかつければ使える場面もあるだろうけど、基本的には使い物にならない。 何かアドバイスお願いします。
WordPressとMySQLをIISサーバーにインストールしたのですが、
いちおう動いているのですが、何となく動きが遅いんです。
どのページを開いても読み込みに2〜5秒掛かります。
WordPressやMySQLのインストールは初めてで、全部デフォルト設定で
入れました。
何か設定を変更すれば速くなる可能性があるなど、アドバイスありましたら
教えてください。 >>217
MySQLが遅い = クエリの応答時間が長いならこのスレ。
そうじゃないならスレ違い。 >>218
今、サーバーから10MBytesのテキストファイルダウンロードしてみたら2秒くらいで
出来ました。なのでMySQLが遅いように思います。
MySQLの設定ファイルなどで何かチェックする項目など教えてください。
サーバーはMEM 2GB のマシンで、1.5GBが使用中になっています。
他に何も動かしていません。IISサーバーのみです。 >>220
レンサバなんでアップグレードすれば可能ですが、今はその選択肢は無いという前提でお願いします。 ひとつのクエリにひとつのインデックスしか使われないんですか? >>225
遅いときに発行されてるクエリを
順番に手で実行しようぜ XAMPPインストールして、Apacheの「Admin」をクリックしたのですが、「XAMPP for Windows」のページに移動しません。
http://localhost/xampp/index.php を手打ちして移動しても、「Object not found」のページが出ます。
どうやればXAMPPのユーザー認証を設定できるんでしょうか そうだ! 俺が・・・俺たちが・・・ MySQLだッ!! >>229
設定の問題かと思うよ。XAMPPはワンセットで全部入れてくれるし、ファイルの関連性の問題は基本起こらないハズなんでMySQLのせいじゃないはず。
それ、PHPMyAdminでしょ?ローカルで苦労してるようだけど、サーバーだともっと大変だよ。レンタルなら制限多いけど最初から入ってて楽かもしれないけど。
多分、php.mycofとかmy.iniとかPHPに入ってる系統のファイルでAdmin関係の関連をONにしてやらないと動かない場合多いよ。XAMPPでもそこは書き換える必要があったかも。
勝手に入ってくれてるハズだよね、Adminそのものは。
調べて試行錯誤の連続しかないと思うよ、初心者は。そこから原因推測するのは難しいな。多分、上記の部分だと思うけど。 Mysqlをcakephpで使ってるんだけど、設定サーバ移行のため、エクスポートしてインポートしようかと
思ってやってたらERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
みたいのが出るからエクスポートするデータをみてみたら実データではなく
INSERT INTO `テーブル名 (`カラム名`, `カラム名`, `カラム名`)みたいなゴミデータが
入ってるんだけどこれはどういうことなんだろう.... 教えてください!
mysql5.1をwindowsで使用しています。
javaで書かれたプログラムからdelete文(約200万レコード対象)を発行したところ、
エラーとなりました。
その後、プログラムを修正し再実行したのですが、数秒で終わる更新処理が
なかなか完了しないという状態になってしまいました(selectは普通)
さらには起動、停止も時間がかかるようになってしまいました。
現在はtaskkillで強制終了しています。
以下がログになります。
・強制終了時
150819 21:58:43 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 45 705396736
↑が数行続く
InnoDB: 1 transaction(s) which must be rolled back or cleaned up
InnoDB: in total 697218 row operations to undo
InnoDB: Trx id counter is 0 2753280
150819 21:58:50 InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percents: 0 1 .... 99
InnoDB: Apply batch completed
InnoDB: Starting in background the rollback of uncommitted transactions
150819 21:59:49 InnoDB: Rolling back trx with id 0 2750566, 697218 rows to undo
処理速度を以前の状態に戻したいのですが、どのような方法がありますか? スナップショット的なものを取りたいんだけどどうしたらいい?
毎回mysqldumpしたのを戻すのはちょっと格好が悪い気がするので
もう少しエレガントな方法を知りたい ファイルシステムとエンジンによる
ファイルシステムにその機能があれば、スナップショット取って戻すときはリカバリ
もしくはスナップショット取る瞬間だけロック
ってそんなに戻す機会あるの?
テスト環境用に構築するだけならダンプでいいべ >>237
コーディング中のトライアンドエラーで使いたいと思った。
無いならダンプで済ますわ。 こんばんは。こんな総合サイトがあるとは知りませんでした。スレ立て様ありがとうございます。
すみません、sqlインジェクションに大きな懸念があるmysqlを使用しようとするものです。sqlインジェクションに関して比重を置いたオススメの参考書はありませんか?
ネットで探してもアフィ目的?でわかりません。ここの皆様ならご存知かと思いました。お願いします。 別にmysqlだからって話でもないと思うけど。
とりあえず徳丸本読んでおいて損はないよ いや、大きな懸念があるような方法での使用をせざるを得ないから、少しでもリスクを下げる方法を知りたいっていうことじゃないの レスありがとうございます!
徳丸本調べてみます!
大きな懸念とは単に脅威だからです。ネットで防ぐ方法が書いてありましたが、本当にそれだけで平気なのかと考えましたので。 徳丸本読んでます!
sqlインジェクション以外もスゴイいいです!知らなかったコエーがいっぱいあります!ありがとうございます。
他にセキュリティに関して必読書ありますか? >>245
インジェクションの話の時点でmysql以外の話になるのはしょうがない。つまりスレ違いなわけだ。 >>242
そうは読めない。
mysqlが格別sqlインジェクションに弱いと思い込んでる様にしか取れない。
だが備わってる構文によってインジェクション成立し易さの違いはあるのかも知れない(穴はすでに空いてて、後はどれだけ工夫できるか)。
だからどこ情報なのかと思った。 >>242 >>248
すみません、mysqlに問題があるとかじやなく、私自身無知だから懸念があると言いました。もうしわけないです。 >>242 >>248
すみません、mysqlに問題があるとかじやなく、私自身無知だから懸念があると言いました。もうしわけないです。
あ、無知というのはsqlインジェクションに対してです。 「PHPはSQLインジェクションやXSSなどの脆弱性を生みやすい言語(キリッ」とか
専門家きどりが言ってるくらいなんだから、まあどうでもいい。 mysqlユーザーは格別sqlインジェクションに弱い←正しい >>252
野暮だとは思いますが、マジレスさせて頂きますと、
MySQL だから SQLインジェクション という、ありがちな勘違いの話題に対し、
類似事例として、PHP だから SQLインジェクション・XSS という、これもよくありがちな例を提示して、
話題を盛り上げるという意図を含んでおります。いわゆる「あるある」ネタというものです。
ご理解ください。 >>255
ということはつまり、あるあるネタで盛り上げるためには
「PHP だから SQLインジェクション・XSS」という、
もはやmysqlが含まれてすらいない話題を進めるのが、このスレでは正しい姿であると。 >>256
>>255みたいなアホのレベルにあわせる必要は無いよ
「PDOつかえ」とかPHPの話題に適宜誘導するが良い utf8mb4にしてみたんだけど、絵文字がうまく入らない
ハートや太陽は入るようになったんだけど顔の奴とかが??になる、こういうもんなの? 入るやつと入らないやつがあるみたい。
http://i.imgur.com/yJIlsFq.png
全部調べてはないけど、この中だとハート、太陽は入る。表情っぽいやつは入らない。 入るのはコードとして入るんでしょ?
そうなら出力の後のアプリの問題では? それなら、set character何たらいらないことになるな insert on deplicate update と replace って更新が多い場合どっちが早いですか? >>263
じゃあdb側が適切に入れることができてないってこと?
それなら顔文字を直接insertじゃあなくてコードに変換するとか?
スターリングで見られないかな?それともローカル保存時点で問題あって、それのコード見ても違うやつってこと? PHPからDBへの接続が、mb4になってなかったみたい。
解決しました。やはり保存はできてた。 >>263
「コードとして入る」のいわんとしている事がいまいちはっきりしないけれど、
つまりほかのすべての文字と同様だってことでいいよね? >>260
そうそんな感じ。携帯独自だからdb側がコード分からなくて、、、文字コード?、、、変な風に入るって意味 >>270
ごめん。その顔文字のバイナリがわからないって思って。 プライマリーキーを auto_increment にしているとき
自動採番される数字にプレフィックスをつけたいんだけど
いい方法ありますか? 数値型のColumnにどうやって文字列を埋め込んだら良いのかな。 ウィンドウズ版mysqlのmy.ini設定を教えてくれ。メモリ関係の設定値をどう割り振れば良いのかわからん。動きが遅いんだわ。実メモリ2GBなんで遅いのかな ビュー作った時のクエリーを再確認したくなった時って
どこで見ればいいんだっけか show create view view_name; MySQL Installer is running in Community mode.
というのが時々でるのだが、これは何?
出たらどうすればいいの? これまで euc-jp で構築して来てしまったデータベースを
utf-8 に変えたいのですが、どのようにすれば文字化けせずに行えますか? >>281
最初に買った本に euc-jp にするよう書いてあったのです。。。 >>284
テーブルをエクスポート
テーブルを削除
テーブルの構造内の ujis を utf8 に書き換えてインポート
これだけでOKでしょうか?
文字コードは問題なく行けた感じなのですが・・・
エクスポートしたテーブルの内、行の多いテーブル内のデータが大幅に欠けていた事に気付きました。
数ヶ月分のデータを消失してしまいました。。。
何故こんな事が起こるのでしょうか?
ダンプに行数制限とかあるんでしょうか? DBはクライアントのエンコードに合わせるんだから
ダンプしてDB作りなおしてリストアでいいべ
どうしても変換できない文字もあるから、ダンプデータなおすなり
元データ書き換えてダンプし直すなりすればいいし
完全に同じものができるまでもとのDB消さなけりゃなんどでもやり直しできる INSERTとかUPDATEするときに、各項目を
トリミングしてからやってほしいんだけど
そういうことってトリガ使わないでできる?
" unko " を突っ込むときに、前後の空白を
あらかじめ捨て去りたい みんなmysql用のサーバーどこ使ってるの?
俺さくらインターネットのやつ使ってるんだけど
そろそろDB容量が1GB超えそうだからDBだけ引っ越し考えてるんだが
AmazonやGoogleのはよくわからんし
国内のDB専用サーバでいいところないかな
200万回読み込み/dayくらいは余裕で耐えられるレベルの >>287
つtrim , ltrim , rtrim >>285
sqldumpを使ったんでしょ?
それなら、内容がテキストファイルに残っているのだから、
どこが欠落したか、照合すれば分かるでしょ。
それを特定し、原因を調べ、直してから、再実行すれば良いのでは? そういうInsert文、Update文を書くときに、使う >>292
トリガ使わずにって書いてるあたりから、何を欲してるか分かりそうなもんだがなぁ。 別にトリガ使わなくてもできるだろ
テーブル定義もしちゃダメなら無理だけど >>294
それ、それだよ多分! それを教えてくれ! スレチだったら失礼。
現在PHPとMySQLでAVサーバーを構築してるんですが検索バーで「りお」と検索したら「リオ」と「Rio」もしくは「柚木ティナ」が含むレコードがヒットするようにしたいのですが、どのようにDBを設計すれば宜しいでしょうか? MySQLというよりDB設計の話になるけど
リオ=Rio=りお=柚木ティナってことだよね?
じゃあ女優テーブルにリオさんのデータを登録して、
もう一つ愛称(?)テーブルも作ってそこにりお、リオ、Rio、柚木ティナの4つのレコードを愛称と、女優IDで登録すればいいんじゃない?
愛称で検索させて、そこから外部キーで結果結合できるでしょ >>298
あそこの住民がそんなこと分かるのかよ、、、
>>299
愛称テーブルですね、あざす。
誤字についてなのですが、例えば
「柚木テーナ」と検索して「もしかして: 柚木ティナ」とヒットさせるためにはどうしたら良いですか? ちな今考えてるのはPHPでレーベンシュタイン距離を実装することです。
が、初心者には難しいです(>_<) >>296
答え返ってこなかったね。俺も知りたかったんだけどな。 >>304
insert、update時のカラム指定に関数を書けばいいことだろうが。 >>303
初心者で実装が難しいなら後回しにするってこともできるんよ。
部分一致でとりあえず作ればいいじゃん。 insert into テーブル名 (カラム名) values (rtrim(スペースが入った変数名)) 流れも何も、できないって知っているなら、そう回答してやれば良いんだよ。 >>312
>>294ができるって言ってるから、それを差し置いてできないとは断言できないでしょ。
テーブル定義のどこかでやれるらしいと。 >>294がいないんだからどうしようもないけど、
そのような方法があるなら>>314は知りたいと思わないの?
なんで話を終わらせたがってるのか分からん。あれば便利じゃん。ほしいじゃん。 方法があれば、誰かが書いている。
書いてないのは、方法が無いから
これでいいのでは?
匿名掲示板で、あるとか無いとかだけ言われても検証不能だろうが
やり方が示されるなら、検証できる。今のところ示されていない。
もう良いんじゃあないの?多分釣りなんだろう。 質問ですが、mysqlってoracleでいうfor update nowaitないじゃないですか。
デフォルトでずっと掴みっぱなしになるわけで、
これって、ロック時間は極力短くしろよっていう思想の現れなのでしょうか?
となれば、例えばレコードを編集する時、oracleならロックが取得できれば編集中状態へ、
出来なければ編集不可能という処理ができましたが、
mysqlの場合それが出来ず、レコードに編集中フラグを立ててコミットしておく
とか、そういう方法が普通になるのですか?
もし編集中プロセスがハングした場合、ずっと編集中のままになってしまいますよね。
編集にタイムアウトを設けるとか、応答性の低い解決方法は普通ですか? >>320
編集が必要なレコード。
1レコードの内容を表示しているGUI画面があって、編集開始ボタンがあります。
編集開始ボタンが押下でユーザが編集して、編集終了ボタンを押して更新できませんでしたでは困ります。
画面が編集状態にある場合、レコードをロックしていないといけません、
他のプロセスから編集開始が押された時は即座に抑止を応答せねばならず、
また編集状態のプロセスがハングした場合は編集状態から自動的に開放される必要がある、
とそういう前提です。
oracleならfor update nowaitで簡単にできたのですが・・。 mysqlってデフォルト設定のままだとパフォーマンス悪いん? MySQLで、変数名を @var ではなく :var にできませんか?
$ cat test.sql
set @id := 123;
select * from tbl
where id = @id /* ← これを :var にしたい */
$ mysql dbname < test.sql ORDER BY用のインデックスって作った方が良いですか? >>331
まさにそれのせいで@になってんだけどな >>332
必要
WHEREから繋がってる必要がある。
だから、WHERE とORDERにダブりキーがあっても書いた順番に複合インデックスを立てるとこがミソ
初心者はそこ省いてインデックスが効かなくなってる >>334
WHERE A>hoge ORDER BY B,C
みたいな条件の場合、インデックスは A,B,C で作れってこと? >>335
それは彼が言ってるダブりと違うと思うぞ。 ダブりがあっても書いた順番に〜
ってことは
ダブりがない場合ももちろん書いた順番に〜
という意味になる。 インデックスが使われるかどうかはそんな単純な話じゃないが。 >>335
複合インデックス作るだけじゃなく、
インデックス自体、複数作っても構わないんだよ。 スパイダーエンジンの監視アーキテクチャがわからん。
ソース読むしかないか。 Excel VBA から MySQLへの接続をしたいと考えています。
VBScript からは下記のコードで接続できるのですが、
VBAからは接続できませんでした。
Dim adoCon
Set adoCon = CreateObject("ADODB.Connection")
adoCon.ConnectionString ="Driver={MySQL ODBC 5.3 Unicode DRIVER};SERVER=localhost;DATABASE=db1;USER=********;PASSWORD=********;"
原因として、どのようなものが考えられるでしょうか。
環境はこれです。
OS : Windows 7 HomePremium 64bit
Excel 2013
MySQL : version 5.6.26 俺はExcel2010 & MySQL 5.6.20 Win7Home 64bit で使ってるけど?
もっとも、
Driver={MySQL ODBC 5.3 ANSI DRIVER}
にしてるけどね
つーか、接続できないってんならそのエラーメッセージも書きなさいよ >>340
WHERE A>hoge ORDER BY B,C
みたいな場合は
どういうインデックスをつくればいいの?
A と B,C の2つ作ればいいの?
WHERE節とORDER BY節で違うインデックス使われるの? >>344
インデックスを作る前、作った後で、SQLを実行して時間を見てみる。
このくらいは簡単にできるぞ。 >>343
エラーメッセージはこれです。
[Microsoft][ODBC Driver Manager]データソース名および指定された規定のドライバーが見つかりません。
ODBCマネージャーにドライバーはありますし、
VBScriptからなら接続できるので無いことは無いと思うので困っています。 >>346
俺は
mysql 64ビット - dbcドライバ 32ビット - excel 32ビット
だけど、それは?
後、odbcマネージャーにあるというはユーザーDSNなのかシステムDSNなのか
これ以外なら判らん ROW_FORMATをCOMPRESSEDに設定して圧縮したら、
今後レコードが追加されても圧縮された上で追加されていきますか?
つまり一度設定したら、もう実行する必要ありませんか? どれくらいのスペックのマシンならmysqlがスイスイ動くの?dbはとっても小さいとして >>350
DBが小さいなら何でも動く。
RaspberryPi程度でも普通にLAMP構成で使えている。 Windows Server 2012 R2 64bitで使うなら
MySQLも64bitがお勧めですか?
MySQL 32bit版よりも速いですか? >>356
君ならどっち使うとか?教えてけろばってん。 64ビット版があるのに32ビット版を使ったら、サポートする方も困ると思うぞ。 ダウンロードサイト行くと32ビットがお勧めで出てるよな。 サーバーが詰んでるメモリの内、どのくらいを mysql に
割り当てできるのかにもよるんじゃないかな
4G以下ならどっちでも変わらない気がする Sakila というサンプルが入っていますが、
Sakilaとはどういう意味なんでしょうか? The name of the MySQL Dolphin (our logo) is “Sakila,”
これかな joinするとき、
select * from A join B on A.id=B.id;
みたいにするのをついうっかり
select * from A join B;
とやってもなんだかそれなりに動いてしまうんだが
これ何をもって結合しているんだ?
おなじ名前のカラムを見つけて勝手に結合してるの? phpで書く時、カラム名にバッククオートつけたほうがいいかな? >>365
全部ってどういうこと?
何を結合してるの? >>368
Aテーブルの1レコードに対してBテーブルの全レコードが結合されている。 >>369
まじ? つまり A×B 全部出てるだけってこと? >>370
そうだよ。
テストデータは結合されるはずがないデータも作らないとダメですよ。 Phpmyadmin 3.5からODS形式のファイルをアップロードしようとすると
この圧縮形式はサポートしていません、と出てアップロード出来ないんですが
これはPHP側の問題でしょうか? どこを修正すればアップロード出来るようになるでしょうか。 PDOで、セキュアで動的なプレースホルダを作るには
どうしたらいいんでしょーか
チェックをつけたら絞込み条件が増えてく、みたいなクエリは
どうやって設計するのが今風でおしゃれで格好いいのか テーブル消しても外部キーの設定が残ってて、再作成するときに同じ外部キー名だとテーブル作れないっていうエラーが出るんですが、
テーブル削除時に関連してる外部キー設定も削除してくれるようなオプションないんでしょうか? group by した時に残るレコードの条件を指定することってできますか?
order by と組み合わせようとしたらエラーが出てできませんでした。
havingのことじゃなくて、gruop byされる時の条件のことです。
同じ値を持つ3つのレコードがあったとして、
そのカラムをグループキーに指定した場合、その2つ目のレコードが代表として残るようにしたい、という意味です。 >>376
そもそもグループ化する必要がないのでは? 異動で新たに担当することになったシステムで使われてるmysqlのクエリを
片っ端からEXPLAINしてみたら、typeはrefだがkey_lenが515とかになってるやつがあったんだが、
このクエリ大丈夫かね?
今までの経験だとkey_lenて普通一桁とかだったのだが。。
短いほど速いのは知ってるが、どれぐらい長いと速度に影響出るんでしょうか? >>379
速度に影響はない。 メモリ使用量に影響はあるが where A="hoge" and B="piyo"
という式で、"hoge"の代わりにオールマイティを入れたいときは
どうしたらよいですか? Aが何でもイイんだったら単に
where B="piyo"だけでいいやん where A like '%' and
一つのSQLでどうにかしようというのは、あまり勧めないが。 wordpressとmysqlでブログをやっているんですがどうも反応が遅いのです。ページを開くのに十秒くらいかかります。
質問はmysql単体の性能を測定するにはどういう手法が有りますか?
ググるキーワード教えて下さい。 >>387
クエリの前後でストップウォッチ的にPHPで書く。
たぶん共用サーバーなのが原因と思うけど。 >>388
vpsサーバーwindowsです
さっそく試してみます。有難うございました。 MySQLの勉強をしてるんだけど、Workbenchで接続先のデータをエクスポートしようとすると
mysqldump: [ERROR] unknown variable 'delayed-insert=FALSE'
となってdumpファイルの作成に失敗する・・・
どーしたらよいものでしょうか 日本の職種別、資格別、スキル別の平均最低月給リスト(ほぼ毎日更新)
http://jobinjapan.jp/cate/
全掲載求人107,342件の平均最低月給196,100円
MySQLの求人128件 の平均最低月給221,100円
http://jobinjapan.jp/job-listing/keyword-mysql.html
平均よりも2万5千円も高いのか。 mergeテーブルで3分割されたデータをsqldumpでdumpしたいんだけど、
3つのテーブルを上手くマージした1つのテーブルにすることはできないものか。
>>でデータのみ追記することも考えたけど、それしかないかなぁ。スマートじゃないなと。
sqldump (mergeテーブル名) > dump.sql 一発で3つ分のテーブルデータがほしい。 linux vpsのcpu2コア,2gbメモリくらいのプランでも動きますか? >>401
知らないならレスすんなよ。
このウンコが Aというテーブルと、そっくり同じなBというテーブルがあったとき
AでSELECT した結果をそのまま Bに INSERT したいときって
どうやって書くんだっけか
超ド忘れしちゃった www
insert into b
select * from a
where 〜 insert into B select * from A;
かな MySQL cluster関連の質問もここで良いでしょうか? MySQLからMySQL clusterの変更に際し、エンジンも
MyIsamからndb clusterに変更しました。
MySQLでは、500万レコードのloadを約50秒程度で行います。
しかし、cluster側では、loadに4分近くかかります。
どちらの処理でも、mysqld、ndbdのプロセスは上限に張り付いているので、
CPUは使いきれています。シングルスレッド性能も同等です。
ディスクも同じです。(物理的には別だけどものは同じ)
cluster側はトランザクション制御等MyIsamに比べ複雑なのは理解していますが、
ここまでloadで遅くなるものでしょうか?
ちなみにselectは、わざとフルスキャンのSQLを投げた結果、60秒→30秒と改善しています。
MySQLはload用のファイル、mysqld、データ場所すべて同一ホスト内、
cluster側は、SQLノードのホストにload用ファイルを置いて3台のデータノート
に対して更新をしています。 同じテーブルにある同じ型のカラムを一つにまとめたいんですけど、
1つずつUnionでくっつけていくしかないですよね? 毎日一回だけあるSQL実行したいんだけどどうすればいい? 毎日一回だけしこしこ実行したいんだけどどうすればいい? mysqaldumpするとき
insertが1行になるのはいいんだけど
--skip-quick ではなく
てきどに改行コードを入れて見た目複数行になるように
するほうほうをおしえて ユーザ sample をつくるときに
create user 'sample'@'localhost' identified by 'password'
と入力しているのですが、正しいパスワードを入力してもアクセスが拒否されます。
どうしてでしょうか? >>432
手元にある本を参考にしてつくっているのですが、user sampleを作れば、そのまま
接続できるはずだと書かれています。
権限の話はuser sampleを作ったあとに、前もって作ってあったsampledbにアクセスする際に
でてくるだけです。 >>433
create user したアカウント(たぶんroot?)ならアクセスできるんだよね。
そのアカウントで入ったあと、
select Host, User, Password from mysql.user;
を実行し、登録ユーザー一覧の表示を確認してみて。
+-----------+----------------+-------------------------------------------+
| Host | User | Password |
+-----------+----------------+-------------------------------------------+
| localhost | sample | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+-----------+----------------+-------------------------------------------+
一覧表示の中にこういう行が出てくれば、登録はできている。
出ないときは登録ができていないことになる。 >>434
rootとsample両方の表示がでました。 どうもパスワードが違うみたいです。パスワードを入力するとAcess denied for user 'sample'@'localhost'(using paswword:NO)とでてしまいます >>437
設定したパスワードと同じものを入力してるんですが、できません 431ですが自己解決しました
ご迷惑をおかけしました。 エラーメッセージ見ればわかるじゃん
言われてる通りパスワード入力してなかったか出来てなかったんでしょ WorkBench入れてるんだけど、どうにもsshで接続できない・・・
ローカル上も新しく借りたレンサバでもなんてことなく接続できるんだが、
数年前にたてたcentos5のサバにmysql入れてworkbenchから接続しようにも
「例外コンポーネントが例外をスローしました」とでる
一度でると、再起動するまで他の接続まで一切受け付けなくなる
以下、詳しい状況
macのターミナルからはsshも問題なく接続でき、同じpemファイルの配置場所もファイル名も日本語は使用せず
SSHのhostnameもusernameも確認
TestConnectionボタンを押すと数秒後に「例外〜」のエラー
サーバのログを見ると「Accepted publickey for〜」でsshでの接続はできてそう
mysqlのhostnameはデフォルト、ポートもデフォルト、Usernameもrootも他のアカウントもだめ
ターミナルでmysqlに接続してユーザ確認するけど、
しっかりlocalhostでrootも存在
あとどの辺確認したらいいもんでしょうか・・・ ちょい自己レスですがSequelProだとすんなり接続できた
どういうことなんだろう・・・ テーブル作成時のengineの選択で memory ってのがあるじゃないですか。これ使う場合ってサーバー起動時に
通常のテーブルからinsertしてシャットダウン時(及び随時)にディスクに書き戻す必要があるんじゃないですか? ライセンスについて質問なんですが、
無料版使ってショッピングサイト作って運用したら
「ソース非公開で商用利用」ってことでライセンス違反になるん?
ショッピングサイトを自分で運用する場合と、
ショッピングサイトをお客さんにあげてお客さんが運用する
場合で話は変わってくる?
GPLっていうのがよくわからないです(´д`;) >>448
利用してるMySQLのソースをいじってなきゃなんも心配ない
MySQLのカスタムビルド作って利益得て、かつGPLでカスタム内容を無償公開してなければライセンス違反。バレたら炎上案件ってことだ
言いたかないけどその知識レベルで「よくわかんないです」はないだろ。もし小一時間調べて全く分からなかったなら社会人として問題あるぞ
そもそも考えなくてもわかる筈のこととして、MySQL使ってるサイトなんて腐るほどわけだが、そのサイト自体のコードが公開されてるケースなんて滅多に見ないでしょ
そもそもGPLがそんなライセンスだったら誰も使わないよ テーブルA にあって、テーブルB にないもの
を検索するのって、何ジョインだっけか MySQL WorkBench使ってます。
VARCHAR()とNVARCHAR()のどっちにしても、VARCHAR()表記になります。
で、Collationがutf8-binかutf8-default collationで区別されてるみたいなんですが、なぜこういう方法なんでしょうか? Mysql初心者です
ジオメトリー型のデータが入ったレコードがあったとします
ある長方形を5*5分割してその中にあるレコードを一括してカウントするクエリーって作れますか 質問させてください
ID(id)とカテゴリー(category)と登録日(date)の3つのカラムがあります。
date順に、categoryでgroup byして、id順に並べ替えるにはどうしたら良いでしょうか?
(簡単に言うとGROUP BYを並び替えたい)
select * from (select * from table order by id desc) as tmp group by category order by id desc;
これでやってみたのですが
ローカルの「MySQL Community Server 5.5.41」ではうまく並び替え出来たのですが
サーバーの「MariaDB Server 5.5.44」だとidで並び替えることが出来ません
よろしくお願いします! >>456
>date順に、categoryでgroup byして、id順に並べ替える
まず日付毎に、カテゴリーが同じ物をまとめるって事?
idはレコード毎に違うんだよね?これをしたいならグループ化は無理じゃない?
どうしたのか、言っている意味が良くわからない。
データのサンプルと、こういう風に出力したいという例を書いてみて レプリケーションをやってみようと思うのですが
同期を取っていて、マスターのDBをドロップしたら、スレーブはどうなるのでしょうか?
またリストアで一度に大量にデータを流し込むとスレーブはどうなるのでしょうか?
運用でできれば一瞬でデータを書き換えたいのですが >>457
レスありがとうございます
データのサンプルを作りました
これを↓
| date | id | category |
| 4 | 1 | book |
| 3 | 2 | note |
| 2 | 3 | note |
| 1 | 4 | book |
まずcategoryでGROUP BYしてid順に並べ替える↓
| date | id | category |
| 4 | 1 | book |
| 3 | 2 | note |
その後date順で並び替えたい↓
| date | id | category |
| 3 | 2 | note |
| 4 | 1 | book |
よろしくお願いします GROUP BYの意味あんの?
order by date,id
でいいんじゃないの? >>460
categoryでグループ化した時点で、
dateもidも不定だよ。何が来るか定まらない。
そんな値でソートしても意味ないよ レスありがとうございます
>>461
それだとすべてのレコードが抽出されてしまいます
>>462
mysqlでサブクエリを使うとちゃんと並び替え出来たので
mariaDBの問題でしょうか… >>463
例えば、categoryでグルーピングした時に、
bookに対し、
dateに来る値は4と1、idに来る値は1と4となるけど、
どちらを取って欲しいのか、それともどちらでも良いのか
この辺を決めないといけない。 >>463
エラーにならないのは mysql が変態だから。
エラーにするモードもあるんだっけ。 >>464-466
レスありがとうございます
ORDER BYで並び替えたデータをGROUP BYして並び替えって、出来ないんですか...orz >>467
それで結果が返るというのがMySQLが変態だと言う証
そういうSQLの覚え方はやめておいたほうjが良い グルーピングした上で一番小さなIDを取得したいというなら、MIN()を使え。 MySQLWorkBenchで参照整合性を設定しようとしたらエラーが出ます。どこが悪いのでしょうか。
テーブル:Product
カラム :ID(INT(10),PK,NN,UQ,AI) , MakerID(INT(10),NN,UN)
と
テーブル:Maker
カラム :ID(INT(10),PK,NN,UQ,AI) , Name(VARCHAR(45),NN,UQ)
の2つのテーブルがあります。
生成されたSQLは、
ALTER TABLE `database`.`product`
ADD CONSTRAINT `MakerID`
FOREIGN KEY (`MakerID`)
REFERENCES `database`.`maker` (`ID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
エラーは、
ERROR 1022: Can't write; duplicate key in table '#sql-3ac_17'
です。 >>467
select * from table where id in (select min(id) from table group by category) order by date;
こんなところでどうかな >>472
出来ました!完璧です!
ありがとうございました >>472
すみません、ローカルで試して出来たと思ったのですが
鯖にうpしたら、やっぱり出来てませんでした…
mariadbでは出来ないみたいです…orz 出来てませんって? それは無いと思うけどね。
どういうデータがあって、どういう風にしたいか、もう一度書いてみて。
前提は、IDがユニークであることくらいだ。 トリガーに関して質問なんですけど。 version 5.6.20 ある項目が更新された時にだけトリガーで退避ってのは出来ないでしょうか?
テストで作ってみたんですけど、関係ない項目を更新してもトリガーが起動されてしまうみたいで
create table stk(
code int primary key,
test1 int,
test2 date,
test3 int
);
create table hist(
code int ,
test2 date,
test3 int ,
primary key(code,test2)
);
delimiter //
create trigger tr_hist before update
on stk for each row
begin
insert into hist(code,test2,test3)
values(old.code, old.test2 , old.test3);
end;
//
delimiter ;
で、ここではtest2の日付が更新された時だけトリガーを走らせたいんですが >>476
更新があったかどうかは内容見ないと分からないでしょ。
トリガー動かして、OLD.test2とNEW.test2を比較し、
変わってない時は処理せずに終了したらいいんじゃ? >>478
あ〜レスありがとう。トリガーの中でifが使えたんですね^^;
if old.test2 != new.test2 then
insert into hist(code,test2,test3)
values(old.code, old.test2 , old.test3);
end if;
でtest2が違った時に処理をすることが出来ました。 phpでクラスを要素に持つクラス(入れ子っていうのかな)をinsertしたいんだけど根本的な解決方法が見当たらない
これはそもそもmysqlを使おうというのが間違いなのかな >>480
よくあるよ。
中の方のクラスは別テーブルにしろ。 あと適当なキー持て。
でもって外の方のクラスはそのキーを持て。 >>481
入れ子になってるクラスの要素数が可変なんですけど、そういうときは
レコード側の要素数を可変域の最大まで用意しておいて対応って感じでしょうか >>482
本来なら正規化すべき
でも、5個程度とかちょっとなら hoge1,hoge2,hoge3 って作っちゃえ で、いつの間にか後任がALTER TABLEでhoge4,hoge5,hoge6,hoge7 と追加していくんですねw InnoDB圧縮を使ってて、テーブルの定義に
「ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8」
みたいなオプションが入ってるのですが、
KEY_BLOCK_SIZE オプションを削除するにはどうすればいいんでしょう? >>485
イルミナティと関係あるんじゃないか?
あっ、今ピンポンなった。
NHKの集金人か? mysqlのログをソケットに吐く方法誰か知りませんか? さくらのVPSで、2台のサーバーをローカル接続しています。
一方のサーバーから別のサーバーへmysql接続しようとすると、
コマンドラインやphpのmysql_connect関数では接続できるのですが、
phpのPDOで接続しようとするとAccess deniedになってしまいます。
原因は何が考えられるでしょうか? なにかミスってるとしか、、、
エクセプションのメッセージはどうなってる?
コマンドライン時とユーザー同じ? >>492
hoge@localhost と hoge の違いと思う >> 493
>> 494
ありがとうございます。
小さなテストで試してみたところ接続できました。
が依然CMSからの接続には失敗します。。
全く同じdsn,optionにしているのにコンストラクタで死んでます。。 >>493
>エクセプションのメッセージはどうなってる?
PDOException: SQLSTATE[28000] [1045] Access denied for user ‘***’@‘192.168.1.2' (using password: YES)
です。 データの挿入時に発動するトリガーを
一時的にオフにしたいんだけど
どうしたらいいかな トリガー内で特定の変数を見て、その値によって処理するかどうかを分岐する。
トリガーを動かしたくない場合は事前にその変数をセットする。 >>498
マジでそんな原始的な方法しかないの?
それならトリガー削除した方がまだマシだな・・・ トリガーを動かして欲しくないのかどうかは、使う側でしか分からないだろう >>500
ALTER TRIGGER fugafuga DISABLE;
とか
ALTER TABLE hogehoge DISABLE ALL TRIGGERS;
が使いたいよね クエリー実行してエラーが起きたとき、それが
そのクエリそのもので起きたのか、それともトリガー内で起きたのかを
区別する方法はある? そもそもクエリそのものが失敗してもトリガは起動されるのか? >>503
・クエリが失敗したのでトリガが起動されていない
・クエリが成功したがトリガが失敗した
このふたつの区別がつかないんだよ クエリが失敗した→クエリでエラーが出る(トリガーは動いていない)
クエリが成功した→クエリでエラーは出ない(トリガーの成否でエラー?) 素朴な疑問ですけど、
1つのテーブルにレコードを追加していくより、
ある一定数以上はテーブルを分けた方がパフォーマンが良くないですか?
パーティショニングとかメモリを増やすとか色々対策はあると思いますけど
1つのテーブル内に詰め込むより、分けた方が速いと思うんです。
1テーブル1000万レコードから探すより、
100テーブル10万レコードから探す方が速いと思うんです。
こんな考え方に対してやっぱりおかしい・間違ってますかね? MySQLで現在扱っているDBがあり、その性能に関しての疑問なら、
その試みを実際に試すことで回答は出ると思う。
MySQLに限定しないことなら、DB設計スレで聞く方が良いかもしれない。
言えることは、実運用時のデータアクセスの傾向と、
対するテーブル設計のチューニングに関係しそう。 結局は設計の話になってくると思うけど、それだとどのテーブルから探すかを決定してからって事なんでしょ。
試してみて結果を教えてくださいw >>508-509
例に出したように1000万レコード、1テーブルに10カラムで試してみたのですが、
1テーブルでwhere検索すると数十秒〜数分かかります。(検索条件による)
もちろん、テーブル設計やハードを改善していけば変わってくるのでしょうが、
そういう物理的なコストをかけるより、単純なテーブル分散の方が良いと思うのですが、
その事に対してはなにもないのでしょうか?
皆さんもある程度試したうえで発言されてると思いますが。 テーブルにインデックスが張ってあり、検索時にそのインデックスを効率的に利用しているかどうか、とか
あるいは、テーブル上の全レコードを見ないと結果が出せないような検索(フルスキャン)なのか、とか
あとはストレージの性能とか、色々ありそうだけど
検索条件によるって所が気にはなる
仮にテーブル分散しても、分散したテーブル全てを見ないと結果が出せないなら、それほど変わらない気がする。
試した上でやれるかと言われると、じゃデータくださいになるような気もするし。 >>510
explainの結果貼れば一発でわかるよ 1000万程度なら瞬時に出るはずで、1秒以上かかるなら何かがおかしいと
疑ってみるべき、そこ直さないとテーブル分割は効果まったくでないと思う MySQLはストアドの性能が悪いとか書いてあるページがあるが、新しいバージョンでもそうなんだろうか?
Oracleからの移行を検討しているが、ビジネスロジックを実装したストアドをどうすべきか悩む。 Oracleより性能良くなったり、同等だったら、
困る会社が出てくるんじゃないの? なんでOracleがMySQLを抱え込んだのかな? やっぱそうなんだ
なんでもかんでもPL/SQLで組んだシステムだから、その辺りをアプリケーションサーバー側に持っていくの、かなりしんどいんだよな 分析関数使ってる分の代替手段を考えないといけないとか
互換のない部分の心配はしなくていいのかな? >>519
MySQLでもストアドプロシージャでいいんじゃないの? >>519
アプリケーションサーバとDBサーバが別のコンピュータなら、ネットワーク通信による性能劣化が激しくて話しにならないぞ。 >>515
ストアドが遅いなんて言っているが、外部からSQL文だけでどうにかしようとする方がはるかに遅くなる。
ストアドが遅いなんて話はMySQLのSQLが遅いだけだろ。
そもそも遅いという話自体が誤解のように感じる。
ストアド嫌いはストアドを悪くいうから気をつけな。
それにシステム全体の性能要件を考えずに遅い、速いを論じても意味がない。 保守することを考えてDBに機能を持たせることはやめた
トリガも廃止した 個人用途ではMySQLが最強ということでよろしいでしょうか? >>525
MariaDB10.1と言いたいとこだがな。 >>524
最近のやつってRDBの良さをつぶす構成を取りたがるのはなんなんだろうな。
RDBをデータの入れ物としか思ってなくて失敗しているシステムをよく見かけるようになってきているけどな。 失敗とは言わんが、そんなにパフォーマンス気にするんやったらもっとDBMSに仕事させろやと思う事はある。 Oracle使いこなしているシステムでMySQLにするのに、MySQLに詳しいメンバーがいないなら、その時点でやばいプロジェクトだぞ。 PHPでpostしてレンタルサーバーのMySQLに絵文字を入れるため
utf8mb4を使いたいのですがmy.cnfがいじれません
以下のよう既存のデータを変更しても
alter database データベース名 default character set utf8mb4;
character-set-serverとdefault-character-setが変更できないためうまくいきませんでした
何か参考になるサイトなどはないでしょうか >>528
WordPressがもてはやされてる時点でな
使い勝手は良いのかもしれないが、後から拡張できずに失敗してるパターンが目立つ 50byte程度のレコードを500万レコードほどINSERTするのに3分近くかかるのですが、
リソースモニタで監視してもCPUもディスクも数%(〜15%程度)しか使用してなく、
何がボトルネックになっているのかよくわかりません。
CPUもメモリも全く余裕なので普通に考えるとストレージのIOなのですが、
リソースモニタでみる限りではディスクも働いてないので、
限界まで引き出せればもっと縮むのではと考え、質問させていただきました。
ソフト側の実装はマルチスレッドで、
各スレッド毎にコネクションを張ってINSERTしまくっています。
処理時間は、5スレッド前後で頭打ちになっているようです。
ハードウェアの主なスペックは下記のとおりです。
Xeon 16コア32スレッド
システムメモリ64GB
データ用ストレージSSDx2のRaid0
OSはWindows10proでMySQL5.7.11x64、my.iniはデフォルトから下記を編集しています。
(作業用端末を兼ねていますが、リソースの3/4はMySQLに割り当ててよいと考えています。)
sync_binlog=0
skip-innodb-doublewrite
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=8G
innodb_log_file_size=4G
innodb_io_capacity=10000
sort_buffer_size=16MB
max_heap_table_size=8G
key_buffer_size=4G
テーブル構造は、下記のような単純なものです。
CREATE TABLE `hoge_table` (
`hoge_id` varchar(127) NOT NULL,
`fuga` int(9) NOT NULL,
`aaa` tinyint(4) NOT NULL,
`bbb` tinyint(4) NOT NULL,
(略)
PRIMARY KEY (`hoge_id`,`fuga`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;
以上、どこから調整していけばよいでしょうか。
よろしくお願いいたします。 プライマリキー二つが重複してないかのチェックにかかりそうな気が 大量にINSERTする前にBEGIN 、 終了時に COMMIT 入れたらどうなる? >>535
空からの始めのうちと400万件のころとで1INSERTあたりのレスポンスにあまり差がないので、
そこのコストではない気がしています。
>>536
トランザクションを使う場合と使わない場合を比較してみたところ、
トータルの処理時間としては大した差がでませんでした。 キーに原因があるかどうかを確認するために
キー無しで定義してデータ入れてからキー設定してみては ってWindowsか、ファイルシステムはNTFSだろうし、、、
別のOSで別のファイルシステムで試しても同じ数字になるか気になるな、、、 >>528
RDBの良さはリレーショナルだけで十分だ
それ以上はいらぬ 【TPP断固反対(嘘)】 自由ホランチョ党 【スタンフォード(嘘)】
安倍首相がスタンフォード大前で「嘘つき安倍は帰れ!」と抗議を受ける
https://www.youtube.com/watch?v=HkMjwggu3ko
安倍総理、麻生副総理も経歴詐称? 海外留学の経歴が削除されていた! 「学歴詐称」は公職選挙法違反
【日本の金正恩】 安倍寛信 【安倍晋三の兄】
復活した電力会社の原発広告に文化人や芸能人がまたぞろ登場して原発をPR! 500万円の高額ギャラも 勝間和代 三橋貴明 佐藤優
三菱商事の核ミサイル担当重役は安倍晋三の実兄、安倍寛信 三菱重工の重役でもあるらしい
これがフクイチで核弾頭ミサイルを製造していた疑惑がある 書けばツイッターで速攻削除されている
ネットにおける言論統制は、非公然で陰湿に進んでいるようです
https://twitter.com/toka iamada/status/664017453324726272
山本太郎
先ず真のテロリズムと戦うべき!
汚染物質をバラ撒き、国民を無理心中へと巻き込む政治家、経済団体等をテロ指定、資産凍結するのが筋ではないか!
【だってお金欲しいもん〜】
今朝、辺野古で新基地建設に反対するママの会メンバーに対して、
機動隊員が「お前たちには汚い血が流れている」などと暴言を吐いたそうです。
自分のやっていることを「だってお金欲しいもん〜」「俺の写真を待ち受けにしろ」とも (顔写真)
https://twitter.com/MothersNoWar/status/690357793702940672 >>533
217 : NAME IS NULL2015/08/10(月) 22:59:49.12 ID:???
何かアドバイスお願いします。
WordPressとMySQLをIISサーバーにインストールしたのですが、
いちおう動いているのですが、何となく動きが遅いんです。
どのページを開いても読み込みに2〜5秒掛かります。
これなんかが良い例。
Wordpressはカスタムフィールドを実現するためにDB設計がクソ中のクソで、
RDBMSの良いところを全部殺しちゃってるからとにかく遅い。
普通にSELECTかけたらアプリ側のロジック込みで0.15秒くらいのことが、
Wordpressだと2秒とか5秒とかかかるのが当たり前になってる。 ほんとそれ。
ただ無料だからで飛びつく馬鹿ばかり。 さようなら、MySQL。
こんにちは、MariaDB-10.0.24 MariaDBはスレ違い
共通の話題ならともかく煽る行為はやめれ
MariaDBに関してはこちら
http://echo.2ch.net/test/read.cgi/db/1360677476/ PHPPerなのでインデックスがわからなくて困っています。b-treeなどは木構造になっているらしく
javaなどでサンプルが解説されていました。でも、クラスの変数にleft right があり
そこに新しいオブジェクトをつなげていく、というものです。それは少しはわかるんですが
どうしても、実際のHDDのファイル上ではだいたいどうなっているのかがイメージできません。 phpmyadmin をインストールしようと思っているんだけど
DBは別サーバにあるので、どうすればいいか気になっています
phpmyadminデータベースを作る必要あると思うんだけど
これあらかじめ作るにはどうすればいいの? いらんでしょ
あとlocalhostにある前提になってないからアクセスできるようにしときゃどこでも置けるよ レスポンステーブルに
スレッドID、レスポンスNo、レスポンス先の3つのカラムがあるとして、
レスポンス先に外部キー制約をするにはどうすればいいですか?
自身のスレッドIDと同じかつ、既にあるレスポンスIDに限定したいのですが ALTER でスキーマ変更中、オリジナルのテーブルが消えるって、
どういうシチュエーションなんだろ?w SELECT COUNT(*) FROM table WHERE col = 'hoge'
だとインデックス使うのに
SELECT COUNT(CASE WHEN col = 'hoge' THEN 1 ELSE null END) FROM table
だとインデックス使わないのはなぜなのか
前者を使いたいんだけどなー >>557
いやWhere句がないせいでフルテーブルスキャンなのかな。 絞り込み条件がなくてインデックススキャンをすると思う理由を聞きたい。 >>559-563
SELECT
COUNT(CASE WHEN col = 'hoge1' THEN 1 ELSE null END),
COUNT(CASE WHEN col = 'hoge2' THEN 1 ELSE null END),
COUNT(CASE WHEN col = 'hoge3' THEN 1 ELSE null END),
...
FROM table
みたいに複数一気にカウントしたかったんだよね
というかそもそもインデックスってWHERE限定だったのか・・・
やってることは同じだと思うんだけどなあ >>564
グループ化かUNION ALLでいいだろ。
変なSQL書くな。 >>565
SUGEEEE
ありがとう。勉強になった >>564
使ってくれるよ
最初の例だとフルインデックススキャンになるけど [拡散希望!]
参考になりそうなURL送っておきます
電磁波による拷問と性犯罪
http://denjiha.main.jp/higai/archives/category/%E6%9C%AA%E5%88%86%E9%A1%9E
公共問題市民調査委員会
http://masaru-kunimoto.com/
この方たちは集団訴訟の会を立ち上げてマスコミに記事にしてもらう事を目的に集団訴訟を被害者でしようという試みを持っている方達です
訴訟は50人集めてしようという事なのですが50人で訴訟をすると記事に書けるそうです
記事には原発問題を取り上げてテク犯被害を受ける様になった大沼安史さんらが取り上げて下さるそうです
大沼安史さんがテク犯に遭っているという記事
http://ameblo.jp/hilooooooooooooo/entry-11526674165.html
大沼安史の個人新聞
http://onuma.cocolog-nifty.com/blog1/4/index.html
この方たちは電話相談等も受け付けている様で電話番号を載せている方達は電話かけ放題の契約をしていますのでこちらから電話して本人にかけ直してくれと頼むとかけ直してくれます
音声送信被害等を受けている「電磁波による拷問と性犯罪」の記事の水上さんは年金暮らしなので時間には余裕があるそうで宗教等に付随する集団ストーカー等の被害内容の話も聞いて下さいます
もう一人の電磁波犯罪には遭っていない国本さんという方は電磁波犯罪をしっかり理解されている方で年金暮らしの方なので長電話も大丈夫です
大沼さんはこちらのページからメールを受け付けておられる様です
http://onuma.cocolog-nifty.com/about.html
電話をかけたい場合は人によってはメールで電話番号を訊くと教えてくれると思います
この文章を見られた方は全文コピーをしてできるだけ多くの知り合いの被害者の方等にメールを送るなり被害者ブログに書き込むなりしていただければ大変有難いです
もし大勢の方に送る事が出来なければまだこの文章に触れていない知り合いの被害者に少しでも全文コピーで送っていただけるとその方が次の何人かの方に繋いで頂ける場合があり結果として大勢の方に見て頂く事が出来るはずです
ご協力よろしくお願い致します 👀
Rock54: Caution(BBR-MD5:f70dfdc711a7c6ae6accccb939f27fbf) windowsのc#でdb接続して簡単なselectするだけのプログラム実行するとsqlサーバーなら一瞬なのだがmysqlだとconnectionに数秒かかる場合が有ります。selectは一瞬です。dbは同一pc上で動いているのでネットワークの問題ではないと思います。何が原因でしょうか? それはあるな。
ネットワーク経由で接続している可能性はある。
LANケーブルを抜いて実行したら、接続できなかったりして。 windowsファミリィだろ速くて当たり前(個人的な感想)w >>574
馬鹿だなあ、マイクロソフト製品同士でなら大丈夫なんてことはない。 >>543
wordpressをsqlサーバーで動かすと速くなるかな? WordpressがいけてないのはDBからSELECTする部分ではなく
その内容からHTML生成するphpの作り込みなのかね 一概には言えないけど、読み込んでるものの量が多すぎて、もうちょいなんとかならんかったのかとは誰もが最初に感じる所みたいね
あと試したことないけどhtml生成しないAPIモードが追加されてたはず HTML生成は関係ない。
wordpressのデータはリレーションしてないから、
DBからがばっと取ってきて、PHPでループさせてリレーションさせてる。この処理がクソ重い。
PHPはスクリプト言語なのでかなり遅い部類なので当然クソ重くなる。
だから、SQLサーバー使おうがOracle使おうが全く一緒。MySQLのせいじゃない。
根本的にwordpressの設計がクソなことが原因。
PHPプログラマからみても、wordpressのクソさ加減は尋常ではない。 もし、wordpressの設計を活かせるとすれば、
それはRDBではなく、NoSQLが必要になってくる。 >>582
dbのデータを表示する程度のphpなら、数時間くらい作業したら表示の速い改良版を作れるんじゃないか? >>584
書いてある意味がわからなかった?
リレーションしてねーんだよ。 リレーショナル・データベースのリレーションって何だ?ってことなんだけどさ
たまに、複数のテーブルを特定のキーで関連付けて扱える事がリレーションの意味だと誤解してる人がいるけど、
本当はそうじゃない。
1つのテーブルで、
1つのキーに対して同じ構造での行が決まり1つのまとまりとして取り扱えることがリレーションの意味なんだ。
それこそがRDBの最大のメリットであり、使う理由になる。
例えばこう。崩れると思う。すまんな。
ID|name |mail |zip |address1 |address2 |phone |
------------------------------------------------------------------
1 |jon |jon@test.com|1234567|東京都 | | |
2 |bob | |2345678|北海道 | |01234567890|
3 |mark | |3456789| |アメリカ | |
このような、行単位の纏まりをリレーションと呼ぶ
たとえば、bobについて取り出したかったら、御存知の通り
SELECT * FROM table WHERE ID='2'
得られる結果は想像つくよな。 じゃあwordpressはどうかというと、こう
|meta_id|user_id|meta_key|meta_value|
-------------------------------------
|1 |1 |name |jon |
|2 |1 |mail |jon@test.com|
|3 |1 |zip |1234567 |
|4 |1 |address1|東京都 |
|5 |2 |name |bob |
|6 |2 |zip |2345678 |
|7 |2 |address1|北海道 |
|8 |2 |phone |01234567890|
|9 |3 |name |mark |
|10 |3 |zip |3456789 |
|11 |3 |address2 |アメリカ |
大体こんな感じで、1つのキーに対して20とか30とか、キーごとのバラバラなレコードが登録される。
これをbobについて>>587みたいな結果を取り出したかったら何するかわかるだろ。
こんなのを正規化と呼ぶなら、そいつは本物のバカだ。
wordpressは基本的にこういうDBの扱いをしていて、あらゆる場所でこんなのの整形をループで回してる。
実際にはこれと別のテーブルをキーで関連付けてJOIN相当のことをしょっちゅうやる。
それはもう、wordpressのコード全体にまんべんなく存在しているし、
何よりwordpressの最大の売りである数多のプラグインが、こういうレコードを取り扱うことを前提に作られてる。
だから「数時間くらい作業したら表示の速い改良版を作れるんじゃないか?」とか、
冗談はよしこさんなわけ。
wordpressはマトモな抽象化もされてないフラットなクソ構造のコードだから、
改良したいと思うなら1から作りなおしたほうが早いだろう。 Mysql Workbenchでテーブルを表示した時に、左端に行番号を
0
1
2
3
のように表示できる? うっかりdropしたテーブルを復活させる裏技を教えてくれ >>592
直前にselect * from Table名 で取り出したデータがWorkbenchのresult grid
に残っていたので、それをcsvにexportしてimportでテーブルに読み込んでみたら、
utf8を指定したにもかかわらず、カラムが認識されないのはなぜかしら? データベース作っておいて、バックアップを取ってないとか うっかりdropしてもwindowsのゴミ箱みたいなのに入っているとか、そう言う仕組みがあるdbはないの? トランザクションログ取ってればいつでも任意の時点に戻せる >>598
さっそく調べてみます。ありがとうございました。 MySQLでwhere節で 文字列を < とか > で比較するとき
辞書比較になります っていうのはマニュアルの
どのあたりに書いてありますか? いいねボタンの実装で
いいねしたユーザーidとされた記事idだけのシンプルなテーブル作ろうかと思ってるんですけど、やはり何百万件にもなるとカウントに時間かかるからカウント数のテーブルも用意したほうがいいですかね?
ツイッターとかfacebookとかどうなってるんでしょうかね auto_incrementsでidキーを指定しているのですが、
もしidキーの値が最大値を超えようとする時、
バックアップなどを取ってデータを保持したままintからbigintに変更できたりできるのでしょうか?
できなければ初めからbigintしようかと思うのですが… あえて困難に挑むチャレンジャースピリットやね
てか事前にデータ量見積もったりしないんか? 普通に>>606のようにalterで出来るでしょ。つうか、 unsigned intで4294967295まで取れるのにそれを超える?
と予想されるんなら最初柄bigintにしておけば MySQLは運用中でも好きなだけalterしてくださいって中の人が言ってたから、
オレは闇雲に盲信してま。 消費ペースを見積もって何年で枯渇するか計算してみればいい。
見積もれないなら10年で枯渇させるには1日幾つ消費するか計算すればいい。 twitterのようなDMシステムを構築する場合、
どのような構造にすればよいのでしょうか? >>607
でかい著名サービスでうっかり越えた件というとyoutubeくらい? ご存知でしたらご教示ください
MySQLからODBCドライバで外部DBに接続する事は可能でしょうか? mysqlを最近使い初めてパフォーマンスについて勉強中なのですが腑に落ちない教えてください。
innodbの列数30でキーは主キーのみテーブルに
1レコードをインサートしてはコミットするという処理を20万回ループさせ
インサートの時間とコミットにかかった時間を測ってみました。
最初はコミットがボトルネックだったのに
1万回ぐらいからはループ内でのインサートの遅さが2次関数的に目立ちはじめ
中盤には9割りがたの時間をインサートに費やしてるという状態でした。
が、インデックス更新に時間がかかるとはいえ
ディスクアクセスを伴うコミットよりもインサートはこうも遅くなるものなのでしょうか。
コミット時にはディスクにフラッシュする設定になっており
ログサイズはデフォルトですがバッファ使用率もメモリ使用率も低い状態でした。 長文すみません・・・。
補足ですが何が知りたいかというと
単にインサート1000回ごとにコミットするといったようにすれば速くなるのかと思ったのですが
インサートに時間がかかるなら考え直さないといけないなと悩んでいる次第です。 データベースから最新の50件を取り出して、それを古い順に並べたいんですけど
どうしたらいいでしょうか
SELECT * FROM table_name ORDER BY num DESC LIMIT 50
これで最新の500件を取り出したのですが、このままですと新しい順に
表示されてしまいます
よろしくお願いします select * from
( select * from table_name order by num desc limit 50) t
order by num asc;
とかなんとか クエリーログなんですがエラーが出るようなクエリーを投げた場合に
エラーが出たということとエラー原因もクエリーログに含める方法って無いですか? すいません一昨日ほどからmysql勉強を始めたのですが、わかる方いらしましたら
教えていただきたいです。
2つのテーブルを内部結合するとき
select*from A inner join B on A.a = B.b
でAテーブルのaとBテーブルのbをひも付けたテーブルができるかと思いますが
この時のテーブル名は何になるのでしょうか?
alter table A inner join B on A.a = B.b rename to Cとして新しいテーブル
に書き換えて作業シたいのですがエラーが起きてしまいます・・・ insert into tblC
select * from tblA
〜;
でselectした結果をtblCに入れることは出来るはずだからselectが正しく出来てんのなら
(当然カラムのデータタイプやら順序やらは一致してんだよな。一致していないのなら個別に指定
しなきゃならんけど)出来るでしょ
なんでそこでalterが出てくるのか知らんけど >>614
テーブル自体がでかくなってるからどこに突っ込むか探すのに手間がかかってる予感
インデックスのバッファを増やせばいいのかも >>623
ありがとうごさいます。
AccessからADOで使ってたんですがRecordset.openで全レコードselecされてたのが悪かったみたいです。
普通にinsert intoしたら速くなりました。 インデックスの更新というのは、インデックスの後ろの方に追加するだけで
そのテーブルを検索する時は、インデックスをバイナリサーチで検索した後
見つからなければ後ろの方を順探索で検索する。
インデックスを再編成すれば順番通りに並ぶ、という認識であってるかな? ここで募集するのも筋違いだとおもうけど、SQLの文を書いたのを訂正してほしい・・・
中級者には30分ほどでおわる内容かも。
謝礼は7000で、
多分、チョー簡単。
詳しくは
remorse2015@yahoo.co.jp
日曜までとりあえず募集します。
メールで内容確認だけでも良いです/ >>625
あれ? B-tree ってそういう仕様じゃなかったと思うんだけど… データベース勉強中で、WindowsFormと連携する簡単な帳票ソフトをつくっているのですが、
MySQL側に保存する型として、たとえば男、女の区分を保存する場合、
真偽だけの情報にしておいて、アプリケーション側で判定して性別を表示させる場合と
VARCHARあたりで、「男」「女」の文字列で保存する場合とでパフォーマンスに影響するのでしょうか?
例としては文字数が短いですが、規模が大きくなったときに速度を左右するのでしょうか 心配するような影響は出ないと思うけど
入力が漢字入れられない環境だったり
最終出力が日本語じゃなくて多言語対応する可能性があるから
bool か f m くらいにしといてはfemale male でもいいけど SQLソース上で、男と女の文字を頻繁に書くことになるよ
1や2で分かりにくいと思うなら、MとFでも良いような null許容しないならbool以外でu とか unknownとかにしては とりあえずboolで設計するのだけはやめておけ という話だよ みなさまレスありがとうございます
>>633
よくわかりました
特別boolだけにこだわっているのではなく、たとえばINT型にして
アプリ側で数値にあわせて値を表示させるでも良いのですが、
単純にデータ件数が1万とかになり、カラム数も10とか20になったときに
文字列保存したのと、boolやINT型で保存した場合とでデータ量そのものの違いによって
ネットワークでのやりとりやデータ処理に時間差がでないのかなと思った次第です カラム数なら100、データ件数なら10万を超えるまでは正味大差ないよ
それまでの規模で遅いクエリは絶対にインデックスがおかしいし MySQL糞難しい!!
本読んでも簡単な例文しか書いてねえ!! 難しいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい
うぁああああああああああああああああああああああああああああああああああああ MySQLのboolはただのtinyintだったよね。 ライセンスについてですが、個人でちょこちょこ作っていて、
知人にソフトを依頼され、MySQLとWindowsFormでちまちま作っているんですが、
知人の会社からソフト代金をいただく予定になっており、
これって商用ライセンスがいるのでは?と思いPostgreSQLに変えた方がいいのではと思っているところです
公式みるとStandardでも年間20万を超えてますが、たかだか10万程度のソフトでも
1販売ごとにこのラインセンスがいるってことでしょうか?(ソース公開しないことを前提とすると)
さらに毎年20万払わないとだめってことでしょうか 補足です
サーバ(LinuxにMySQLサーバをインストール)は会社が用意してくれます
依頼されて対価を受け取るのは、サーバに接続してデータのやりとりをする
WindowsFormのクライアントソフトです (connectorは当然のごとく使っています) 納品先の会社からソース開示請求があったら応じることができる、つまりソースコードを渡せるのなら問題ないと思うけど。 逆算式SQL教科書ってのを図書館で借りてきた。これは結構分かりやすい。 ああ、アレね。俺も読んだよ。最後が一気に難しくなるんだけどw レンタルサーバで利用できるデータベースの数は
20個や30個など上限がありますが
データベース数の上限はMySQL側で設定できるのでしょうか? >>657
MySQL側には制限はなく、OS側に設けた制限だと思います twitterのメッセージはどのようなデーブル構造になっているのですか?
1:1とグループのメッセージは同じテーブルに格納されていたりするんですかね win10からlinuxサーバーのmysqlテーブルに日本語書いたら文字化けしてます。
ワークべんちで確認しました。
対策を教えて下さい >>661
テーブルの文字コードとクライアントが接続するときの文字コードが異なってるんじゃないでしょうか?
私は「utf8mb4_unicode_ci」というので同じにしてます http://www.itmedia.co.jp/enterprise/articles/1609/13/news055.html
MySQLに重大な脆弱性見つかる、パッチ存在せずデフォルトで影響
攻撃に利用された場合、root権限で任意のコードを実行され、サーバを制御される可能性が指摘されている。
研究者は7月29日にOracleに報告したほか、影響を受けるPerconaDBやMariaDBなどのベンダーにも通報。
PerconaDBとMariaDBのパッチは8月30日までに公開され、
Oracleは10月18日に公開する定例パッチで対処を予定しているという。 修正パッチのリリース速度みてると
MySQLって使うの躊躇する・・・ テーブルのキーについて質問です。
複数カラムでプライマリーキーをはってクリエイトテーブルした際、
sqlserverなどは自動的にインデックスも作られるんですが、
MySQLもそうなんですか? >10月18日に公開する定例パッチで対処を予定しているという。
遅っ プリマリキーの一意性の保証はインデックスを使って実装されるから、
インデックス自動で作られるよ普通は。どのデータベースも。 インストールされているMySQLが64ビットなのか32ビットなのかの確認ってどうするんですか?
PC自体はwin7(home 64ビット)なんですが。 プログラムから確認するとか実行しないで確認する必要ある?
実行中ならタスクマネージャーでプロセス一覧出して *32 がついてなけりゃ64bit うちで見てみたけど、タスクバー右クリックでタスクマネージャーの起動えらんで
すべてのユーザーのプロセスの表示押して mysqld.exe が *32 ついてなかった >>669
ありがと。いや、次にバージョンアップする際に現在のMySQLが32ビットか64ビットのどっちだったっけと思ったもので。 バイナリ見るんだったら、depends.exe探してきて読ませるとわかるよ
そもそもインストーラーに表示なかったんかな workbenchとかで接続したら表示されなかった? main-table
|id|hoge|foo|array|
array-table
|id|data|
のようなテーブルがあります
このようなテーブルをselectするにはどうするのがいいのでしょうか?
main-tableで検索した後に、プログラムでforを回してarray-tableを取得すると遅くなってしまいます
var data=query("SELECT * FROM main-table WHERE /*条件*/");
foreach(var d in data){
var arr=query("SELECT * FROM array-table WHERE id="+d["array"]);
//処理
}
のような感じです(言語は適当です) 二つのテーブルにあるidがプライマリーキーで
一方にある場合は他方にも必ずあるという前提か
同じid値が複数あったり、あるいはない時もあるという前提か、
その辺を補足して 結合して、一気に全部取得するとか。
select * from main-table a inner join array-table b on a.id = b.id >>676
main-table.idはauto_incrementで、array-table.idはmain-table.idと外部キー制約で繋がっています
長さ0の配列の場合はmain-table.idがarray-table.idにはありません あ、すみません
main-table.arrayはいりません JOINを使うと長さ0の配列の時に取得できません
ResultSet#getArray(int index)で取得したいです select * from `main-table` m left join `array-table` a on m.id=a.id; array への格納はアプリ側でやるといい
テーブル名にマイナス記号使うのはやめてほしい set型とかあったのか
重複する必要ないし、順序も関係ないデータだから使えるかも あ、javaのsetとは違った
enumみたいなのか >>683
すみません
マイナス記号とアンダーバー間違えました |pref_id|user_id| date .|value|
-------------------------------------
|1 |1 |2016/09/20 10:00:00|北海道
|2 |2 |2016/09/20 10:00:00|青森
|3 |1 |2016/09/20 09:00:00|岩手
|4 |3 |2016/09/20 09:00:00|秋田
|5 |1 |2016/09/20 08:00:00|山形
|6 |2 |2016/09/20 10:00:00|福島
|7 |2 |2016/09/20 06:00:00|茨城
|8 |2 |2016/09/20 07:00:00|栃木
|9 |3 |2016/09/20 05:00:00|群馬
dateを降順ソートしたとき,一番上の値を持つレコードだけを吐かせるsql文ってある?
↓一発でこれらだけを取り出したいんだが
|1 |1 |2016/09/20 10:00:00|北海道
|2 |2 |2016/09/20 10:00:00|青森
|6 |2 |2016/09/20 10:00:00|福島 >>688
select * from table where date = (select max(date) from table); 有能PGの方教えてください><;
mysqlをデータソース接続できません!
何か初心者が間違えやすいまたは見落としやすい設定とかありますか? sql単体で扱う人ばかりじゃないでしょう?
システムからdrivermanagerを使わずに接続するのがプロい人はおりませんか sql単体で扱う人ばかりじゃないでしょう?
システムからdrivermanagerを使わずに接続するのがプロい人はおりませんか もはやどう間違うのか想像もつかないから
やってダメだった手順書いてくれないかな MySQLをインストールしてコマンドラインクライアントからアクセスしてデータベースとテーブルを作成。
EclipseからのMySQLにアクセスをスクラップブックからはできてて、↑で作成したテーブルまで見れてるんだけど
データソースからアクセスできないんだよね
・WebContent/META-INF/context.xmlファイルを作成
<?xml version= 普通にDAOからドライブマネージャからはMySQLの値は取れてるんだけどデータソースからは無理でつまってるんだよね
わかる人いるかな それ全部ローカル上だけで完結?
ユーザーも問題ないとなると、、こっちで試してみるしか無いか >>699 そうローカルの話なんだけど、context.xmlファイルを作って、データソースからmysqlに接続したことある? mysql用のodblドライバをインストール
コントロールパネル→管理ツール→odbcデータソースアドミニストレータで確認
で、出来ないなんだったら判らん。 >>701 いや、その気持ちだけで嬉しいよ。
やってみる 近所のヤマダ電機に言ってみた。
iPhone7が余裕で手に入りそうな雰囲気。
御用ライターが、一生懸命盛り上げているが、
この新機種の売れ行きはさんざんなものになりそうだ
https://twitter.com/onodekita/status/778937003840671744 そうなの?
近所のドコモショップは全製品予約扱いだったな 質問失礼いたします。
activeperlのppmからDBIやDBD-mySQLをインストールしようとしたのですが、見つかりませんでした。
最初はactiveperl5.8でppmを調べたらどちらもなく、次に最新の5.24で探したら
DBIのみありました。
どちらも無料のものです。
有料版でないと、DBD-mySQLは無いのでしょうか。ご教示願います。 DATETIME型を持つレコードを、一日ごとに検索するにはどうしたら良いですか?
やりたいことは、PHPからSELECTを10回呼び出して
1回目は今日(2016/10/02)の日付をもつのデータ取得
2回目は(2016/10/01)の日付をもつのデータ取得
3回目は(2016/09/30)の日付をもつのデータ取得
……
と言った感じで月をまたぐこともあり
スマートな取得のしかたを教えて下さい
あとDBって縦がカラム、横一列がレコードと呼ぶけど、レコード内のある一個の要素はなんて名称? >>707
スレ違い
GROUP BY DATE_FORMAT(カラム名, '%Y/%m/%d') とかでやればいいんでないの? >>707
>レコード内のある一個の要素
フィールド まあSQL内で日付の足し算できるからそれで
普通は一回でやろうとするもんだけどね from HOGE join PIYO using (CHINKO)
from HOGE join PIYO where (HOGE.CHINKO=PIYO.CHINKO)
using の方が速そうに思えるけど、どっちが速いの? HOKE.CHINKOをさしおいて速さを競うとか素人かw >>712
どうでもいいけどそのDB名やテーブル名をどうにかしろまず >>712
on じゃねえの?
usingは同じ名前の時限定だけど、速さより見やすさで選べ >>716
usingとwhereの違いの話な
onとusingはエンジン内では等価だから変わらん 今までレスした人で本当はusing知らなかったって人挙手 mysql限定時はusing使うけど、
汎用ライブラリ書くことが多かったので基本、onにしてる。めんどくさいけど。 質問なんかそっちのけ!この秋はusingコーデで皆の視線を独り占め! Mysql限定にしなくても、普通に他のDBMSでもUSING使えるだろ・・
oracleやらpostgresqlやら・・ >>723
なるほど、SQL辞典で調べ直したら、
使えないのはSQL Server、DB2、Accessとかどうでもいいのばっかりだった。
ちょっと誤解してたみたい。ありがとう、>>723 LIKE検索でスペースを無視したいときはどうしたらいいの?
たとえば %hoge で検索するとき
"123hoge " はヒットしてほしいけど
"456hogew" はヒットしてほしくない、など >>726
何で末尾の空白を事前に除去してからdbに書き込まないの? where hage like ‘%hoge ‘ or hage like ‘%hoge’ MySQLに置換関数あるなら、スペースを空文字列で置き換えてLike
where replace(column, ' ', '') like '%hoge'
とかできんのかな? where rtrim(hage) like '%hoge' MySQL workbench以外では知らない
以前はNavicat Liteって無償で使えるやつがあったけど今はそれは終わってる
(それより前にダウンロードしたやつは保存してるけど) adminツールの類いなら、データベースの表なりビューのスナップショットから表のカラム名
含めた中身をcsv形式でエクスポートできるじゃん。
なんで、SQLでやろうとするのか理解できないね。 とんちんかんなやり取りってこういうのを言うんだよね 来月あたりPCを買い換えようと思いついでにXAMPP入れようかなとサイト見たら
MariaDBになってんのね
どないしよw MAMP ってやつがMySQL使ってるからこっちの方ということで 結論出てるから良いかもだけど、過去のバージョンもDL出来たはず XAMPPとかはまとめて手軽にできるようになってるだけで
個別にやってもいいわけだし myqsl にrootで入り、
select host,user,password from mysql.user;
としたんですが、passwordの項目が暗号化?されていて判らんwのですけど、これって設定した
パスワードが何かって判る方法あります?
version 5.6.19です >>745
rootのパスワードと同じじゃあないのか? >>747
あ〜、知りたかったのはrootのじゃなく、他のユーザーのです。言葉足らずでした。
んで、オマケに自分で作ったユーザーなのにアレっ?ていう事で^^;
暗号化された文字列を元に戻す関数はないっていう事みたいですし、とりあえず、set password for 〜で
今回は設定し直しました 無っちゃ過疎ってるな。
ところでCSE ってソフト10年位前まで使っていたけど
最近は、 HeidiSQL になってるの? 質問スレが機能してなさそうなのでこっちで聞くね
Phpmyadmin使ってる人いる? カラム名というか列名の正式名称は「カラム名」でいいの?
それとも別の名前がついてる? 「カラムの名前」とか「列の名前」とか何とでも言えそう・・
さすがにカラムタイトルはあんまないと思うけど さくらインターネットでMySQLの接続待機時間を
8時間→1分に変更したいのですが、どうすればいいですか?
さくらのスタンダードプランでmy.cnf の編集とかできますか? というわけで、ここで返事待つよりさくらのサポセンに電話なりメールなりしようw 案の定ネタか
ttp://raptor.2ch.net/test/read.cgi/livejupiter/1461796881/ 変な質問ですけど、orderする時って、
id(pk)とdateカラムとどっちが速いとかあるんですかね?
SQL文のわかりやすさで、「order by date desc」とかしてますけど、
idの方が数字だけなんで速いような気がしています。 普通はインデックスとかはるから気にしなくていいと思う。
プライマリーキーなら通常で自動でインデックスがはられるだろうし。
もちろん、普通に比較する場合は,idが整数値ならidが速いかもしれんが、
https://dev.mysql.com/doc/internals/en/date-and-time-data-type-representation.html
でも、これみると結局、日付型も内部的には単なる数値の比較で済むようになってるし。 dateにインデックスはられてなきゃ、idの方が速いと思うけど。
もちろん、データ件数が少なかったらあんま差でなく
なるかもしれん。 >>766-767
レスありがとうございます。やっぱりidの方が速いですよね。
でも、気にするほどではないとの事ですので、date型も使います。 id| datetime
--+-----------------
1 | 2016-12-11 17:00
2 | 2016-12-11 17:01
1 | 2016-12-11 17:03
3 | 2016-12-11 17:04
2 | 2016-12-11 17:06
3 | 2016-12-11 17:06
1 | 2016-12-11 17:07
2 | 2016-12-11 17:07
3 | 2016-12-11 17:07
1 | 2016-12-11 17:11
3 | 2016-12-11 17:12
このようなt_recordテーブルから下記のように
id| datetime
--+-----------------
1 | 2016-12-11 17:00
2 | 2016-12-11 17:01
3 | 2016-12-11 17:04
1 | 2016-12-11 17:07
2 | 2016-12-11 17:07
3 | 2016-12-11 17:12
id毎に前後5分以内のレコードを省く方法は無いでしょうか? id1 id2 id3を三つのテーブルに分けて
5分以上の時だけ表示して
3つのテーブルをunion allして
order by datetime,idかな 考えて見たけれど、
これって先頭から順に処理していって、
条件に合わないレコードを捨てて行かないと無理なのかな? >>769
この前後5分がわからん。
基準は何よ?? 最低限のソート以外はphpあたりにやらせるのも手だ 相関サブクエリで先行するレコードで5分以内のものがあれば除外。でいいんじゃない? >>774
12:00のレコードを読んだ場合に同一idの12:00〜12:05のレコードを読まないようにしたいんです
前後5分というより読んだレコード+5分でした、すみません。 >>779
id1の場合は
どのレコードを読みたいの?
例だと四つあるけど? 自分より古くて5分以内に先行するレコードがない最新の時間を基準に5分区切りでチェックすれば求まりそうだが、SQLでやりたくねーな。 id1の場合 17:00から5分以内の17:03を除外したいんじゃないか
次の17:07から5分以内の17:11が消えてるし
sqlだけでやるのはきつい気がする >>780
>>782 さんの解釈通りです
やっぱりsqlじゃかなり無理がありますよね おお、動きますね。ありがとうございます
参考にさせていただきます id|name|hobby
1|AAA|野球
2|AAA|サッカー
3|BBB|サッカー
4|CCC|料理
5|CCC|買い物
こういうテーブルがあるとして、
「AAAとBBBの共通するhobbyを表示したい」と言ったSQLを書きたいと思います。
WHERE name IN('AAA', 'BBB')
としてみたのですが、これだとID・1,2,3がヒットしてしまいます。
どのようなSQL文にすれば共通の値を持つカラムをヒットさせられるのでしょうか? select a.hobby from
(select hobby from table where name='AAA') a,
(select hobby from table where name='BBB') b
where a.hobby=b.hobby; >>788
なんで答えをwhereに書いてんだよw 6カラムなテーブルから数十件取得する際に、
ある1つのカラムだけを除いて(つまり5カラム)だけ必要な場合
select *
select ...5カラム
この場合あえて全カラム取得(*)にして速度が向上した、などのデータはありますか?
そういうのがあれば速度測定してみようかと思うのですが… >>791
データはとってないけど、体感的には10万レコードくらいから差が出てた気はする mysqlについてはド素人なんですが質問さしてください
database=xxxのバイナリログを出力して(binlog_do_db=xxx)、そのログファイルを
物理的に離れた場所にあるmysqlサーバのdatabase=yyyに適用する事は出来ないんでしょうか?
無論、テーブル設計等は完全に一致した状態です
mysqlbinlogでバイナリログファイルの中を表示させるとdb名まで含めて情報が入ってる
ように見えるので、databaseの名前は同じじゃないとだめなんでしょうか? ↑
すみません、オフラインの話です
オンラインレプリケーションではありません(database=yyyを収容してる
mysqlサーバがネットにつながってないので) MySQLのDOUBLEは
DOUBLE
DOUBLE(M,D)
どちらでも良いそうですが、前者の場合にはMとDはどんな値を指定した事になりますか? ユーザ名@localhostのアットマーク以降ってなんなん?
ホストごとに権限が必要ってこと? 必要って言うんじゃなく、アクセスしてきたアドレス毎に設定できるということ
必要なければワイルドカードでまとめて設定すれば良い やってみて痛い目にあえば分かるよ、書き込めねーよ、あれ? 初心者です。
コマンド入力時点でコピペを含めて日本語の入力を受け付けないんですが原因がわかる方いますか?
日本語を入力してenterを押した時点で入力した日本語が消えてしまいます。
バージョンは5.6.35です。 すっげーー
いつのまに、日本語コマンドができたんだ 動かしている環境を書かないと回答しにくいだろうな
現在の文字コードの設定を調べてみて
show variables like 'character_set%'; >>820
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_set_dir /usr/share/mysql56/charactersets/
一応文字コードの設定はしてるつもりです。
でも文字コードが違ったら文字化けするんじゃないですかね。
入力自体を受け付けないのは何か別の設定ミスがあるんでしょうか。
ちなみにAWSのEC2上で動かしてます。
OSはAmazon Linux AMIっていうRed Hat系のやつです。独自のリポジトリなのでMySQL自体が日本語に対応してないっていうこともあるんでしょうか? エディタでSQL文を作成し
source コマンドで読ませてみたらどうなりますか?
もしかしてシェルが日本語対応してないと言うことはないかな? >>823
sourceでinsertしてみたところ出来ました。
直接入力で出来ないのはどういうことでしょうか? シェルのモードでしょ、よくある
ターミナルの設定見直してみては >>825
.bashrcや.bash_profileのことでしょうか?それともターミナルの設定でしょうか?
sshでログインした状態でbashに対しては日本語入力ができます。
sourceコマンドに渡したファイルもEC2上で作成しました。
しかしMySQLを起動すると日本語は入力できなくなります。
具体的にどこを見直せばいいでしょうか? >>826
mysqlを実行したときのlocaleは?
locale問題ないのに入らないならクライアント作り直しては >829
やってみました
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=ja_JP.UTF-8 >>831
こいつならなんでも言ったままにやってくれそうだろ
チャンスと考えろよ それは良くないよね
rm -r *
やって報告して。 相手は困っていると言うのに、
お前らときたら傷口をツンツンするだけかよ 例えば、
LANG=C mysql -p 〜なんちゃら
で起動してマルチバイト文字が入らないのと同じように
LANG=ja_JP.UTF-8 mysql 〜
でも同じならmysqlクライアントが対応してないかと
which mysql でpath確認してldd /path/to/mysql でlibreadline入ってるかみるとか、、
readlineが対応してないんかなあ MYSQLでテーブルを作成しました。
HOGE_TABLE.EMP_ID → INT(11)
で定義しています。デフォルト値は NULL になっており
phpMyAdminからデータベースを確認すると NULL となっています。
しかしここで疑問があります。
SQL で WHERE EMP_ID = NULL で検索しても
検索結果に何もヒットしません。
値がNULLの行を抽出する際の指定方法が間違っているのでしょうか? >EMP_ID = NULL
EMP_ID is NULL >>841
oh i've forgot.
thanks どーでもいいけどぽまいらいつも真面目に全角で打ってるの? 前にSQLソース書き込んだ時2chの中継クラウドでエラーとしてはじかれたことがある
書き込み内容がインジェクションと判定されたみたい
その時に、全角で書き込むと良いと教えてもらった Wordpressについての質問です。
@ 運用中のデータベースAから新規データベースBにデータをインポートしました
A データベースAを運用(カスタムフィールドの入力)しつつ、データベースBで開発をしました
B @の時点からのAの運用分の差分だけをデータベースBに移行するにはどうすればいいでしょうか?
データベースAのwp_postmetaの共通部分移行だけをエクスポートして、Bにインポートしたいのですが、
meta_idやpost_idが重複してしまいそうで怖いです…。 >>846
Aの内容とBのそれを同期させたいなら、
Bのテーブルを削除して、Aをインポートするのが最も簡単だと思うけど
レコードの有無以外に内容が変わってたりする事もあるでしょう? SQl ServerからのMySQLに乗り換え中です。
フィールドの定義で
INT(3)
と定義してもIntegerの最大値まで登録できます。
SQl ServerではINT だけの定義だったので戸惑ってます。
INT(3) の桁数指定はどんな場面で効果を発揮するんでしょうか? チェックボックスの値を保存する場合、
1対多のテーブルを利用するのはよくあると思います。
category:id(pk)、name
category_check:id(pk)、category_id
この場合、更新(update)ってどうするのがスマートで
DBに負担がかからないでしょうか?
更新処理が必要な時に、一旦delete allしてそれからinsertでしょうか?
それともプログラム側でチェック済み(check_idが保存されているレコード)か
そうでないかを判定して、保存されていない場合はinsertにし、
チェックを外す場合はdeleteみたいな処理を書くのでしょうか? >>848
create table Tint (
f2 int(2),f4 int(4),f02 int(2) zerofill, f04 int(4) zerofill);
insert into Tint values (1,2,3,4), (11,22,33,44);
select * from Tint; procedureで参照するテーブルを動的に変えたいですが、調べたところMySQLの場合の
定番はカーソル定義ではVIEWを指定して
declare cursor cur is SELECT * FROM V_TMP
その後にCREATE VIEWでV_TMIEWを動的に作成するという方法でした
確かにこの方法でカーソルを使って目的の処理は出来たんですが、CREATE VIEWの所で
暗黙のコミットが発生してしまってこのプロシージャをトランザクションの中で使えません
暗黙のコミットを発生させずにカーソルのテーブル名を動的に指定する方法はありますでしょうか? 使いたいテーブルの数だけprocedure作る
procedure内でcase分で処理対象を切り替える
誰でも思いつきそうな内容ですまない https://goo.gl/q9Ml0S
これは嘘でしょ?本当だったら落ち込むわ。。 【同一のIDが複数存在するテーブル】 table
---------------------------------
ID |TITLE |TAG
---------------------------------
1 | 花 |2
---------------------------------
1 | 花 |5
---------------------------------
1 | 花 |7
---------------------------------
2 | 虫 |2
---------------------------------
2 | 虫 |5
---------------------------------
3 | 魚 |2
---------------------------------
TAGの値が2と5のIDを取得したい
こんな具合に・・・
---------------------------------
ID |TITLE |TAG_1 |TAG_2
---------------------------------
1 | 花 |2 |5
---------------------------------
2 | 虫 |2 |5
---------------------------------
joinを使うのかな?
初級問題だと思いますが、お願いします >>854
花と虫が選択され、魚が選択されない条件って何だろう >>856
2と5の両方のIDを有するTITLEを取得してるからだろ TAG値が検索条件ならカラムに入れる必要ないじゃん 質問者の依頼内容がそれで良いとして、泥縄的SQLで
select ID2 as ID, TITLE, TAG_1, TAG_2
from
(select ID as ID2,TITLE,TAG as TAG_1 from multi_id where TAG=2) t1,
(select ID as ID5,TAG as TAG_2 from multi_id where TAG=5) t2
where
ID2 = ID5; >>859
おお、来てた。ありがとう御座います
>>858
皆様に判りやすく理解してもらうためにと、検索結果の確認のためになんです まあほんとならID,TITLEのテーブルとID,TAGのテーブルの2つにするよね パスに日本語含む外部ファイルは読み込めないのでしょうか? もう2ちゃんの初心者質問スレとかで普通に使われてる言葉だけどね
質問スレとかで毎回同じような質問に疲れて出た言葉なんかな 知恵遅れみたいに質問には答えるのが当たり前という風潮を許すからだろ mysqlで、ストアドを、書くときにテストも書きたいんですが、
そういう方法ってありますでしょうか?
何かしらの言語を挟むしかない? 私はストアード作成するsqlに、簡単なテストデータを用意しているけど
そういうことじゃなくて? >>872
テストもストアドで書けば、別の言語は不要だね なんというかプログラミング言語にはコード補完とかあるけども、mysqlのdbにつなげに行ってコード補完支援してくれる仕組みってないですか?
vscのmssqlはあるくさいんだけども すいません。何が聞きたいというと
mysqlの開発環境どうしてますかってことなんです。 テキストエディタがあれば十分だと思う
シェルが使えない環境ならWebから操作するけど >>879
ありがとうございます。一応それは使ってるんですが、
lintみたく書いてる端から間違いを指摘してくれないんですよね。 >>881
すんません。それにしてもあんまり開発環境としては充実しているとはいい難い感じですね。
基本みんなORMとか使ってphpとかgoとか使って直接操作してる感じなんですかね。
こちらとしてはロジックをストアドに盛り込んで
ビジネスロジックもdb側に集めたいと目論んでたんですが
あんまり開発効率は良くない感じですかね、、、、
ちなみにFunctionでselctの結果をまるごと返り値にする。みたいなことはできないですかね?決まりきったパラメータに応じて決まった形のrowを返すみたいなことができるとキレイにビジネスロジックをdb側に集中できそうだと思ったんですが >>882
一般論としては、「できます」という回答しか出ないと思うけど
システム開発と密接に結びつくわけだから、楽な方法というのはないと思う MSと単純に比較するなよ。MSにいくら金払ってるんだ。 >>883
まじですか。できるんですねありがとうございます。 mysql 5.7で最終的な結果をjsonにして受け取りたいんです。
select name from some_table;
で
'test'
'swift'
'oracle'
'mysql'
'golang'
と帰ってきた場合にこれをjsonとして
['test’,'swift’,’oracle’,’mysql’,’golang'] とまとめたいんですが
JSON_MERGEとかJSON_ARRAYを駆使してどうやればいいんでしょうか? mysqldumpについてちょっと教えてください。version 5.6.20(win)
現在、週一でmysqldumpでバックアップを取っています(個人使用なんで頻度的には
これで十分なんですが)
個別に取ろうと思って以下のコマンドを試したら各テーブルの構造のみでレコードが
全然出来ていないorz
>mysqldump database -u root -pxxxxx --where 'arekore=9999' > 9999.sql
xxxxxはrootのパスワード
どうすればよろしんでしょ
※レコードが存在していることは確認しています where 'arekore=9999'
このレコードがなかったのではないか? 質問です
新しいデータベースを作って、
grant all privileges on db_name.* to user_name@localhost identified by 'password';
flush privileges;
とやったら、元々ある別のアプリケーションがMySQL繋がらないエラーになった。調査の結果user_nameを変えたら問題なくなった。
DBユーザー名って各アプリでユニークじゃないとダメなの? 1. user_name@%が存在する
2. パスワードが変わった
のどちらかじゃないかと思うんだが、エスパー諸氏の見解を求む
まあ回答は No でいいか MyISAMとInnoDBだと通常はInnoDBの方がINSERTは速いと思っていたんですが、
状況や環境によってはそうとも限らないと言うこともあるんでしょうか?
BINLOGを有効にする前はMyISAMのほうがわずかに速かったんですが、BINLOGを
有効にするとInnoDBは若干パフォーマンスが低下、MyISAMは倍の時間がかかる
ようになって、結果MyISAMのほうがINSERTが遅い状況になっています
ベンチマークプログラムはC#+.NET/Connectorで書いていて、INSERTは
2000行BULK挿入x10000回の2千万行挿入です。サーバはWindowsSvr2016で
MySQL5.7を使っています。メモリは512GB積んでいてMySQLにふんだんにメモリを
割り当てていますがHDDは逆に糞ほど遅いです。
BINLOGを有効にしてMyISAMがこれだけ劣化したのはDBファイルとBINLOGファイルの
更新がInnoDBほど整然と行われていないため?と推測しています >>892
自分の環境で起きてることを
他人に聞いてどうしたい? >>893
馬鹿が無理してしゃしゃり出てこんでいいとおもうよ
口閉じて黙ってれば馬鹿だとばれずに済む >>894
イヤ本当にそう思う
894とかひどいな というか、MyISAM使うならトランザクションは使えないけどそれでいいのか? 892です
一般的にはMyISAMのほうがパフォーマンスが上と言われていると言う認識ですが
なぜ逆の結果になったのか原因が知りたいのです
こういうと >893 は「原因を知ってどうするの?」とか言われるのかもしれませんが
>>896
無論それは折り込み済みです
失敗した場合はtruncate出来る状況なので int型をtinyintに変えた場合
型のサイズの差の3バイト x レコード数分のサイズが節約できると考えていいでしょうか? MySQLのLWTO(LockWaitTimeout)について質問さしてください
Session-1でViewをCreateしたあとに、Session-2で START TRANSACTIONした後で
先ほどのViewを参照して別のテーブルを更新しました
そのままCOMMITもROLLBACKもせずにSession-1側でViewをCREATE OR REPLACEしようと
するとLWTOになってしまいます
Session-2側でViewを参照しながら別のテーブルへのINSERTが完了した時点でたとえ
COMMITしていなくてもViewの状態を変えても何の問題もない気がするんですが、
この場合のLWTOは避けられないんでしょうか? REPEATABLE READならそうなんじゃない? mysqlダウンロードしたばかりの初心者です
mysqlならmacで使えるとのことでインストール完了しターミナルを出すところまでいきました
↓ここを参考にしました
http://news.mynavi.jp/series/mysql/002/
ですがmysqlに入ることができずエラーが出てしまいます
末尾-p削除もしてみました
------------
次にターミナルを開いて「 cd /」と打ち込み、ルートディレクトリに移動します。
MySQL実行ファイルのある場所で、MySQLサーバに入ります。
著者は、「/usr/local/mysql/bin/mysql -u root -p」と打ち込んだ後、
パスワードを入力してサーバに入りましたが、
エラーが出る場合は末尾の「-p」をとってみてください
-----------
他に方法があれば教えていただけないでしょうか?
初心者ゆえの変な質問かもしれませんが、
ターミナル画面というのはdeleteとか普通の編集ができないのですね・・
書き込み反映していないようで再度試します
もしダブったらすみません 2ちゃんなんだか調子悪いのでしょうか、今日 >>902
>ですがmysqlに入ることができずエラーが出てしまいます
そのエラー表示内容で、大体解決出来ると思うから、
その内容を詳細に書いてください >>903
ありがとうございます
こちらですが、途中からは同じ繰り返しになっています
名前の部分は大文字XXXXで伏字としています
よろしくお願い致します
Last login: Sun May 7 20:09:02 on console
XXXX-no-Air:~ XXXX$ cd /
XXXX-no-Air:/ XXXX$ /usr/local/mysql/bin/mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
XXXX-no-Air:/ XXXX$
XXXX-no-Air:/ XXXX$ /usr/local/mysql/bin/mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
XXXX-no-Air:/ XXXX$
XXXX-no-Air:/ XXXX$ /usr/local/mysql/bin/mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
XXXX-no-Air:/ XXXX$ $ /usr/local/mysql/bin/mysql -u username -p
-bash: $: command not found
XXXX-no-Air:/ XXXX$ >>972です
その後もエラーコード検索して試してますがうまくいかないです・・ インストール時にパスワード設定しなかった?
MySQL以前にターミナル覚えないと今後厳しそうだなあ
とりあえず、
/usr/local/mysql/bin/mysql -u root password 'password'
ってやって /usr/local/mysql/bin/mysql -u root -p
で設定したやつ入れて
入ったら UPDATE 文でパスワード変更してみて
(どうもパス変更のSQL書くと蹴られる) インストール途中でrootの初期パスワードをこのように設定したよという画面出てきますが
どうもちゃんと設定が出来てない様です。めんどくさいんですが、パスワードリセットをしないといけないみたい 試しに、MacにMySQLインストールしてみたけど
temporary password って表示されるじゃんか
これコピーしておかなかったのか
>>907 は mysqladmin の間違いだったけど
もともとパスわかってないと無理そうだなあ
インストールし直しでパスワード再表示されたらメモっとくのが間違いなさそう >>907
902です
返信ありがとうございます!!
ターミナルっていうのも今回初めて知りググって出しました
参考にしたサイトでとりあえずログインせずダウンロードを選択、とあったためパスワード設定しないでダウンロードをしているのです…
今回はアンインストール→パスワード設定ありの再度インストールした方が良さそうですよね これからアンインストールからの再インストール試します! 始めちゃったかな?
上手く行かなかったら、また書き込んでね あ、すみません
今システム環境設定からアイコンを捨てたら再表示できず
やっぱり再インストールかな・・と試しているところです まあ本体じゃなくてインスタンスの再構築でいけると思うけど、
まあ大した手間じゃないし再インストールでいいかも
でも設定のアイコン消したくらいじゃ消したことにならんと思う >>910
それがその仮パスワードの画面が出てこなかったのです・・ 902です
ORACLEのユーザー登録してパスワード設定しましたが、違いましたか・・・? はぁうまくいきません・・
mysql→mysqladminと訂正し入力
/usr/local/mysqladmin/bin/mysql -u root password 'password'
/usr/local/mysql/bin/mysql -u root -p
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
となってしまいます
結局初回にパスワードを問われなかったことで設定できていなかったのでしょうか
ダウンロードはしてあったので再度インストールをしました
temporary passwordが現れなかったのが謎・・・
どこからやり直したらいいのでしょう
インストールさえできないなんてヘタレすぎる このページを参考にしてみて
http://qiita.com/sotayamashita/items/b784459356686641dabe
違う点だけ書きます
SQL文を全角で書かないと、インジェクション扱いされてしまうので、全角にしてますが読み替えてください。
「mysqlを止める」 はシステム環境設定のMySQLを使って止める
MySQLの権限システムを使用しないで起動する
>$ mysqld_safe −−skip−grant−tables −−skip−networking
多分管理者権限がないと起動出来ないはずなので、
$ sudo mysqld_safe −−skip−grant−tables −−skip−networking
と入力する。パスワード聞かれると思うので、Macにログインする際のパスワードを入れる
途中にある、
>UPDATE user SET Password=PASSWORD(’PASSWORD’) WHERE User=’root’;
>update user set authentication_string=password(’PASSWORD’) where user=’root’
この辺は間違いだと思う。以下の様にした方が良いと思う
use mysql;
truncate table user;
flush privileges;
grant all privileges on *.* to root@localhost identified by ’パスワード’ with grant option;
flush privileges;
'パスワード' の中身は自分で決めてください。空文字にすればパスワード無しとなります。
作業が終わったら、システム環境設定のMySQLを使って一度停止し、起動し直す事を忘れずに 小文字に書き換えて試したのですが進みませんでした
せっかく教えていただいたのにすみません
今日はとりあえず諦めて後日再チャレンジします >>923
どの辺で止まりました?
表示内容で対処方法は分かると思います。
ガンバレ! >>920
ちょっと教えて
>ORACLEのユーザー登録してパスワード設定しましたが、違いましたか・・・?
これってOracleのWeb上でのユーザー登録とそのパスワードでしょ?mysqlのパスワードと関係あんの? >>924
ありがとうございます・・涙
途中から頭痛しててどこか書き間違えとか凡ミスしてると思うのです
後日きちんと仕切り直して挑みます
>>925
今となっては多分別物だと思うのですが・・
初回のインストール時にtemp pwの表示が現れなかった(謎)ことから
最初からやり直そうという目論見でダウンロードをし直しました
その際、ダウンロード開始前にユーザー登録・ログイン・ダウンロードのみの3択となり
ユーザー登録をしました
そこでpwを入力することでダウンロード画面に遷移しました
今となってはpw不明を解決する方法しかなくなってしまったのですよね
参考にしたマイナビにtemp pwのことが書いていないことを恨みます・・
今日はちょっと体調悪くこれにて
また後日進展あり次第参りますのでその時はよろしくお願いします >>924
ありがとうございます・・涙
途中から頭痛しててどこか書き間違えとか凡ミスしてると思うのです
後日きちんと仕切り直して挑みます
>>925
今となっては多分別物だと思うのですが・・
初回のインストール時にtemp pwの表示が現れなかった(謎)ことから
最初からやり直そうという目論見でダウンロードをし直しました
その際、ダウンロード開始前にユーザー登録・ログイン・ダウンロードのみの3択となり
ユーザー登録をしました
そこでpwを入力することでダウンロード画面に遷移しました
今となってはpw不明を解決する方法しかなくなってしまったのですよね
参考にしたマイナビにtemp pwのことが書いていないことを恨みます・・
今日はちょっと体調悪くこれにて
また後日進展あり次第参りますのでその時はよろしくお願いします すんなりとインストール出来ると確かに楽ちんなんですけど
色々トラブルあったりすると、対処方法調べたり、
あれこれ弄ることになって学ぶ事も多いです。
ガンバですw >>929
はい、勉強になっとりますww
ありがとです!!! 全然関係ないんですけど
頭痛くなった原因、2ちゃんのエロ広告な気がします()
いくらまともな広告クリックしても消えてくれないーww >>931
専用ブラウザ使ってますか?
公式には、金を払うと広告は消せます
非公式には、○○すると・・・w >>932
早速googling
導入します
もちろん後者で… >>927
データベースが残ってるからだよ
再インストールでもそれが残ってたらそれ使うんじゃないかな
パスワードはそこに入ってるからね
まるごと消せばいいんだけどちゃんとアンインストールできてなかったんでしょう
インスタンス再構築やってみ、実際のとこ複数運用もできる作りになってるんだし とりあえずこれみて
Remove MySQL completely from Mac OSX
https://gist.github.com/vitorbritto/0555879fe4414d18569d
まー
sudo rm -rf /usr/local/mysql*
で /usr/local/mysql/data/ が消せれば再インストール有効な気もするが Macにmysql入れるのってそんなに難しいのか?オラはwin10だがmysqlは何度もいれたがインストーラー実行すれば全自動で入るよね。 別に簡単だよ、実際インストールそのものは一発で終えてるようだし
元の質問者はMacの扱いも慣れてないようなので -tbl_name-
co1 co2
ABC 100
100 null
100 ABC
というテーブルがあります。
select ナンチャラ from tbl_name
とした時に、
co1 co2 col3
ABC 100 100
100 null 100
100 ABC ABC
とできる方法はありませんでしょうか。
・col3は元のテーブルにはなく、select文を打ったときに、仮想的に?作る列です。
・co1列には必ず値が入っていますが、co2列は、nullだったり値が入っていたりします。
・co3列は
「co2列に値が入っていたら、col3は、co2の値を入れる」
「co2列がnullならば、col3はco1の値を入れる」
という条件です。
・Excel関数なら=IF(B1<>"",B1,A1)と表現するものです。
・mysqlです。
宜しくお願いします。 select col1,col2,coalesce(val2,vai1) as col3 from tbl_name; sel ect
col1,col2,coal esce(col2,col1) as col3
fr om tbl_name;
全角スペースが所々入ってますが、消してください
インジェクション判定を回避するためです >>940
>>941
ありがとううとございます。
なーんで、全角使ってんだろうって思ったら
そういう事なんですね。
ありがとうございます。お陰で解決いたしました。 空のアイサムテーブルにデータを入れた後にデータファイル(MYDとMYIとFRM)を
コピーしてバックアップしたいんですが、安全なコピー方法のような者はありますか?
それとも更新完了直後にデータファイルをコピーしても大丈夫でしょうか? 列方向にある条件で比較して、その行だけ出すって方法ありますか?
例えば
購入日 顧客ID 購入品
2017/06/18 ABC123 石鹸
2017/05/01 ABC123 シャンプー
2017/01/05 ABC123 フェイスタオル
の様な表があったとして、
where 句で、顧客IDを引っ掛けて、「この人が直近でお店に来たのはいつだろうか」
というのを調べたい場合です。 >>944
来た日は、わからん。
購入日で代用しろ max で最大値出してその条件をサブクエリにして検索か
group byで顧客IDまとめてから最大の日付をとるか この辺、OracleならRank関数とか便利な機能があるんだがな 表示のモードっていうんですか?それについて質問させてください。
初心者なので、言葉が間違ってたらごめんなさい。pager less -Sと打つと横に長い表示も折り返さないで出るんですけど、
表示の一部をコピペしたい場合とか不便です。(Q押すと消えちゃうので)折り返しないんだけど、
一括でダーって出す様な感じの設定って無いんですか?折り返ししないでpager catの折り返さないバージョンみたいなやつです。 >>944
「ある[顧客ID]を持つレコードの集まりの内、最大の[購入日]を持つレコード上の[購入品]を調べる」
という設問ではなくて
「[お店に来た日]を調べる」設問なら、こーいうテーブルが必要だとおもうぞ?
ズレてるかもしれんが。
購入日 お店に来た日 顧客ID 購入品
2017/06/18 2017/06/18 ABC123 石鹸
2017/05/01 2017/05/01 ABC123 シャンプー
2017/01/05 2017/01/05 ABC123 フェイスタオル
NULL 2017/06/20 ABC123 NULL MYSQLって再帰select、updateみたいなのってできます?例えば、
あるupdate文を打って、1行目の3列目が更新された・・・10行目の8列目が更新された。
10行目の8列目の更新をフラグに1行目の7列目が更新されるってな感じのモノです。 指定の文字列が含まれるものを除外したい時は
NOT LIKE '%文字列%'
とすると思いますが、文字列が複数ある時はどうするのが一番いいですか? インストール先のドライブをc以外にしたいのですが最新版だとできないのでしょうか? ドライブの選択が出来ないんかいな
windows用の最新版ってzip Verは無いの?あればそれを好きなドライブにいれてサービスの登録すれば? >>959
分からないから聞いてるんです
正規表現でやることにしましたが、ベストかどうかは分かりません お前らに難癖つけられないやり方だろうな普通はw
そんなもんないだろうけどw >>958がどこかに書いたかもわからないことをどうやって難癖つけるのですか? 正規表現で書く方が難しいと思うなあ
検索する複数キーワードの順序は関係なさそうだし
お互いに重なっている場合も想定しないといけないし NOT LIKE '%文字列%'
これやった段階で、遅いのは確定だし・・・・
複数あってもどうしようも・・・・・
なにをしたいんだろーーー >>968
>なにをしたいんだろーーー
お前がそれを聞いてなにをしたいの? ここで質問している本人はする事があるのだろうが
それ以外は、皆暇人 他に異論がなければ>>980に答えていただきますが皆様よろしかったでしょうか? 普通に
NOT LIKE '%文字列%'
をANDで並べたらだめなん? 「MySQL上のユーザ」と「ホストシステム上のユーザ」は同期するの?
それとも完全にMySQL側でユーザを手動作成?
MySQLとシステムのユーザ名の対応はユーザ名の文字列の一致を見るの? >>987
ユーザ名が一致すればシステムとは対応取れるの?
パスワードはシステムとMySQLで別々なものを割り当てて別々管理なの?
システム側ユーザFooが、 MySQLユーザ Bar 名使って、Barのパスワード
を使えばシステム側ユーザがrootだろうがFooだろうがBazzだろうが
全く関係ないの?
「システムのroot」と「MySQLのroot」は同じものなの?
違うものなの? MYSQLは、ASの列別名をwhere句に指定することってできないんですか? >>993
ありがとうございます。
select count(*) as hoge,name from chiisai group by ID where hoge = 2;
こういう書き方をしたかったのですが、ダメでした。
この場合、こういう書き方みたいですね。
select count(*) as hoge,name from chiisai group by ID having hoge = 2;
変な質問してすみませんでした。 whereで絞ってからグルーピング
グループ化してからの選別ならhaving
初心者はかなりの確率で引っかかる このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 884日 15時間 35分 40秒 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。