質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

1685閲覧

【Node.js/Express.js】npm db-migrateを使って、マイグレーションしようとするもエラーでできない。

tonkotsu_ramen

総合スコア6

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

1クリップ

投稿2021/06/13 20:45

【背景】
Node.js/Express.jsを触り始めて1週間くらいの初心者です。
DBを直接操作していたのですが、面倒になってきたので、npm db-migrateを使って、マイグレーションファイルを作成し、DBを操作したいと考えていました。

【実現したいこと】
npm db-migrateを使って、DBを操作する。

【エラーの内容】
下記のリンクの手順に従って進めていました。
https://qiita.com/TakagiToru/items/61600235a9552daa5c28

マイグレーションファイルは問題なく作成できて、編集後

$ db-migrate up

を実行したところ、下記のエラーが出ました。

ERROR] AssertionError [ERR_ASSERTION]: ifError got unwanted exception: No such driver found, please try to install it via npm install db-migrate-mysql2 or npm install -g db-migrate-mysql2

↓マイグレーションファイル

'use strict'; var dbm; var type; var seed; /** * We receive the dbmigrate dependency from dbmigrate initially. * This enables us to not have to rely on NODE_PATH. */ exports.setup = function(options, seedLink) { dbm = options.dbmigrate; type = dbm.dataType; seed = seedLink; }; exports.up = function(db) { db.createTable('hoge', { id: { type: 'int', primaryKey: true }, name: 'string' }); return null; }; exports.down = function(db) { db.dropTable('hoge'); return null; }; exports._meta = { "version": 1 };

↓database.json

json

1{ 2 "dev": { 3 "driver": "mysql2", 4 "user": "root", 5 "password": "", 6 "database": "nodejs" 7 } 8}

【ためしてみたこと】
おそらく原因は、Mysqlではなく、Mysql2を使用しているために発生していると考えています。
エラー文にもある、npm install db-migrate-mysql2 npm install -g db-migrate-mysql2どちらも実行してみましたが、not foundでインストールできませんでした。
Mysql2を使用している理由は、もともと、Mysql8系を使用していたのですが、色々問題があり、Mysql2で解決したので、そのまま使用しているといった感じです。
解決策等あれば、ご教示をお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

DBマイグレーション前と同様にmysql2を使用したいのでしたら、
database.jsonのdrivermysqlで良いと思われます。

db-migrateで公式にサポートされているMySQL用のドライバー(db-migrate-mysql)は、
package.jsonを参照すると実態としてはmysql2を内部的に使用しています。
ドライバー名にmysql2と入ってませんが、2021/04のコミットでmysqlからmysql2に切り替わったようですね。

// https://github.com/db-migrate/mysql/blob/master/package.json { "dependencies": { "bluebird": "^3.7.2", "db-migrate-base": "^2.3.0", "moment": "^2.28.0", "mysql2": "^2.1.0" }, ... }

なお、db-migrate-mysql2はnpmに登録されていないようでしたので、
【ためしてみたこと】に記載されているようにこのドライバーのインストール時にnot Foundになるのは想定通りの挙動のようです。

投稿2021/06/20 05:18

Ponzmild

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tonkotsu_ramen

2021/06/26 10:59

ありがとうございました!また別の問題も出てきましたが、とりあえずmysqlをインストールし直すことで解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問