您好,登錄后才能下訂單哦!
本篇內容主要講解“老版本mysql的報錯:ERROR 1046 (3D000): No database selected(BUG)怎么解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“老版本mysql的報錯:ERROR 1046 (3D000): No database selected(BUG)怎么解決”吧!
開發給到一條sql,要對項目的各個庫做批量的update,寫在腳本里之后,執行時發現失敗,報錯
ERROR 1046 (3D000): No database selected,發現有指定庫名,產生疑問。
確定已經指定庫名之后,然后改寫成select做了查詢,發現依然報這個錯。
再細看sql,發現unhex函數的寫法不嚴謹,即括號沒有緊跟,
也就是說,需要用unhex()替代unhex ()。
繼續做了個測試,發現報錯信息相同,但是毫不相干:
既然是函數寫法不規矩,怎么和是否選擇數據庫有關?
mysql> SELECT NOW ();
ERROR 1046 (3D000): No database selected
確定了一下DB版本:
mysql> SELECT version();
+-----------------------+
| 5.0.51a-24+lenny2-log |
+-----------------------+
1 row in set (0.00 sec)
遠古版本,估計bug較多,換了一個mysql5.5的版本做測試:
發現報錯正常:
mysql> SELECT NOW ();
ERROR 1305 (42000): FUNCTION now does not exist
大概猜測是老版本(mysql5.0)的一個BUG。5.1未做測試。
但無論是否是老版本還是新版本,函數名后不緊跟括號都會報錯,只不過5.0拋出的錯誤比較奇葩,讓人看不懂。
當然,在sql_mode里添加“IGNORE_SPACE”既可以忽略此類問題,但是不推薦:
mysql> SELECT VERSION();
+-----------------------+
| VERSION() |
+-----------------------+
| 5.0.51a-24+lenny2-log |
+-----------------------+
1 row in set (0.00 sec)
mysql> SELECT NOW ();
ERROR 1046 (3D000): No database selected
mysql> SHOW VARIABLES LIKE 'sql_mode';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sql_mode | |
+---------------+-------+
1 row in set (0.00 sec)
mysql> SET @@session.sql_mode='IGNORE_SPACE';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT NOW ();
+---------------------+
| NOW () |
+---------------------+
| 2016-03-18 02:00:14 |
+---------------------+
1 row in set (0.00 sec)
到此,相信大家對“老版本mysql的報錯:ERROR 1046 (3D000): No database selected(BUG)怎么解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。