Mysql server 需要在查詢中顯式聲明數據庫
我正在執行 mysql-client (Ver 14.14 Distrib 5.7.19) 和 mysql-server 版本 5.7.19,使用者 root 來自 Ubuntu 伺服器 16.04.2 LTS 上的 localhost。
我注意到 mysql 不會返回我要詢問的數據,除非我在查詢中明確指定數據庫。我一遍又一遍地複制了下面的行為。
有人可以解釋為什麼會這樣嗎?
use db1; select database(); db1 select count(*) from users; 145 select * from users; Empty set, 28416 warnings select * from users; ERROR 2006 (HY000): MySQL server has gone away
每次執行上述查詢時,結果都會發生變化。一個空集,一個Error2006,一個空集,一個Error2006,…
show warnings; ERROR 2013 (HY000): Lost connection to MySQL server during query show warnings; Warning 1287 'COM_FIELD_LIST' is deprecated and will be removed in a future release. Please use SHOW COLUMNS FROM statement instead
此警告有 64 行。我只在第一次執行“顯示警告”時收到 Error2013。沒有暫停或延遲。所有後續執行都返回相同的 64 行。
select * from db1.users;
這將毫無問題地返回完整的表(145 行)。
聽起來 5.7.19 跳了槍。
—– 2016-02-05 5.7.11 通用可用性 – 添加或更改功能 – —–
mysql_kill() ( /doc/refman/5.7/en/mysql-kill.html )、mysql_list_fields() ( /doc/refman/5.7/en/mysql-list-fields.html )、mysql_list_processes() ( /doc/ refman/5.7/en/mysql-list-processes.html ) 和 mysql_refresh() ( /doc/refman/5.7/en/mysql-refresh.html ) C API 函式已被棄用,並將在 MySQL 的未來版本中刪除. 對應的 COM_PROCESS_KILL、COM_FIELD_LIST、COM_PROCESS_INFO 和 COM_REFRESH 客戶端/伺服器協議命令也是如此。相反,使用 mysql_query() ( /doc/refman/5.7/en/mysql-query.html ) 執行 KILL ( /doc/refman/5.7/en/kill.html ),顯示列 ( /doc/refman/5.7 /en/show-columns.html )、SHOW PROCESSLIST ( /doc/refman/5.7/en/show-processlist.html ) 或 FLUSH ( /doc/refman/5.7/en/flush.html ) 語句。
建議您使用 bugs.mysql.com 發布錯誤。