我正在创建原始mysql查询,以便使用laravel'db'facade将其插入到我的db中。我已经使用了相同类型的查询来处理另一个数据库表,但是它在这个特定的表上抛出了错误。
1 PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1064 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 'group,originating_attorney,practice_area,responsible_attorney,statute_of_limitat' at line 1")
/home/vagrant/Code/proj/vendor/laravel/framework/src/Illuminate/Database/Connection.php:452
2 PDO::prepare("INSERT INTO firm_matters(id,etag,display_number,custom_number,description,status,location,client_reference,billable,maildrop_address,billing_method,open_date,close_date,pending_date,client,contingency_fee,custom_rate,group,originating_attorney,practice_area,responsible_attorney,statute_of_limitations,user,account_balances,custom_field_vals,custom_field_set_associations,created_at,updated_at) VALUES (...)
我已经检查了mysql的保留关键字,我认为我没有违反任何规则。能不能找个精通mysql的人来看看我的查询是否正确。
3条答案
按热度按时间pxy2qtax1#
我已经检查了mysql的保留关键字
不,你没有
pinkon5k2#
根据您的mysql版本,至少group是保留关键字
https://dev.mysql.com/doc/refman/5.7/en/keywords.html#keywords-5-7-g详图
编写原始查询时,请更改所有
vmdwslir3#
请查看与您的mysql服务器版本对应的手册,以获取使用“group。。。
下面是关于mysql语法错误的一个技巧:当sql解析器在查询中遇到一个使它混淆的词时,错误消息会准确地显示它混淆的地方。在这种情况下
group
是解析器在查询中不希望出现的位置。其他人也回答了这个问题
group
是mysql中的保留字。如果将保留字放在后面的记号中以分隔它们,并明确它们是标识符,而不是sql关键字,则可以将它们用作标识符(表名、列名等)。@peter建议使用一个框架是因为许多框架会自动将所有标识符划入后面的记号中,以防它们是保留字。
但是您可以自己解决这个错误,而不必采用复杂的框架。要么限定标识符,至少是那些匹配mysql保留字的标识符,要么首先不要使用保留字作为标识符。
直接编写sql没有错。