mysql - OCaml - ocaml-mysql 的时间戳字段异常

标签 mysql ocaml

我在使用 ocaml-mysql(最新版​​本)库执行以下 MySQL 语句时遇到问题:

  let dump_to_db text =
      let insert = P.create db (s "INSERT INTO Temperature VALUES (?,?,?,?)") in
        ignore (P.execute insert [| "NULL"; "xxx.xxx.xxx.xxx"; text ; "CURRENT_TIMESTAMP" |])

我的问题是时间戳字段设置不正确。显然,无论我在最后一个字段中写入什么(可能是“CURRENT_TIMESTAMP”或只是“NULL”),我都无法获得正确的结果。

发生的事情是查询得到执行,我在表中看到的是一个 NULL 填充的时间戳字段(即使我不知道它怎么可能,因为被定义为 NOT NULL 列)。

我的表结构如下:

CREATE TABLE `Temperature` (
  `ID` bigint(20) NOT NULL AUTO_INCREMENT,
  `IP` varchar(100) DEFAULT NULL,
  `Value` varchar(100) DEFAULT NULL,
  `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1

最佳答案

Prepared.execute 采用值不是任意表达式(函数调用)的数组。字符串值“CURRENT_TIMESTAMP”被转换为时间戳,并且由于无法识别为有效数字,因此被转换为零。 正确传递 NULL ,它将根据 CREATE TABLE 默认初始化: P.execute_null 插入 [|没有任何;一些“xxx.xxx.xxx.xxx”;一些文字;无 |]

关于mysql - OCaml - ocaml-mysql 的时间戳字段异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35345245/

相关文章:

ocaml - 如何在 OCaml 中编写 BST 的迭代中序遍历

types - 确定 OCaml 表达式类型的一般方法是什么?

linux - Linux 有没有好的 "OCaml Browser"工具?

C# 从另一个窗体(radform)调用函数

mysql - MySQL中多表通过联合主键垂直合并

javascript - 如何从 MySQL 中的多个表中进行 SELECT?

mysql - 当数据库表中存在主键和唯一键时会出现什么异常?

mysql - 具有特定值的 Union group by 子句

ocaml - OCaml 是否进行不可变数据结构共享?

ocaml - 电池和电芯各有什么优缺点?