6

移行を作成して実行しました。正常に動作したと言われていますが、何も起こりませんでした。データベースに接続しているとは思いません。

私の移行ファイル:

var util = require("util");
module.exports = {
up : function(migration, DataTypes, done) {
    
migration.createTable('nameOfTheNewTable', {
    attr1 : DataTypes.STRING,
    attr2 : DataTypes.INTEGER,
    attr3 : {
        type : DataTypes.BOOLEAN,
        defaultValue : false,
        allowNull : false
    }
}).success(
        function() {

            migration.describeTable('nameOfTheNewTable').success(
                    function(attributes) {
                        util.puts("nameOfTheNewTable Schema: "
                                + JSON.stringify(attributes));
                        done();
                    });

        });
},
down : function(migration, DataTypes, done) {
    // logic for reverting the changes
}
};

私のConfig.json:

{
  "development": {
    "username": "user",
    "password": "pw",
    "database": "my-db",
    "dialect" : "sqlite",
    "host": "localhost"
  }
}

コマンド:

./node_modules/sequelize/bin/sequelize --migrate --env development
Loaded configuration file "config/config.json".
Using environment "development".
Running migrations...
20130921234513-initial.js
nameOfTheNewTable Schema: {"attr1":{"type":"VARCHAR(255)","allowNull":true,"defaultValue":null},"attr2":{"type":"INTEGER","allowNull":true,"defaultValue":null},"attr3":{"type":"TINYINT(1)","allowNull":false,"defaultValue":false}}
Completed in 8ms

これを何度も実行できますが、出力は常に同じです。既存のテーブルがあることがわかっているデータベースで試してみましたが、それらのテーブルを記述しようとしましたが、まだ何も起こりません。

私は何か間違ったことをしていますか?

編集:

私はデータベースに接続していないと確信していますが、移行を使用して接続できない可能性があります。sqlite3 my-db.sqlite以前に作成したテーブルを表示するなどのコマンドを使用して接続および実行できます.tablesが、移行を使用して作成された「nameOfTheNewTable」テーブルを取得することはできません。(移行時にもインデックスを作成したい)。ホスト、データベース(my-db、../my-db、my-db.sqlite)などの値を変更して、「開発」を使用してみました。config.json

これが良い例です。config.json私が入れ"database" : "bad-db"たもので、移行からの出力はまったく同じです。完了すると、bad-db.sqlite ファイルは見つかりません。

4

2 に答える 2

10

sqlite DB として使用するファイルを Sequelize が認識できるように、config.json で「storage」パラメーターを指定する必要があります。

Sequelize はデフォルトで sqlite のメモリ ストレージを使用するため、インメモリ データベースを移行してから終了し、移行したばかりの DB を効果的に破壊します。

于 2013-11-10T01:05:54.560 に答える
1

migration.createTableほとんどの場合、完了するまで待つ必要があります。

migration.createTable(/*your options*/).success(function() {  
    migration.describeTable('nameOfTheNewTable').success(function(attributes) {  
        util.puts("nameOfTheNewTable Schema: " + JSON.stringify(attributes));  
        done()  
    });
})
于 2013-09-25T06:39:56.367 に答える