簡體   English   中英

SQLObject拋出:未知數據庫'dbname?charset = utf8'

[英]SQLObject throws: Unknown database 'dbname?charset=utf8'

我有第三方Python腳本,看起來它必須通過SQLObject包連接到MySQL數據庫。

考慮到我提供了正確的DSN,腳本將拋出

sqlobject.dberrors.OperationalError:未知數據庫'dbname?charset = utf8'

我已將問題追溯到這段代碼

ar['charset'] = 'utf8'
conn = connectionForURI(uri, **ar)

調用此函數

並且當注釋ar['charset'] = 'utf8'時,它連接良好,因此不提供查詢字符串。

我在Windows上有這個問題,

  • MySQL 5.5.25
  • Python 2.7.2
  • MySQL-Python 1.2.5
  • SQLObject 3.0.0a1dev-20150327

到底發生了什么,應該如何解決? 問題出在依賴項還是腳本本身?

我進行了一些研究,發現SQLObject的最新版本使用以下代碼從URI中提取連接參數。 不幸的是, urlparse函數以這種方式工作,因此用作數據庫名稱的path會進一步與查詢字符串一起解析。

作為解決此問題的方法,我建議如下將數據庫編碼參數顯式傳遞給連接對象:

conn = connectionForURI(uri)
conn.dbEncoding = 'utf-8'

這可能會有所幫助,但值得提出一個拉出請求以修復從URI中提取數據庫名稱的問題。

UPD:較舊的版本(如2.x)使用​​其他代碼來解析連接URL,效果很好。

逗號,而不是問號:

db = MySQLdb.connect(host=DB_HOST, user=DB_USER, passwd=DB_PASS,
      db=DB_NAME, charset="utf8", use_unicode=True)

如果您無法通過第三方軟件,請放棄它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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