20.
MySQLの基本
mysql2 モジュールの基本
mysql2 モジュールで、DB接続やクエリーの実行など MySQL の基本的な操作できます。
DB接続設定
createConnection() 接続情報を設定して DB接続します。接続情報は「host」「user」「port」「password」「database」などを設定します。
createConnection()
mysql.createConnection({
host: ホスト名,
database: データベース名,
user: ユーザ名,
port: ポート,
password: パスワード,
});
DB接続
connect() でDB接続すると、コールバック関数が実行されます。
con.connect((err) => { });
クエリー
query() で SQL を実行します。第2引数にデータを受け渡すこともできます。
con.query(SQL, データ);
DB終了処理
DB処理をしたら最後に終了処理をします。 終了処理をしておかないとプログラムが完了しないので注意しましょう。
con.end();
DB 作成
DBクライアントツールや MySQLコマンドなどでデータベースを作成します。
MySQLコマンドの場合
create database my_page;
テーブル作成
DDLでテーブルを作成します。
DDL
CREATE TABLE IF NOT EXISTS users (
id bigint UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name varchar(255) NOT NULL,
email varchar(255) UNIQUE NOT NULL,
password varchar(255) NOT NULL,
email_ varchar(255) NOT NULL,
email_verified_at DATETIME DEFAULT NULL,
remember_token varchar(100) DEFAULT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS tweets (
id bigint UNSIGNED AUTO_INCREMENT PRIMARY KEY,
message varchar(255) NOT NULL,
user_id int NOT NULL,
image_path TEXT DEFAULT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
プロジェクト作成
ファイル構成
express_mvc/
├── .env
├── lib/
│ └── db.js
├── test/
│ ├── connection.js
│ └── insert.js
mysql2インストール
mysql2 パッケージをインストールします。
ターミナル
npm i mysql2
.env の設定
.env にDB接続の設定をします。
HOST=localhost
PORT=3000
DB_NAME=my_shop
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
- データベース名、ユーザ名、パスワードは環境にあわせてください。
DB接続設定
DB接続設定読み込み
.env のDB接続情報を info に設定します。
lib/db.js
const dotenv = require('dotenv');
dotenv.config();
exports.info = {
host: process.env.DB_HOST,
user: process.env.DB_USER,
port: process.env.DB_USER,
password: process.env.DB_PASSWORD,
}
DB接続
モジュール読み込み
DB接続テストファイル「test/connect.js」を作成し、mysql2 モジュールを読み込みます。
test/connect.js
const mysql = require('mysql2');
dbモジュールを読み込みます。
test/connect.js
const mysql = require('mysql2');
const db = require('./lib/db');
DB接続プログラム
DB接続をします。
test/connect.js
const mysql = require('mysql2');
const db = require('./db');
const con = mysql.createConnection(db.info);
con.connect((err) => {
if (err) {
console.log('DB error...');
} else {
console.log('DB connect!!');
}
})
con.end();
DB接続確認
test/connect.js を実行して、DB接続を確認します。
ターミナル
node test/connect
結果
DB connect!!
アクセス許可がない場合
エラーが発生すると、例外処理でエラーが表示されます。以下はユーザ名、ーパスワードが間違った場合です。
Error: Access denied for user ''@'localhost' (using password: NO)
ソース
lib/db.js
const mysql = require('mysql2');
const dotenv = require('dotenv');
dotenv.config();
exports.info = {
database: process.env.DB_NAME,
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PASS,
}
test/connect.js
const mysql = require('mysql2');
const db = require('./db');
const con = mysql.createConnection(db.info);
con.connect((err) => {
if (err) {
console.log('DB error...');
} else {
console.log('DB connect!!');
}
})
con.end();