2012-06-03 45 views
0

我正在使用Coldfusion8和MySQL,並試圖插入到表中。爲什麼我無法從Coldfusion8插入MySQL表?

但是它無法正常工作,無論我用CFQUERY:

<cfquery datasource="dns" result="some"> 
    INSERT INTO users(iln) 
    VALUES("1234567890123") 
</cfquery> 
<cfdump output="path.txt" var="#some#"> 

或存儲過程:

<cfstoredproc procedure="proc_insert_user" datasource="dns"> 
    <cfprocparam type="In" cfsqltype="cf_sql_varchar" value="1234567890123" maxlength="13"> 
</cfstoredproc> 

與過程內的MySQL:

CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_insert_user`(IN `user_iln` VARCHAR(13)) 
    LANGUAGE SQL 
    NOT DETERMINISTIC 
    MODIFIES SQL DATA 
    SQL SECURITY INVOKER 
    COMMENT '' 
    BEGIN 
    INSERT INTO users (iln) 
    VALUES(user_iln); 
    END 

如果我從MySQL內部運行該過程,它工作。不過,從Coldfusion我無法訪問數據庫。如果我之前和CFQUERY/storedProc後設置一個標誌,這兩個標誌顯示,所以我認爲沒有任何錯誤(我沒有得到任何要麼)

問題: 我想我錯過了一些設置在MySQL/Coldfusion中。如果是這樣,我應該從哪裏開始搜索?

感謝您的幫助!

編輯
當我嘗試插入一條記錄如上表ID不斷增加,但沒有新的記錄顯示。所以ID正在創建,但我看不到任何記錄。不知道這是否有幫助。

EDIT2:
我已經添加了一個結果參數給Cfquery。如果我傾倒的結果,我得到:

CACHED: false 
EXECUTIONTIME: 60 
GENERATED_KEY: 42 
RECORDCOUNT: 1 
SQL: INSERT INTO teilnehmer(iln) 
VALUES("1234567891231") 
+1

如果您在插入後執行select語句,您會看到結果:SELECT * FROM teilnehmer ..然後轉儲出select statemet的結果? – Jason

+1

你說這是從MySQL內部起作用的。我對此不太熟悉,但是你在數據源配置中使用了相同的帳戶嗎?根據@Jason所要求的內容,似乎可能創建記錄,只是在MySQL中使用的帳戶中不可見。 – Barry

+1

..特別是因爲你的'result'轉儲證明'insert'是成功的,並且賦值爲id = 42。這支持@Barry的懷疑。 – Leigh

回答

0

我傻......我有一個CFtransaction內上述INSERT數據庫調用,並有一些語句之後,其中一個包含一個錯誤,由此引起的一切之前的過渡陳述將被恢復。所以我猜測記錄從來沒有把它存入數據庫,因爲只有id-key隨着存儲過程被調用而增加。

+0

是的,那正是應該發生的事情。交易的目的是確保* all *語句一起成功或失敗。所以即使一個失敗,所有的語句都會回滾。但是,自動遞增ID通常不會被回收。 http://stackoverflow.com/questions/5537296/sql-server-how-to-ensure-identity-fields-increment-correctly-even-in-case-of-ris-incremented-even-with-a-transaction-回滾 – Leigh