为什么CURRENT_TIMESTAMP无法在mysqlworkbench上工作?

时间:2019-03-11 00:56:24

标签: mysql debugging mysql-workbench

我想检索帖子的创建和更新时间。在我关注的教程中,作者使用CURRENT_TIMESTAMP而不使用(),但这对我没有用,它给了我std::exception

下面我正在做CURRENT_TIMESTAMP(),但这不起作用。我也在线阅读并尝试过DEFAULT CURRENT_TIMESTAMP,但这还是行不通的。

我在做什么错,我该如何解决?

enter image description here

public function up()
{
    Schema::create('blogs', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->text('body');
        $table->timestamps();
    });
}

2 个答案:

答案 0 :(得分:1)

问题是您试图从GUI输入中插入CURRENT_TIMESTAMP,这是错误的,因为它试图将其解析为迄今为止的字符串。

我建议您改用SQL查询插入它。

INSERT INTO blogs 
    (id, name, body, created_at, updated_at) 
VALUES 
    (null, 'this is name', 'this is body', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()) 

答案 1 :(得分:0)

  

在我关注的教程中,作者使用的CURRENT_TIMESTAMP不带()

根据您的结果以及与该视频剪辑中发生的事情有关的一些有根据的猜测,这似乎是Sequel Pro(本教程演示者正在使用的数据库客户端)的功能,而不是MySQL数据库本身。而不是Sequel Pro,您使用的是完全不同的软件MySQL Workbench。

名称非常相似的MySQL功能确实是在其后跟()的函数调用,所以还有其他内容。

  

但这对我没有用,它给了我std :: exception。

对我来说,这种特定症状听起来像是个错误,尽管没有真正的理由期望Workbench在日期/时间字段中接受非日期(甚至是任意表达式)。

如果没有引号和字段名定界符之类的好东西,就不可能明确地接受这样的输入,而这正是您自己编写完整的INSERT语句(绕过Workbench小部件)获得的。对于Zendy使用MySQL CURRENT_TIMESTAMP()函数的良好解决方法,您将需要它。

  

下面我正在做CURRENT_TIMESTAMP(),但这不起作用。我还在线阅读并尝试了DEFAULT CURRENT_TIMESTAMP,但这还是行不通的。

就像这些是Workbench界面的限制。很难决定要给它 verbatim 字符串存储在表中,还是要提供带有函数调用的表达式。而且,公平地说,它并没有足够的信息来推断100%的确定性。

这就是为什么通常编写更好的SQL语句的原因。这是明确指出您要做什么的唯一方法。