#mysql #debugging #mysql-workbench
#mysql #отладка #mysql-workbench
Вопрос:
Я хочу получить текущее время создания и обновления записи. В руководстве, которому я следую, автор использует CURRENT_TIMESTAMP
без ()
, но у меня это не сработало, это дало мне std::exception
.
Ниже я делаю CURRENT_TIMESTAMP()
, но это не работает. Я также читал онлайн и пробовал DEFAULT CURRENT_TIMESTAMP
, но это также не работает.
Что я делаю не так и как я могу это исправить?
public function up()
{
Schema::create('blogs', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->text('body');
$table->timestamps();
});
}
Комментарии:
1. Каков тип данных
created_at
иupdated_at
?2. @Zendy Я использую Laravel. Я только что опубликовал фрагмент кода, который отображает типы данных.
3. Для меня выглядит нормально. Не могли бы вы также опубликовать свой SQL-запрос для получения post?
4. @Zendy
SELECT * FROM tutorialreact.blogs;
5. Я не вижу ничего, связанного с
CURRENT_TIMESTAMP
, в вашем определении таблицы или запросе. Не могли бы вы отредактировать вопрос, описав пошагово то, что вы пытаетесь сделать? Ссылка на руководство поможет.
Ответ №1:
Проблема в том, что вы пытались вставить 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())
Ответ №2:
В руководстве, которому я следую, автор использует CURRENT_TIMESTAMP без ()
Основываясь на ваших результатах и на нескольких обоснованных предположениях, касающихся того, что происходит в этом видеоклипе, это, по-видимому, является особенностью Sequel Pro, клиента базы данных, который использует ведущий учебного пособия, а не самой базы данных MySQL. И вместо Sequel Pro вы используете MySQL Workbench, совершенно другую часть программного обеспечения.
Функция MySQL с очень похожим именем действительно является вызовом функции с ()
после нее, так что это что-то другое.
но у меня это не сработало, это дало мне std:: exception.
Для меня этот конкретный симптом звучит как ошибка, хотя нет реальной причины ожидать, что Workbench примет значение без даты (или даже произвольное выражение) в поле даты / времени.
Просто невозможно принимать такие входные данные однозначно, без использования таких приятных вещей, как кавычки и разделители имен полей, которые вы получаете, написав полную INSERT
инструкцию самостоятельно, минуя виджеты Workbench. Это понадобится вам для хорошего решения Zendy по использованию вместо этого функции MySQL CURRENT_TIMESTAMP()
.
Ниже я выполняю CURRENT_TIMESTAMP(), но это не работает. Я также читал онлайн и пробовал использовать CURRENT_TIMESTAMP по УМОЛЧАНИЮ, но это также не работает.
Вероятно, это ограничения интерфейса Workbench. Он пытается решить, предоставляете ли вы ему дословные строки для хранения в таблице или выражения с вызовами функций. И, справедливости ради, опять же, у него недостаточно информации, чтобы определить это со 100% уверенностью.
Вот почему создание собственных инструкций SQL обычно лучше. Это единственный способ конкретно указать, что именно вы пытаетесь сделать.