我只是想使用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 连接器负责人开发人员。
在应用任何"黑客"解决方案(例如在每个表/列选择中编写架构名称(之前,请重新考虑下一步。检查官方文档,您的问题在这里.
我将发布开场白,您可以看到它们直接在文档中解决了您的问题:
新打开的会话未设置架构。建立会话时,没有隐式设置默认架构的概念。可以定义默认架构,但在显式选择会话之前,会话的当前架构未设置为默认值。