2013-02-23 35 views
1

我剛剛用mysql 5.6設置了CF10,win2008,IIS 7.5。但是,我們得到這樣的錯誤:當我明確設置「限制」的查詢被刪除CF10,MYSQL SQL_SELECT_LIMIT = DEFAULT

Error Executing Database Query. 
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 'OPTION SQL_SELECT_LIMIT=DEFAULT 

此錯誤。

(更新從評論)

下面是一個例子:

<cfquery name="dds" datasource ="#Request.Datasource#"> 
    SELECT * 
    FROM tblaccounts 
    LIMIT 100 
</cfquery> 

至於我的研究顯示,它是與MySQL 5.6的新版本不兼容。

+7

PL發表您的查詢是給你的錯誤 – Meherzad 2013-02-23 10:32:27

+0

它在所有查詢 – tan369 2013-02-24 08:30:32

+0

我們怎樣才能在錯誤是沒有看到查詢? PL後所有的查詢 – Meherzad 2013-02-24 16:27:37

回答

16

借用一些從上面詳細的答案:

我們有同樣的問題,它是由更新JDBC文件固定。由於ColdFusion 10 only supports MySQL 5.0 and 5.1,您需要如上所述更新連接器。

要在Windows計算機上更新JDBC連接器,

  1. the link provided above
  2. 打開zip壓縮包獲取的.zip連接器,並找到使用mysql-connector-java的5.1.23-bin.jar
  3. 拷貝.jar文件到C:\ ColdFusion10 \ cfusion \ lib中\
  4. 開放服務(開始>控制面板[可選]>管理工具>服務)
  5. 停止/啓動「的ColdFusion 10了Applica服務器「服務

要驗證新的.jar是否已被ColdFusion識別,請登錄到您的ColdFusion管理員,單擊」服務器設置「下的」設置摘要「。搜索「mysql」。您應該看到「CF服務器Java類路徑」一節中列出的.jar文件。不需要重新設置數據源。這些更改應該會自動應用。

+0

奇怪的是,在這裏發佈問題之前我曾試過這種方式,但它不適用於我。在此更新之後,我的數據源未被識別等等,並且我還原爲舊的連接器,並且必須重新安裝CF才能接收我的數據源,但我只是試了一遍,目前效果很好,非常感謝您的幫助。 – tan369 2013-03-04 09:37:35

+0

第一個鏈接似乎已經更新,因爲它現在提到對5.6的支持。 – bejs 2014-12-23 04:16:32

0

MySQL的棄用SET OPTION很久以前,看到docs,並且它是在5.6 刪除您需要使用SET沒有OPTION語句,

SET SQL_SELECT_LIMIT = 100;

會做你想要什麼。

請注意,這設置了單個連接的默認值。爲了確保您的後續查詢使用相同的連接將它們包裝在<cftransaction>

<cftransaction> 
    <cfquery name="tmp" datasource ="#Request.Datasource#"> 
    SET SQL_SELECT_LIMIT = 100; 
    </cfquery> 
    <cfquery name="dds" datasource ="#Request.Datasource#"> 
    SELECT * 
    FROM tblaccounts; 
    </cfquery> 
</cftransaction> 

另一種方法是啓用對數據源的多個查詢,但不建議這樣做出於安全考慮。

+0

我會推薦使用標準的'limit'運算符代替。 'sql_select_limit'是一個會話級別設置。一旦你應用了它,它就會持續數據庫連接的生命。因此,如果啓用連接池,則很可能會重新使用連接,並將限制應用於完全無關的查詢。相反,使用標準的「LIMIT」運算符更安全,因爲它僅適用於單個查詢。也就是說,我不相信他們明確地使用了「設置選項......」。當然,原來的問題並不是真的很清楚 - 無論如何。 – Leigh 2013-02-26 02:28:12

+0

奇怪的是,即使這個選項已經在5.0中被棄用了,它仍然被用在MySQL Java Connector for 5.1(5.1.12)中。無論如何,最新的Connector(5.1.24)已被修復爲不使用SET OPTION。 – YudhiWidyatama 2013-04-09 01:52:20

2

從我所瞭解的另一個選項應該是將JDBC驅動程序更新到latest MySQL JDBC Driver。您可以在using the latest JDBC driver here上找到說明:(儘管說明可能有點舊,但它仍然可以以幾乎相同的方式工作)。

FYI ColdFusion 10 only supports MySQL 5.0 and 5.1

+0

更新jdbc驅動程序不會改變'SET OPTION'在mysql中無效的事實5.6 – 2013-02-25 18:50:08

+0

嗨,我更新了最新的驅動程序,但它導致了CF無法識別數據源的各種問題。 @pete現在,當我對我的查詢設置「限制」時,它一切正常,你認爲它的壞習慣?如果我們將我們的mysql降級到5.1,PS非常感謝cf10鎖定指南,真棒的東西。 – tan369 2013-02-25 22:37:50

+1

@ChrisBlackwell他沒有在他的代碼中使用SET OPTION,它是由JDBC驅動程序在內部完成的 – 2013-02-26 16:19:15

1

謝謝了克拉克 - 我們只是有同樣的問題與CF9

這實際上適用於CF9爲好。 然後步驟3:將此.jar文件複製到C:\ ColdFusion9 \ lib \ Step3a重命名舊驅動程序mysql-connector-java-commercial-5.1.11-bin.jar.old 否則,驅動程序可能會發生衝突。 (之前發生)

更新後,這個錯誤似乎消失了。 :)