[英]MySQL “No Database Selected” Error ( 1046 ) using xdevapi and 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)
})
我沒有想到比這更簡單的事情了,只是看我是否可以使連接器正常工作,因為我沒有將其用作完整項目的一部分。
當我在選項中的關鍵字“ Schema”旁邊清楚列出了“未選擇數據庫”錯誤時,我仍然會收到錯誤消息。如果我正確記起的話,Schema和Database是同一件事。
我真的不知道出什么問題了,我們將不勝感激。
我正在參考此內容以了解如何使用此模塊( 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連接器負責人。
在應用任何“黑客”解決方案之前,例如在您選擇的每個表/列中寫入模式名稱,請重新考慮下一步。 查看官方文檔,您的問題在此處描述。
我將發表開場白,您可以在文檔中看到它們直接解決了您的問題:
新打開的會話沒有架構設置。 建立會話時,沒有隱式設置默認架構的概念。 可以定義默認模式,但是在被明確選擇之前,會話的當前模式未設置為默認模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.