⑴ 求解決sql死鎖
根源是程序的問題,檢查程序或過程為什麼會死,這樣只能暫時解決
⑵ SELECT /*!40001 SQL_CACHE */ * FROM pre_common_syscache
/*!40001 SQL_CACHE */ 這部分是無效的,是注釋,相當於select * from pre_common_syscache也就是查詢表pre_common_syscache的所有記錄。
⑶ SELECT /*!40001 SQL_CACHE */ * FROM是什麼意思
/*!40001 SQL_CACHE */這是注釋,不會起作用,相當於:
SELECT * FROM,應該後面還有內容。
⑷ mysql鏈接出現: No operations allowed after statement closed.
之所以會出現這個異常,是因為Mysql在5以後針對超長時間DB連接做了一個處理,那就是如果一個DB連接在無任何操作情況下過了8個小時後,Mysql會自動把這個連接關閉。所以使用連接池的時候雖然連接對象還在但是鏈接資料庫的時候會一直報這個異常。解決方法很簡單在Mysql的官方網站上就可以找到。
有兩個方法,
第一種是在DB連接字元串後面加一個參數。
這樣的話,如果當前鏈接因為超時斷掉了,那麼驅動程序會自動重新連接資料庫。
jdbc:mysql://localhost:3306/makhtutat?autoReconnect=true
不過Mysql並不建議使用這個方法。因為第一個DB操作失敗的後,第二DB成功前如果出現了重新連接的效果。這個失敗操作將不會處於一個事務以內,第二DB操作如果成功的話,這個事務將被提交。
conn.createStatement().execute(
"UPDATE checking_account SET balance = balance - 1000.00 WHERE customer='Smith'");
conn.createStatement().execute(
"UPDATE savings_account SET balance = balance + 1000.00 WHERE customer='Smith'");
conn.commit();
當然如果出現了重新連接,一些用戶變數和臨時表的信息也會丟失。
另一種方法是Mysql推薦的,需要程序員手動處理異常。
[java] view plainprint?
<span style="font-family:Microsoft YaHei;font-size:12px;">public void doBusinessOp() throws SQLException {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
int retryCount = 5;
boolean transactionCompleted = false;
do {
try {
conn = getConnection(); // assume getting this from a
// javax.sql.DataSource, or the
// java.sql.DriverManager
conn.setAutoCommit(false);
retryCount = 0;
stmt = conn.createStatement();
String query = "SELECT foo FROM bar ORDER BY baz";
rs = stmt.executeQuery(query);
while (rs.next()) {
}
all.close()
transactionCompleted = true;
} catch (SQLException sqlEx) {
String sqlState = sqlEx.getSQLState();
// 這個08S01就是這個異常的sql狀態。單獨處理手動重新鏈接就可以了。
if ("08S01".equals(sqlState) || "40001".equals(sqlState))
{
retryCount--;
} else {
retryCount = 0;
}
} finally {
all close:
}
} while (!transactionCompleted && (retryCount > 0));}
}</span>
⑸ 執行SQL語句錯誤
事務與另一個進程已被死鎖在 lock 資源上,且該事務已被選作死鎖犧牲品。請重新運行該事務。
⑹ sqlstate40001怎麼解決
一般是因為pagesize設置的太小了,導致在創建表的時候空間不足。 解決方案: 1.刪除資料庫 drop database DBNAME 2.重建資料庫並設置pagesize create database DBNAME automatic storage yes using codeset UTF-8 territory US pagesize 32768;
⑺ sql 問題
請檢查:
1,表名,就是 insert into 表名 values(...
有沒有錯誤;
2,insert into的values 必須包含整個表的所有列,你的表只有3個列嗎?其他的可以根據列的數據類型用逗號或者兩個單引號加逗號實現.比如:
insert into 表名 values(40001,'','',,,,'','',,)
3,id列,就是你的40001是不是帶種子的,如果帶種子的就不能加入ID列的欄位.