2015-12-03 84 views
3

我嘗試在服務器上使用我的風帆項目。我安裝了mysql。 當我調用創建用戶的請求時,sails不會自動創建表「用戶」。風帆不創建mysql表

我得到這個錯誤:

sails-hook-sockets :: connected to Sails admin message bus. 
Sending 500 ("Server Error") response: 
Error (E_UNKNOWN) :: Encountered an unexpected error 
: ER_NO_SUCH_TABLE: Table 'mooz.user' doesn't exist 
    at Query.Sequence._packetToError (/home/mooz/api/node_modules/mysql/lib/protocol/sequences/Sequence.js:48:14) 
    at Query.ErrorPacket (/home/mooz/api/node_modules/mysql/lib/protocol/sequences/Query.js:83:18) 
    at Protocol._parsePacket (/home/mooz/api/node_modules/mysql/lib/protocol/Protocol.js:271:23) 
    at Parser.write (/home/mooz/api/node_modules/mysql/lib/protocol/Parser.js:77:12) 
    at Protocol.write (/home/mooz/api/node_modules/mysql/lib/protocol/Protocol.js:39:16) 
    at Socket.<anonymous> (/home/mooz/api/node_modules/mysql/lib/Connection.js:92:28) 
    at Socket.EventEmitter.emit (events.js:95:17) 
    at Socket.<anonymous> (_stream_readable.js:710:14) 
    at Socket.EventEmitter.emit (events.js:92:17) 
    at emitReadable_ (_stream_readable.js:382:10) 
    at emitReadable (_stream_readable.js:378:5) 
    at readableAddChunk (_stream_readable.js:143:7) 
    at Socket.Readable.push (_stream_readable.js:113:10) 
    at TCP.onread (net.js:511:21) 
    -------------------- 
    at Protocol._enqueue (/home/mooz/api/node_modules/mysql/lib/protocol/Protocol.js:135:48) 
    at PoolConnection.Connection.query (/home/mooz/api/node_modules/mysql/lib/Connection.js:197:25) 
    at __FIND__ (/home/mooz/api/node_modules/sails-mysql/lib/adapter.js:836:20) 
    at afterwards (/home/mooz/api/node_modules/sails-mysql/lib/connections/spawn.js:84:5) 
    at /home/mooz/api/node_modules/sails-mysql/lib/connections/spawn.js:40:7 
    at Ping.onPing [as _callback] (/home/mooz/api/node_modules/mysql/lib/Pool.js:94:5) 
    at Ping.Sequence.end (/home/mooz/api/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24) 
    at Ping.Sequence.OkPacket (/home/mooz/api/node_modules/mysql/lib/protocol/sequences/Sequence.js:105:8) 
    at Protocol._parsePacket (/home/mooz/api/node_modules/mysql/lib/protocol/Protocol.js:271:23) 
    at Parser.write (/home/mooz/api/node_modules/mysql/lib/protocol/Parser.js:77:12) 
    at Protocol.write (/home/mooz/api/node_modules/mysql/lib/protocol/Protocol.js:39:16) 
    at Socket.<anonymous> (/home/mooz/api/node_modules/mysql/lib/Connection.js:92:28) 
    at Socket.EventEmitter.emit (events.js:95:17) 
    at Socket.<anonymous> (_stream_readable.js:710:14) 
    at Socket.EventEmitter.emit (events.js:92:17) 
    at emitReadable_ (_stream_readable.js:382:10) 
    at emitReadable (_stream_readable.js:378:5) 
    at readableAddChunk (_stream_readable.js:143:7) 
    at Socket.Readable.push (_stream_readable.js:113:10) 
    at TCP.onread (net.js:511:21) 

Details: Error: ER_NO_SUCH_TABLE: Table 'mooz.user' doesn't exist 

這裏我的模型user.js的

var Waterline = require('waterline'); 

// Define your collection (aka model) 
var User = Waterline.Collection.extend({ 

    attributes: { 

    connection:'mysql', 
    tableName:'user', 

    id: { 
     type: 'string', 
     required: true, 
     primaryKey: true, 
     unique: true 
    }, 

    username: { 
     type: 'string', 
     required: true 
    } 

    } 
}); 

我model.js:

module.exports.models = { 
connection: 'mysql', 
    migrate: 'safe' 
}; 

我connection.js:

module.exports.connections = { 

    mysql: { 
    adapter : 'sails-mysql', 
    host  : 'localhost', 
    user  : 'user', 
    port  : 3306, 
    password : 'test', 
    database : 'mooz' 
    } 

}; 

而且我UserController的

module.exports = { 
    createUser: function(req, res){ 
    var params = req.params.all(); 

    User.create({username: params.username, id: params.id}).exec(function createUser(err,created){ 
     return res.json({ 
     notice: 'Created user ' + params.username 
     }); 
    }); 
    } 
}; 

我不明白爲什麼帆不能自動創建表,我是不是忘了什麼東西?有什麼指令可以做嗎?

謝謝。

編輯:解決了與開發環境在

回答

3

你可以嘗試重新設置model.js migrate: 'alter',和sails lift

+0

不幸的是我有同樣的錯誤 – user2750855

+1

如果你在生產模式下運行sails,無論你的設置如何,它都會使用'migrate:safe'。嘗試在開發模式下運行它首先創建表。 (請注意,它可能由服務器上的系統範圍'NODE_ENV'變量設置) –

+2

它可以與dev environnement一起使用,謝謝! – user2750855