此次的項目採用mysql數據庫,之前沒怎麼接觸過,因此遇到不少問題,在此小小總結一下: mysql
(1)com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure linux
見名之意:超時,沒法鏈接 sql
因此解決辦法也很好辦: 數據庫
在my.ini中添加wait_timeout=1814400,(21*3600*24)21天,修改等待超時時間。 windows
linux中在 /etc/my.conf文件裏添加 併發
[mysqld] socket
interactive_timeout=604800
wait_timeout=604800
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock url
(2)com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections" spa
緣由:由於你的mysql安裝目錄下的my.ini中設定的併發鏈接數太少或者系統繁忙致使鏈接數被佔滿。 orm
解決方式:
打開MYSQL安裝目錄打開MY.INI找到max_connections(在大約第93行)默認是100通常設到500~1000比較合適,重啓mysql,這樣1040錯誤就解決啦。
max_connections=1000
(3)一直聽你們說mysql是不區分大小寫的,確實,在windows平臺確實不區分大小寫,但是一旦將程序移植到linux下,就有問題啦。由於在linux下mysql對大小寫是敏感的。
解決方法:找到etc文件夾下的my.cnf配置文件,找到mysqld:
Lower_case_table_names=1(讓大小寫不敏感)不一樣的數字表示不一樣的意思,你們若是想詳細瞭解,能夠本身上網查一下,在此不詳述了。
(4)有一次往表中插入數據時出現:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '£¬photo_url='photos/non.gif', phone='013901290001', id_type='?¨ª???¡è', id_num='' at line 1,
解決方法:由於個人sql語句是insert into tb_process_form_attendance(runId,key),而key在mysql中是關鍵字,因此沒法插入,報錯,在key的頭上加上兩點(反引號,它在鍵盤的~這個鍵上)。便可搞定:`key`,哎,真是不用不知道啊~
(5)今天在寫sql時遇到一個說在MySQL4.1中子查詢是不能使用LIMIT的,手冊中也明確指明 This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery。
解決辦法:這樣的語句是不能正確執行的。
select * from table where id in (select id from table limit 10);
可是,只要你再來一層就行。如:
select * from table where id in (select t.id from (select * from table limit 10)as t)
(6)not unique table/alias
則 SQL 語句中出現了非惟一的表或別名。
解決方法:
一、請檢查出現問題位置的 SQL 語句中是否使用了相同的表名,或是定義了相同的表別名。
二、檢查 SELECT 語句中要查詢的字段名是否是定義重複,或者沒有定義。