溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

老版本mysql的報錯:ERROR 1046 (3D000): No database selected(BUG)怎么解決

發(fā)布時間:2021-09-16 16:25:46 來源:億速云 閱讀:463 作者:chen 欄目:MySQL數(shù)據(jù)庫

本篇內(nèi)容主要講解“老版本mysql的報錯:ERROR 1046 (3D000): No database selected(BUG)怎么解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“老版本mysql的報錯:ERROR 1046 (3D000): No database selected(BUG)怎么解決”吧!


開發(fā)給到一條sql,要對項目的各個庫做批量的update,寫在腳本里之后,執(zhí)行時發(fā)現(xiàn)失敗,報錯
ERROR 1046 (3D000): No database selected,發(fā)現(xiàn)有指定庫名,產(chǎn)生疑問。
確定已經(jīng)指定庫名之后,然后改寫成select做了查詢,發(fā)現(xiàn)依然報這個錯。
老版本mysql的報錯:ERROR 1046 (3D000): No database selected(BUG)怎么解決

再細(xì)看sql,發(fā)現(xiàn)unhex函數(shù)的寫法不嚴(yán)謹(jǐn),即括號沒有緊跟,
也就是說,需要用unhex()替代unhex ()。

繼續(xù)做了個測試,發(fā)現(xiàn)報錯信息相同,但是毫不相干:
既然是函數(shù)寫法不規(guī)矩,怎么和是否選擇數(shù)據(jù)庫有關(guān)?

  1. mysql> SELECT NOW ();

  2. ERROR 1046 (3D000): No database selected


確定了一下DB版本:

  • mysql> SELECT version();

  • +-----------------------+

  • | 5.0.51a-24+lenny2-log | 

  • +-----------------------+

  • 1 row in set (0.00 sec)

遠(yuǎn)古版本,估計bug較多,換了一個mysql5.5的版本做測試:
發(fā)現(xiàn)報錯正常:

  1. mysql> SELECT NOW ();

  2. ERROR 1305 (42000): FUNCTION now does not exist


大概猜測是老版本(mysql5.0)的一個BUG。5.1未做測試。

但無論是否是老版本還是新版本,函數(shù)名后不緊跟括號都會報錯,只不過5.0拋出的錯誤比較奇葩,讓人看不懂。
當(dāng)然,在sql_mode里添加“IGNORE_SPACE”既可以忽略此類問題,但是不推薦:

  1. mysql> SELECT VERSION();

  2. +-----------------------+

  3. | VERSION()             |

  4. +-----------------------+

  5. | 5.0.51a-24+lenny2-log | 

  6. +-----------------------+

  7. 1 row in set (0.00 sec)



  8. mysql> SELECT NOW ();   

  9. ERROR 1046 (3D000): No database selected



  10. mysql> SHOW VARIABLES LIKE 'sql_mode';

  11. +---------------+-------+

  12. | Variable_name | Value |

  13. +---------------+-------+

  14. | sql_mode      |       | 

  15. +---------------+-------+

  16. 1 row in set (0.00 sec)



  17. mysql> SET @@session.sql_mode='IGNORE_SPACE';

  18. Query OK, 0 rows affected (0.00 sec)



  19. mysql> SELECT NOW ();     

  20. +---------------------+

  21. | NOW ()              |

  22. +---------------------+

  23. | 2016-03-18 02:00:14 | 

  24. +---------------------+

  25. 1 row in set (0.00 sec)


到此,相信大家對“老版本mysql的報錯:ERROR 1046 (3D000): No database selected(BUG)怎么解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI