MySQL not null时间戳返回null

MySQL not null时间戳返回null,mysql,jdbc,clojure,Mysql,Jdbc,Clojure,我有在远程服务器上查询MySQL 5.5.47数据库的代码。我有一个间歇性问题,创建的时间戳字段有时返回为null。我想知道是否有可能存在事务问题,并且没有立即写入时间戳字段。行为如下: 写入数据库 使用生成的id密钥访问刚写入的项 创建的字段似乎是随机返回空的 我认为这是不太可能的,但是是否有可能在一个单独的事务中创建和写入创建的字段,并且在提交创建的字段之前完成读取项目的查询?使用clojure和yesql,下面是我的代码: (let [foo (:foo input) errors

我有在远程服务器上查询MySQL 5.5.47数据库的代码。我有一个间歇性问题,创建的时间戳字段有时返回为null。我想知道是否有可能存在事务问题,并且没有立即写入时间戳字段。行为如下:

  • 写入数据库
  • 使用生成的id密钥访问刚写入的项
  • 创建的字段似乎是随机返回空的
我认为这是不太可能的,但是是否有可能在一个单独的事务中创建和写入创建的字段,并且在提交创建的字段之前完成读取项目的查询?使用clojure和yesql,下面是我的代码:

(let [foo (:foo input)
  errors (Validator foo)]
  (if (empty? errors)
     (let [foo (-> (db/with-connection insert-foo<! foo)
                      :generated_key
                      (find-by-id user-id))]
        (index-foo user-id foo (search/connect))
        [true nil])
     [false errors]))

您应该更具体,尤其是如何检索新添加行的Id?要回答您的问题,您需要回答以下几个问题:1-创建操作是否包括时间戳字段?2-时间戳字段是否允许空值?3-如何检索生成的id密钥?对于“是否有可能在单独的事务中创建和写入已创建字段”,这取决于您如何保存它。创建操作不包括在时间戳字段中。它是由DB生成的一个非空时间戳字段,具有当前的\u时间戳默认值。我正在使用JDBC驱动程序检索生成的ID。它将在初始化写入后返回。对不起,我应该在最初的问题中包括这个。将show create table的结果添加到此帖子。还要从控制台验证相关行是否设置为0000:00:00:00:00。不确定jdbc,但python的MySQLdb将其解释为NULL,因此其他驱动程序以这种方式处理它有一些先例。mysql控制台的某些版本还将接受对值为NULL的timestaps/datetimes的查询,并将其解释为NULL。但它可能会抛出一些警告。
已创建
时间戳非空默认当前时间戳,没有任何内容显示为0000:00:00:00。之后,当我自己查询数据库时,所有内容都显示为它应该显示的内容。只是在运行I代码时,它返回的内容不一致。您应该更具体一些,尤其是如何检索新添加行的Id?要回答您的问题,您需要回答以下问题:1-创建操作是否包括时间戳字段?2-时间戳字段是否允许空值?3-如何检索生成的id密钥?对于“是否有可能在单独的事务中创建和写入已创建字段”,这取决于您如何保存它。创建操作不包括在时间戳字段中。它是由DB生成的一个非空时间戳字段,具有当前的\u时间戳默认值。我正在使用JDBC驱动程序检索生成的ID。它将在初始化写入后返回。对不起,我应该在最初的问题中包括这个。将show create table的结果添加到此帖子。还要从控制台验证相关行是否设置为0000:00:00:00:00。不确定jdbc,但python的MySQLdb将其解释为NULL,因此其他驱动程序以这种方式处理它有一些先例。mysql控制台的某些版本还将接受对值为NULL的timestaps/datetimes的查询,并将其解释为NULL。但它可能会抛出一些警告。
已创建
时间戳非空默认当前时间戳,没有任何内容显示为0000:00:00:00。之后,当我自己查询数据库时,所有内容都显示为它应该显示的内容。只是在运行I代码时,它返回的内容不一致。
foo | CREATE TABLE `foo` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      ......
      `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      ......
    ) ENGINE=InnoDB AUTO_INCREMENT=272 DEFAULT CHARSET=utf8 |