mysql上的sails v10.0遇到未定义的“模式" [英] sails v10.0 on mysql encountering 'schema' of undefined

查看:38
本文介绍了mysql上的sails v10.0遇到未定义的“模式"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用sails-mysql适配器0.10.6的sails js版本0.10.0

i'm trying out sails js version 0.10.0 with sails-mysql adapter 0.10.6

我创建了两个模型:

Customer.js

module.exports = {

  connection: 'someMysqlServer',

  attributes: {
    name: {
        type: 'string'
    },

    store: {
        model: 'Store'
    }
  }
};

Store.js

module.exports = {

  connection: 'someMysqlServer',

  attributes: {
    name: {
        type: 'string'
    },

    customers: {
        model: 'Customer',
        required: false
    }
  }
};

当我第一次运行应用程序时,一切都很好,我可以看到它在我的数据库中创建了两个表.但是,当我尝试重新启动应用程序时,出现此错误:

when I first run the application, all is fine and I can see that it created two tables on my database. However, when I try to restart the application I am getting this error:

TypeError: Cannot read property 'schema' of undefined
    at __FIND__ (C:\fray\NodeJs\testingsails10_2\test1001\node_modules\sails-mys
ql\lib\adapter.js:808:42)
    at afterwards (C:\fray\NodeJs\testingsails10_2\test1001\node_modules\sails-m
ysql\lib\connections\spawn.js:86:5)
    at C:\fray\NodeJs\testingsails10_2\test1001\node_modules\sails-mysql\lib\con
nections\spawn.js:40:7
    at Ping._callback (C:\fray\NodeJs\testingsails10_2\test1001\node_modules\sai
ls-mysql\node_modules\mysql\lib\Pool.js:81:7)
    at Ping.Sequence.end (C:\fray\NodeJs\testingsails10_2\test1001\node_modules\
sails-mysql\node_modules\mysql\lib\protocol\sequences\Sequence.js:78:24)
    at Ping.Sequence.OkPacket (C:\fray\NodeJs\testingsails10_2\test1001\node_mod
ules\sails-mysql\node_modules\mysql\lib\protocol\sequences\Sequence.js:87:8)
    at Protocol._parsePacket (C:\fray\NodeJs\testingsails10_2\test1001\node_modu
les\sails-mysql\node_modules\mysql\lib\protocol\Protocol.js:213:24)
    at Parser.write (C:\fray\NodeJs\testingsails10_2\test1001\node_modules\sails
-mysql\node_modules\mysql\lib\protocol\Parser.js:62:12)
    at Protocol.write (C:\fray\NodeJs\testingsails10_2\test1001\node_modules\sai
ls-mysql\node_modules\mysql\lib\protocol\Protocol.js:37:16)
    at Socket.<anonymous> (C:\fray\NodeJs\testingsails10_2\test1001\node_modules
\sails-mysql\node_modules\mysql\lib\Connection.js:75:28)

如果我删除表并重新启动应用程序,它将能够运行并重新创建表,但在我到达此控制器时不会再进一步​​.

and if I drop the tables and restart the application, it'll be able to run and re-create the table, but won't go further, when I get to this controller.

module.exports = {
    add: function(req, res){
        var store = {
            name: 'strore2'
        }
        Store.create(store).exec(function(err, result){
            Customer.create({name: 'customer1', store: result.id}).exec(function (err1, result1){
                return res.json({created: result1, error: err1});   
            });
        });

    }

};

并且会抛出这个错误:

TypeError: Cannot read property 'schema' of undefined
    at __CREATE__ (C:\fray\NodeJs\testingsails10_2\test1001\node_modules\sails-m
ysql\lib\adapter.js:386:42)
    at afterwards (C:\fray\NodeJs\testingsails10_2\test1001\node_modules\sails-m
ysql\lib\connections\spawn.js:86:5)
    at C:\fray\NodeJs\testingsails10_2\test1001\node_modules\sails-mysql\lib\con
nections\spawn.js:40:7
    at Ping._callback (C:\fray\NodeJs\testingsails10_2\test1001\node_modules\sai
ls-mysql\node_modules\mysql\lib\Pool.js:81:7)
    at Ping.Sequence.end (C:\fray\NodeJs\testingsails10_2\test1001\node_modules\
sails-mysql\node_modules\mysql\lib\protocol\sequences\Sequence.js:78:24)
    at Ping.Sequence.OkPacket (C:\fray\NodeJs\testingsails10_2\test1001\node_mod
ules\sails-mysql\node_modules\mysql\lib\protocol\sequences\Sequence.js:87:8)
    at Protocol._parsePacket (C:\fray\NodeJs\testingsails10_2\test1001\node_modu
les\sails-mysql\node_modules\mysql\lib\protocol\Protocol.js:213:24)
    at Parser.write (C:\fray\NodeJs\testingsails10_2\test1001\node_modules\sails
-mysql\node_modules\mysql\lib\protocol\Parser.js:62:12)
    at Protocol.write (C:\fray\NodeJs\testingsails10_2\test1001\node_modules\sai
ls-mysql\node_modules\mysql\lib\protocol\Protocol.js:37:16)
    at Socket.<anonymous> (C:\fray\NodeJs\testingsails10_2\test1001\node_modules
\sails-mysql\node_modules\mysql\lib\Connection.js:75:28)

推荐答案

这似乎是一个依赖关系损坏的问题.试试:

This seems like a broken dependencies issue. Try:

rm -rf node_modules
npm cache clear
npm install

要重新安装所有依赖项,请尝试sails lift.

To reinstall all the dependencies, then try sails lift.

此时,您将在项目中本地安装 Sails,sails lift 将使用该副本.要对您的全局风帆安装执行类似的手术,请执行以下操作:

At this point you will have Sails installed locally in your project, and sails lift will use that copy. To perform a similar surgery on your global sails install, do:

sudo npm uninstall -g sails
npm cache clear
sudo npm install -g sails

然后 rm -rf node_modules/sails 在您的项目中,以便 sails Lift 将使用全局安装.

Then rm -rf node_modules/sails in your project so that sails lift will use the global install.

这篇关于mysql上的sails v10.0遇到未定义的“模式"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆