「テーブルの追加と修正をしたから各自開発環境でこのCREATE/ALTER文を実行して!」 データベースのマイグレーションツールを使っていない場合は、こういった作業をしばらくサボって、あとで困ってしまうことがよくあると思います。 そんなときは、 SQL::Translator (SQLFairy) を使ってさくっとテーブル構造を同期させましょう。 準備 SQL::Translatorのインストール
![2つのデータベースの差分からDDL(CREATE/DROP/ALTER TABLE文)を作成する - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/f6a70c792e2d6bfcd9a1ad3599626346abecf752/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9MiVFMyU4MSVBNCVFMyU4MSVBRSVFMyU4MyU4NyVFMyU4MyVCQyVFMyU4MiVCRiVFMyU4MyU5OSVFMyU4MyVCQyVFMyU4MiVCOSVFMyU4MSVBRSVFNSVCNyVBRSVFNSU4OCU4NiVFMyU4MSU4QiVFMyU4MiU4OURETCUyOENSRUFURSUyRkRST1AlMkZBTFRFUiUyMFRBQkxFJUU2JTk2JTg3JTI5JUUzJTgyJTkyJUU0JUJEJTlDJUU2JTg4JTkwJUUzJTgxJTk5JUUzJTgyJThCJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1mMjExZDliMTU3YTNjYzk1M2E3ZTE0OWZiYTlkNTgyZg%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQweWFuZ2NpJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz03YzNkZjM0YmMzMDE1YWMwNzEwYjA3ZGYzMjQxYjYwOA%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D9702742d6cad9b76913c5551e593c498)
[MySQL]MySQL接続エラー(mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication)PHPMySQL 事象 PHPから外部DBであるMySQLへの接続でエラーが発生 確認内容 接続先情報について何度も確認したが問題ない 別サーバからの接続テストでMySQLへ接続できることを確認 エラー内容をもうよく一度見る 英文 mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_pa
毎度、自ブログからの転載です。 つい最近、自作のWordPressカスタムデータベース管理プラグイン「Custom DataBase Tables」への問い合わせで bit型フィールド についてデフォルト値を指定するとテーブル作成がコケるという不具合報告があって、 MySQLのbit型フィールド について詳しく調べることになった。その結果、色々と新たにわかったことがあったので、その備忘録も兼ねて記事を書いておこうかと。 もともと私は、MySQLのbit型はboolean(bool)型と同様に tinyint(1)のシノニム(フィールド形式のエイリアスみたいなもの) と理解していたので、フィールドの仕様もtinyint(1)と同じだと認識していたんだが、実際は違っていたんだなこれが。 各フィールドの仕様は下記のようになってた(ちなみにMySQLのバージョンは5.6.16)。 フィールド型 表
こんにちは。id:shallow1729です。先日はredo logを中心にストレージエンジンについて解説を行いましたが、今回は同時実行制御、特にMySQLなど多くのデータベースで採用されているMultiversion Concurrency Control(MVCC)という技術にフォーカスしようと思います。 今回の記事ではまず前半でMVCCというものがどういうものかについて解説をして、次にMVCCの実装方法についてInnoDBの実装を参考にしながら見ていこうと思います。前提知識はあまりいらないと思いますが、リレーショナルデータベースの操作経験はあったほうがいいかなと思います。また、前回のストレージエンジンの解説で述べた内容はあまり説明しないので、軽く目を通してもらえると頭に入りやすいかなと思います。 shallow1729.hatenablog.com トランザクションの原子性 まずトラ
MVCCとは MultiVersion Concurrency Controllの略で,RDBのisolation levelがREAD COMMITTEDやREPEATBLE READなんかの時のために採用しているシステムのことです. 簡単に言うと「テーブルの過去の情報を持っておく」です. isolation level DBでは同時に複数トランザクションが一つのテーブルを操作したりします. 例えばあるトランザクションがテーブルAを参照中に,Aの内容を書き換えるような別のトランザクションが存在すると,取ってきたデータに不整合が生じます. この不整合をどの程度許容するかがisolation levelです.通常4種類あります. READ UNCOMMITTED ... COMMITされていないトランザクションAの変更をトランザクションBが参照できます READ COMMITTED ...
こちらのエントリを見て思い出しました。 アプリケーションエンジニアが知っておくべきMySQLのロック MySQL(InnoDB)のデフォルトトランザクション分離レベルは表題の通りREPEATABLE READですが、その場合でも、UPDATEとDELETEはREAD COMMITTED相当の動作になります。 実験 以下のようなアプリケーションがあったとします。 入会申請の都度、テーブルにレコードがINSERTされる。 受付処理を行うときに、当該レコードをUPDATEして処理済みにする。 ※説明を簡単にするために、入会申請(entry)テーブルには、通し番号(entry_no)・名前(name)・処理フラグ(proc_flag)の3つのカラムしか持たないものとします。 処理前に、こんな感じでレコードが入っているとします。 mysql> SELECT * FROM iso_level_test
これは インフラ勉強会 Advent Calendar 2018 19 日目の記事です。 書いているうちに日付が変わってしまいました。 同カレンダーの 17 日目に、 「MySQL8.0 で起こる謎のデッドロックの条件を調べてみた」を data_locks・data_lock_waits テーブルで確かめてみた という記事を書きましたが、そもそも MySQL(InnoDB)のロックについて何も解説していないので、おそらく MySQL 初心者には全く意味の分からない記事になってしまったと思います(すみません)。 というわけで、すでに語りつくされている内容ですが、先の記事を理解するのに最低限必要になりそうなことを補足していきます。 ※MySQL に慣れている人にはいまさら解説不要な内容です。 MySQL(InnoDB)とトランザクション分離レベル 細かいことは説明しませんが、MySQL を含む
【MySQL】 Error 1449 The user specified as a definer (‘username’@’hostname’) does not exist 問題 MySQLのエラーコード 1449 って何? Error 1449 The user specified as a definer ('username'@'hostname') does not exist よそからダンプを取ってきてリストアしただけの環境で、データをinsertしようとしたら発生しました。 トリガーが定義されているデータベースなんだけど何か問題がある? 答え トリガーやストアドプロシージャなどを含めてダンプを取得したとき、ダンプファイルに以下のようなSQLが含まれている。 /*!50017 DEFINER=`dbuser`@`192.0.2.%`*/ 例えば、TRIGGERの場合だと以下
When I run the following query I get an error: SELECT `a`.`sl_id` AS `sl_id`, `a`.`quote_id` AS `quote_id`, `a`.`sl_date` AS `sl_date`, `a`.`sl_type` AS `sl_type`, `a`.`sl_status` AS `sl_status`, `b`.`client_id` AS `client_id`, `b`.`business` AS `business`, `b`.`affaire_type` AS `affaire_type`, `b`.`quotation_date` AS `quotation_date`, `b`.`total_sale_price_with_tax` AS `total_sale_price_with_tax`
2021/5/7追記:root ユーザーを使うときは ryo_kawamata さんの記事の方法が使えるようだ TL;DR しのゆさんの記事どおりでいけた M1 DockerでMySQLを含んだ環境を動かすためにやったこと | shinoyu | zenn https://zenn.dev/shinoyu/articles/74ebacbf0e4e55 root ユーザーを使うときは ryo_kawamata さんの記事の方法が使えるようだ Host xxx is not allowed to connect to this MySQL server の対応 | ryo_kawamata | zenn https://zenn.dev/ryo_kawamata/articles/mysql-connect-error M1 Mac で MySQL5.7.28 が platform: lin
MySQL Community Edition 文字コードなどの初期設定を含む MySQL Community Edition の MySQL Community Server 5.7.21 1 のセットアップとそれに関わる情報をまとめた。 なお、他の記事と比べて特徴的な情報として以下のような内容を記載している。 root アカウントは空パスワードでインストールできる。 mysql_secure_installation コマンドは実行しない。 MySQL クライアントのパスワードは暗号化して保存して省略できる。 文字コードは utf8 ではなく utfmb4 を指定する。 照合順序は utf8mb4_general ではなく utf8mb4_bin を指定する。 データベース作成時に文字コードだけを指定すると照合順序のサーバー設定は無視される。 MySQL Yum Repository
EC-CUBEのDB設計は、お世辞にもきれいとはいえない。 MySQLでいうと、文字列型はすべてTEXT型になっている。 インデックスすらあまり使われていない。 dtb_session の sess_id は一意なはずなので、ユニークにしたほうがいいと思います。 プライマリキーに変更する。 ALTER TABLE `dtb_session` ADD PRIMARY KEY ( `sess_id` ( 32 ) ); ALTER TABLE `dtb_session` DROP INDEX `dtb_session_sess_id_key`; またテーブルやカラムの照合順序は、データベースの照合順序が継承される。 もし照合順序が utf8_general_ci だったり utf8_bin となっている場合は、utf8_unicode_ci に変更したほうがいい。 特に大文字、小文字の区別をす
MySQLの知識は5.5で止まったまま。WordPressの推奨動作環境がMySQL5.6以上であり、周りでもMySQL5.7の誕生にちょっとざわついているので、5.6はスキップして5.7で遊ぶことにしました。 環境 CentOS6.8(最小構成、update済み) 必要なパッケージのインストール1 CentOS6の標準リポジトリでインストールされるgccは4.4.7で、これが原因でコンパイル中にwarningが頻発するので、devtools-2からCentOS7と同じgccのバージョン4.8を入れておきます。 # yum install wget # wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo # yum install devtoolse
Cent0S6 最小構成にソースインストール 参考URL https://dev.mysql.com/doc/refman/5.7/en/installing-source-distribution… システムユーザー mysql 作成 # groupadd mysql # useradd -r -g mysql mysql 必要なものを事前にインストール (まとめて書いているけれど、初回試行錯誤の賜物。gcc* は、手抜き重視のため) # yum install cmake # yum install gcc* # yum install git # yum install ncurses-devel # yum install bison ソースダウンロード # cd /usr/local/src/ # wget http://dev.mysql.com/get/Downloads/M
CentOS 6以前とMySQL 5.6以前の構成ではmysqld_multiというものを使っていました。 これはMySQLをインストールすると入っているもので、複数のMySQLインスタンスを立ち上げたいときに使用します。 複数のインスタンスを立ち上げたいときとは、例えば本番環境で物理的に別れているDBサーバーを開発環境で再現したり、レプリケーションをテストをしたりするときに使います。 MySQLのオフィシャルサイトで紹介されていた方法があまりに簡単だったので、ここでも紹介します。 以下の方法はMySQL 5.7.13以降でsystemctlを利用するシステムで有効です。 MySQL 5.7で複数インスタンスの起動はできるか もちろんできます。結局引数でdatadirとかpidファイルの場所とか指定すれば、自力でも設定は可能です。 ちなみにMySQL 5.7.13のsystemctlプラッ
ここでの説明では、mysqld_safe を使用して MySQL の複数のインスタンスを起動します。 RPM ディストリビューションを使用した MySQL インストールの場合、サーバーの起動と停止は、複数の Linux プラットフォーム上の systemd によって管理されます。 これらのプラットフォームでは、mysqld_safe は不要であるためインストールされません。 systemd を使用した複数の MySQL インスタンスの処理の詳細は、セクション2.5.9「systemd を使用した MySQL Server の管理」 を参照してください。 Unix 上で複数の MySQL インスタンスを実行するための 1 つの方法は、デフォルトの TCP/IP ポートおよび Unix ソケットファイルが異なる別々のサーバーをコンパイルして、それぞれのサーバーが別々のネットワークインタフェース
概要 DockerでMySQLコンテナを立て、ホストOS、または外部サーバーから接続する方法。 docker runの場合 $ sudo docker run \ --rm \ -v $(pwd)/db/mysql_init:/docker-entrypoint-initdb.d \ -v $(pwd)/db/mysql_data:/var/lib/mysql \ --name mysql \ -e MYSQL_ROOT_PASSWORD=your_password \ --hostname my-mysql \ -e BIND-ADDRESS=0.0.0.0 \ -p 3306:3306 \ -itd mysql:5.7 version: '3.1' services: db: image: mysql:5.7 restart: always hostname: my-mysql env
■概要 既にMySQLがインストールされているサーバに、別プロジェクトで使用するMySQLを インストールしたので、方法をまとめておきます。 今回はソースからインストールオプションを指定してインストールしました。 ■基本情報 ・OS CentOS 5.5 ・既存MySQLインストール情報 バージョン: MySQL-5.1 ベースディレクトリ: /usr/local/mysql/ データディレクトリ: /var/lib/mysql/ ポート : 3308 ソケット : /usr/local/mysql/tmp/mysql.sock 設定 : /var/lib/mysql/my.cnf ・新規MySQLインストール情報 バージョン: MySQL-5.5.22 ベースディレクトリ: /usr/mysql5/ データディレクトリ: /data/mysql5/ ポート : 3308 ソケット : /
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く