MySQL 総合 Part26 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、
改憲議員が3分の2を超えております。『憲法改正国民投票法』、
でググってみてください。国会の発議はすでに可能です。
平和は勝ち取るものです。お願い致します。☆☆ MysqlがすぐおちるのですがMariaDBにすれば改善されるのでしょうか?
よく出るエラーメッセージはこんなやつです。
mysqli_set_charset(): Error executing query in DBのURL
MariaDBはMysqlに比べてどのぐらい優れているのかもわからないので教えていただければ幸いです。 MysqlがすぐおちるのですがMariaDBにすれば改善されるのでしょうか?
よく出るエラーメッセージはこんなやつです。
mysqli_set_charset(): Error executing query in DBのURL
MariaDBはMysqlに比べてどのぐらい優れているのかもわからないので教えていただければ幸いです。 >>104
設定がおかしいからだと
どういう設定しているか詳細を晒してみると良いかも エラーが出るから他のRDBMSに乗り換えるという発想が大胆! 8.0は性能二倍だって
MariaDBいらなくね?
MySQL 8.0正式版がリリース。性能が最大で2倍、JSONデータや地理情報などサポート。ロールによるユーザー権限の管理も可能に
http://www.publickey1.jp/blog/18/mysql_802json.html >ロールによるユーザー権限の管理も可能に
これが出来るようになるのか。 MySQLは、コミュニティ版でもスレッドプールが使えるようになった? varcharの文字列の途中にタブコード(\t : 0x09)を入れたいのですけど、
例えば、'aaa\tbbb'というふうにタブコードを入れて、
読みだしてみたら、'aaa bbb'というふうにタブコードが2つの半角スペースに
置き換わっているような気がします。
タブコードを文字列の間に入れられないんでしょうか?
ちなみにタブコードで区切られたvarcharっをキーにして
利用するつもりです。 自己レスです。
文字列のなかにタブコードがあっても
全く同じように、普通に処理できました。
お騒がせしました。 https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html
https://dev.mysql.com/doc/refman/5.6/ja/mysqldump.html
MySQLの公式リファレンスは一部和訳されてるけど、この和訳って正しいの?
例えば
The mysqldump client utility performs logical backups,
↓
mysqldump クライアントは、論理バックアップ を実行するユーティリティーで、
こういう翻訳になるのはisが入っているときだけだよね? >>117
そういう機械翻訳じみた発想は捨てろ
一般動詞だから絶対こうなるとかないから >>117
信用できないなら原文だけ読んでたほうが幸せになれるよ >>118
mysqldump クライアントユーティリティーは論理バックアップ を実行し、
普通に翻訳するとこうなると思うんだけど>>117の和訳は何か意図があるの? >>122
どっちも同じ意味だろ?翻訳ってそういうもんだとしか言えん 翻訳者に自由はないのか?
せっかく訳してくれてるのに。
そこまでいうなら、おまえが正確無比な翻訳を公開してもいいよ。 >>122
日本語とえいごが一対一対応する訳ねぇだろ 技術系の書籍の日本語訳に文句を言って自分の無能を棚にあげている奴は多いが
その中の決して少くない数の人々は>>122のようなガチアスペだという事実 Windows10で、MySQL5.6.40を使ってます。
Pythonから利用しています。
連続して10万件ほどデータを書き込みしたいのですけど、
1つのデータをinsertしたらcommitしたほうがいいのでしょうか?
それとも10万件insertしたあとで1回だけcommitしたほうがいいのでしょうか? その10万件のデータが全部Insertされないと整合性がとれないなら、最後に1回Commitで医院で内科医 適度に分割するのがいいと思う。
あんまりメモリもディスクもムダに使わないように。 あんまり詳しくないんだけど、commitするってことはトランザクション貼るんだよね?
トランザクション貼る必要があったら分割できないし、途中で別処理が乱入してきてデータ不整合になることがないってわかってるならそもそもトランザクション貼らないでinsertすれば良くない? >>128
>>129
>>130
コメントありがとうございます。
10万件が揃ってないと次の処理に行けないので、
全くわかってないんですけど、beginでロックして
トランザクションにして最後にcommitしてみます。
実行時にディスクやメモリをチェックしてみて
かなり消費しているようでしたら、1万件ずつとかで
commitしてみます。 処理に順番があるだけなら、外部でロックして、後続の処理を待たせることも考えたら。
10万レコードを1トランザクションでコミットしなければいけないことなんかそうそうないんじゃないかとも思うので。 >>132
これが普通だよな
不要なのにトランザクション使ってるだけならパフォーマンス落ちるだけですむけど、一万件でコミットして次のトランザクション入るまでに割り込まれたらマズいなら作りが悪い >>132
>>133
ありがとうございます。
実は大きな勘違いがありまして10万件はサンプルであって、
本番用は4000万件が29ファイルの12億件ぐらいあることがわかりました。
1ファイルの4000万件をMySQLに書き込んでみたら4000万件ちょっとで、
2時間かかりましたけど、14Gほどディスク容量を使ってしまって、
Cドライブの残り200Gには入りそうにないことがわかってきまして、
ちょっと呆然としてます。
どうしたらいいか、ちょっと落ち着いて考えてみます。 innodb_file_format = Barracuda
を指定して節約するとか
ま、そんな量じゃ小手先だろなw 4T位のHDDを4台使ったRAIDで増設しよう
今時1万くらいで買える >>135
>>136
ありがとうございます。
CドライブがSSDで速いのでいいかなと思っているのですけど、
外付けのハードディスクを使わざるを得ないと思っています。
そこで簡単に外付け(Eドライブ)に移動する方法ですけど、
一度、MySQLを停止しておいて、my.iniのdatadirを指定して、
そこに現在のCドライブのmysql\dataフォルダをコピーしてやって
再起動すれば、そのまま使えるのでしょうか? >>137
135だけど
Barracudaの指定後それだけでは駄目でテーブル定義に
ROW_FORMAT=COMPRESSEDを付け加えないといけないから、そこら辺はいろんな
サイトで確認してくれ
くれぐれも慎重に >>137
問題ない。
しかし、何億件て。w
しかるべき筋に業務として発注したほうがいいんじゃないか。
自前でやっていいのなら、そもそもその全レコードが必要なのかを考えるところからだろ。
サマリ処理ではいかんのかとか。 >>138
>>139
ありがとうございます。
データを調べていたら、不必要なものが15%ぐらいあるようですし、
重複したデータがあって、それは件数さえわかればいいので、
countで件数数えてひとつにまとめます。
他のソフトの結果と連動して使うので、
サマリ処理だけでは済みそうにないんです。 それは理由としてまだあやしい。
ま、ここで正確に回答する必要なんかないんだけど。w
とにかく、そんなに簡単な案件ではなさそうなので、あきらめることもあわせてよーく考えるべき。
全レコードが記録されたデータファイルだけが目的なら別だけど、そうでなければ、時間をかけてつくったのにまともに検索できないデータベースができてしまう可能性も高い。
データ構造とかインデックスとかチューニングとか、いろいろあるからね。 >>141
ご指摘ありがとうございます。まさにそのとおりです。
まともに検索できるのかとか心配事は山ほどあります。
ただ、検索するときにはヒット件数が多くありませんので、
なんとかならないかなーと思っています。
とりあえず、やれるところまでやってみようと思います。 1Tの空きのあるEドライブにdataを移動して正常に起動できました。
最初、うまく起動できなかったのですけど、
フォルダのプロパティのnetwork serviceの
フルコントロール権限を与えないといけない、
というのをググって見つけて、そのとおりしたらうまくいきました! 昨日秋葉の99で4Tを買ってきたけど
1台8618円でした phpMyAdminにバックアップしていたデータベースをインポートしようとすると、
2006エラーで止まってしまいます。
こういう場合どうしたらインポート成功させられるんでしょうか?
MariaDB 5.5.56です。
SQLファイルは253MBあります。
max_allowed_packetが関係しているかなと思って、これを300Mに上げてみました。
それでもダメです。 スレ汚し失礼しました。
BigDump.phpでいけました。 128+256=384byteなはずなのになぜこのエラーが出るのでしょうか。
https://i.imgur.com/vqXsH4dl.jpg varchar(n) の n は文字数だったような気がする ありがとうございます。
回答をヒントに文字コードをasciiにしたらできました 様々な動物に皆で餌を上げます
同じ動物への餌は5分開けないと上げられません
動物に餌を上げるときに動物の種類、餌の種類、現在時刻をテーブルに登録します
この条件を満たすSQL文はどのように書けばいいのでしょうか?
現在は
SELECT time FROM animal WHERE ani=:ani AND esa=:esa AND DATE_ADD(time, INTERVAL 30 MINUTE) > CURRENT_TIMESTAMP() ORDER BY time DESC LIMIT 1
この文で実行してその結果でPHPの条件分岐で
INSERT INTO animal (ani,esa,time) VALUES (:ani,:esa,CURRENT_TIMESTAMP())
この文を実行するかどうか決めています
返り値は5分経ってない場合は残り時間が欲しいです 素直に最新のtimeだけとってきてPHPで条件分岐も計算もすればいいんじゃないの それだと複数のユーザが同じタイミングで餌を上げようとすると
両方が5分経ってると情報を渡し2人とも餌を上げられてしまいます そういうのはSQLじゃなく、
給餌システム側でセマフォのような仕組みを
作ってやらないと無理ではないか? あと最後の餌やりから30分以内のときだけtimeを取得する処理の必要性がわからん PDOなので自動でトランザクションが張られてると思います
ですがSELECT→INSERTの間のトランザクションは張られていないので駄目なのだと思います
$dbh->commit()も検討したのですが、結局SELECTでcommitしてトランザクションが切れてからINSERTするので意味がないと思います
すみません
30はコピペミスです
5でした select for update で終わり
トランザクション理解してなさげだからもう一回理解し直した方がいい 本当に聞きたかったことって動物の給餌作業の事じゃないんだろう PDOに関する無知だけ晒して礼も言わずに消える奴なんてもう相手にしなくて良いだろ
>>162
話の本筋じゃないからスルーしてたけどそうだよ お返事遅れてすみません
トランザクションについてもう一度理解し直そうと思います
回答ありがとございました (すんません、過疎ったスレに投稿したため回答がつかず、マルチお許しください。)
MySQL(に限らずなのかな?)で、null値を許可したnull値のカラムに、null値で更新をかけると、更新タイムスタンプが変更されてしまいますが、仕様ですか?
同カラムの値が1で、そのまま1で更新をかけた場合はタイムスタンプは更新されませんでした。 うろ覚えで済まんが、nullはどんな値とも一致しないので
nullで更新かけると結果としてレコードが更新されるんじゃないかな? >>168
なるほど、そういうことなんですね。
納得しました。ありがとうございました! >>167
暗黙のタイムスタンプとかあったっけ?
そのカラムを自分で更新してるんじゃないの? そもそもcurrent time_stamp設定してupdateクエリ通したら更新されるだろ --single-transaction
--lock-tables
両方指定したらどうなるのっと? >>174
MySQLスレで質問すると聞く前に試せって言われるパターン多いよなw それはここに限らないだろう
聞いてしまえばすぐ答えが来るかも知れないが
自分で試して何故そうなるかを考える方が得る物が多いし
そういうチャンスを奪うのはちょっとね
なさけは人のためならずって言うし >>176を意訳すると
「答えられない時は『自分でためせ』と言います」 ホントにどうでもいい質問もたしかにあるからな。
ま、しかたない。 どうでも良い質問=答えられない質問
良い質問=答えられる質問
だもんなw まったく調べもせず、やってもいない人間の相手をしていても、相手の知識がなさすぎて徒労に終わる。 >>180
おいおいおまえの人生自体がそもそも徒労だって事忘れんなよw 252 名前:NAME IS NULL[sage] 投稿日:2018/08/13(月) 18:38:14.55 ID:???
>>250
MariaDBがなかったら、もっと前に MySQLの寿命は尽きてたと思う。
Oracleとしては競合がなければ飼い殺しするつもりのMySQLに金をかけて無いと思う。
Sun買収自体が飼い殺しの意味でしかなかったと思うし。ホント、オープンソースの敵だな。 森次慶子 病気 ひき逃げ 在日朝鮮人 ツイッター芸人 韓国 罵倒 ADHD
発狂 5ちゃん荒らし マウント 前科 不倫 もりじ ロブスター ニート
不正利用 右翼 精神科 精神病 騒動 煽り運転 在日 逮捕歴 ストーカー
コンドーム おばさん 痴漢冤罪 炎上 脅迫罪 森次 左翼 差別主義者 躁鬱病
悪徳商法 レイシスト 詐欺 押し売り 傲慢 捏造 パワハラ 自演 ヘイトスピーチ
発症 引きこもり ゲームアプリ 森次慶子 万引き パクリ 著作権侵害 虚言癖
入院 捏造 解雇 自己愛性パーソナリティ障害 異常者 精神疾患 恐喝 覚醒剤
模写 トレース 加害者 強迫観念 ひかりの輪 発達障害 ドラッグ 猫虐待
執行猶予 オウム真理教 反日 胡散臭い ロブおば 大麻 画廊 高慢 芸人
勘違い 薬物 麻原彰晃 森○ 宗教 攻撃性 自己愛性人格障害 暴言 でっちあげ
事件 病状 双極性障害 アルノサージュ 差別 LGBT 暴力 中国 違法
醜悪 粘着質 無職 売れ残り 火病 無断転載 リンチ 暴行 狂人 懲役
不法侵入 DV 統合失調症 架空請求 盗作 心身症 人格障害 創価学会 炎上商法
2ch 作品 精神病棟 Moritsugu 起訴 森次慶子 下手 ぼったくり 幸福の科学 借金
詐欺師 底辺 精神異常 Keiko 性格悪い いじめ 悪辣 自己破産 コンプレックス
ババア F9 生活保護 横浜 引きこもり ウイルス フェミニスト 癇癪
変質者 反社会性パーソナリティ障害 恫喝 売春 人種差別 窃盗 高圧的
@W_Fei_hung
https://twitter.com/W_Fei_hung?s=09
http://peg.thebase.in/
https://togetter.com/li/1172468
https://togetter.com/li/1245978
http://b.hatena.ne.jp/entry/s/togetter.com/li/1172310
https://m.chiebukuro.yahoo.co.jp/detail/q14182486039
https://twitter.com/5chan_nel (5ch newer account) MySqlで、あるユーザーにCREATE TABLEやDROP TABLEの権限は与えたいが、CREATE DATABASEやDROP DATABASEの権限を与えたくない時はどうしたらいいのだろう? grant文で与えたい権限だけ与えれば良いのでは? grant create,delete on hoge.* to scott;
でhogeDBだけの権限になるかと deleleじゃないやdropだ
折れもわかってないわ
ねみぃ >>188
権限関連は、ちょっとSQLじゃない気がするな。 残念だが、
GRANT CREATE ON TEST_DB.* TO ‘TEST_USER’
とした場合は、TEST_USERは
DROP DATABASE TEST_DB
できるんだな。どうもMySqlの権限の設計はよくわからん。 いや、CREATE、DROP両方の権限をREVOKEしてもCREATE DATABASE、DROP DATABASEできてしまう。なんだコリャ?
お騒がせしました。 >>194
MySQLを動かしているユーザーで常時、使っているというオチじゃないだろうなw >>195
プロセスmysqldのUIDは、ユーザーmysqlのものだった。当然そんなアカウントでは使っていない。
マニュアルを引いてみたが、
1.なんでも、flush privilegesというコマンドかある。
2.CREATE権限は、DATABASEとTABLEに分けられない。TABLEを作る権限のある者は、DATABASEを作る権限もある、DROPも然り。
なんかDATABASEに対する考え方がアレだが、これではあんまりだが、それを補うかのように、CREATE TEMPORARY TABLEなる権限があるので、それでなんとかならんか検討してみる。 flush privilegesは、権限関連コマンドを使わずに、テーブルを直接編集したときに内容をサーバーに反映させるんじゃなかったっけ? wordpressをサーバー移転するため、新サーバー(Xサーバー)にて新規データベースを作成、
ユーザーを割り当て、phpmyadminを開いたのですが、「インポート」のタブを押しても何も変わりません。
それどころか、どのタブを押しても、表示が変わりません。「一般設定」と「外観設定」についてが表示されたままです。
もうどうしたらいいかわかりません…。 サポートに連絡すればいいんじゃないの
どう考えてもこのスレの範疇とは思えん あぁ、やっぱり基本的な問題ではない感じですね…ありがとうございます<(__)> 【国連、20mSvから1mSvに戻せ】 線量20倍だと死者8千人が16万人に増加、人口減20万人/年とほぼ一致
http://rosie.5ch.net/test/read.cgi/liveplus/1540606609/l50
国連「女性と子供をフクシマに帰すな」 自民「内政干渉だ! 我々は選挙で選ばれたんだぞ!」 gentooに5.7が落ちてきたので、upgradeしたらfile permissionでmysqldが立ち上がらない。
/var/log/mysql
/var/lib/mysql
へのアクセス権がuser=mysqlでことごとく拒否される。 変わってないです。
mysql:mysql
なんですけど、Permissionがないとエラーログが作れず起動に失敗。 /varの下に ./mysqldlog を mysql:mysql 755で作成してログ保存するとuser=mysqlで走る。
どこか根本的なところがおかしいのかな...
/var root:root 755
/var/log root:root 664 それだと /var/log の下に入り込めない
755にしましょう /var/log/ 755で上手くいきました。 ありがとうございます。 >>10
タルみたいなのはストレージのイメージじゃね?HDDのプラッタとか C#とMySQLでアプリ作っていて質問です
起動時に規定したテーブルがない場合は、あらかじめ作ってあるSQL文に従ってテーブルを
追加するように作っているんですが、存在するテーブルでカラムについても不足したカラムがあれば
カラムを追加するSQLを走らせたいと考えています
必要なカラム名をアプリ側で用意しておいて、MySQL側へカラムが存在するか調べてから
SQL文を生成して追加という方法はとりあえず思いついたのですが
もっとスマートな方法はないもんでしょうか そもそもテーブルだのカラムだのが、不足してるだの追加するだの自体がおかしくないか。そんなコロコロいじくり回すもんなの? >>215
小規模の業務アプリで、業務の変更によって変えざるを得ないことと(現場の要望を積極的に取り入れており)
一定時間以外は、完全に利用が止まるのでカラム変更等は容易であること
年度毎に新しいテーブルを自動生成したいなど・・・
一般的な使い方ではないかもしれませんが、その点はスルーでお願いします >>216
事前に仕様が決まらない、あるいは時々仕様が変わるということであれば、表の構造を
変えるDDLをスクリプトにしm保守作業で実行するのは普通に行われていることかと。
それからデータベーススキーマとアプリケーションとを分離するように意識して、スキーマを優先して
アプリケーションはそれに追随するよう設計すると考えやすくなるかもしれない。
スキーマのバージョンを表す小さな表か、ストアドプログラムにバージョン定数を格納して
アプリケーションはそれを見て動作を変えたり、例外として止めたり。 割り切ってあらかじめ「汎用」カラムをたくさん用意しといたほうがマシな気がするなー。
もちろんテーブルはわかりにくくなるけど、そこはアプリで吸収できるでしょ。
どうしてもテーブルを変更するのなら、想定できる最大レコードを仕込んだテーブルを変更するテストは事前にしといたほうが。
思った以上に時間がかかるかもよ?
エンジンとかバージョンによっては、変更処理中はロックされちゃうし。 データベースじゃなく、XMLとか別の方法を考えた方が良くないかな よくない。
サーバーとかトランザクションとかなしで、業務レベルのシステムがつくれんのか? それこそJSONとかの出番だとは思うが
MySQLのJSON関連って使い物になるレベル? >>219
マイグレーションなんてありふれてるやろ XML使うならMySQLでなく、XMLデータベースや、オブジェクトデータベースが
視野に入ると思うが、この人はMySQLは入れ物で、ロジック主体で考えてるっぽい。 XML関数があるな。
XPathが使えるらしいから、やってやれないことはないのかな?
でも、インデックスとかJK未対応やろし、たいして使えん気がする。 MySQLをインストールしたんですけどフォルダに入ってるのがMySQL installer for Windows だけでMySQL Serverとか入ってないんですけど再インストールしても同じ感じなんですがアンインストールも完全に出来なくてどうすればいいのか助けて下さいエロい人 pythonでMySQLに接続するユーザーについて、
rootで接続してもいいのか、
初めはroot アカウントで接続してPython側で制限したアカウントを動的作成しアプリケーション内ではそのアカウントを使うべきなのか。
みんなどうしてるんですか? 普通は管理者の側で制限された権限のユーザーを予め作っておいて
そのユーザーアカウントで操作するものじゃないか?
動的にアカウント生成なんて聞いたことがない >>228
なるほど、確かにそうだ。ありがとう。
よく考えてみたら、今考えているWebアプリは、MySQLのセットアップは、使い手がするので
ユーザー権限について設定してもらうのも難易度高そうだから、pythonで作ったほうが安全かと思ったんだ。 たしかに簡単ではないけど、しかしそれがあやしいヤツに、サーバーのセットアップなんかさせてはいかんのではないか?w 色々素人ですがmysql をはじめたいと思い、基礎からのMySQLという本を見ながらはじめてみました。
コマンドプロンプトで mysql と打ち込むとエラーと表示されます。
どうしたら解決できるか、何が原因かを見つける方法はありますか?
2003だのローカルホストに接続できないだの10061だのといったものがならんでいるのですが、自分にはさっぱりです。 >>231
mysqlちみにはまだ早かったみたいね 231です
Mysqlがローカルホストに接続できてないってことだと思うんですけど、どうしたらこれが解決するのかがわかりません。、 >>235
お昼時ですね
解決してませんがありがとうございます もう一度インストールし直そう
その時にユーザー作成と権限設定手順に注意する ツイッターやネットでテクノロジー犯罪と検索して、まじでやばいことを四代目澄田会の幹部がやってる
被害者に対して暴力団以外にタゲそらしをしてるがやってるのは暴力団で普段外に出ることが少ないため遊びで公共の電波と同じような電波を使って殺人をしてる
統失はほとんどが作られた病気で実際は電波によって音声送信や思考盗聴ができることが最近明らかになりつつある
警察や病院では病気としてマニュアル化されてしまっているのが現状で被害者は泣き寝入りしてる
被害者がリアルタイムで多い現状を知って、被害者間でしか本当の事だと認知できていない
実際にできると思われていない事だから、ただの幻聴ではない実際に頭の中で会話ができる
できないことだと思われているからこそ真面目に被害を訴えてる
海外でも周知されつつあることを知ってほしい。
このままだとどんどん被害が広がる一方
#テクノロジー犯罪
#四代目澄田会
[参考]
https://black.ap.teacup.com/yamisiougn01/6.html
https://tekunoroji-hanzaihigai.jimdo.com
https://blogs.yahoo.co.jp/patentcom
https://twitter.com/celesty_cs 👀
Rock54: Caution(BBR-MD5:87f20c3c9ee883ab649a4d7f8b996d63)
https://twitter.com/5chan_nel (5ch newer account) どうやってもできないのでHelp。昨日入れた初心者。
mysql Workbench8.0。
テーブル作成してカラム作るが、初期値で年を返す、YEAR()をdefault/expressionに
書いて、datatypeをintにするとエラーがでる。
curdate()で DATE型だと問題ない。さんざんやって疲れた。 >>244
int型でなくyear型にしてみたら? それもやったんですよ。
varchar とかいろいろ試した。 初期値に使える関数はかなり限定されてなかったっけ?
単に対応してないだけやろ。 substr(current_timestamp(),1,4)
これで代用できないかな >>248
まぁ、それならそれで良いんだけどね。
>>249
かわらず。 >>250
DEFAULTの後ろに空白を入れ、substr以下の式を ' で囲まないでやってみて
処理をここにテキストで貼り付けようとすると、インジェクション扱いされる様だが
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
処理は正常に出来たようだ インジェクション対策なんてしてんだ。
結局動かず..w
webにも資料ないんだよね。 そもそもMySQLのバージョンは?
デフォルト値に、関数を指定できるようになったのはかなり最近なんやろ。 >>253
最新の8.019。
sqlserverのみだったんで入れてみたんだよね。 MS-ACCESSからMySQLへ変更の際、例えば、
OleDbConnection conn = new OleDbConnection(connectionString);
から
MySqlConnection conn= new MySqlConnection(connectionString);
の様に一部変えるだけで使えるけど何か気を付けるところってあるん? 質問いいですか?自分で頑張って調べたんですけど良く分からずといった感じです
MySQLを導入してインストールでき、MySQL Workbenthではローカルサーバの存在を確認でき、コマンドラインでのDBやテーブルの作成は受け付けるのですが、SSMSなどの外部ツールでサーバ名にPC名を入れてもサーバに接続できません。
このような場合どのような原因が考えられるでしょうか…… 名前解決してないじゃ。IPアドレス直打ちとか。
同一マシンでないならping打つとか。 SSMSはSQL Server専用だから繋がらんぞ
A5とかのODBC対応ツールならODBCドライバを介して接続可能 Oracle→MySQL移行ってあまり実例が無いね
効果大きいのに 新規に作るならMariaDBやRDS for MySQLは視野に入ると思う Oracle→MySQL
SQL Server→MySQL
に移行するツールは用意されてるのな
その割に移行する案件って少ないよな だってMySQLもどうせOracleでしょ?触らないに越したことはない。 >>266
一応、今はライセンスフリーでしょ
先でJavaみたいにライセンス徴収するかも知れないけど
そうなったらMariaDBにフォークすりゃええし >>268
ライセンスフリーだと?実態はもっとややこしいから調べてこい MySQLの不具合対処もOracle中々やろうとしなかったな >>268
GPLと商用ライセンスの二択。
「ライセンスフリー」ではない。 >>271
その二択でGPL選ばない理由は無いよな MySQLをわざわざ商用ライセンス契約する様なチョンボする訳無い Community Edition使ってる分には問題無い >>272
MySQL自体でビジネスする場合は商用ライセンスが必要。
独自パッケージとか改造品配布とか?
ま、ふつうはいらんわな。 >>276
社内システムならCommunity Editionで良いでしょ 社外システムだと、どうなるの?
例えば、公開されているWebのバックエンドで使ってるとか >>278
社内バッチDBとかね
バッチ帳票向けDB Web公開部分はECシステムとか商用ライセンスだろうけど
イントラシステムはCommunity Editionで良い >>278
ふつうに利用するだけならもちろんGPL で可。
サーバーまるごとを売るなら商用ライセンス必須。 基本的にCommunity Editionで十分でそ GPLのClient Library使ってる場合はグレーゾーンに足突っ込んでる Community Server を観てみたけど、ダウンロード可能なバージョンは現行含めて計3バージョンだった。
それ以前はなくなってるのはサポートポリシーの影響を受けていると推測した。加えてダウンロードページも
トップページから到達しづらかった。正直、合理的な理由がないと採用しづらいと感じる。 >>288
んなつまらんことを。w
じゃあやめとけ。 >>285
Client libraryなんて使う必要有る?
ODBCで接続すりゃいいだけでそ >>290
ODBCドライバーを自作してるかw
すごいねー >>291
自作する訳無い
既存のADO.NETとか使うだけでそ >>292
ADO.NETはただの抽象レイヤーだからそれだけじゃ無理やろ >>292
自作してないなら
MySQL用のADO.NETドライバーかODBCドライバーを使ってんだよ
それらの総称がClient Libraryだから
GPL警察に通報だなw 既存のClient Library使うとGPL v2違反になるのか?
それじゃCommunity EditionでClientアクセスしたら全て違反じゃん >>295
お前とことん馬鹿だな
>>290,292,295で馬鹿のトリプル役満 >>299
>Client libraryなんて使う必要有る?
>ODBCで接続すりゃいいだけでそ
>既存のADO.NETとか使うだけでそ
>MySQL Connector使えば済む話
救いようがないな
もうMySQL使ってるやつは低能ってことでOk? >>301
細かいようでいて、いいかげんな。。。
だいたい、GPLにビビるなら、金で解決できる商用ライセンスも選択できるほうが安心やろ。 >>303
Oracle、SQL Serverより安いから良いレベル 商用ライセンスでもOracle使うよりマシ
まあPostgreSQL使えって話も有るがPostgreSQLにもクセは有るしね 商用ライセンス使うためにMySQLを選ぶのは理解できるが
それ以外でMariaじゃなくMySQLを選ぶメリットってある? >>308,309
こういう劣化二次ソースしか読まないから
MySQLを使ってるやつは低能って言われるんだぞ
どちらもライセンスとは何かを理解してない >>311
Oracleのサポートは受けたい、とか >>312
こんな風に混乱してるやつらがいるよって例なんじゃないの? >>311
Cluster化が視野にあるとか?
そうでなくても、マルチコア関連で性能が違ったような。 http://esuppo.ecopls.link/syublog/Blog/17
GPLだとしても、WEBサービスとして公開するだけなら、ソースコードの公開する必要はないといっています。 ↑
自社でWEBサービスを公開するだけなら、自社開発で使うことは問題ないでしょう。
>>316
Webサービスとして公開したアプリのソースコードにライセンスをつける必要ある?
ソースコードをライセンスする理由をまず理解しようぜ >>318
>>Webサービスとして公開したアプリのソースコードにライセンスをつける必要ある?
無いね
ゆえに自社で使うwebサービスシステムはCommunity editionで良い
商用するwebサービスだけ商用ライセンス契約してStandard editionかEnterprises edition買えば良い >>319
違う。
商用サービスであっても、GPLでよい。
パッケージ(バイナリ)だけに注目しろ。
たとえ無料サービスでも、それを提供するパッケージを第三者に渡す場合、GPLに基づいて、ソースを渡す必要がある。
なお、AGPLは別。 >>319
>商用するwebサービスだけ商用ライセンス契約してStandard editionかEnterprises edition買えば良い
ほんとに理解してる?
開発したWebサービスをパッケージ的に他社にライセンス供与して配布する場合以外は
GPLライブラリを使ってたとしてもそのWebサービスのソースライセンスをGPLにする必要ないよ
商用のWebサービスでもね >>322
分数ができないヤツがいるからといって、分数が悪いわけではない。
そいつが小学生からやりなおせばよいだけ。 もしも、の事考えて社外に公開する部分だけ商用ライセンス契約する、でいいじゃんw
特に問題無いハズ 世の中の小学生の大半は分数計算が当たり前にできるけど
MySQL教科書を使ってる小学生に限ってはその大半が分数計算ができない状態
教科書の問題なのか学校や先生の問題なのか
それとも小学生自身の問題なのか >>325
問題はないが、無駄金。
もちろん、対価を払いたいとかサポートがほしいとか、理由があれば別。 >>326
大学で分数を教えることもある。
世の中にはアホが少なくない。
しゃあない。
まあ、GPLを理解できないようなヤツが商用サービスをつくることなんかあり得ないから、心配すんな。w >>329
有名税。
人の数が多いと、アホも増える。
さらに2chはアホが濃縮する。
しゃあない。 MySQLスレも、データベース板も、
人が多い場所とは思わなかった 現場はもっと混乱してるか、そもそもライセンスなんて考えたことすらないのか >>327
>>サポートがほしいとか
結構、これが大きいかもね 基本的にはCommunity editionでOK
サポート欲しいとかGPL汚染危惧するなら商用ライセンス買っておけ、ってぐらいでそ クラスタ化意識するなら商用ライセンス買っても良い
それぐらい 「クラスタ化意識するなら商用ライセンス買っても良い」
「なぜ?」
「(MariaじゃなくMySQLを選ぶのは)Cluster化が視野にあるとか?」
質問に答えないだけでなく
さらにアホなレスを引用するとは
さすがMySQLユーザー そのクラスタ化に商用ライセンスバージョンが必要だからでしょ https://qiita.com/You_name_is_YU/items/84e428ab59dc12924b46
MySQLデータベース製品を利用してソフトウェアを開発した場合ですが、プロセス間通信はGPLに触れないとのこと。
そのため、Webアプリケーションを開発する際のバックエンドとしてMySQLを利用している場合、商用に利用しても開発したソフトウェアのソースコードを公開する義務は発生しない。
分離したプログラムの間で使われるコミュニケーションメカニズムによって、コマンドラインやソケット通信などによって利用される場合は、同梱されていると判断されないため、GPLライセンス範囲外となるが、
同じ実行ファイルに含まれてる場合などは、同梱されているとみなされ、GPLのライセンスが適用されなければならない。 >>341
またこういう理解してないやつが書いた劣化記事を持ってくる
冗談抜きでMySQLユーザーは低能が多いみたいだな
Client Libraryはアプリにリンクされて使われるのでプロセス間通信ではない >>345
それは、向こうの言い分。
鵜呑みにするのも低能なアホ。
完全に明瞭ではないので、別の見解がある。
http://ossforum.jp/node/497
MySQLで裁判になったこともあるようだけど、あきらかにアウト過ぎる事例で、判断が難しい。
まあ、👽としか。 >>346
「スタティックリンクでなければセーフ」とかマジで言ってたやつが何言ってだかww
鵜呑みにするもなにも向こうの言い分に同意しないとGPLなソフトは使えないから
こうも低能ばかりだと低能汚染されそうだからもう触るのやめるわ 根性無しw
いえ、お疲れ様です
懲りずに、講釈お願いしますです 結局みんなよく理解せずに使ってるって認識でおーけー? 理解している人は理解している
突き詰めるとぶつかるので避けている >>348
「言い分」に従う必要はない。
「ライセンス」として契約するだけ。
まあ、おまえがこれを読むことはないはずだが。w >>352
多分、究極はそれ
OracleがJavaの様に商用ライセンスのみ、にしたらJavaみたいにMySQLは衰退する >>354
そうなったらMariaDBに移行すれば良いだけ、だしね >>340
Community editionでクラスタ化出来たっけ? >>353
「ライセンス」として契約しておけば、GPL制約受けないの? >>359
サポート無しでは知識や能力的に無理だから商用ライセンスが必要なんでしょ >>360
ライセンスは、書いてあるとおりに適用される。
書いてないことは強制できない。
詳細は裁判で。 >>361
そういう事
Community Editionでクラスタ化出来るけど、面倒だからね >>360
GPL制約が鬱陶しいと思うなら商用ライセンスバージョン買えば良い 何にせよCommunity Editionで事足りる
GPL気にしないならね >>365
気にしてても、ふつうはGPLでいける。
ダメな場合はかなりのレアケース。
何をするつもりなのか、問い質したいレベル。 >>366
>>ふつうはGPLでいける
いけない部分はGPL言語(PHPとか)で実装してる場合にまとめてパッケージ提供してる場合でしょ >>363や>>367のようなバカは商用ライセンス一択 >>370,371
Community editionで他のGPL(PHPとか)の成果物と纏めて販売したら問題になると思われる
そういう場合は商用ライセンス版を使う Community editionで良いじゃん
問題になるのはレアケースなんでしょ Commercial Editionで良いじゃん
GPLすら理解できないんでしょ GPLを含めた形で販売したい場合はどういうことを守らないと行けないの LAMPの例からしてGPLで固めていれば問題無いんでしょ
そこにC#とかC++とか入るとGPLパッケージで無くなるので問題なんでしょ >>376
事実上、「販売」に意味がない。
もし「販売」しても、購入者はGPLに基づいて再頒布することが可能。
つまり、購入者がそのまま商売敵になる。w >>378
サポート付きサブスクリプションで販売すればええんやで >>379
それはもうただの保守契約やろ。
サブスクリプションの部分には意味がないんやから。 社内システムで再頒布する事想定してないシステムならCommunity editionで十分でしょ >>380
例えばGPLのアドブロッカー(クライアント)を販売して
販売元でライセンス購入した人にだけ追加サブスクリプションで
日々更新されるアドフィルターをサーバーからダウンロード可能にする
みたいなモデルは成立しうる >>382
要は、「フィルタ」データの販売?
あくまでデータなら、いわゆるGPL汚染の影響は受けないのか?
レアすぎてよくわからん。。。 いや、それなら本体の販売はいらんやろ。
データだけ別に販売したらええんや。w >>383
追加フィルタのライセンスをGPLにする必要がないのはもちろんだけどそこはあんまり重要じゃない
GPLライセンスで提供したクライアントソフトの実行・改変・再配布を妨げなければ
そのクライアントと連携する(combined workではない)サービスやソフトはGPLにする必要がないから
やり方次第で有償のビジネスに普通に使えるという話
GPLでやってるところはレアかもしれないが
ビジネスモデルとしては一般的 OracleやMySQLってドライバーのリリースが周回遅れなんだよなあ https://www.isoppe.jp/?p=3258
結果としては、利用者が法人であっても、社内掲示板やナレッジベースのような用途で
第三者がアクセス出来るように外部公開しなければ、無償で利用できるそうです。 第三者がアクセス出来るシステムは商用ライセンス買えば良いと言える >>393
もう何いってんのw
掲示板やナレッジベースを第三者がアクセス出来るように外部公開しても商用ライセンスは不要だぞ
なんでこんな簡単なことが理解できないんだ?
Oracleに聞いたと書いてるが聞いたやつの頭がよほど悪いのでなければ
Oracleの担当者が意図的に騙そうとしたとしか考えられん Oracle自身は出来るだけ商用ライセンスを売りたい、からね
そりゃ騙すでしょ Oracleの意向無視してCommunity edition使えば良いって話だね >>388
1.MySQLを使用したソフトウェアを他の人に渡さない
→社内システムのみの使用であればこのケースに該当します。
2.MySQLを使用したソフトウェアを他人へ渡すが、ソースコードの開示、ソフトウェアの改変、および再配布を無制限に誰でも許可する
→MySQLを組み込んだソフトウェアに著作権をつけないイメージです。誰でも好きに使用できる状態で譲渡します。 >>399
>→MySQLを組み込んだソフトウェアに著作権をつけないイメージです。誰でも好きに使用できる状態で譲渡します。
ほんといい加減にしろ
著作権とライセンスの違いも理解してないのか?
GPLのMySQLを組み込んだソフトを再配布するのであればGPLにしなきゃいけないだろ
誰でも好きに利用できるんじゃなくGPLの範囲内でのみ利用できる >>393
さすがボラクル。w
騙す気マンマンやな!
あるいは、「公開」の対象がサービスかソフトウェアかで誤解してるんかな?
GPLは、そこを確認せんといかんのに。 GPLの公開の対象はソフトウェア
ゆえに社内システムでは既に社内に公開してる、と言える みんなOracleサポートに騙されて商用ライセンス買わされてるんだよ で、積極的にCommunity edition使うと法的手段を取られる可能性が出て来る訳だよ http://esuppo.ecopls.link/syublog/Blog/17
MySQLのライセンスは別、MySQL=GPLではないのです
MySQLの言ってるライセンスは2つのライセンスがあります。
GPLもありますが、商用ライセンスもあります。
どちらに当たるかはあなたの使い方次第です。
必要なら商用ライセンスを購入してください。
使い方がどちらに当たるかは今は言えません、その判断は司法の判断によります。
つまり、業務システム受託においてMySQLのを利用することは、リスクがあることは間違いありません。
独自判断で、大丈夫と判断しても自分または自社の判断のもとに内製ソフトで使うのは自由ですが
プログラム受託でデータベースにMySQLを採用して提案することは非常に危険だと思います >>406
「危険」じゃねえよ。
発注元に相談しろっつーの!
どうせ成果物まるごと渡すなら、関係ない話やし。w https://mixi.jp/view_bbs.pl?comm_id=2234&id=1487053
念の為、こちらでも株式会社ソフトエイジェンシーに確認してみました。
それによると、(組み込み・外部サーバーに関わらず)MySQLを利用するシステムを配布・販売する場合、GPLライセンスとしないのであれば、コマーシャルライセンスの購入が必要になるそうです。
社内LANなどクローズドな環境ではなく、公開されているWEBサーバーで利用する時点でASPサービス扱いとなり、MySQL OEM ライセンスではなくMySQL Enterprise ライセンス(年/サーバー)となります。
↑
これも代理店に騙されてるね >>409
いや、あってるやろ。
誤解しやすい構成になっているとも思うが、内容はきっと正しい。
前段は、商用ライセンスとなる条件。
後段は、その商用ライセンスを選択した前提で、その種類。 商用ライセンスを選択して公開Webサービスで利用する場合
StandardじゃだめでEnterpriseにしなきゃいけないって制約ある? (組み込み・外部サーバーに関わらず)MySQLを利用するシステムを配布・販売しない場合はCommunity editionで良い、となるな 買収前のMySQLのリファレンスにはどういうケースならFreeのGPLで使えるかわかりやすく明記されてる 1.4.3.1 Using the MySQL Software Under a Commercial License
You need a commercial license:
・When you link a program with any GPL code from the MySQL software and don't want the resulting product to be GPL,
maybe because you want to build a commercial product or keep the added non-GPL code closed source for other reasons.
・When you distribute a non-GPL application that only works with the MySQL software and ship it with the MySQL software.
This type of solution is actually considered to be linking even if it's done over a network.
・When you distribute copies of the MySQL software without providing the source code as required under the GPL license.
・When you want to support the further development of the MySQL database even if you don't formally need a commercial license.
1.4.3.2 Using the MySQL Software for Free Under GPL
You can use the MySQL software for free under the GPL if you adhere to the conditions of the GPL.
Some common cases:
・When you distribute both your own application as well as the MySQL source code under the GPL with your product.
・When you distribute the MySQL source code bundled with other programs that are not linked to or dependent on the MySQL system for their functionality
even if you sell the distribution commercially. This is called mere aggregation in the GPL license.
・If you are not distributing any part of the MySQL system, you can use it for free.
・When you are an Internet Service Provider (ISP), offering web hosting with MySQL servers for your customers.
・When you use the MySQL Database Software in conjunction with a web server, you do not need a commercial license (so long as it is not a product you distribute).
This is true even if you run a commercial web server that uses MySQL Server, because you are not distributing any part of the MySQL system. まだこの話題引っ張ってるのか
それだけみんなわかってないんだろな http://blog.ks2.info/?p=257
大事なのでもう一度。
配布されているものを使うだけなら無償。
個人でも有償配布やソースコードを公開しない場合はライセンスを買う必要がある。
それがGPL。
企業でもGPLに従えばGPLである。
公開先にのみ公開すればいいだろうから、社内システムで社内に公開する分にはいいのかもしれない。
極めつけは、受託開発である。
使う側のライセンスではなく、開発側のライセンスだ。
要はMySQLを含んだシステムを開発し、それを納品するのだからMySQLを含んだ製品の販売にあたるというのである。
この場合、通常の商用ライセンスではなく、OEMライセンスなのだという。
なるほど、よく考えたものである。 >>419
なんでそんな個人の感想を書いたサイトしか引用できないんだ?
>個人でも有償配布やソースコードを公開しない場合はライセンスを買う必要がある。それがGPL。
間違い
無償配布でもGPLに従わないなら商用ライセンスを買う必要がある
「それがGPL」も間違い
>要はMySQLを含んだシステムを開発し、それを納品するのだからMySQLを含んだ製品の販売にあたるというのである
これも間違い
ボラクル/代理店が勘違いさせようとする論法と同じ
本当のところは商用ライセンスが必須かどうかは状況による
一番わかり易いのは著作権を譲渡する場合で
開発側がソフトウェアの使用許諾を受託側に与える必要はないので
ライセンスは問題にならない(配布にもあたらない)
>>414読めばわかる 結局、大勢騙されてる部分が有る
そもそも社内でしか公開しないシステム(イントラネットとか)で商用ライセンスは不要だしね オートコミットがデフォルトでONだと何が不味いの? 何もまずくないよ
運用ルールとして統一してればいいだけ mysqlで売上の管理をやりたいんだけど
UIって別途なんらかのコードで書いてそれにmysqlをリンクさせる感じなんですか?
mysql自体はGUI使えばACCESSみたいに操作できたのですが…… GUIってなんや?
Workbenchのことか?
あれは要するに単純?なクライアントでしかないで。
ふつうは、クライアントライブラリをリンクして、SQL言語をテキストで記述して、データの制御を行う。
まあ、ぐぐって初心者用Webサイトを探せ。
こんなところで聞いてたらキリがない。 >>425
いわゆるソフトみたいなフォームとかつくるやつです MySQLはAccessのようにローカルDBとフォーム作成ツールが一体化してるものじゃない
Accessに使いなれてるならMySQLのフロントとしてAccessでUI作ればいいよ
他にもサードパーティのツールあるけど
フォームの作り方やツールの使い方がそれぞれ違う >>427
おすすめのフォーム作成ツールはありますか? phpmyadminでログインできなくなりました
このエラーなんですが、config.inc.phpを編集したらログインは出来ます
MySQL said: Documentation
Cannot connect: invalid settings.
mysqli::real_connect(): (HY000/1045): Access denied for user ''@'localhost' (using password: NO)
phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.
$cfg['Servers'][$i]['auth_type'] = 'cookie';
この後どう設定すればいいんでしょうか?
認証タイプはconfigじゃないといけないのですか?もとに戻したい、、、 環境 OpenWrt19.07.3にmariadb10.4
セキュリティ的に疑問に思ったので。
mysqlのパスワードを設定しても匿名ユーザを削除しても
パスなしでログインできるのは仕様?
http://uproda11.2ch-library.com/e/es002878533515874311253.jpg >>431
mariaDB板あったの知らなかった スマソ
ゴメン OpenWrtは一般ユーザーでログインできない。
パスなしでroot@localhostにログインしてるから自動的に判別してるのかもしれない
http://uproda11.2ch-library.com/e/es002878655615874511265.jpg
匿名ユーザ消してるけどログはConnect root@localhost as anonymous onとなっていて気持ち悪いけど OpenWrtは知らんかったが、組み込み用なのか。
じゃあMariaDBも専用やろ。
となると、最初から設定ファイルにユーザーとパスワードが埋め込んであるのでは。
https://dev.mysql.com/doc/refman/8.0/en/option-files.html
# client、passwordなどで検索。 >>432
>2019年6月17日にGAとなった MariaDB Server 10.4 ではユーザ認証を管理するテーブルが
>mysql.user から mysql.global_priv テーブルに変更されています。
>unix_socket プラグインは以前から Debian などでは有効になっていましたが,10.4.3 から
>デフォルトの認証形式となりました。この認証方式の場合,MariaDB ユーザ名と同じユーザが
>Linux OS上で存在すれば,MariaDB サーバに接続可能となります。
だそうです >>433
>>434
納得しました。ありがとうございました。1日調べたけどわからなかったです。 【知らなかった】MySQLの「My」 は、作った人の娘さんの名前で、英語「自分の」とは全く無関係なんです
https://togetter.com/li/1562676
まとめました。
Andy Hall @fenomas
今日知りました:MySQLの My は、作った人の娘の名前。
英語「自分の」とは全く無関係。
2020-07-20 14:04:52
原岡 昌寛@ビヨンド代表 | クラウドMSP @wacca13
そうなんだ、知らなかった。
確かに公式ページにも書いてある
https://dev.mysql.com/doc/refman/5.6/ja/history.html
Maria DBも末娘の名前なんだね。
2020-07-20 15:00:16 大元の開発企業は「MySQL AB」という、妙にできすぎた名前だったということも知られてなさそう? 表の結合で悩んでます
select SUBSTRING_INDEX(a.oid, '.', -1) as oid,b.local_data_id from tbl1 a
left join
(select distinct local_data_id,SUBSTRING_INDEX(arg1, '.', -1) as arg1 from tbl2
) as b
on a.oid = b.arg1;
こういうSQLを実行して、表を結合させたいのですが、
tbl2の値が入ってほしい部分が、全部NULLになります。
SUBSTRING_INDEXがいけないのかと思い
SUBSTRING_INDEXで加工した値を入れた作業表を作って※、
やってみると期待通りの結果になります。
どうやれば、NULLにならずに値をいれて結合することができるのでしょうか。
※こんなSQLで作業用の表を、tbl1、tbl2の両方で作りました。
update tbl, (select * from tbl) tbl2
set tbl.arg1=SUBSTRING_INDEX(tbl2.arg1, '.', -1)
where tbl.arg1=tbl2.arg1 >>438
「b.local_data_id」はあるか?
面倒だから確認してないけど、テーブルbがあやしい気がする。 その結合だとaは実テーブルのカラムだと思うが
a.oidのa.はいらないんじゃない? >>440
え。
ふつうは絶対にかならず書くようなもんじゃないの? >on a.oid = b.arg1;
a.oidはSUBSTRING_INDEXする前の値で
b.arg1はSUBSTRING_INDEXした後の値だと思うんだけど
それは意図通りなわけ?
>>440が指摘してるのはそこ 原因考えてみたんですけど、SQLの評価準に原因があるっぽいですね。
@.arg1とoidは値が違う
ASUBSTRING_INDEXで加工すると同じ値になる
Bところが、SELECTよりJOINのほうが先に評価される
C結果異なる値なので、値が出てこない。
原因わかったんですけど、VIEW作ったりしないと無理っぽいんですかねこういう場合って >>442
SUBSTRING_INDEX(a.oid, '.', -1) AS oid
FROM tbl1 (AS) a
とあるから、JOIN節のa.oidは後の値じゃないか?
# 前でも後でもあるのか。w おっといきちがった。
>>443
前のFROM節もサブクエリにしたら。
FROM (SELECT ... AS oid) AS a
LEFT JOIN (SELECT ... AS arg1) AS b
...
でも、ややこしいSQLになった場合、わりきって事前にテンポラリテーブルを別につくったほうが速いこともあるので、念のため。 >>443
評価順はSQLの標準なんだから
原因は君の書き方にあるんじゃないのかな?
>>444
aはtbl1の別名でselectした結果セットの別名ではないよ >>444
>>442
ありがとうございます。最初の
select SUBSTRING_INDEX(a.oid, '.', -1) as oid,b.local_data_id from tbl1 a
をふく問い合わせにしたらうまくいきました!! 更新してなかった。
無事解決しました。ありがとうございます。 例えばWIKIPEDIAとかFACEBOOKや5チャンネルの新規スレッド作成みたいに、自動でページが作られる ようにするにはmysqlなんかのデータベースが必要と聞きました。具体的にどうすればいい? >自動でページが作られる ようにする
これはWebの作りとしてそうしているから
データベースは必須という訳ではない。あれば楽だと言う程度
多分PHPスレで聞いている方だと思うけど、まずWebの仕組みを理解してみよう
リクエストにはGETとPOSTがあり、
レスの投稿や新規スレ作成の要求は、POSTリクエストを使う
常にそうだとは言わないが、大体そうやるのが普通
新規スレ作成のPOSTリクエストを受けとったサーバーは、
POSTで送られてきた内容に応じて、情報をファイルやDBのレコードとして作成する
その後、アクセスしてきたユーザーに対してWebは、
作成したデータに応じて、新規スレの表示やら、新規レスの表示やらを行う 「mysqlなんかの」のところにどんだけの意味が含まれてんのかね
ただのデータベースの枕詞だったらヤバイ
Wikipediaを運営するとしてデータベースをAccessで作ったら死ぬぞwww >>450
そうそう、phpすれで聞いてた人です。
「自動でページを作られるようにする」をデータベース
使わずにする方法のurlあったら教えてください そんなの何をしたいかによるでしょ
自動で作ること自体が目的なら適当に検索すれば出てくるでしょ >>453
それが検索しても出ないんですよ.... >>453
それが検索しても出ないんですよ.... >>454
何て検索したの?
今まで検索した検索ワードを全部書いて php自動ページ生産
php新規ページ作成
php mysql url
phpurl書き換え
データベースurlクエリとは
データベースurl書き換え
ひとつ気になる検査結果を見つけたのですが、あまりよくわかりませんでした
https://teratail.com/questions/14413 PHPもデータベースも、あんまり関係なさそう。
要するに、そういうもののつくりかたやろ?
プログラムのことをほとんど知らないのなら、直接的な答をてっとりばやく探そうとせずに、ゆっくり基本的なところから調べながらやっていくのがええんちゃう?
急ぐなら、人に頼んだほうが。必要なら金を払って。 >>457
「仕組みとしては新しいページを作るというより、アクセスされたURLに応じてデータベースから取得した情報をテンプレートに埋め込んでるだけです。 」
そのURLに書いてるけど、↑これの意味わからない? >>457
その検索ワードは明らかに全部ピント外れ
多分やりたい事はそんな一般的な事じゃなく
掲示板作りたい、とか
Wikiみたいなのを作りたい、とか
具体的なイメージがあるんだろう
だから、それに沿って、
最初に何を表示すれば良いか、から始め、
表示内容を書き換えたり、追加したり、削除するにはどうしたらいいか
次に新しいページを追加するにはどうしたら良いか、なり
コメント書いてもらう方法を考えたり、
そういう一つ一つを順に実装していけば良いと思う
具体的なイメージがないなら、それは問題外って感じになるが トランザクションとインデックスについて教えてください。
あるトランザクションAで InnoDB のテーブルに行の追加削除を行っている最中、別のトランザクションBでそのテーブルを参照したときに古い内容が参照できている時、
トランザクションBではそのテーブルに張られたインデックスは使えるのでしょうか。
また少し違う質問ですが、
そのテーブルはレコード数が非常に多くインデックスの更新にも結構時間がかかるのですが、そのようにインデックスが更新されてる最中に別のトランザクションのそのインデックスを使うような参照はどうなりますか。
更新が終わるまで待たされるんですかね? 実験してみたところだと、あるトランザクションでインデックスが更新されても、別のトランザクションでそのインデックスは使われるようですね。
ただ、ちょっと遅いみたいです。
インデックスが無い状態で 20秒かかる集計はインデックスがあると 2秒で終わりますが、別トランザクションでインデックスが更新されると 3.5秒かかるようになります。
トランザクションを抜けてバージョンが揃うと、また 2秒で終わるようになる模様。
あと、インデックスは更新が完了するまで使用は待たされるっぽいですね。
複数インデックスが張られてる場合は、使おうとしてるインデックスの更新が完了した段階で使えるようです。 >>461
>トランザクションBではそのテーブルに張られたインデックスは使えるのでしょうか。
使える
>更新が終わるまで待たされるんですかね?
待たされない
もしインデックスの更新というのがDROP後のCREATE INDEXのことを指してるなら
Online DDLのやり方を調べれば良い >>462
遅くなるのはインデックスだけでなくデータのあるテーブル(クラスターインデックス)のほうも見て
undo logを使って古いバージョンのデータを持ってこないといけないから MySQL8.0.18から最新の8.0.21へバージョンアップ後、
動作確認が取れたので8.0.18へバージョンを下げたらsystemctl start mysqlで起動しなくなった。
同じ人居ますか? Mysql 5.7 CentOS7
本番系 Master-Slaveの2台構成、グローバルトランザクションID有効
開発系 シングル構成、グローバルトランザクションID無効
この時に、本番系で取得したmysqldumpのファイルを開発系に入れようとするとgtid_mode=onにしろと叱られます
諸事情で設定変更できないので、mysqlクライアントの設定で回避する、またはダンプファイルを修正して回避する方法ってないでしょうか テーブルが破損したんで、repqir tableってやりました
これで復旧したテーブルは元の正常な状態になっていることが保証されているものなのでしょうか? win10にmysql8入れたんですがmysql shellで見ると文字コードがなんかおかしい症状あれなんでしょう? 文字コードがおかしいと思うならデータ自体のエンコーディングと表示に使ってるエンコーディングを確認しろ mysql.sys を消してしまいました...
あれ消すとどうなるんですか?? 8がGAになってからもうすぐ3年だけど、8.1?9?の話って全く出てこないな
次期バージョンはどうなってんの? >>476
オラクルに見捨てられたって心配にならん? >>477
ならんよ ついこないだ23でたし、OCIでも使える新しいストレージエンジンも出たし むしろオラクル社が仕切るようになって、まともに進化してるよね。 8系出たときはやばいバグだらけだったけど今は少しマシ dumpについて2つ質問です
1.dumpの際に別テーブルの条件を使ってdump対象を絞ることはできますか?
例:従業員テーブルをdumpする際月給テーブルの給料が30万円以上の従業員のみdump
2.dumpの際にIllegal mix of collationが発生しているのですが、dump自体は成功しているようです
このエラーはどんな影響がありどう対応可能でしょうか?
mysql 8.0.13 wordpressが動いているLAMP環境でmysqltunerをすると
クエリーキャッシュを無効にせよと出るのですが、
クエリーキャッシュって無いよりあったほうが良いのにどうしてこのように判定されてしまうのでしょうか?
それにも関わらず query_cache_size (> 64M) と出ているのはどういう意味なのでしょうか?
設定している値
query_cache_type=1
query_cache_size=64M
query_cache_limit=1M
----- Recommendations------
query_cache_size (=0)
query_cache_type (=0)
query_cache_size (> 64M) いや逆に、クエリキャッシュがあったほうがいいと思うのはなぜ?
個人的にもあてにしないし、そんなメモリがあればほかに使う。
だが、自分であったほうがいいと思うなら、つけとけばええんちゃう? 更新多いテーブル/DBだとクエリキャッシュなんて効くこと全く無いし有効にしたことないな。
レガシーな機能だしさっさと無効にしたほうが良い。 >それにも関わらず query_cache_size (> 64M) と出ているのはどういう意味なのでしょうか?
これはある種のバグだと思うけどな mysqlのクエリキャッシュの実装はいろいろと問題が多くて大半のケースで無効にしたほうがよい
実装の問題に取り組むのを諦めたから8.0では機能自体が削除された
有効にすることでデメリットをメリットが上回るケースもあるにはあるけど
その判断をするためにはクエリキャッシュがネガティブな影響を与えるケースに該当するかどうかを
一つ一つ全部調べた上にキャッシュ利用有無によるパフォーマンスの差をクエリ別に計測して
管理負荷やDeprecatedな事も加味しないといけない
つまり、その手間を書けるくらいなら他のところでチューニングしたほうが効率がいいってこと MySQLはファンクションの仕様も辻褄が合わなくなっているし、トランザクション導入時の仕様が曖昧すぎるんだよな。 クエリキャッシュを無効にして1週間、
読み取り線用のwordpressは特に何も変わっていないようです。
mysqltunerの
[OK] InnoDB Read buffer efficiency: 99.99% (35003253 hits/ 35005219 total)
[!!] InnoDB Write Log efficiency: 19989.88% (120539 hits/ 603 total)
上はキャッシュみたいなものが効いていると考えて良いのでしょうか?
下は何でしょう、警告みたいな感じですが20000%とは凄い感じです。 >>488
別に無視してても問題ないように読めるな。
- IHMO, innodb_buffer_pool_size is the main parameter having the greatest impact on this ratio.
- In fact, InnoDb write Log Effiency is not a major tuning items regarding innodb log file size and innodb buffer pool size.
https://github.com/major/MySQLTuner-perl/issues/291 mariadb 10.5をcentos7に入れて
mysql_secure_installationでrootパスワードを変更
#mysql
だけで入れてしまうのが不安なんだけど
一般ユーザでは $mysql -uroot -pで無いと入れないので安心したけどそういう仕様?
ソケット接続はnoにしてます rootがmysqlプロセスをkillできることについてはどう思うのかな?w >>495
なんとも思わないけど、どういう主張?
実際どこまでやるかはともかく特定の権限だけを持つアカウントを作って使い分けるなんて当たり前の話だと思うけど。 ありゃ?
今、コマンドだけ打ったら入れなくなったわ。
# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
何度か同じ経験あるからインストール直後はソケットファイルが作られて通るみたい。 root権限ないレンタルサーバーでMySQL のバージョン上げる事ってできんよね? 提供されているバージョン以外を使うにはインストール権限がないと無理だろう ライセンスに関して
社内システムで外部に公開してない様なシステムはCommunity EditionでOKだよね?
無料でシステム構築したいから c++はboostお手本に真似すればだいたいうまくいくけど
SQLのお手本ってどこにあるの?
Table 名でフラグ判定するような変なルールでTable量産したら速くなったけど
読めないからわけわからん Table名が
(主要要素を現すアルファベット1文字)(特性を現す数字)(補助属性を表すアルファベット小文字1文字)
みたいな
Q12nH3k
という感じのTable大量に作ってTable名の文字列処理がメインみたいな変なことになってる それはもう、SQLはぜんぜん関係ないやろ!w
まあ、速くなったんならええやん? Table名なんて普通のユーザーが操作するわけじゃないから構わないかも知れないが
ちゃんとドキュメント残して置かないと、引き継ぐ奴が死ぬかも知れん 属性の検索がselectでできない
しかし全部のデータを1つのTableに入れると遅くて使えない >>505
おれもそういうのは嫌いじゃないが、大体データの種別毎に xxx1 xxx2 みたいな種別コードが付くくらいに留めてる。
テーブルが小さくなってインデックスの更新も速くて悪くないと思うが、そこまで細分化した構造はメンテが面倒そうねw
まあうまく合えばパーティションを使う所かもしれない。 >>501
外部公開でも商用利益得る様なシステムで無ければCommunity Editionで良い 外部公開しない社内イントラシステムではCommunity Editionで良い >>515
これ分かり易いね
これで十分理解出来る 成果物(≠サービス)を利用する者は、ソースを利用する権利もあわせ持つ、というだけなのに。。。 外部公開してるECサイト運営のDB部分はMySQL Standard Edition
公開しないイントラネットのDB部分はCommunity Edition
これで安くOracleのサポート受けながら運営出来る 一人だけドリンクバーを注文して、連れ全員でドリンクバー飲みまくるタイプ? >>520
わざわざシステム一部のECサイト運営の為にDB全体を商用ライセンスにする必要無いよ
適材適所だから 理論上て何だよw
Oracleを騙してサポート契約してないDBのサポートを受けるなら
見つかりにくいというだけでライセンス違反だから >>523
サポート受けるのは商用ライセンス部分だけだよ
だから問題無い
Community Editionの部分は元からサポート無いでしょ >>519
サイトシステムを外販しなければGPLで可。
公式サポートが欲しいならMySQLなんか選ぶな! >>524
それなら「サポートを受けたい箇所はMySQL Standard Edition」とでも書けばいいだけ
サイトを外部公開するかどうかとサポートが必要かどうかは関係ないだろ >>525
ECサイトで売上上げてるのに商用ライセンス不要なのか? 不要だよ
「商用ライセンス」という呼び方が良くない システムそのものを売り物にしたいときにライセンスがいるじゃなかった? ライセンスめんどくさいならPostgres でいいかなあ
そんな速度違わないし >>527
GPLの概説でええから読め!
「利益」「売上」みたいな言葉は一切出てこんから。 >>530
PostgreSQLは無尽蔵にレコード増えるからダメだよ >>529
受託開発する場合どうなるの?
商用で開発して納品はCommunity Editionで納品すんの? Postgresは無尽蔵にレコード増えるとか言ってるやつも
サポート無しでDBMSを運用すべきじゃないので商用ライセンスが必要 バイナリログが無限増殖するのってPostgresも同じなの?
設定変えるだけでいけるとは思うけど >>537
一般的な受託開発は開発したソフトウェアを顧客にライセンス供与して使わせるわけじゃないからOEMライセンスは必要ない
ライセンス供与して使わせる自社パッケージがMySQLを使ってる場合にライセンスをGPLにしたくなければ必要 VB.NETからMySQLにアクセスしてシステム構築を予定してるが
単純にMySQL Connector使って良いのだろうか?
ADO.NETバージョンとODBCバージョンとどっちが良いのだろうか? 基本的に社内運用システムではMySQLで問題無い
BSDライセンスのPostgreSQLの方が何も考え無くて良いが物理レコードの保持仕方がOracle,MySQLと違う >>539
じゃ受託開発はCommunity EditionでやってCommunity Editionのまま納品して良いんだね? >>544
受託元がパッケージ化して売り物にしないならCommunity Editionで良いんだよね? >>543
そりゃだめだろ
なんでMySQLまで納品しようとするの? >>546
ああ、なるほど
現場でMySQLでセットアップすれば良いんだな セットアップをどこでやるかの問題じゃないぞ
「うちはそんなライセンス契約に同意した覚えはない」
「君たちが勝手に非商用版をインストールしたんだから責任は君たちにある」
てなる
費用が発生しなくても有償のDBMS使うのと同じ線引が必要
ビジネス取引の一般常識なので上司に聞くといい >>548
非商用版を使う同意を得てるかどうかか、、
GPLだからソース公開する必要は無いよな
受託元で使う社内システムだし >>549
同意というか、その前のちゃんとした話ができてんのかね?
受託ならとか社内ならとかヘンに「ケース」にして決めつけずに、先方と理屈を共有したほうが。
なお、受託元には、ふつうにアクセスできる形でソースを公開(提供)する必要はあるぞ。 >>550
>>同意というか、その前のちゃんとした話ができてんのかね?
一応、出来てる
>>なお、受託元には、ふつうにアクセスできる形でソースを公開(提供)する必要はあるぞ。
そのソースを公開したく無ければ商用版にする必要有るって事ですか、、 >>550
受託元は受託してる側を指す言葉だと思うんだが
委託元 or 発注元のことを言ってる? あー。
なんか落ち着かないな、と我ながら思ってた。w
受託はあんまり先とか元とか言わんよな。
× 受託元
○ 発注元、納品先 発注元がソース公開したくない→商用ライセンス購入
発注元がソース公開しても良い→Community EditionでOK 定期的にそのゴミみたいな増田を根拠にあげるのやめろよ ライセンスを理解できない情弱は金払えってこと
そこまでしてMySQLにこだわる必要は全くないんだが
ペチパーには他の選択肢がないんだろうな PostgreSQLとMySQL組み合わせて使う方が良いかもね
MySQLの商用ライセンス使うかの基準はソース公開するかしないかになる >>559
× ソース公開
○ 納品時にソースも提供
MySQL 系で「ソース公開」は、言葉が強すぎて、あんまりよろしくないな。
まともに理解できないヤツばっかりやし。 https://sp.ch.nicovideo.jp/nie/blomaga/ar575121
このサイトの方が分かり易い
*外部に公開し、対価を得る目的でMySQLを利用したシステムを公開する場合、ライセンス料が必要
Webシステムで対価得る場合は、これに当たる >>562
めちゃくちゃ間違えてるが
これに沿っておけばライセンス違反になることはないだろうな >>563
MySQL作ったシステム全体で対価得る場合だからな
一般企業のWebシステムはGPLに沿ってソース公開してればCommunity Editionで良い
そのソース公開(主に社員)が嫌なら一番安いStandard Edition買っておけば良い >>564
GPLは営利・非営利関係ないし
自社システムのソースを社員に公開する義務もない
その前にお前はライセンスとは何かを理解してないから
社内・社外でライセンスの話はしないほうがいいぞ >>564
同一法人内ならいらんやろ。
社員が社内でどうするつもりや?w >>562
>>*外部に公開し、対価を得る目的でMySQLを利用したシステムを公開する場合、ライセンス料が必要
Webシステムパッケージの事だよな 結論
GPLを理解できないやつにCommunity Editionの選択肢はない
Postgresにするか商用ライセンスを買え 基本的にCommunity Editionで良いよ
ECシステムで使っててもGPLには売上上げてるとか無関係 なんだよ「Community Editionで良い」ってw
そんなんケースバイケースだろ https://openstandia.jp/oss_info/mysql/
基本的に社内システムやクラウドコンピューティングのインフラで使うならCommunity Editionで良い >>572
バックエンドにMySQLを利用するソフトウェアをGPL以外のライセンスで頒布する、または、GPLライセンス使用が認められない状況下でMySQLを使用する場合に商用ライセンスが必要
つまりはソース公開したく無い場合か出来ない場合だけだろ >>575
理解できてないところを指摘しなければ意味がない。
要は、ただの嫌がらせなんやろ?w >>562で良いよ
怪しければStandard Editionにすれば良い >>577
GPLには、対価がどうとかまったく関係ない。 >>578
GPLは対価関係無い
>>562の外部に公開し、対価を得る目的でMySQLを利用したシステムを公開する場合、ライセンス料が必要
は間違い >>579
とりあえずCommunity Editionで実行してOracleに確認→商用ライセンス必要ならStandard Editionに変更すりゃええ >>580
> Oracleに確認
ボッタクリ商店に聞いたら、そりゃあ払う方向に答えるやろ。w
情弱が損するパターン。 オラクルは「商用ライセンスは不要」とは絶対に回答しない
それすら分からないやつはMySQL使ったらダメだって >>584
さすがに「絶対」てこともないやろ。
どこをどう考えてもGPLでいいときは商用ライセンスを推してこんはず。
サポートを売ってくるかもやが。w >どこをどう考えてもGPLでいいとき
結構厳しい条件にならないか >>585
>どこをどう考えても
まさかタダでやってくれるとか思ってないよね? 導入前に入念にOracleに確認する必要有る
まあ、そこで商用ライセンスに誘導される可能性は高いがw
基本的にGPL適用ならCommunity Editionで良い >>586
MySQL の使われかたを考えたら、むしろGPLで充分なほうが多そうだがなあ。 >>588
>基本的にGPL適用ならCommunity Editionで良い
「基本的に」じゃだめなんだよ
「完全に」GPLに従ってないとライセンス違反
細かい例外もすべてチェックしてそれが厳守され続けることを担保しないといけない
もちろんOracleはそんな相談にはのってくれない >>590
>>もちろんOracleはそんな相談にはのってくれない
それが問題
通常はOracleがテキパキ答えてくれるモノと思ってるからなあ Oracleに相談しないとGPLv2に準拠してるかどうかを判断できないようなやつは
Community Edition使う資格ないから https://cloudear.jp/blog/?p=896
コピーレフトは商用利用には使えない?よくある勘違い
答えはノーです。
Webサービスだったらユーザー全員にソースコード公開しなくちゃいけないのでは?
答えはノーです。
ソースコードを公開する義務があるのはソフトウェア自体の配布先に対してのみです。WebサービスのユーザーはたしかにWebサービスを利用していますが、ソフトウェアはサーバーにしかなく、ユーザーにソフトウェアを配布しているわけではないからです。 >>595
AWS以外でMySQLを使いたいけども以下のような要件がある場合はライセンス料を支払うしかないと思いますね。
・サポートを受けたい
・ナレッジやツールが使いたい
・責任をOracleに(ry >>596
「ライセンス」ではなく、「サポート」を買うべき。 >>597
>>サポートを買うべき
そういう場合、商用版が必要になる どうしてもOracleのサポートが欲しければ、やな。
大金に見合うレベルなんか?
それに、「サポート」を売ってるところはほかにもあるやろ。 >>599
Standard Editionなら24万円 >>595
>Webサービスだったらユーザー全員にソースコード公開しなくちゃいけないのでは?
>答えはノーです。
これは正しいが・・・
Webサービスだったらユーザーにソースコードを公開しなくてもいい?
答えはノーです。
公開しなくてもいい場合もあれば公開しなければいけない場合もあります。
よくある勘違い >>601
詭弁。
Webサービスかどうかは関係ないが、そっちを強調するのは悪意ある誘導。 あんまり強調している様な印象は受けないけどな
そう受けとる人もいるって事か >GPL ライセンスのライブラリを使って業務アプリケーションを完成させたとします。するとその業務アプリケーションは GPL ライセンスとなります
これもよくある勘違い 本家のサイトを見ればいいのに
間違いだらけの個人の意見が書いてあるサイトを見て
それが正しいと思っちゃう人たちって何なんだろうね https://i.imgur.com/LFBhs7W.png
このようなデータから火の攻撃UPが2つ以上ついてるデータを選ぶにはどうすればいいですか?
なるべく下記のような総当たり的な記述は避けたいです
(属性1="火" and 効果1="攻撃UP" and 属性2="火" and 効果2="攻撃UP") or ... or (属性3="火" and 効果3="攻撃UP" and 属性1="火" and 効果1="攻撃UP") >>606
MySQLには他のDBのようなpivot系の関数がないのでSQLだけでやるなら自分でpivot/unpivotをやるしかない
DB設計を考え直したほうがいいような
SELECT 番号, 属性, 効果, count(*) 件数
FROM (
SELECT 番号, 属性1 属性, 効果1 効果 from スキル効果
union all
SELECT 番号, 属性2 属性, 効果2 効果 from スキル効果
union all
SELECT 番号, 属性3 属性, 効果3 効果 from スキル効果
) unpivoted
WHERE 属性 = '火' AND 効果 = '攻撃UP'
GROUP BY 番号, 属性, 効果
HAVING count(*) > 1 CASE式でがんばった場合
SELECT *
FROM スキル効果
GROUP BY id
HAVING SUM(
CASE 属性1 WHEN '火' THEN
CASE 効果1 WHEN '攻撃UP' THEN 1 ELSE 0 END
ELSE 0 END
+ CASE 属性2 WHEN '火' THEN
CASE 効果2 WHEN '攻撃UP' THEN 1 ELSE 0 END
ELSE 0 END
+ CASE 属性3 WHEN '火' THEN
CASE 効果3 WHEN '攻撃UP' THEN 1 ELSE 0 END
ELSE 0 END
) > 1
しんどいな >>606
正規化して、別のテーブルに分離する。
それから、SELECT COUNT() GROUP BYする。 >>606
もう見てないかな
CASE WHEN (属性1, 効果1) = (‘火’, ‘攻撃UP’) THEN 1 ELSE 0 END +
CASE WHEN (属性2, 効果2) = (‘火’, ‘攻撃UP’) THEN 1 ELSE 0 END +
CASE WHEN (属性3, 効果3) = (‘火’, ‘攻撃UP’) THEN 1 ELSE 0 END >= 2 >>611
ANDの代わりに(属性1, 効果1) = (‘火’, ‘攻撃UP’)って書けるの標準? /var の一貫性エラーみたいの出て
fsck -y した後のデータベースの中見は
どのくらい信用できるものでしょうか?
こういうことないようにバックアップするのが
いいのでしょうけどしてなかった OracleがOracle→MySQL移行を進めてるんだろ 移行はすすめてない
Oracleの売れ行きが右肩下がりだから
JavaやMySQLで少しでもお金を取って売上の穴埋めをしたいだけ MySQLに有償サポートが必須な理由 => 金払ってくれないとオラクルが困るから >>618
内容自体は至極全うだと思うので、宣伝として損をしてるような。
「必須」じゃなくて、「推奨」とか「するべき」とかでよかったのに。 バックエンドならCommunity editionで良いと言ってる人も
タイアップ広告だということに気づかない人も
どっちもどっち
「うわっ… 私のリテラシー、低すぎ…?」 >>625
おまえの「リテラシー」が一番低いと思う。w >>622
ECサイトバックエンドはCommunity EditionでOKって事か
商用バージョンが必要だと思ったので良かった >>627
ECサイトかどうか、バックエンドかどうか、はライセンスに一切関係ない。
やりかたによって、セーフならセーフ、アウトならアウト。 推奨NGワード :「Community Editionで良い」 商用ライセンスバージョンとCommunity Edition組み合わせて使う方法も有る
サポート受けれるし そもそもライセンス違反を判断するのは誰?
オラクル? オラクルから提訴されない限り裁判沙汰にはならないって事か 主キーをUnix時間にしたい
しかし同じ時期に重複レコードあるせいでできない
時間が主キーじゃないから時間で検索するの遅くて仕方ない >>638
PKしか知らんのか?
ふつうにインデックスをつけたらええやろ。 UPDATEではなく、DELETE-INSERTを使うメリットは何でしょうか? >>642
AUTO_INCREMENTなカラムについて、新規にID値が割り当てられる。 AUTO_INCREMENTに限らずPKを振り直す場合に
元のレコードをDELETEするか? Long Long int がユニークキーだが
Long intが格納できる桁の最大なので
Long int 2列にユニークキーを格納してる
しかし2列合わせユニークキーでなおかつprimary key扱いにできるとうれしいやり方がわからない MySQLって、PRIMARY KEY(KEY_HIGH,KEY_LOG)のように2つのカラムのPK指定をTABLE CREATEに書くだけじゃダメなんか? 別に問題ないよ
うまくいかないなら再現可能なSQLを出してくれ 初心者です。質問させてください
2つのテーブルから重複したデータを抽出するにはどうしたらいいでしょうか?
先輩方ご教授お願いします。 >>650
まず最初に「何をもって重複と呼ぶのか」(重複の定義)を明確にすることからはじめましょう id と timestamp は単調増加の関係にあって
idに重複はないが timestampには重複がある
t1< timestamp < t2
のselectを効率的にするには何も考えずにインデックスを張るしかないのか? >>655
t1< timestamp < t2 にid関係なくね?
idとtimestampの関係性をDBMSが管理してるならそれを有効活用したいみたいな話? タイムスタンプ項目を条件に検索している時点で変な設計。 >idとtimestampの関係性をDBMSが管理
それがインデックスさん >>663
ならば、>>661を説明して!w
異なるカラムとインデックスの関係性だぞ? >>664
timestamp列にインデックス張ればそのリーフノードにはPKのid列の値が含まれる
つまりどのtimestampの値がどのidに紐づくかをインデックスが管理してる >>655
クラスタ化インデックスを使って単調増加するカラムの検索を追加インデックスなしで高速に検索できないだろうか。という趣旨の質問だろうか >>666
それは論理の飛躍があるやろ。
結果としての相関関係と混乱してるとゆうか。 >>668
インデックスの仕組みを知らんかったんやな
勉強になってよかったじゃない id列もtimestamp列も更新可能なわけで
単調増加関数になることが保証されてるわけじゃない
仮に保証されてたとしてもインデックス無しでは
timestampからidを効率的に引けないから
結局インデックスを通して管理するか全スキャン >>665
x1 <= x2 なら f(x1) <= f(x2)となる関数fが単調増加
xがtimestampでf(x)がid そんな関数がもしもあれば、
timestampからidを一意に決められるって事になるよ タイムスタンプは一番精度が高くてもユニークにはならない。 精度が超高いと、単調増加とは限らんかもな。
マルチスレッドなら。 タイムスタンプ列にシステム日時を設定するという情報はどこにも書かれていないが? DB全く触ったことないから勉強がてら資格勉強したいんだけど、MySQL 5.7 Database Administratorって難しい?
どんくらい勉強したらええの? >>678
なぜマイナーなMySQLを選んだのか? マイナーだよ。新規のシステムでMySQL系が使われることはどんどん減っている。
MySQLからPostgreSQLへの移行が多くなっている。
Linux陣営が支持しているのはPostgreSQLで、オープンソースソフトウェアとしてのRDBMSは、PostgreSQLを中心に動いている。
MySQLは使えば使うほど、昔の安直な仕様を引きずっており、わかりやすいイメージとは異なる使いづらさが気になってしまう。
どのプラットフォームもMySQLには消極的。 いや、mysqlとか新規システムでも普通に使うだろ
aurora mysqlの方だけど
流石にエアプすぎる >>681
>MySQLからPostgreSQLへの移行が多くなっている。
詳しそうだから聞くけど、どこのシステム・企業での移行?
10件くらいは上げられでしょ? https://kurashigoto.hokkaido.jp/flexibleSearch/search.php?offset=0&limit=20&search=%E3%83%98%E3%83%AB%E3%82%B9%E5%AC%A2%E3%83%BB%E5%A3%B2%E6%98%A5%E5%A9%A6%E3%81%AE%E9%87%91%E5%9F%8E%E8%8B%B1%E9%87%8C%E3%81%95%E3%82%93%EF%BC%881984%EF%BC%8F3%EF%BC%8F21%E7%94%9F%EF%BC%89%E3%81%AE%E8%87%AA%E6%92%AE%E3%82%8A%E3%83%8C%E3%83%BC%E3%83%89%E5%85%AC%E9%96%8B%E4%B8%ADavgle
https://magazine.jp.square-enix.com/top/comics/?search=q&x=0&y=0&sword=%E3%83%98%E3%83%AB%E3%82%B9%E5%AC%A2%E3%83%BB%E5%A3%B2%E6%98%A5%E5%A9%A6%E3%81%AE%E9%87%91%E5%9F%8E%E8%8B%B1%E9%87%8C%E3%81%95%E3%82%93%EF%BC%881984%EF%BC%8F3%EF%BC%8F21%E7%94%9F%EF%BC%89%E3%81%AE%E8%87%AA%E6%92%AE%E3%82%8A%E3%83%8C%E3%83%BC%E3%83%89%E5%85%AC%E9%96%8B%E4%B8%ADavgle
https://miyagi.doctor-search.tv/search/hospital?dis=3000&Keyword=%E3%83%98%E3%83%AB%E3%82%B9%E5%AC%A2%E3%83%BB%E5%A3%B2%E6%98%A5%E5%A9%A6%E3%81%AE%E9%87%91%E5%9F%8E%E8%8B%B1%E9%87%8C%E3%81%95%E3%82%93%EF%BC%881984%EF%BC%8F3%EF%BC%8F21%E7%94%9F%EF%BC%89%E3%81%AE%E8%87%AA%E6%92%AE%E3%82%8A%E3%83%8C%E3%83%BC%E3%83%89%E5%85%AC%E9%96%8B%E4%B8%ADavgle
https://mtke-job.jp/list/keyword=%E3%83%98%E3%83%AB%E3%82%B9%E5%AC%A2%E3%83%BB%E5%A3%B2%E6%98%A5%E5%A9%A6%E3%81%AE%E9%87%91%E5%9F%8E%E8%8B%B1%E9%87%8C%E3%81%95%E3%82%93%EF%BC%881984%EF%BC%8F3%EF%BC%8F21%E7%94%9F%EF%BC%89%E3%81%AE%E8%87%AA%E6%92%AE%E3%82%8A%E3%83%8C%E3%83%BC%E3%83%89%E5%85%AC%E9%96%8B%E4%B8%ADavgle
https://news.dwango.jp/search/?s=%E3%83%98%E3%83%AB%E3%82%B9%E5%AC%A2%E3%83%BB%E5%A3%B2%E6%98%A5%E5%A9%A6%E3%81%AE%E9%87%91%E5%9F%8E%E8%8B%B1%E9%87%8C%E3%81%95%E3%82%93%EF%BC%881984%EF%BC%8F3%EF%BC%8F21%E7%94%9F%EF%BC%89%E3%81%AE%E8%87%AA%E6%92%AE%E3%82%8A%E3%83%8C%E3%83%BC%E3%83%89%E5%85%AC%E9%96%8B%E4%B8%ADavgle そろそろこれに回答して
DB全く触ったことないから勉強がてら資格勉強したいんだけど、MySQL 5.7 Database Administratorって難しい?
どんくらい勉強したらええの? MySQLを使っているとAWSでもMySQLを選ぶけど、MySQLを選択するメリットが思いつかない。
MySQLしか知らないか、初心者がMySQLを選んでいるかしかないと思う。
MySQLはエラーメッセージがひどいから初心者向けでも最悪だけど。 すこしなれたら、エラーなんかどうせあんまりでないんだから、へーきへーき!
それよりも、EXPLAINのわかりやすさのがたいせつ。 MySQLはシンタックスエラーとしか言わないポンコツ エラーメッセージのわかりやすさは大事だよな
DBMSに限らず提供側がUXにどの程度気を配ってるかの重要な指標 大量のデータをINSERTしたときAUTO_INCREMENTの次の開始値がずれるのって仕様なんかな
8000件いれたテーブルと10000件入れたテーブルの開始値がどちらも16384になってる
他のテーブルも2の倍数で指定されてるみたい >>697
処理速度を優先するために一気に上がる仕様になっている。 Windows上のクライアントツールってワークベンチが1番人気? MySQLはgrepコマンドよりも検索が遅いらしいですが
どうにかして速くする方法はありませんか? むしろgrepよりも速いDBなんかあんのかよ?w
全文検索したけりゃ転置インデックスでもはれ。 むしろgrepより遅いDBなんてあんのかよww
RDB理解してなさすぎw >>702
あ、いえ、全文検索じゃないです。
商品IDがキーになっている検索です。
likeみたいなものはないですね。 >>705
じゃあインデックスをはるだけやろ。
grepなんかよりもはるかに速いわ! >>707
不思議なことにインデックス貼ってるんですよ show create table テーブル名 と
実行しているSQL文を晒せ 論文出しておきますね。
これの7ページ、3.1 検索処理 に比較結果が載っています。
ユニケージ開発手法に基づく Unix ファイルシステムとシェルを用いたデータベースの構築と操作
https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=178874&file_id=1&file_no=1
> ユニケージにより構築されたデータベースは特段の高速化の工夫を施さずとも、
> MySQLより高速であることがわかった >>708
EXPLAINで、インデックスがホントに使われてるか確認しろ。
まさか、ストレージエンジンがヘンなのとか、レコード数がメチャ少ないとか、ドケチ設定にしてるとか、そういうDBに超不利な比較をやっとらんやろな? >>712
ちゃんと実行条件を揃えて計測しているようですよ
> 10^6件レコードのテーブルに対して実行し、timeコマンドによる実行時間を計測した。
> MySQLへのクエリ送信には、mysqlコマンドを使用した。
> ユニケージでは"商品ID"フィールドをキーとしてファイルをソートしておき 、
> MySQLでは同フィールドをプライマリキーとしてテーブルを作成した。
> mysqlコマンドはソケットインタフェースを経由する。ユニケージでも実行条件を
> 揃えるため、sshコマンドを利用してネットワーク越しに処理を実行して結果を取得した 実行条件を揃えてあるとは言いがたいな
これなら何の検索かけて無くても同じ速度出るだろ コレはワロス
何と何を比較した結果か全く理解してないのな
よくこんなんで論文とか書くわ 実行条件揃えたというなら、
このテーブルとファイルをこのまま使って
1000件の商品IDをランダムに検索かけて
その商品名を表示させてみ ユニケージはどこかでHadoopよりも速いって書いていた気がします
たぶんローカルでの検索 vs ネットワーク越しのHadoopサーバーからの検索でしょう
データ更新やデータ同期の話を全部すっ飛ばして
ローカル検索、しかもインデックスを使わない全件検索の比較しかしないで
速いと言っていただけな気がします。 ここで例としてあげられたロジックらしきものって
ファイルの先頭から条件を満たすレコードを抜き出して
計算し、表示しているだけだよ
シーケンシャルファイルのバッチ処理と同じ
しかも予めソートされているとなれば一気読み一気処理 参考文献
[1] UNIXという考え方・・・単にUNIXの考え方を書いてある本
[2] The Open Group Base ・・・ただのPOSIXの仕様
[3] 松田康之 川下からの(略)・・・ ズブズブの関係
http://www.shoninsha.co.jp/modules/computer3/2009/07/14/14/
[4] NYSOL・・・MCMD2: Mコマンドとは - NYSOL(ページののタイトル)
https://www.nysol.jp/mcmd2/jp/sect-whatis.html
> 大規模表構造データ(CSV)を高速に処理する目的で開発されたコマンド群である。
> ある大企業で実施された大規模システム開発プロジェクトにおいて
> 「松田康之氏」(上の人)が発案したものであり
大規模表構造データ(CSV)とはただのCSVのことのようである
https://www.nysol.jp/mcmd2/jp/sect-csv.html
> MCMDが処理する表構造データはFigure 2.5に例示されるような
> CSV(Comma Separated Values)フォーマットである
[5] 當仲 寛哲 ユニケージ原論・・・この論文書いた人
[6] POSIX中心主義・・・ユニケージの社員が言ってること
[7] ものづくりのための・・・同上
参考文献 なんや、マジメに相手してやって損したわ。。。
アホらし。 この場合はローカルかネットワーク越しかはほとんど関係ない
SQL見ればわかるやろ
RDB使ってこんな設計するやついたら殴り倒すわ VoicyとNFTアートとNFTゲームとDeFiとnoteに今すぐ参入したほうがいいぞ。
特にVoicyとNFTアートとDeFiはこれから伸びるだろうからおススメ
NFTアートとDeFiはこれから100倍規模の市場になるだろう! mysqlのストレージエンジンにmemoryってのがあるけど、これについて確認なんですけど
これって利用する場合起動のたびにcreate tableしてデータをinsertする、そして
シャットダウン時に更新されているならディスクに書き戻す必要があるって事だよね? やはり。使う状況を考えないといけないエンジンだなぁ。 そんな考えることでは。w
速度優先の小さいテーブルをテンポラリとかキャッシュとかで使いたいときだけ。 とある絞り込み条件での
・総件数
・特定の並び順での任意の範囲のレコード(1000件ある内の100〜200行目など)
の2つを取りたい場合ってどうやる?
同一の絞り込み条件のクエリ2回投げる? 適切にインデックスが張られてれば数数えるのは低コストだしね UNIQUE制約って、インデックスとしても機能すんだっけか 逆で、UNIQUE制約のためにはインデックスが必須なんちゃうかったっけ? 以下のようなデータがあるとします。
name|feature
バナナ|黄色
バナナ|甘い
みかん|オレンジ
みかん|甘い
「featureが黄色で甘い」=バナナを抽出したいのですが、
SELECT * FROM fruits WHERE feature IN('黄色','甘い')
としても、「みかん」まで抽出されてしまいます。
だからといって
SELECT * FROM fruits WHERE feature='黄色' AND feature='甘い'
だとヒットしません。
サブクエリを使う以外で、複数AND条件に一致するデータを抽出する方法はないでしょうか? バナナ1行返ればいいなら group by ~ having で
条件に合うものを count したり sum したり
2行欲しいならサブクエリ必要と思われ >>739
素直にサブクエリ使いなよ
考えるだけ無駄だし時間もかかる わかりました。そうします。お二人ともありがとうございました。 JOINでなんとかならんか?
最近使わないからすぐ出てこないけど。 カテゴリーが異なるものを同じカラムで扱うのは無理がある >>744
いや、それは解釈による。
プロパティだと思えば複数あって当然。 >みかん|オレンジ
は?ってなったわw
色のことね >>739
コスト的にはサブクエリと同じかもしれんがself joinでいけるやろ
SELECT * FROM fruits a INNER JOIN fruits b ON a.name = b.name
WHERE a.feature='黄色' AND b.feature='甘い'
もしくは
SELECT * FROM fruits a INNER JOIN fruits b ON a.name = b.name AND a.feature='黄色' AND b.feature='甘い' >>748
それでは検索したいものが3つ4つと増えた時に困る
プログラムで生成するのは余裕だろうが
あるいはgroup by使ってもいいけどサブクエリNGとした理由が何かだね >>749
> それでは検索したいものが3つ4つと増えた時に困る
それはサブクエリも似たようなもんやろ。 「featureが黄色」でname取得
「featureが甘い」でname取得
何れにも存在するname取得
これが簡単そう >>750
検索対象が増えるたびに結合数が増えてくんだが、、、
あとselect句のことも考えてあげて >>753
それはサブクエリも似たようなもんやろ。
4レスぶり2回目。 group by havingしたサブクエリの結果で
もう1回データ取ってくるんやろ
MySQLはgroup byされた任意の数の行を
列にピボットできる関数ないからね >>757
select * from fruits x where
(select count(*) from fruits y where
y.name = x.name and
y.feature in ('黄色', '甘い')) = 2; 結局、プログラム使えてDBの負荷下げるなら、
検索の数だけSQL実行するのが良いんじゃないか?
その方がシンプルだし、バグが発生しづらいだろ >>759
そんなサブクエリよりは結合のが速いんちゃうの?
マイちゃんマリアちゃんならとくに。
レコード数とかインデックスとかカーディナリティとかメモリの余裕とかにもよるかもしらんが。 ネタかもしれないがたまにはSQLを書いてみる。
SELECT * FROM fruits WHERE name='バナナ ' AND feature IN('黄色','甘い'); 妖しげなSQLで
SELECT name FROM (
SELECT distinct name, feature FROM fruits WHERE feature IN('黄色','甘い') GROUP BY name,feature) w
GROUP BY name HAVING COUNT(name) = 2; >>764
count(distinct feature) 使えばネストしなくていいよ >>765
考えたんですが、私の頭ではちょっと無理っぽい >>767
その前にname,feature には一意制約付いてないのかな
>>764 は付いてない可能性を考慮して書いたと思うが
select name from fruits
where feature in ('黄色', '甘い')
group by name
having count(distinct feature) = 2;
一意制約ついているなら count(*) でOK 739です。みなさん色々議論していただきありがとうございます。
まさに、>>768の書き方がシンプルで目的通りになりました!
サブクエリやプログラムで回す事を考えていましたが、
768のソースがわかりやすく、コストも少ないと思います。
本当に素晴らしいSQLをありがとうございました >>768
確かに、一意制約がないという前提で書いてました
質問者が書いてないことについては最悪を想定ですね 1秒に5回ぐらいのfloat x 5のデータ
最初の一年分をクエリするとすぐレスポンスあるのに
2年目以降で遅くなるの何故だ >>773
1. テーブル定義、インデックス定義、データ件数
2. 最初の1年分を取得するクエリ、2年目以降を取得するクエリ
3. それぞれのクエリのEXPLAIN ANALYZEの結果
4. MySQLバージョン、稼働環境
遅い原因を確認するためには1~3の情報は最低必要
ただ1レコードfloat(4バイト) x 5カラムで
秒間5件の1年分を全部取得するようなクエリなら
容量が大きいので遅くてもなんら不思議はない CREATE TABLE mytable (`id` bigint unsigned NOT NULL AUTO_INCREMENT, `timestamp` bigint unsigned , `v1` float , `v2` float, `v3` float, `v4` float , PRIMARY KEY(`id`)) ;
select * from mytable where timestamp <= 1645082937 limit 30000 ぱっと見ですまんが、timestampにもインデックス張ってみたら >>776
パッと見でもそうでなくても、絶対そうやろ。w timestampという名前のカラムのデータ型がbigintというあたりでネタだと気づけよ! 犬のマイクロチップ義務化法。
これがスマートダストサイズになって痛みもない、
ってことになったら人間にも適用しようとするんだろうね。
://twitter.com/MIYAKE_YOHEI/status/1254403308137009152?s=20
新型コロナワクチン接種証明書のインプラント 希望者に埋め込み スウェーデン
10〜15年後にはマイクロチップを埋め込んだ人が一般的になる。
://twitter.com/amanomotoyasu/status/1473396195355951104?s=20
山梨の株式会社「PATIC TRUST」のホームページに、現在は削除されていますが、
プロジェクトの目的はRFIDマイクロチップを全ての人に埋め込み、
国際的なデジタル認証システムを構築することであると書かれています。
://twitter.com/shantiphula/status/1313095383271174150?s=20
https://twitter.com/5chan_nel (5ch newer account) 早く人間用マイクロチップほしいよね
家のカギとSuicaを手の甲に内蔵したいわ >>781
mariadbのほうが高機能
mysqlはお金を払うとサポートが受けられる 以下のような2つのテーブルを紐付けたい場合にはどう書けばよいのでしょうか?
具体的には、Prodテーブルのフィールドをshopsテーブルのnameを共通で紐付けたいです。
* shop_id => Shops.name
* send_shop_id => Shops.name
Prodテーブル
id name shop_id send_shop_id
1 Mac 4 1
2 MacBook 3 2
3 MacBookAir 2 3
4 iPhone 1 4
Shops
id name
1 北海道
2 東京
3 大阪
4 沖縄
期待する結果
Prod.id Prod.name Shop.name as shop_id Shops.name as send_shop_id
1 Mac 沖縄 北海道
2 MacBook 大阪 東京
3 MacBookAir 東京 大阪
4 iPhone 北海道 沖縄 以下のような2つのテーブルを紐付けたい場合にはどう書けばよいのでしょうか?
具体的には、Prodテーブルのフィールドをshopsテーブルのnameを共通で紐付けたいです。
* shop_id => Shops.name
* send_shop_id => Shops.name
Prodテーブル
id name shop_id send_shop_id
1 Mac 4 1
2 MacBook 3 2
3 MacBookAir 2 3
4 iPhone 1 4
Shops
id name
1 北海道
2 東京
3 大阪
4 沖縄
期待する結果
Prod.id Prod.name Shop.name as shop_id Shops.name as send_shop_id
1 Mac 沖縄 北海道
2 MacBook 大阪 東京
3 MacBookAir 東京 大阪
4 iPhone 北海道 沖縄 >>786
2回ジョインして
from Prod p
join Shop s1 on p.shop_id = s1.id
join Shop s2 on p.send_shop_id = s2.id >>787
ありがとうございます!
助かりました! >>789
ジョインジョインで解決しました!
ありがとうございます! 基本的にOracleでライセンス買ってるとMySQLでも商用ライセンス買う必要有るの? >>791
ああ前提がOracle→MySQLへのマイグレーション考えてます そんなことは無いです
普通にOracle捨ててMariaDBにしました
死ぬほどつらかったけど楽勝でした デストリはどこもかしこもmiria使ってるな
ユーザーにとってはどっちでも良いんだけどね indexの数値(float)を間違って10大きな数値にしてしまった
一括で10減らすコマンドないでしょうか >>797
1レコード単位でしかUPDATEできないと思っているのなら、何もしなくていい。 >>797
無いので、全レコードをループして順に10で割っていくしかない >>797
ここで言うindexって何?
CREATE INDEXで作るインデックスのことなの? bool扱うと tinyint(1) になるけど bit(1) がいいんじゃね?って記事がいくつかあるけど、実際のところどうなの? 実行効率とかインデックスとか考えたら、単独カラムのほうがええやろ。
プログラム言語の真偽型がふつう1バイャgになってるのbニ同じ。
ビット多数を扱うときは、自分でビット演算したらええしな。 >>805
何だこの記事
trueを1とするアホは放置しろ 間違えて別のスレッドに書き込んでしまいました…
すいません。
https://wandbox.org/permlink/TWt0aMILwOZlhQwu
front-page.phpのPHPとarchive.phpのSQLをつなげたいのですが、コンテンツが何も表示されません。
どうすればよいのでしょうか…
※参考サイト
https://cosybench.com/customize-wp-archives-look/ >>811
だから真でも偽でもないだろ
お前なにが問題かわかって言ってんのか?
ちゃんと考えて、知識を知恵に変えていけ NULLかNULLでないかというのは、
真偽判定にはならないのかな?
何と呼べば良いのだろうか 8.0.29ってどこか注意したほうがいいことある? Oracleのマテリライズドビューをスナップショットに移行する方法を教えて下さい >>820
マテリライズドビューとスナップショットはほぼ同じものを指していて、Oracleの古いバージョンがスナップショット、OracleDBの10gあたりからがマテリライズドビュー。 >>822
>>820はOracleのマテリアライズドビューを
MySQLのスナップショットで代用する方法を聞いてるみたいよw 今はスプレッドシートのデータでDBは使ったことないのですが、
day name group_id gold
8/1 田中 3 \100
8/1 佐藤 3 \200
8/1 鈴木 2 \300
8/1 山田 2 \400
8/2 田中 3 \500
8/2 佐藤 3 \400
8/2 鈴木 2 \300
このデータを以下のようにグループごとで表にしたい場合、
SQLでなんとかなるものですか? PHP等と組み合わせないと整形できないのでしょうか?
グループ3
田中 佐藤
8/1 \100 \200
8/2 \500 \400 >>824
SQLだけでできなくはないが一般的にはやるべきではない
アプリ側で整形したほうがいい
特にMySQLはpivot的なものをビルトインではサポートしないのでPostgresやSQL Server等に比べると面倒
Pandas的なライブラリ使えば簡単にできる >>824
スプレッドシートで初めからそういう形式にしとけばいい話じゃないの?
上の表にした理由がわからない。 ありがとうございます。
前任者が作った元シートはもっとおかしな並びでピボットテーブル使える状態になく、
最終的にグループごとのシートに参照でうつされています。
そんな奇抜なやり方をしているスプレッドシートですが、
シートコピー等を行うときに関数が稼働しなくなる仕様?バグ?を抱えております。
一度セルを消して同じ関数を手動コピーしないと動作しないのです。
正常かチェックする作業が困難になりつつあります。
おおもとをたどると最初に書いたような形式の多次元配列でデータが取得できます。
前任者はコレを目視して個人単位でシートに転記してからグループシート...という作業でした。 多次元配列で取得できるのですが、
毎回WebAPIでアクセスすると負荷が凄いので、
まずコレをこのままレンタルサーバ借りて
DBに突っ込んだらいいのではと考えました。
そのあといつもの表のように表示したいと思ったのです。 >>828
>おおもとをたどると最初に書いたような形式の多次元配列でデータが取得できます。
それをピボットすれば欲しい形式に出来るでしょ
んでそれをマクロ化でもすれば自動化できるよ
Excelとかのスプレッドシートアプリよりも
スクリプトでやったほうが自動化は捗るとは思うけど そもそもデータベースという言葉をリレーショナルデータベースという狭い意味で使っているからふざけたような説明になっている。 >>828
あなた単に数式がわからないだけでしょうに。
まずはGoogleスプレッドシート、Excelの勉強をしましょう! 日付とeメールのカラムからなるテーブルでeメールにユニーク制約をかけている。
日付は重複する場合があるのでユニーク制約をかけたりプライマリーキーにはできない。
このテーブルを日付でパーティショニングすることってできますか?
普通の方法でやると
A UNIQUE INDEX must include all columns in the table's partitioning function
ってエラーが出ます。 >>833
一意性制約となんの関係があると思っているのか?
どんなSQLでやろうとしたのか書けよ! >>835
と思うだろ
でもMySQLでは関係あるんだよ Eメールだけのユニーク制約のまま、日付でパーティショニングは不可
Eメール+日付のユニーク制約に変更すれば、日付でパーティショニングが可能
ユニーク制約の意味がなくなるけどね >>837
MySQLとMariaDBはテーブルとインデックスの情報が内部で分離されていないことを忘れていた。
テーブルにインデックスがあるんじゃなくて、テーブルとインデックスが融合してしまっているクソ仕様だったw では君が融合していないDBMSを是非作ってくれたまえ MySQLは管理する立場だと、内部の作りが悪くて、テーブルの作り直しをしないと解決しない問題が多い。 >>833です。
MySQLではできないとのことで諦めました。
他のDBを検討してみます。
レスくれた人ありがとうございました。 テーブルをパーティショニングして超高速ドロップできるDBて、MySQL/MariaDB以外にあるの? DMLはSELECT/INSERT/UPDATE/DELETEのこと
DMLと対をなすのはDDLでCREATE/ALTER/DROP/TRUNCATEあたりのこと
MDLはMySQLの文脈ならMetadata Lockingのこと
https://dev.mysql.com/doc/refman/8.0/en/metadata-locking.html DMLとDDLは非常にわかりやすいけどMDLがよくわからん… sqlファイルにあるバインド変数を
シェルから渡して実行する方法ってありますか? ローカル環境のpythonで更新したmysqlを外部サーバーで読み込みしたいのですがこのような運用はmysqlで可能でしょうか? LIKE比較文字列の中のバックスラッシュの扱いが全くわからず、教えてください。
この↓ページの注記の中の例が俺の環境では挙動が一致しません。
12.8.1 文字列比較関数および演算子
https://man.plustar.jp/mysql/string-comparison-functions.html
C: 0
C:\ 1
C:\Programs 0
C:\Programs\ 1
俺の環境だとバックスラッシュ2本も4本もマッチせず
SELECT filename, filename LIKE '%\\' FROM t1;
SELECT filename, filename LIKE '%\\\\' FROM t1;
6本にして初めて結果が注記と一致する。
SELECT filename, filename LIKE '%\\\\\\' FROM t1;
(バックスラッシュを全角にしてます)
なぜ?ちなみにMySQL-5.7 >>862
コレーションがutf8_unicode_ci のときのバックスラッシュの挙動がおかしいのは
MySQLのバグっぽいということが分かったので、とりあえず自己解決しました。 制御記号にも使われる記号は、SQLでもどんなプログラミング言語でも、そのまま文字として文字に含めても制御記号と認識されてしまうのが普通です。
だからそれは制御記号ではないただの記号だと認識させるため、エスケープシーケンスを使って、ただの文字の記号だと認識させます。
UTF-8がOSの基本キャラクタセットでないUNIX、MacなどのUNIX系OS、Windowsなどは、バックスラッシュ、円マークは、エスケープをしていないと制御文字と判断します。
MySQLは特定のOSだけに作っているわけではないので、バックスラッシュがただの文字としてリテラル値に含まれると挙動が変わるのは、あたりまえです。 >>862
そのWebページにはこう書いてありますよ。
「注記
MySQL では文字列で C エスケープ構文 (改行文字を表す\n など) が使用されるため、LIKE 文字列で使用する\をダブルクリックする必要があります。
たとえば、\n を検索するには、\\n と指定します。 \を検索するには、\\\\として指定します。これは、バックスラッシュがパーサーによって一度だけ取り除かれ、
パターン一致が行われたときに再度取り除かれ、単一のバックスラッシュが照合対象のままになるためです。
例外: パターン文字列の末尾では、バックスラッシュを \\ と指定できます。
文字列の末尾では、エスケープの後ろに何もないため、バックスラッシュはそれ自体を表します。
テーブルに次の値が含まれると仮定します。」 仕様をしっかり説明しているのにどうしてバグだと批判するのかわからない。
たまたまエスケープしなくても問題なかったエンコーディングを使っていただけで、むしろエスケープという概念すらないのは怖ろしいな。 >>862
それWindowsなんだから、WindowsでわざわざUTF-8にして、バックスラッシュつまり円マークを文字として認識させたいというのが、SJIS、UTF-16、UTF-8、さらにMySQLでのUTF-8と非常に複雑な変換がかかる組み合わせで何も問題が起きないと思うのは、キャラクタセットの知識がなさすぎじゃないでしょうか? なんかさ、日本語のWindowsでバックスラッシュだと言っているのも気持ち悪い。
WindowsでUTF-8と使うときは、テキストファイルならBOM付きUTF-8でないとUTF-16と判断される。
OSのキャラクタセットがUTF-16、SJISにも関わらず、UTF-8で日本語混在の文字列、Windows内部形式も無視して、UTF-8としてバックスラッシュ、円マークの文字を探すというアクロバティックなことをやっていると自覚がないんだろうけど。 >>862
あなたキータの素人の記事を見て、それに根拠なくバグと書いてあるから、バグだと思ったんでしょ?
なんかキータみたいな素人のデタラメばかり書いてあるもの信じるの間抜けすぎる。
ちゃんと調べたやったよ。
バックスラッシュ(円マーク)の文字コードはアスキー文字で、アスキー文字を1バイトで表現するキャラクタセットでは、すべて同じ文字コード値。
UTF-8はさらにバックスラッシュ(円マーク)が文字コード違いで、2つ定義されている。
UTF-8を含めて他のキャラクタセットでも、バックスラッシュ(円マーク)の文字コードは「5C」で登録されている。
UTF-8はさらに文字コード「C2A5」にも同じバックスラッシュ(円マーク)を登録していて、バックスラッシュ(円マーク)の文字コードは2種類ある。
しかし、Windowsでバックスラッシュ(円マーク)を入力すると、Windowsは文字コード「5C」のバックスラッシュ(円マーク)しか入力できない仕様になっている。
UTF-8のみ存在するバックスラッシュ(円マーク)の二重定義の片方の文字コード「C2A5」は、Windowsでは「5C」のバックスラッシュ(円マーク)を探すので、utf8_general_ci では文字コード「C2A5」のバックスラッシュ(円マーク)を対象としていないため、見つからない。
繰り返すが、見た目は同じだが、UTF-8ではこの同じ文字を文字コード「C2A5」と文字コード違いで持っている。
ではなぜ utf8_unicode_ci のときだけ、想定通りいかないのかの理由は、utf8_unicode_ci はバックスラッシュに限らず、アルファベットの全角文字、半角文字、日本語のカタカナの全角文字、半角文字など、人間が見たら単に文字が違うが、意味は同じと判断できる曖昧検索し、同じ文字だけでなく、半角文字を指定しても全角文字までヒットする。
バックスラッシュの文字コードが2つあっても、Windowsでバックスラッシュを打つと必ず「5C」になってしまうが、utf8_unicode_ci は曖昧検索なので、文字コード違いでもヒットしてしまう。
自分が文字コード「5C」のバックスラッシュだと思っていても、実際は文字コード「C2A5」のバックスラッシュのデータになっている可能性がある。
時間がなく、質問者はバックスラッシュを打ったのか、それともどこからか持ってきたのかわからないので、ここからは想像の話をする。
Windowsのディレクトリ区切りのバックスラッシュは「5C」、UTF-8とだと言っている登録されているバックスラッシュが「C2A5」などで、エスケープしようとしてキーボードからバックスラッシュ文字を打って「5C」と「C2A5」が混雑したのかもしれない。質問者はバックスラッシュ文字の文字コードが2つあることや、utf8_unicode_ci の意味がわかっていないと思われるので、文字の見た目だけでバックスラッシュを4つ、バックスラッシュを6つと言っているのだろう。
なぜデフォルトの utf8_general_ci で統一せず、日本語環境で utf8_unicode_ci で検索するという行為に出たのかだ。
Windowsのファイルパスは、utf8_general_ci でないと変なものを引っかけたり、逆に引っかからなくなる可能性がある。
キーボードで打ったバックスラッシュ文字、utf8_unicode_ciのカラム値のバックスラッシュ文字、検索時に指定したutf8_general_ciのバックスラッシュ文字、検索時に指定したutf8_unicode_ciのバックスラッシュ文字が混ざっていれば、バックスラッシュ文字が6つにすればいいのかどうかわからないはずだ。たまたまそうだっただけかもしれない。
データベースのデータのキャラクタセットと検索時のキャラクタセットと、データの照合順序の指定と検索の照合順序の指定と、よくわからないのに不統一で使い、utf8_unicode_ciで検索するとバグだと言うのはただのクレーマーだ。
自分はMySQLはそんなに知識がないが、プロのデータベースエンジニアだから、何をどうしたのか細かい説明もなく、なんかバックスラッシュを6つにした想定通りになったが、バグらしいと言ってしまうのは、そのへんのド素人の悪口にしか聞こえない。 少し語弊があるところがあったが、ネットで調べればわかること。いろんなキーワードで検査し、いろんなサイトでどう言われているのか比較しないと間違った説明を正しいと思ってしまう。
公式の製品マニュアルをもともと熟読していれば、どこの誰かが言っているのかもわからない、信用できない情報に惑わされるはずがない。
ネットはデマ、嘘、情報工作であふれている。
オラクル社の説明よりも、ネットで引っかかったものを少しだけ見て、バグだなどと言っていたら、自分の信用が下がるだけで、他人からは、デマをデマと認識できない、真実よりも嘘を信じるとあきれられるよ。
製品の仕様をバカにするのは勝手だが、バカするだけの知識が自分にあるのか、世界中の多くの人間の努力をそんなに簡単にバカにするなら、自分ひとりでMySQLのようなリレーショナルデータベースを作ればいい。 全文検索の仕組み・設計を取り入れたいと思っています。
1つのテーブルでやるなら「WHERE name LIKE %てすと% OR title LINE % てすと%
のようにLIKE演算子を繋げればいいわけですが、
複数テーブルに渡る場合はどうなるのでしょうか?
2テーブルならサブクエリでできそうですが、
3テーブル以上なら無理なのではないかと思っています。
もし、こうすればできるという方法があれば教えてください すみません、自己解決しました。UNION使うんですね。 >>874
myISAMでしょ せっかくあるんだし使わなきゃもったいない テーブルA
id ref_id num1 num2 num3
1 1 1 2 5
テーブルB
id ref_id num pop
1 1 1 3
2 1 2 7
3 1 3 1
4 1 4 4
5 1 5 5
6 1 6 6
7 1 7 2
取得したい結果
ref_id num1 num2 num3 num1_pop num2_pop num3_pop
1 1 2 5 3 7 5
テーブルAのnumXカラムの値とテーブルBのnumは紐づいています
テーブルAのnumXに対するテーブルBのpopを追加した結果を取得したいです。
テーブルAが10万件
テーブルBが200万件
パフォーマンスを考慮したSQLを教えてください。 select * from A join B using (ref_id); >>880
GROUP BYとCASE式でやれないこともないけど
RowとColumnの縦横変換はアプリでやるのがおすすめ
SELECT
A.ref_id, MAX(num1) AS num1, MAX(num2) AS num2 , MAX(num3) AS num3,
MAX(CASE WHEN num = num1 THEN pop END) AS num1_pop,
MAX(CASE WHEN num = num2 THEN pop END) AS num2_pop,
MAX(CASE WHEN num = num3 THEN pop END) AS num3_pop
FROM A inner join B on A.ref_id = B.ref_id
GROUP BY ref_id; >>882
ありがとうございます。
MAXを使う発想はありませんでした。勉強になります。
アプリ側で加工することも考えてみます。 なんで MAX 使うのかも GROUP BY ref_id なのかもよく分からない…
テーブルA は ref_id当たり 1行なの? 適切にインデックス張ってるときは普通に高速だけど
JOINしてて検索結果の件数がゼロのときに限って妙に遅くない?
きのせい? 検索結果の件数が0のときと0じゃないときとを比べてるのよ 結果セットの件数がゼロ件だと1件以上の場合に比べて有意に遅くなるならSQLの書き方の問題があると思う 初心者がよくやるアンチパターン的な書き方とかあるんかね
0件で遅くなる書き方ってあんまり思いつかない >>885 はあるテーブルをインデックススキャンしたときと、あるテーブルを別のテーブルと結合したときの処理が同じだと言い張っているが、どこが同じなのかまったくわからない。 調べたいならまずEXPLAIN ANALYZEで比較すること
それでも原因がわからなければ
1. テーブルとインデックスの定義
2. クエリ
3. EXPLAIN ANALYZEの結果
の3点セットを貼って質問すること EXPLAIN ANALYZE って初めて知った。 ただのexplainじゃあ無いんだな
便利な世の中になったもんだ カラム数が4つのテーブルに対して
INSERT INTO unko VALUES (1,2,3);
ってやると当然エラーになるけど、これ回避できますか?
せめてwarningで納めてくれるような
後ろは勝手にNULLにしてくれる設定とか、そんな感じの どういう目的でそれ実現したいの?
VALUESで書くカラムを指定するか
テーブルのカラム数を合わせるかしないと
エラーにしてくれるほうがありがたいと思うんだけど >>893
それはユーザーが書き間違ってがいる可能性があるから、構文エラーとしているんだよ。
なんかカラムがずれてないか、なんか数が合ってないぞと教えてくれている。 >>894
少ないカラムでもエラーにならないようにしたい
デフォルトはエラーでいいけどさ、設定で変更したりしてエラーにならないようにしたい CREATE TABLE unko (
col1 int NOT NULL,
col2 int NOT NULL,
col3 int NULL,
col4 int NULL DEFAULT 100,
col5 int NOT NULL DEFAULT 200
);
↑のテーブルに INSERT INTO unko (col1, col2) VALUES (1, 2); とすれば
(1, 2, null, 100, 200)のレコードがINSERTされるのはOK? >>898
(col1, col2) を省略したいんですわよ テーブル移行(DUMPバックアップ)とレプリケーションは
MySQLが簡単でええなw リミットとオフセットで取得したレコードから部分的に取る処理したときって、全レコード取得するときより圧倒的にはやくなりますか(*_*)
たとえばテーブルAに1000件レコードがあって、idって主キーが1から1000まで与えられてます
主キーで昇順にして、1ページ10件を100ページ分取得したいです
この場合ページごとに10件表示になりますが、1000件表示のときのだいたい何分の一の時間がかかったのか可能な範囲で調べたいという状況が発生しました(..)
なんかいい感じのやりかたというか方針があれば教えてください!なんでもしますから! >>903
画面表示とMySQLの処理速度の関係を書いてください。 >>906
データの取得に時間かかっちゃうとその取得したデータの画面表示がもたもたしちゃいそと思ったのです
なるはやで画面表示したいのでデータ取得が速いほどたすかります
それが画面表示とSQLの処理速度の関係です(*´Д`)
1000件どーんと画面にだすのと、1ページ(10件)だけだすのとで速さがどうかわるかしりたいので調査中です(ヽ´ω`)
エクスプレイんてのをやったことないでやってみます
1000件じゃなくてもっと件数増やしてみたりしますか EXPLAIN ANALYZEで実際にかかった時間がミリ秒で出てくるけど
そこに含まれるのはMySQL内で結果セットを準備するまでの時間だけ
クライアントへの転送時間とかは含まれてない >>907
1,000レコードが1,000文字だったら、体感速度の違いもないかもな。 OFFSETはデータを読み込んでソートした後に指定レコード数をスキップして読み捨てるので
ページングで使う場合はページ数が大きくなればなるほど遅くなる
1000件100ページくらいなら気にする必要はないかもしれないが一応 このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 2317日 19時間 23分 5秒 5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/
▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login レス数が1000を超えています。これ以上書き込みはできません。