Почему CURRENT_TIMESTAMP не работает на mysqlworkbench? - PullRequest
0 голосов
/ 11 марта 2019

Я хочу получить текущее время, когда сообщение создано и обновлено. В учебном пособии, которому я следую, автор использует 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 ]

1 голос
/ 11 марта 2019

Проблема в том, что вы пытались вставить CURRENT_TIMESTAMP из ввода GUI, что неправильно, потому что он пытается проанализировать его как строку на сегодняшний день.

Я предлагаю вместо этого вставить его с SQL-запросом.

INSERT INTO blogs 
    (id, name, body, created_at, updated_at) 
VALUES 
    (null, 'this is name', 'this is body', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()) 
0 голосов
/ 11 марта 2019

В следующем уроке автор использует CURRENT_TIMESTAMP без ()

Исходя из ваших результатов и нескольких образованных предположений относительно того, что происходит в этом видеоклипе, это, похоже, является особенностью Sequel Pro, клиента базы данных, который использует докладчик, а не самой базы данных MySQL. И вместо Sequel Pro вы используете MySQL Workbench, совершенно другое программное обеспечение.

Функцией MySQL очень похожего имени действительно является вызов функции с () после него, так что это нечто другое.

но это не сработало, это дало мне std :: исключение.

Этот конкретный симптом звучит для меня как ошибка, хотя нет реальной причины ожидать, что Workbench примет не дату (или даже произвольное выражение) в поле даты / времени.

Просто невозможно однозначно принять такой ввод, без таких приятных вещей, как кавычки и разделители имен полей, что вы и получаете, написав полный оператор INSERT самостоятельно, минуя виджеты Workbench. Это понадобится вам для хорошего обходного пути Zendy - использовать вместо этого функцию MySQL CURRENT_TIMESTAMP().

Ниже я делаю CURRENT_TIMESTAMP (), но это не работает. Я также читал в Интернете и пробовал DEFAULT CURRENT_TIMESTAMP, но это также не работает.

Вероятно, это ограничения интерфейса Workbench. Трудно решить, даете ли вы ему дословно строки для хранения в таблице или выражения с вызовами функций. И, честно говоря, опять же, у него недостаточно информации, чтобы вывести ее на 100% уверенности.

Вот почему создание собственных операторов SQL обычно лучше. Это единственный способ точно указать, что именно вы пытаетесь сделать.

...