##実行コマンド
sequelize model:create --name goal --underscored --attributes goalname:string
sequelizeでgoalというモデルを作成しようとしている。
###エラー内容
Unable to resolve sequelize package in
意味
sequelizeがうまく開かないみたいだけど
#問題点がありそうなところを考える
以下の1番目から順番に思いついたため、順番に対処しました。
結果的に3番目の「実行ディレクトリの誤り」だっただけですが、そこに辿り着くまでに手順をまとめておこうと思います。
####1. confing.jsonの表記ミス
####2. sequelizeのインストールができていない
####3. 実行ディレクトリの誤り
##1. confing.jsonの表記ミスの可能性
vimなどのエディタでnode/config/config.jsonを確認。
vim node/config/config.json
1 {
2 "development": {
3 "username": "root",
4 "password": null,
5 "database": "database_development",
6 "host": "127.0.0.1",
7 "dialect": "sqlite",
8 "storage": "./data/development.sqlite3",
9 "operatorsAliases": false
10 },
11 "test": {
12 "username": "root",
13 "password": null,
14 "database": "database_test",
15 "host": "127.0.0.1",
16 "dialect": "sqlite",
17 "storage": "./data/test.sqlite3",
18 "operatorsAliases": false
19 },
20 "production": {
21 "username": "root",
22 "password": null,
23 "database": "database_production",
24 "host": "127.0.0.1",
25 "dialect": "sqlite",
26 "storage": "./data/production.sqlite3",
27 "operatorsAliases": false
28 }
確認したが問題が確認できなかった。
##2. sequelizeのインストールができていない
この時点で自分はパニック
何をして良いかわからないが、もしかしてインストールがうまくいってなかったのではと思い、コンテナにログインし、sequelize --versionをおこうが、command not foundと怒られてしまったため、とりあえず再インストールを行うことにした。
早速コンテナにログインし実行してみる
docker exec -it serverapp /bin/bash
npm install --save sequelize
インストールの確認
sequelize --version
####実行コマンド
sequelize db:migrate
###エラー内容
ERROR: Please install mysql2 package manually
意味
Mysql2を手動でインストールして
解決
まずSQliteを使用するのにMySQLをインストールしてなのか疑問だったが、とりあえずMysql2をインストールしてみることにした。
##実行コマンド
sequelize db:migrate
###エラー内容
connect ECONNREFUSED 127.0.0.1:3306
意味
Mysql2を手動でインストールして
設定ファイルがsqliteになっているのにmysqlが必要なのが意味不明すぎて混乱した。
##3. 実行ディレクトリの誤り
最終的にはこれが原因でした。
root/nodeで実行しないといけないものをroot直下で実行していました。
正しくは
sequelize model:create --name goal --underscored --attributes goalname:string
これで実行し無事マイグレートを行えました。
#まとめ
今回のエラーでMysqlやsqliteについて知るきっかけになった良かったと思いますが、結構時間がかかってしまったので、今後はディレクトリ構造も注意してみたいと思います。