MySQL "No Database Selected"错误 ( 1046 ) 使用 xdevapi 和 node



我只是想使用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)
})

我想不出比这更简单的事情了,看看我是否可以使连接器工作,因为我没有成功地将其用作我整个项目的一部分。

当它清楚地列在我的选项中的关键字"架构"旁边的选项中时,我仍然只会收到"未选择数据库"错误......如果我没记错的话,架构和数据库是一回事......

我真的不知道出了什么问题,任何帮助将不胜感激。

我参考这个来了解如何使用此模块(https://dev.mysql.com/doc/dev/connector-nodejs/8.0/(

目前,即使您能够使用连接选项(示例中myDatabase(定义默认模式,该模式也不会坚持用于会话级操作,例如使用.sql()执行原始 SQL 语句。

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

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

或者,在会话上下文中显式切换到该特定架构:

return session.sql('USE `myDatabase`')
.execute()
.then(() => {
return session.sql('SELECT * FROM `myTable`')
.execute()
})

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

在应用任何"黑客"解决方案(例如在每个表/列选择中编写架构名称(之前,请重新考虑下一步。检查官方文档,您的问题在这里.

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

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

最新更新