Как исправить ошибку mysql при вставке данных

#mysql #ubuntu

#mysql #ubuntu

Вопрос:

Я пытаюсь ввести данные в базу данных mysql, однако я продолжаю сталкиваться с ошибкой (1064).

  ------------- ------------------ ------ ----- --------- ---------------- 
| Field       | Type             | Null | Key | Default | Extra          |
 ------------- ------------------ ------ ----- --------- ---------------- 
| meas_id     | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| sensor_id   | int(11)          | YES  |     | NULL    |                |
| svalue      | float            | YES  |     | NULL    |                |
| units       | varchar(20)      | YES  |     | NULL    |                |
| dt_measured | datetime         | YES  |     | NULL    |                |
| lat         | float            | YES  |     | NULL    |                |
| long        | float            | YES  |     | NULL    |                |
 ------------- ------------------ ------ ----- --------- ---------------- 
  

Я пробовал инструкции insert, такие как:

 INSERT INTO measurements (sensor_id,svalue,units,dt_measured,lat,long) 
VALUES (223344,22.3344,DEG,2019-07-09T15:46:53-07:00,533244.3,60446.0);
  

Я думал, что этот оператор insert будет работать, но я продолжаю сталкиваться с ошибкой.

Комментарии:

1. Пожалуйста, скажите нам, в чем ошибка

2. Вы, вероятно, хотите использовать decimal вместо float для своих нецелочисленных числовых столбцов

3. (223344,22.3344,'DEG','2019-07-09T15:46:53-07:00',533244.3,60446.0) используйте одинарные кавычки

4. Ошибка, которую я сейчас получаю, — это ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования вблизи значений ‘long) (223344, 22.3344, ‘DEG’, ‘2019-07-09T15:46:53-07:00′, 533244.3, 60’ в строке 2

5. Пожалуйста, добавьте сообщение об ошибке к вашему вопросу.

Ответ №1:

Вам нужно заключить строковые литералы в кавычки: 'DEG

Литералы даты и времени: '2019-07-09 15:46:53'

Также MySQL не принимает формат ISO 8601 для datetimes. Он принимает только YYYY-MM-DD HH:MM:SS формат.

Смотрите документацию:

Комментарии:

1. Во-первых, спасибо!, во-вторых, я все еще сталкиваюсь с ошибкой. ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования вблизи значений ‘long) (223344, 22.3344, ‘ГРАД’, ‘2019-04-03 15:46:53′, 533244.3, 60446.0)’ в строке 1

2. long — это зарезервированное слово. Используйте другое имя столбца или заключите его в обратные ссылки. dev.mysql.com/doc/refman/8.0/en /…

3. long это зарезервированное ключевое слово . Вы можете использовать это, если поставите внутри обратные галочки.