【问题标题】:why I cannot insert into a MySQL table from Coldfusion8?为什么我不能从 Coldfusion8 插入 MySQL 表?
【发布时间】:2012-06-03 19:56:08
【问题描述】:

我正在使用 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 中添加了一个 results 参数。如果我转储结果,我会得到:

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

【问题讨论】:

  • 如果你在插入之后执行一个select语句,你能看到结果吗? SELECT * FROM teilnehmer .. 然后dump out select statemet的结果?
  • 你说这在 MySQL 内部有效。我对此不太熟悉,但是您是否在数据源配置中使用相同的帐户?按照@Jason 的要求,似乎有可能正在创建记录,只是在您在 MySQL 中使用的帐户中不可见。
  • .. 特别是因为您的 result 转储证明 insert 是成功的,并且分配的值 id=42。这支持了@Barry 的怀疑。
  • @Jason:很好的提示。记录被插入,它们只是不可见。嗯。数据源配置在哪里...?

标签: mysql coldfusion insert


【解决方案1】:

我真傻...我在 CFtransaction 中有上述 INSERT 数据库调用,之后有一些语句,其中一个包含错误,这导致所有先前的转换语句都被还原。所以我猜这些记录根本就没有进入数据库,只有 id-key 随着存储过程的调用而增加。

【讨论】:

  • 是的,这正是应该发生的事情。事务的目的是确保 所有 语句一起成功或失败。因此,即使有一个失败,所有语句都会回滚。但是,自动递增的 id 通常不会被回收。 stackoverflow.com/questions/5537296/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
相关资源
最近更新 更多