sails-mysql:ER_NO_DB_ERROR:未选择数据库

tst*_*ker 1 mysql node.js sails.js

尝试使用Sails-mysql时出现ER_NO_DB_ERROR: No database selected异常。即使我按照所有说明进行操作,也能够找到尽可能接近的内容。我还研究了相关问题:

到目前为止,似乎没有任何帮助。

这就是我在做什么:

我从一个新项目开始:

sails new sql-test
cd sql-test
Run Code Online (Sandbox Code Playgroud)

安装帆-MySQL

sudo npm install sails-mysql
Run Code Online (Sandbox Code Playgroud)

我更改了配置:

// config/adapters.js

module.exports.adapters = {
  'default': 'mysql',
  mysql: {
    module   : 'sails-mysql',
    host     : 'localhost',
    port     : 3306,
    user     : 'root',
    password : 'superSecret',
    database : 'testDB'
  }
};
Run Code Online (Sandbox Code Playgroud)

创建了一个模型:

// api/models/User.js
module.exports = {
  attributes: {
      name: 'string'
  }
};
Run Code Online (Sandbox Code Playgroud)

当我尝试从项目的根目录运行它时:

sails lift
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

Logic error in mySQL ORM.
{ [Error: ER_NO_DB_ERROR: No database selected] code: 'ER_NO_DB_ERROR', index: 0 }
error: Hook failed to load: orm (Error: ER_NO_DB_ERROR: No database selected)
error: Error encountered while loading Sails core!
error: Error: ER_NO_DB_ERROR: No database selected
    at Query.Sequence._packetToError (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:32:14)
    at Query.ErrorPacket (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Query.js:82:18)
    at Protocol._parsePacket (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:172:24)
    at Parser.write (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Parser.js:62:12)
    at Protocol.write (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:37:16)
    at Socket.ondata (stream.js:51:26)
    at Socket.EventEmitter.emit (events.js:117:20)
    at Socket.<anonymous> (_stream_readable.js:746:14)
    at Socket.EventEmitter.emit (events.js:92:17)
    at emitReadable_ (_stream_readable.js:408:10)
    at emitReadable (_stream_readable.js:404:5)
    at readableAddChunk (_stream_readable.js:165:9)
    at Socket.Readable.push (_stream_readable.js:127:10)
    at TCP.onread (net.js:526:21)
    --------------------
    at Query.Sequence (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:15:20)
    at new Query (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Query.js:12:12)
    at Function.Connection.createQuery (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:48:10)
    at Connection.query (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:100:26)
    at __DESCRIBE__ (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/lib/adapter.js:121:20)
    at afterwards (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/lib/adapter.js:571:7)
    at Handshake._callback (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/lib/adapter.js:549:9)
    at Handshake.Sequence.end (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:66:24)
    at Handshake.Sequence.OkPacket (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:75:8)
    at Protocol._parsePacket (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:172:24)
    at Parser.write (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Parser.js:62:12)
    at Protocol.write (/home/tster/Documents/sandbox/sql-test/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:37:16)
    at Socket.ondata (stream.js:51:26)
    at Socket.EventEmitter.emit (events.js:117:20)
    at Socket.<anonymous> (_stream_readable.js:746:14)
    at Socket.EventEmitter.emit (events.js:92:17)
    at emitReadable_ (_stream_readable.js:408:10)
    at emitReadable (_stream_readable.js:404:5)
    at readableAddChunk (_stream_readable.js:165:9)
    at Socket.Readable.push (_stream_readable.js:127:10)
    at TCP.onread (net.js:526:21)
Run Code Online (Sandbox Code Playgroud)

附加信息:

  • v0.9.13
  • sails-mysql(v0.9.9)
  • mysql v14.14 Distrib 5.5.34,用于使用readline 6.2的debian-linux-gnu(x86_64)
  • 我可以通过命令行连接数据库。
  • 使用node-mysql时,我能够连接并查询数据库

有人可以给我一些建议吗?我想念什么吗?我还有什么需要检查的吗?

Rob*_*unn 5

我只是遇到了同样的问题。为了使其正常工作,我必须将适配器配置信息添加到我的模型中,例如/api/models/User.js:

module.exports = {

     adapter: 'mysql',

      config: {
        host: 'localhost',
        user: 'user',
        port:'3306',
        // Psst.. You can put your password in config/local.js instead
        // so you don't inadvertently push it up if you're using version control
        password: 'secret', 
        database: 'sailstest'
      },

    attributes: {
    firstName: 'STRING'
    }

};
Run Code Online (Sandbox Code Playgroud)

参见文档:

http://sailsjs.org/#!documentation/models

我还必须手动添加/api/controllers/UserController.js,因为generate函数没有将其添加到此应用中,尽管它确实将其添加到了我之前制作的测试应用中。

更新:

安装Sails.js Beta,以获得更好的功能。

npm install sails@beta -g
Run Code Online (Sandbox Code Playgroud)

配置不仅可以按预期实际运行(在config / connections.js下),ORM功能还支持关联,而0.9发行版中不支持。