gpt4 book ai didi

mysql - 在 Ruby on Rails (MySQL) 中使用 'end' 作为列名

转载 作者:行者123 更新时间:2023-11-29 02:06:11 25 4
gpt4 key购买 nike

我有一个带有“结束”列(日期时间格式)的模型,只是发现每当我尝试在查询中引用该列时,Heroku 就会崩溃并出现不合逻辑的 Active Record 错误。我花了两个小时尝试调试这个极其简单的查询,之后我将该列重命名为“end_at”,所有问题都消失了。

有其他人遇到过这个问题吗?我很好奇这背后的原因,希望我们能帮助其他人避免同样的错误。有人问过类似的问题before , 但没有给出明确的答案。

最佳答案

BEGIN 和END 是Oracle 和SQL Server 中的保留字,但不知道为什么MySQL doesn't consider them as such .

然而,PGError 似乎表明数据库引擎本身(而不是任何与 Ruby 相关的运行时)确实因为“结束”而拒绝了查询。

保留字(和包含空格的名称)可以在引用时使用——也许 Active Record 没有在生成的 SQL 中引用标识符。

我会查看 MySQL 中的日志 (http://dev.mysql.com/doc/refman/5.5/en/query-log.html) 并查看生成的语句。

并且由于 PGError 表示 PostGreSQL 而您提到了 Heroku (PostgreSQL 8.3) - 我认为这是因为 END 确实是 PostgreSQL 中的保留字:http://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html

http://www.petefreitag.com/tools/sql_reserved_words_checker/?word=end

关于mysql - 在 Ruby on Rails (MySQL) 中使用 'end' 作为列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5570783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com