MySQL問題集錦

此次的項目採用mysql數據庫,之前沒怎麼接觸過,因此遇到不少問題,在此小小總結一下:mysql

(1)com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failurelinux

見名之意:超時,沒法鏈接sql

因此解決辦法也很好辦:數據庫

 在my.ini中添加wait_timeout=1814400,(21*3600*24)21天,修改等待超時時間。windows

 

(2)com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"併發

緣由:由於你的mysql安裝目錄下的my.ini中設定的併發鏈接數太少或者系統繁忙致使鏈接數被佔滿。url

解決方式: 
打開MYSQL安裝目錄打開MY.INI找到max_connections(在大約第93行)默認是100 通常設到500~1000比較合適,重啓mysql,這樣1040錯誤就解決啦。 
max_connections=1000orm

 

(3)一直聽你們說mysql是不區分大小寫的,確實,在windows平臺確實不區分大小寫,但是一旦將程序移植到linux下,就有問題啦。由於在linuxmysql對大小寫是敏感的。server

  解決方法:找到etc文件夾下的my.cnf配置文件,找到mysqld:it

    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 語句中要查詢的字段名是否是定義重複,或者沒有定義。

相關文章
相關標籤/搜索