- 投稿日:2021-01-14T20:41:41+09:00
Node.jsとMySQLの接続方法
mysqlモジュールをインストールする
Node.jsでMySQLに接続するには、mysqlモジュールを使います。
以下のコマンドを実行してインストールします。$ npm install mysqlMySQLに接続する
MySQLを操作するjsファイルに追記していきます。
今回はMySQLを操作するjsファイルをmain.js
とします。
main.js
に以下を追加して、mysqlのモジュールをインポートします。main.jsconst mysql = require('mysql');次に、
createConection
メソッドで、使用するMySQLのデータベースとの接続の指定をし、connection
を作成します。(MySQLでデータベースを作成しておきましょう。)main.jsconst connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'database-name' });クエリを実行する
データベースからデータを引出します。
例えば以下のようになります。main.jsconnection.query( 'SELECT * FROM database-name', (error, results) => { res.render('list.ejs', { databaseーname: results }); } );MySQLとの接続を切る
最後に
end
メソッドでconnection
によるMySQLとの接続を切ります。main.jsconnection.end();
- 投稿日:2021-01-14T13:46:35+09:00
** (MyXQL.Error) (1406) (ER_DATA_TOO_LONG) Data too long for columnが発生した場合に2つ確認する
1. Aliasを書き忘れていないか。
Sample |> Repo.all()これを書くなら、defmodule内に下記のようなaliasを記述していなければいけない。
alias Project.Context.Sample2. DBの文字コード
例えばMySQLと、クエリで文字コードが異なると発生する。
その場合、MySQLの文字コードをutf8
にする。MySQLの
my.cnf
の[mysqld]
直下でutf8
を指定する記述をします。[mysqld] ## UTF 8 Settings init-connect='SET NAMES utf8' collation_server=utf8_unicode_ci character_set_server=utf8 skip-character-set-client-handshake確認します。
mysql> show variables like '%char%'; +--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql-8.0/charsets/ | +--------------------------+--------------------------------+ 8 rows in set (0.01 sec)