我們開始使用基於語句的複製,並發現它打破SQL_CALC_FOUND_ROWS和FOUND_ROWS(),我正在尋找一個解決辦法。 2007年的一個錯誤報告的評論建議使用SELECT SQL_CALC_FOUND_ROWS INTO @found_rows FROM foo
,但這似乎不起作用。 MySQL說這個語法是無效的。語句複製和SQL_CALC_FOUND_ROWS
0
A
回答
1
如果你使用的是舊版本的MySQL,這可能是你的問題的一部分:http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_found-rows
FOUND_ROWS()使用可靠的基於語句的 複製是不可複製的 。從MySQL 5.1.23開始,使用基於行的 複製自動複製此功能。
編輯:如果您在MIXED
模式是以上纔有效。
而且,正確的解決方法的語法是:
SELECT SQL_CALC_FOUND_ROWS * FROM foo;
SET @found_rows = FOUND_ROWS();
SQL_CALC_FOUND_ROWS
不返回任何東西,它只是告訴MySQL從查詢計算髮現的行數,即使LIMIT
子句防止所有的人從被退回給客戶。然後可以使用FOUND_ROWS()
返回SQL_CALC_FOUND_ROWS
臨時存儲的值。
編輯:上述解決方法背後的想法(如記錄在MySQL bug 12092):
FOUND_ROWS的()的結果被存儲 到用戶變量和使用的代替 方式。即使在基於語句的 複製中,這也將正確地複製 ,因爲它會將 User_var條目寫入二進制日誌。
相關問題
- 1. MySQLi /準備好的語句和SQL_CALC_FOUND_ROWS
- 2. 將else語句複製到if語句
- 3. if/else語句和複製項問題
- 4. binlog_format =語句和CURRENT_TIMESTAMP與MySQL複製
- 5. DibiFluent和SQL_CALC_FOUND_ROWS
- 6. Mysql SQL_CALC_FOUND_ROWS和分頁
- 7. 複合語句
- 8. C++:避免使用「return」語句複製
- 9. PHP - 加入語句複製記錄
- 10. 符合條件語句後複製值?
- 11. 爲xslt製作複合xpath語句:match
- 12. 沒有DELETE語句的Postgresql複製
- 13. Mysql從SQL語句複製數據庫
- 14. 映像複製開關Case語句
- 15. 使用while語句複製數組
- 16. if else語句複製/粘貼鍵值
- 17. 簡單語句和複雜語句之間的區別 - Javascript
- 18. 在VBA中使用If語句來執行復制和粘貼
- 19. 如果else語句在複製和粘貼單元格值
- 20. 複製語義和比較
- 21. 複雜if語句
- 22. 複雜if語句
- 23. mysql複雜語句
- 24. 複利if語句
- 25. 重複SELECT語句
- 26. C#修復語句
- 27. 複雜if語句
- 28. 重複While語句
- 29. 嵌套和複雜的選擇語句
- 30. 複選框,SQL選擇語句和PHP
我們使用的是56年5月1日,但我們並沒有使用基於行的複製,這樣就不會幫助。 – mellowsoon 2011-05-24 23:09:25
@mellowsoon如果您將'SELECT'的語法更改爲我在答案中提供的內容,它是否有效,還是通過基於語句的複製阻止了它? – 2011-05-24 23:11:34
我沒有任何理由認爲它會起作用。我們已經使用'SELECT SQL_CALC_FOUND_ROWS * FROM foo',接着是'SELECT FOUND_ROWS()',並且這不適用於基於語句的複製。 – mellowsoon 2011-05-24 23:19:34