как установить год данных в MySQL - PullRequest
0 голосов
/ 19 апреля 2011

Я не могу понять, что не так в этом выражении SQL

INSERT INTO tbl_car_model_year_rate
SET car_model_id =4,
FROM =2008,
TO =2011,
with_driver =1,
per_day =1000,
ten_days =10000,
twenty_days =20000,
thirty_days =30000,
image =  '1303166512test.jpg',
created_at = NOW( ) ,
created_by =1

Тип данных

car_model_id    int(11) 
image   text        
from    year(4)
to  year(4)
with_driver tinyint(1)          
per_day int(11) 
ten_days    int(11) 
twenty_days int(11)
thirty_days int(11)
created_at datetime 
created_by int(11)

Сообщение об ошибке

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from  =2008, to   =2011, with_driver =1, per_day  =1000, ten_days =10000,     twenty' at line 1

Ответы [ 4 ]

4 голосов
/ 19 апреля 2011

если вы измените свой код на:

INSERT INTO tbl_car_model_year_rate SET car_model_id =4,
`FROM` =2008,
`TO` =2011,
with_driver =1,
per_day =1000,
ten_days =10000,
twenty_days =20000,
thirty_days =30000,
image =  '1303166512test.jpg',
created_at = NOW( ) ,
created_by =1

Это будет работать.Если вы добавляете свои имена полей и / или таблиц в кавычки "` ", то вы можете использовать для них практически любое имя.

Причина сбоя
FROM зарезервированослово (как в select *FROMtablename)
Вы вводите MySQL в заблуждение, используя FROM в качестве имени столбца (select * FROM FROM WHERE FROM = AND)

Моя рекомендация
Не используйте зарезервированные слова для имен полей.
Измените имя столбца с FROM на YearFrom или StartYear
и с TO наYearTo или EndYear.

Использование зарезервированных слов в качестве имен столбцов просто сбивает с толку, а добавление кавычек вокруг всего лишь делает материал трудным для чтения, уродливым и в то же время запутывающим.

4 голосов
/ 19 апреля 2011

Вы используете зарезервированное слово для имени столбца.

Некоторые слова, такие как SELECT, DELETE или BIGINT, зарезервированы и требуют особой обработки для использования в качестве идентификаторов, таких как имена таблиц и столбцов.,Это также может быть верно для имен встроенных функций.

Зарезервированные слова разрешены в качестве идентификаторов, если вы заключите их в кавычки, как описано в Раздел 8.2, «Имена объектов схемы» :

Более подробный список зарезервированныхслова, включая различия между версиями, см. Зарезервированные слова в MySQL 5.5 .

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

1 голос
/ 19 апреля 2011

TO и FROM являются зарезервированными словами, вы должны поместить их в одну кавычку, например 'FROM', 'TO'.

и помните, что во время генерации таблиц избегайте использования зарезервированных слов для столбцов.ссылка на зарезервированные слова для mysql

http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

0 голосов
/ 19 апреля 2011

Вот пример правильного использования поля year в MySQL:

MySQL: добавление текущего года в качестве значения по умолчанию для поля 'year'

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