簡體   English   中英

使用xdevapi和節點的MySQL“未選擇數據庫”錯誤(1046)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM