MySQL
MySQLで外部キー制約を適用しているテーブルにはDROP TABLEができません。 本番ではその挙動でもちろん良いのですが、開発中にテーブルをまるごと作り直したいときにはこの制約が邪魔になることがあります。またmysqldumpなどで出力したファイルをインポート…
小ネタです。 踏み台サーバであるAmazon Linux2にMySQLのクライアントを入れRDSを操作しているのですが、ある日yum updateをしたら途中で停止してしまいました。 エラーメッセージを眺めるとMySQLをアップデートする際にGPGが原因でコケているっぽい。 $ sud…
Node.jsの代表的なO/RMであるSequelizeの第五弾。 これまで以下のような内容を取り上げてきました。 第1回 インストールから基本的な利用方法 第2回 SELECT文の使い方 第3回 トランザクション 第4回 マイグレーション 今回はここまでの情報の整理も兼ねて、…
Node.jsの代表的なO/RMであるSequelizeの第四弾。 第1回ではインストールから基本的な利用方法、第2回ではSELECT文の使い方、第3回ではトランザクションを取り上げました。 今回は「マイグレーション」のお話です。 Sequelizeから提供されているCLIツールを…
Node.jsの代表的なO/RMであるSequelizeの第三弾。 第1回ではインストールから基本的な利用方法、第2回ではSELECT文の使い方を取り上げました。今回はINSERTやUPDATEなど更新系の処理に欠かせない「トランザクション」です。
Node.jsの代表的なO/RMであるSequelizeの第二弾。 前回はインストールから基本的な利用方法までを取り上げました。今回はSELECT文にまつわるトピックスを取り上げていきます。 Sequelizeに限った話ではないですが、WHERE句の条件が複雑になってくると「これS…
Node.jsでO/RMと言えば「Sequelize」です。 PostgreSQL, MySQL, MariaDB, SQLite, Microsoft SQL Serverなど主要なRDBに対応しており、AWS上での利用報告もありますのでRDSなどでももちろん使えます。また現在たどれる最古のバージョンv1.1.2は2011年にリリ…
MySQLでテーブルのカラム(列)の変更を行うにはALTER TABLEを利用します。ALTER TABLEはカラム以外にもテーブルのあらゆる変更が行える万能選手ですが今回はカラムの追加,変更,削除に特化して見ていきます。 カラムを追加する -- テーブルの末尾に追加 ALTER …
※この記事は専門学校の講義用に作成されたものです PDOはデータベースへのアクセスを抽象化してくれる非常に便利なライブラリですが、ある程度の規模のシステムになってくるとメンテナンス性を向上したくなりもう一段階、抽象化したくなる物です。最近人気の…
※この記事は専門学校の講義用に作成されたものです 前回に引き続きPHPからMySQLを操作します。今回のテーマは「トランザクション」への対応です。トランザクションをマスターすれば、2つ以上のSQLを実行した際にいずれかの実行が失敗した場合でも、そのすべ…
※この記事は専門学校の講義用に作成されたものです 今回はPHPからMySQLへ接続しデータの取得と追加の練習を行います。 データベースとのやり取りには様々な罠が待ち構えており、ちょっと書き損じた(設定を忘れた)だけでサービスが崩壊することもよくあります…
前回作成した「アクセスカウンター」を、今度はデータベースに対応させてみます。裏側を変更するだけなので、表示はまったく同じです。 作戦としてはPHPにリクエストがある度にテーブルに1レコードずつ追加されていき、現在の値はレコード数を集計することで…
MySQLへCSVなどのテキスト形式のデータファイルを一括でインポートします。 今回はLinuxなどのコマンドとして提供されているmysqlimportを利用します。通常MySQLをインストールした際に自動的に付いてきますのですぐに実行することが可能です。 $ mysqlimpor…
MySQLのユーザー名を変更する場合にはRENAME USER文を利用します。 RENAME USER oldman@localhost TO youngman@localhost;
MySQL上のユーザーのパスワードを変更するにはSET PASSWORD文を利用します。 SET PASSWORD FOR katsube@localhost = 'password here'; MySQLのバージョンによって記述方法が異なります(上記は5.7以降の書き方)。また同様のSQLでALTER USER文があり、こちら…
MySQLで権限を剥奪(削除)するにはREVOKE構文を使います。 REVOKE ALL ON *.* FROM katsube@localhost; 上記は全権限を剥奪し、初期状態に戻しています。
作成済みのユーザーに権限を付与するにはGRANT文を利用します。実行にはGRANTを利用できる権限が必要です。 GRANT ALL On db1.* To katsube@localhost; 上記はdb1という名前のデータベース内にあるすべてのテーブルに全権限を付与しています。
作成済みのユーザーを削除するにはDROP USER文を使用します。実行にはrootなどのユーザーを削除する権限が必要です。 DROP USER katsube@localhost;
MySQLで新規にユーザーを作成する場合、CREATE USER文を実行します。もちろんrootなどユーザーを作成できる権限でログインしておく必要があります。 CREATE USER katsube@localhost IDENTIFIED BY 'password';
AmazonLinux上にインストールしたMySQL5.7のrootのパスワードを忘れてしまったので再設定を行います。 基本的に公式ドキュメントの内容に沿った形で実施していきますが、日本語のドキュメントのバージョンがちょっと古いので5.7に合わせてあります。
MySQLでテーブル名を変更するには、通常RENAME TABLEを利用します。 RENAME TABLE old_table TO new_table; テーブル名の変更はSQLの標準規格には存在しません。そのため各DBが独自の実装をしているのが現状です。これもMySQLでの利用方法ですので、他のDBを…
MySQLのAUTO_INCREMENTの値を確認したり設定します。 値を設定する ALTER TABLE tbl AUTO_INCREMENT = 100; 値を確認する SELECT AUTO_INCREMENT FROM information_schema.tables WHERE TABLE_SCHEMA = 'test' /* testデータベース */ AND TABLE_NAME = 'foo…
MySQLでテーブルをコピーします。 以下の2つのパターンのそれぞれの特徴についてメモします。 パターン1 CREATE TABLE newtable LIKE oldtable; INSERT INTO newtable SELECT * FROM oldtable; パターン2 CREATE TABLE newtable SELECT * FROM oldtable;
「Dockerで開発環境を作らないヤツは人にあらず」的な空気を感じる昨今ですが、古来から子々孫々と受け継がれし方法を現代に伝承していく所存であります。 というわけで、HomeBrewでmacOSにMySQLを入れていきます。
今回はAWSで気軽にVPSサーバを立てることができるLightsailで、LAMP環境を構築してみます。1台のサーバにWebとDBが同居する形の非常にシンプルな物です。 もともとAnsibleで自動化しようと思ってタスクを洗い出していたのですが、せっかくなのでブログにも残…
2013年に作成した個人的なWebサービスがいつの間にか動かくなってる…?と思って調べて見るとPHP経由で動かしているMySQLが以下のようなエラーを吐いていました。 PHP Fatal error: Uncaught Exception: [_runsql] HY000 1526 Table has no partition for val…
この記事は作成中です。随時更新されます 歳のせいかど忘れすることが増えたためMySQLの操作方法をまとめてメモ。MySQL5.6〜5.7あたりでの利用を想定しています。
構文 VALUESをカンマ(,)で区切って指定するだけです。 INSERT INTO `テーブル名` (id, name) VALUES (1, 'foo') , (2, 'bar') , (3, 'hoge'); 通常のINSERTと同様に、すべての列に順番通りデータを追加する場合はカラム名の記述は不要です。 INSERT INTO `テ…
ここではMySQLでの実行方法を取り上げます。 構文 INSERT句で、ON duplicate key updateを利用することで実現できます。 INSERT INTO `テーブル名` (id, name) VALUES (1, 'りんご') ON duplicate key update id = 1 , name = 'ぱんだ'; ここでは次のような…
ここで表示されるのはログイン中のユーザーがGRANTで表示権限が与えられたデータベースのみが表示される点に注意。