Невозможно вставить данные в MYSQL из-за UTC - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь использовать FullCalendar v4 и не могу опубликовать данные в MySQL.Я сузил проблему до $ start и $ end с UTC на конце, и MySQL не примет это, даже если мой тип данных - TIMESTAMP.Если я вручную назначу стандартные данные даты и времени (без UTC) для $ start и $ end, они будут опубликованы в таблице.У меня есть закомментированные операторы в event.php, которые работают, переопределяя данные в $ POST.

Я думаю, что у меня есть что-то косо в MySQL, которое заставляет тип данных TIMESTAMP фактически быть типом данных DATETIME,Я удалил и создал таблицу с оператором SQL, показанным ниже.

Выполнение -> MySQL 8.01.5, Windows Server 2016, PHP 7.2.7, с использованием jQuery

... CREATE TABLE calendarsystem.events (

id int(11) NOT NULL AUTO_INCREMENT,

title VARCHAR(45) NOT NULL ,

start TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

end TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

resourceId VARCHAR(45) NOT NULL ,

PRIMARY KEY (id)

);

...

Код add_event.php:

<?php
$title = $_POST['title'];
$start = $_POST['start'];
$end = $_POST['end'];
$resourceId = $_POST['resourceId'];

//$title = 'wtf';

//$start = '2019-03-25 16:00:00';

//$end = '2019-03-25T17:00:00';

//$resourceId = 'b';

try {
    require "db_config.php";
} catch(Exception $e) {
    exit('Unable to connect to database.');
}

$sql = "INSERT INTO events (title, start, end, resourceId) VALUES (:title, :start, :end, :resourceId )";

$q = $bdd->prepare($sql);

   q->execute(array(':title'=>$title,':start'=>$start,':end'=>$end,':resourceId'=>$resourceId));
?>

...

Если я открою MySQLРабочая среда и попытка добавить данные с UTC, скопированные из окна вывода Chrome. При применении возникает следующая ошибка:

Операция не выполнена: при применении сценария SQL к базе данных произошла ошибка. Выполнение: INSERTINTO calendarsystem. events (start, end, title, resourceId) ЗНАЧЕНИЯ ('2019-03-25T14: 00: 00-05: 00', '2019-03-25T15:00: 00-05: 00 ',' xxx ',' b ');

ОШИБКА 1292: 1292: неверное значение даты и времени:' 2019-03-25T14: 00: 00-05: 00 'для столбца'start' в строке 1 SQL-оператор: INSERT INTO calendarsystem. events (start, end, title, resourceId) VALUES ('2019-03-25T14: 00: 00-05:00 ',' 2019-03-25T15: 00: 00-05: 00 ',' xxx ',' b ')

Извините, пост-форматирование - crappу

1 Ответ

0 голосов
/ 29 марта 2019

Я думаю, что MySQL не распознает символ 'T' или конечное смещение в строковом значении.

 '2019-03-25T15:00:00-05:00'
            ^        ^^^^^^

Одним из способов решения проблемы было бы удаление этого символа T и смещения

 '2019-03-25 15:00:00'
            ^ 

Мы ожидаем, что MySQL распознает строку в этом формате.

В качестве альтернативы, мы могли бы использовать функцию STR_TO_DATE с моделью соответствующего формата, чтобы MySQL мог интерпретировать значения даты / времени из строк в различных форматах.

Соответствующая тема в Справочном руководстве MySQL находится здесь:

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-literals.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...