【MySQL】老版本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)
發現報錯正常:
-
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)
作者微信公眾號(持續更新)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29773961/viewspace-2059201/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Error querying database. XXXXXXXXXXXXX, No database selected。ErrorDatabase
- DZ論壇MySQL Query Error Errno:1046錯誤MySqlError
- 網站報錯:“Database Server Error”網站DatabaseServerError
- MySQL error 錯 誤 碼MySqlError
- MySQL報錯ERROR 2013 (HY000): Lost connection to MySQL server during queryMySqlErrorServer
- MySQL 啟動報錯 error while loading shared librariesMySqlErrorWhile
- Mysql資料庫報ERROR 1045 (28000)報錯及MySQL忘記密碼找回MySql資料庫Error密碼
- MySQL建立觸發器時報錯Error Code: 1064MySql觸發器Error
- mysql登入報錯提示:ERROR 1045 (28000)的解決方法MySqlError
- MySQL報錯Table 'plugin' is read only [ERROR] Can't open the mysql.plugin table.MySqlPluginError
- mysql匯入sql檔案報錯 ERROR 2013 2006 2002MySqlError
- MySQL8.0.28命中[ERROR][MY-013183]報錯案例分析MySqlError
- MYSQL5.7.22全庫備份匯入MYSQL8.0.20報錯ERROR3554MySqlError
- 【BUG記錄】MySQL插入Emoji表情報錯"Incorrect string value"MySql
- MySQL 報錯 ERROR 1290 (HY000): running with the --secure-file-privMySqlError
- Laravel對不同版本的MySQL字元編碼報錯問題LaravelMySql字元
- mysql 5.6.25報錯ERROR 1372 (HY000): Password hash 的一點思考MySqlError
- MySQL 5.6複製報錯Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND;MySqlError
- MySQL 8.0.26 bug ERROR 1064(42000) -master-data is deprecated and will be removeMySqlErrorASTREM
- GTID複製報錯處理:Last_Error: Error 'Can't drop database 'test';ASTErrorDatabase
- MySQL主從同步報error 1236MySql主從同步Error
- MySQL:一個奇怪的hang案例MySql
- MySQL 5.7 建立使用者報錯 ERROR 1805 (HY000): Column count of mysql.user is wrongMySqlError
- mysql執行報錯mysql.sockMySql
- 【MySQL】ERROR 1290 (HY000): --secure-file-priv--匯出報錯MySqlError
- MySQL 8.0版本連線報錯:Could not create coMySql
- mysql 索引長度 767 錯誤 ERROR 1071MySql索引Error
- Mysql8.0 報錯MySql
- 一個奇怪的 Bug
- 使用最新版本MySQL8.0.12報錯記錄MySql
- mysql database manual(mysql資料庫手冊)MySqlDatabase資料庫
- MYSQL connector 的 NullReferenceException bugMySqlNullException
- MySQL 鎖bug?MySql
- Mysql連線錯誤ERROR 2003 (HY000)MySqlError
- 2、MySQL錯誤日誌(Error Log)詳解MySqlError
- MySql8以上安裝失敗錯誤database filedMySqlDatabase
- Centos7-mysql執行報錯ERROR1820(HY000):YoumustresetyourpasswordusingALTERUSERstatementbeforeexecutingthisstatement.CentOSMySqlError
- MySQL 5.7初始化報錯error while loading shared libraries: libnuma.so.1MySqlErrorWhile
- MySQL 8.0.25 Bug 報"MY-013132 The table ...is full"MySql