使用xdevapi和节点的MySQL“未选择数据库”错误(1046)

时间:2018-10-14 13:06:02

标签: mysql node.js

我只是想使用NPM上的@ mysql / xdevapi模块来做一个非常基本的“ Hello World”,以简单地获取我已建立的数据库中的行。

const mysqlx = require('@mysql/xdevapi');

const config = {
    password: 'agoodpassword!',
    user: 'user',
    host: 'localhost',
    port: 33060,
    schema: 'myDatabase'
};

mysqlx
    .getSession(config)
    .then(session => {
    return session
    .sql('SELECT * FROM `myTable`;')
    .execute();
})
.catch((err)=>{
    console.log(err)
})

我想不出比这更简单的方法,只是看我是否可以使连接器正常工作,因为我没有将其用作完整项目的一部分。

当我在选项中的关键字“ Schema”旁边清楚列出了“未选择数据库”错误时,我仍然会收到错误消息。如果我正确地调用,则Schema和Database是同一回事...

我真的不知道出什么问题了,我们将不胜感激。

我在此参考如何使用此模块(https://dev.mysql.com/doc/dev/connector-nodejs/8.0/

2 个答案:

答案 0 :(得分:0)

当前,即使您能够使用连接选项(示例中的myDatabase来定义默认架构,该架构也不适合会话级操作,例如使用{{1 }}。

您有两个选择可以克服此限制。您可以在查询本身中定义架构:

.sql()

或者,您在会话上下文中明确切换到该特定模式:

return session.sql('SELECT * FROM `myDatabase`.`myTable`').execute()

免责声明:我是xdevapi Node.js连接器主要开发人员。

答案 1 :(得分:-1)

请在应用任何“ hack”解决方案之前重新考虑下一步,例如在每个表/列选择中写入模式名​​称。查看官方文档,您的问题在HERE中有所描述。

我将发布开场白,您可以在文档中看到它们直接解决了您的问题:

  

新打开的会话没有架构设置。建立会话时,没有隐式设置默认架构的概念。可以定义默认模式,但是在被明确选择之前,会话的当前模式未设置为默认模式。