タグ

mysqlに関するstealthinuのブックマーク (139)

  • LOAD DATA INFILEで気を付けること - Qiita

    LOAD DATA INFILE 'hoge.csv' INTO TABLE `scheme`.`table` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'; 改行コードがCRならば、'r' 改行コードがLFならば、'n' 参考 MySQLのLOAD DATA INFILEで大はまりした話 改行コードの話 追記 csvファイルをsakuraエディタで編集していて、普段は上記コードでインポートできていたはずが、 なぜか一番上の一行しか読み込まれないという現象が起こりました。 まさかと思って改行コードをCR+LFに指定して保存してみると、案の定無事インポートできました。 改行コードが変わってしまっていたんですね…いつのまに… ②LOAD DATA INFILEのパスには日語を使うな 簡単なことだしそもそもパスに日語使うなって話なんで

    LOAD DATA INFILEで気を付けること - Qiita
    stealthinu
    stealthinu 2022/05/12
    MySQLでExcelの吐いたCSVからデータ読み込んでupdateしたら余計な改行コード入ってしまってた。load data infileでの改行コードを「\n」にしてたせいで「\r\n」指定にしなければダメ。
  • MySQL WorkbenchからのLOAD DATA LOCAL INFILEが失敗する場合

    “Edit Connection” -> “Connection” -> “Advanced” -> “Others” のところに OPT_LOCAL_INFILE=1 “Error Code: 3948. Loading local data is disabled; this must be enabled on both the client and server sides” または “Error Code: 1148. The used command is not allowed with this MySQL version” で失敗する場合のはなし。

    MySQL WorkbenchからのLOAD DATA LOCAL INFILEが失敗する場合
    stealthinu
    stealthinu 2022/04/26
    MySQL WorkbenchからCSVのファイル読み込むにはサーバ側とクライアント側どちらも許可するように設定しないといけない「seg global local_infile=1;」とAdvanced->Othersに「OPT_LOCAL_INFILE=1」
  • CentOS7にMariaDB10.1をインストールする方法 - Qiita

    MariaDBの公式からリポジトリが用意されています。 https://downloads.mariadb.org/mariadb/repositories/ リポジトリ追加 リポジトリファイルに記載する内容が表示されるので、コピペして「/etc/yum.repos.d/」配下にファイルを作成します。 # MariaDB 10.1 CentOS repository list - created 2016-05-29 08:48 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaD

    CentOS7にMariaDB10.1をインストールする方法 - Qiita
    stealthinu
    stealthinu 2022/02/26
    CentOS7にリポジトリ追加とyumで任意のバージョンのmariadbをインストールする。dockerfileにCOPYとRUNでわかりやすく書けるから楽。
  • Changing host permissions for MySQL users

    stealthinu
    stealthinu 2022/02/26
    古いWebアプリをdocker化したときにapacheとmysqlを別のdockerで立てるとHostがlocalhostになっててめんどくさいがmysql.userをupdateしてしまえばよい。これはログインだけなんでdb側へのgrantも必要。
  • MySQL-5.1からMariaDB-5.5へのアカウント情報の移行 - モーグルとカバとパウダーの日記

    CentOS6系からCentOS7系への移行案件があり、そこでMySQL-5.1からMariaDB-5.5への移行を行う必要がありました。 他にも色々と変わる部分があるため、一旦動作テスト用のサーバを作って確認することになり、データの移行を行いました。 そのとき、アカウント情報の移行ではまったのでメモしときます。 まずアカウント情報は普通にフルダンプしても取れないため、下記のようにmysqlテーブルを指定して取ります。 正式移行の際には -x オプション付けてロックしたほうがよいでしょう。 # mysqldump -u root -p --allow-keywords mysql > user_dump.sql その後、テスト用サーバにコピーしてリストアします。 # mysql -u root -p mysql < user_dump.sql 自分はもうこれだけでいいのかな、と思っていたの

    MySQL-5.1からMariaDB-5.5へのアカウント情報の移行 - モーグルとカバとパウダーの日記
    stealthinu
    stealthinu 2022/02/26
    mysql.userをupdateで直接変えてもすぐには反映されなくてflush privilegesしなくちゃいけないのいつも忘れる。たまーにしかやらないからなあ。毎回自分のブログを検索してとみたさんに感謝しているという…
  • 【MySQL】大文字小文字、全角半角区別しないでマッチする検索をしたい at softelメモ

    問題 select * from member where namae like '%サトウ%'; こんなSQLで、namaeがサトウ、サトウ、さとう、サトウ(一部半角)何でもマッチさせたい! 答え では、これで。 select * from member where namae collate utf8_unicode_ci like '%サトウ%'; データベースがutf8でないときは、もうひとつ変換を入れて、 /* ERROR 1253: COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'ujis' など言われたら */ select * from member where convert(namae using utf8) collate utf8_unicode_ci like '%サトウ%'; 数字の全角/半

    【MySQL】大文字小文字、全角半角区別しないでマッチする検索をしたい at softelメモ
    stealthinu
    stealthinu 2021/12/08
    MySQLでひらがなカタカナでのあいまい検索ってlikeに「collate utf8_unicode_ci」のオプション指定入れてやるだけで出来るのか。知らんかった。これは助かるわあ。
  • MySQL で max_allowed_packet を超過した場合 - tmtms のメモ

    MySQL で max_allowed_packet を超過した場合にどうなるんだっけ…と思って試してみた結果。 サーバーの max_allowed_packet をクエリが超過した場合 MySQL 5.6 サーバー起動 % docker run --name mysql56 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql:5.6 --max-allowed-packet=100000 クライアントは原因がわからないけど切断される % ruby -e 'puts "set @a="+"1"*1000000' | docker exec -i mysql56 mysql ERROR 2006 (HY000) at line 1: MySQL server has gone away サーバー側はログ出力なし % docker logs mysql56 .

    MySQL で max_allowed_packet を超過した場合 - tmtms のメモ
    stealthinu
    stealthinu 2021/09/13
    MySQL5.7でエラー吐くようになったのに8.0ではまた吐かないようになったとかなんでなんかね?
  • MySQLでプライマリキーをUUIDにする前に知っておいて欲しいこと | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]

    株式会社ラクーンホールディングスのエンジニア/デザイナーから技術情報をはじめ、世の中のためになることや社内のことなどを発信してます。 bashパフォーマンスMySQLInnoDBDB設計インデックス こんにちは、羽山です。 今回は MySQL のプライマリキーに UUID を採用する場合に起きるパフォーマンスの問題を仕組みから解説します。 MySQL(InnoDB) & UUID のパフォーマンスについては各所でさんざん議論・検証されていますが、論理的に解説した記事が少なかったり一部には誤解を招くようなものもあるため、しっかりと理由から理解するための情報として役立つことができればと思っています。 UUID と比較される古き良き昇順/降順のプライマリキーはというと、 MySQL の InnoDB において良いパフォーマンスを出すために縁の下の力持ちのような働きをしてくれているケースが実は少な

    MySQLでプライマリキーをUUIDにする前に知っておいて欲しいこと | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]
    stealthinu
    stealthinu 2021/09/01
    これはぜんぜん知らなかった。UUIDだとというか時系列じゃないIDでまんべんなくデータが置かれるとディスクキャッシュヒット率が下がるため大幅な性能低下が起こると。ULID使えば良い。
  • Re: MySQL の NOW() と SYSDATE() - tmtms のメモ

    自分は全然気にしたことなかったんだけど、MySQL の NOW() と SYSDATE() は異なるらしい。 sakaik.hateblo.jp MySQL 8.0 のマニュアル (https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_sysdate) にも確かにちゃんと書かれてる。 SYSDATE() returns the time at which it executes. This differs from the behavior for NOW(), which returns a constant time that indicates the time at which the statement began to execute. (Within a stored fun

    Re: MySQL の NOW() と SYSDATE() - tmtms のメモ
    stealthinu
    stealthinu 2020/07/15
    MySQLのNOW()とSYSDATE()は違っててSYSDATEはほんとにその時の時間を、NOWはステートメントやストアドが開始された時間を返すらしい。そして5.0.12か13あたりからそのような挙動になってるとのこと。
  • 「MySQL徹底入門 第4版」が出るよ - tmtms のメモ

    MySQL徹底入門 第4版」が 7/6 に発売される。🎉 www.shoeisha.co.jp 電子書籍は翔泳社の直販がDRMフリー(たぶん)だからオススメ。 著者用見誌も届いたので、さすがにこれからやっぱり発売できませんでした!ってことにはならないと思う。 長かった。 当は去年出る予定だったんだが、なんやかんやで今年になった(よくある)。 第3版が出たのが 2011年だから、実に9年ぶり! 偶然にも第3版と同じ 544ページなんだけど、1ページ辺りの文字数は増えているので情報密度は増しているはず(そしてその分価格も上がってる)。 (ただしくは552ページらしい。) 「MySQL徹底入門」は第n版が出るたびに、毎回ほとんどを書き下ろしてるし、複数人で書いてるんだけど、書いてる人も入れ替わるし担当する章も変わる面白い。 自分は、今回は第5章「ユーザー管理」、第10章「データベースプ

    「MySQL徹底入門 第4版」が出るよ - tmtms のメモ
    stealthinu
    stealthinu 2020/06/30
    とみたさん書かれた「MySQL徹底入門」のMySQL8版が出るとのこと。基本的に8の情報だけが載ってるようなイメージっぽい。
  • MySQLと「令和」 - tmtms のメモ

    新元号が「令和」に決まったことなので、MySQLでの扱いについての話を。 普通の文字 「令」も「和」もJIS第一水準に含まれている基的な文字なので普通に日語が使用できるcharsetで使用できます。 mysql> create table t ( utf8mb4 varchar(255) charset utf8mb4, utf8mb3 varchar(255) charset utf8mb3, utf16 varchar(255) charset utf16, utf32 varchar(255) charset utf32, cp932 varchar(255) charset cp932, eucjpms varchar(255) charset eucjpms, sjis varchar(255) charset sjis, ujis varchar(255) charset

    MySQLと「令和」 - tmtms のメモ
    stealthinu
    stealthinu 2019/04/08
    流石だ。=だと一致になるのにLIKEでは不一致になるのが面白い。あと合字のためだけにUnicode 12.1が作られるとは。確かに迷惑な話だな。
  • MariaDB環境でmysqldump: Couldn’t execute ‘show events’~が出たときの対処

    stealthinu
    stealthinu 2019/03/04
    サーバ移行でMariaDBへ上がったらこのエラーが出てたのでmysql_upgradeした。バージョン上がったらこれやらんといかんのね。
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 8.2.1.17 GROUP BY の最適化

    GROUP BY 句を満たすもっとも一般的な方法は、テーブル全体をスキャンし、各グループのすべての行が連続する新しい一時テーブルを作成することであり、それにより、この一時テーブルを使用してグループを見つけて、集約関数 (ある場合) を適用できます。 場合によっては、MySQL はそれよりはるかに優れた処理を実行でき、インデックスアクセスを使用した一時テーブルの作成を回避できます。 GROUP BY のインデックスを使用するための最も重要な前提条件は、すべての GROUP BY カラムが同じインデックスの属性を参照し、インデックスにそのキーが順番に格納されることです (たとえば、BTREE インデックスの場合は該当しますが、HASH インデックスの場合は該当しません)。 一時テーブルの使用をインデックスアクセスに置き換えられるかどうかは、クエリー内でインデックスのどの部分が使用されているか、

    stealthinu
    stealthinu 2019/01/23
    group byでのインデックスは『インデックス内のカラムの場合、プリフィクスだけでなく、完全なカラム値にインデックスが設定されている必要があります』という制約あって先頭何文字か使うやつはダメと。
  • https://developer.hatenastaff.com/entry/2019/01/15/120431

    https://developer.hatenastaff.com/entry/2019/01/15/120431
    stealthinu
    stealthinu 2019/01/16
    すばらしい知見だった。これ4.0->5.6じゃなくても古いMySQLから上げる時に大変参考になる資料だろう。これで4.x系からのアップデート案件来ても怖くない。いや、無論やりたくないけどね…
  • そろそろMySQLのutf8について一言いっとくか - tmtms のメモ

    MySQLのutf8 charsetは、やれ「罠」だの「絵文字が入らなくて使えない」だの「utf8という名前はutf8mb4の別名にすべき」だの、散々な言われようでディスられてかわいそうな charset なんだけど、というか主に私がそう言ってる気もするんだけど、そろそろ utf8mb3 のエイリアスとしての utf8 は消え去ろうとしてるみたいなので、ここでちょっと勝手にフォローしておく。 UTF-8 エンコーディングの RFC は RFC3629で、ここで UTF-8 は最大4バイトと書かれている。 しかし、この RFC3629 の前のRFC2279では6バイトだった。 RFC3629 の日付は 2003/11 なので、つまり 2003/11 よりも前は UTF-8 の1文字のバイト数は最大6バイトだったのだ(少なくともRFC上では)。 MySQL が Unicode に対応したのはバ

    そろそろMySQLのutf8について一言いっとくか - tmtms のメモ
    stealthinu
    stealthinu 2018/06/25
    単にmysqldumpして読み込むとwarningでちゃうって嫌だなあ。そのうち解決されるとは思うけど知らないとしょうもないところではまりそう。
  • MySQL 8.0登場!立ち止まることを知らない進化はこれからも続く。

    ゴールデンウィークはいかがお過ごしされただろうか。今年は天気も良く、行楽日和が続いたように思う。 さて、先日MySQL 8.0が正式にリリースされた。少し時間が経ってしまったが、今回はMySQL 8.0の新機能について紹介したい。コミュニティ版のダウンロードはこちらから可能だ。 ひとつ前の正式バージョンはMySQL 5.7だったのだが、MySQL 8.0は非常に大きなリファクタリングが含まれており、5.x台のバージョン番号を捨て去ろうという話があった。そこで、次のメジャーバージョンは最初の桁を増やすということになったのだが、MySQL 6.0は過去に既に存在し、買収などの騒ぎで開発が頓挫してしまった経緯がある。7.xはMySQL NDB Clusterと被っている。というわけで、5.7の7の部分の次という意味合いもあって、8.0というバージョン番号を引っさげ、満を持しての登場となった。その

    MySQL 8.0登場!立ち止まることを知らない進化はこれからも続く。
    stealthinu
    stealthinu 2018/05/07
    CTE導入。文字コードがUTF8mb4標準に。寿司ビール問題に対応するため『日本語を扱いたい場合には、utf8mb4_ja_0900_as_cs_ksを利用すると良い』などなど。
  • MySQLのクエリの良し悪しはrows_examinedで判断する - かみぽわーる

    仕事やらなんやらでMySQLのクエリの良し悪しを判断する必要があるとき、EXPLAINの内容だけだとどのぐらい良くなったり悪くなったのか分からないので SET long_query_time = 0; してrows_examined (そのクエリでrows_sent行の結果を返すために何行に触ったのか)も一緒に提示するようにしている(少なくともMySQL 5.7時点ではrows_examinedはslow_query_logでしか確認できないはずperformance_schemaが有効ならevents_statements_historyやその仲間たちで確認できるとのこと*1 MySQL :: MySQL 5.6 リファレンスマニュアル :: 22.9.6 パフォーマンススキーマステートメントイベントテーブル)。 例: 上の例のBeforeは、もともとDBAが書いた温かみのあるSQLでO

    MySQLのクエリの良し悪しはrows_examinedで判断する - かみぽわーる
    stealthinu
    stealthinu 2018/03/22
    『深遠な理由により別のテーブルの条件で絞り込んだりしたりしなかったりするためのJOINで最適化の狙いが効かなくなって同じ20行の結果を返すために259454行に触れてしまうようになってしまった』つらみ。
  • (株)アナジックス - mysqlが起動しないトラブル

    stealthinu
    stealthinu 2018/03/19
    トラブルあったマシンを別VMに持ってってmysqlあげようとしたら、netstatで見てもポート開いてるのに3306誰か使ってね?と言われて起動できないの、bind-addressでIP指定されてたからだった。
  • MySQL Router 2.1.5経由でのMySQLへの接続に失敗する(MySQL Router 2.1.6で直るらしい)

    $ mysql -h127.0.0.1 -P13306 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 $ sudo less /var/log/mysqlrouter/mysqlrouter.log 2018-02-21 12:27:25 INFO [7fe221c14700] [routing:test] started: listening on 127.0.0.1:13306; read-write 2018-02-21 12:27:39 WARNING [7fe213fff700] Timeout reached trying to connect to MySQL Server xxxx:3306: Con

    stealthinu
    stealthinu 2018/02/28
    なかなか激しいバグだ。
  • 似非管理者の寂しい夜:MySQLのバックアップではユーザー情報は含まれない - livedoor Blog(ブログ)

    MySQLのデーターベースをバックアップするのは割と簡単なんですが、実は登録されたユーザー情報は別にバックアップしないといけないんですよ。 先日、そのことを知りました。 こういう情報って、こういうブログにちゃんと書いておいたほうがいいですよね。 と言いつつ、なかなか書きそびれていたんですが。 具体的にはこんな感じ。 mysqldump -u root-p -x --all-databases > hogehoge.dump mysqldump -u root -p -x --allow-keywords mysql > hogehogeuser.dump 上の1行でデータベース全体のバックアップをします。 下の1行でユーザー情報をバックアップします。 リストアは以下のとおり。 mysql -u root -p < hogehoge.dump mysql -u root -p mysql <

    stealthinu
    stealthinu 2017/12/12
    mysqlのユーザ情報をダンプしたい場合all-databasesでもダンプされないためmysqlテーブルを明示的にダンプする必要がある。かつ--allow-keywordsオプションが必要と。