【问题标题】:Unable to Resolve Symbol on SQL code (PhpStorm issue)无法解析 SQL 代码上的符号(PhpStorm 问题)
【发布时间】:2016-06-18 11:31:20
【问题描述】:

我正在使用 PhpStorm 2016.1.2,并且已经轻松使用 PhpStorm 好几年了。我用数据库连接设置了我的 Storm,并显示了我的 PHP 页面连接到的 MySQL 数据库。 SQL 通常通过数据库连接类以自定义函数在 PHP 页面中编写。

示例代码块:

$checkData = $dataBaseSecure->getSelect(
"SELECT check_login.fail_id, UNIX_TIMESTAMP(check_login.last_action) AS timer
FROM check_login WHERE check_login.ip_addr = ? AND check_login.check_drop = ? ",
 $data, TRUE);  

不用担心数据库 PHP 包装器,这种风格和 PHP 中的 SQL 布局已经在我的工作中使用了几年,在 PhpStorm 和服务器上完全准确地工作并在所有测试中。

截至昨天(2016 年 6 月 17 日)

我不知道发生了什么变化,但突然间,PhpStorm 现在告诉我,在我所有的 SQL 字符串上,在我的项目中所有

Unable to resolve symbol '<table name>'

Unable to resolve column '<column name>'

而且(因此)PhpStorm 在我处理我的 SQL 代码时不再执行任何自动完成或组织功能。

我尝试过的解决方案

  • 我已经尝试根据this answer to a similar question 使我的缓存无效并重新验证。但这并没有帮助。

  • 我已经非常仔细地研究了我的设置,但 PhpStorm 数据库选项卡成功连接到数据库,据我所知,我没有进行任何更改来导致这种行为变化。

  • 我查看了 PhpStorm 首选项中的各种(和许多)设置,但没有发现任何关于此问题的信息,或者我调整的更改没有解决它。

  • 我找到了this answer,但这似乎并不适用,因为我的表名是不是变量。我还发现了this post,虽然日期为 2014 年,但它显示了类似的问题,但不是合适的解决方案。

    • 我在大多数项目中只有一个数据库连接,但如果出现此问题,数据库的数量似乎没有影响。
  • 在命名实体周围使用适当的反引号完全转义 SQL 查询并不能解决问题。

  • 我已将我的 SQL 方言正确配置为正确的 MySQL。

  • 阅读我在 Stack Overflow 上找到的相关帖子没有提供任何有用的信息。


我在 PhpStorm 中没有与此问题或 PHP/MySQL 交互相关的插件。

如果您对如何解决此问题有任何想法,请告诉我。如果您有特定的偏好需要我检查,请告诉我,我可以将它们添加到问题中,(PhpStorm 中有很多偏好,我现在不会将它们全部发布在这里,因为我确信大多数与此问题无关)。

关键是这个系统两天前就完美运行了!!!

【问题讨论】:

  • 1) idea.log (Help | Show Log in...) 中有什么有趣的内容吗? 2) 尝试禁用所有非捆绑插件 3) 退出 PhpStorm;转到此项目的.idea 子文件夹(此项目设置)并删除dataSources.ids 文件;在 PhpStorm 中重新打开项目并重新同步数据库——更好吗?
  • 1) 我看了看,但什么都没有,有一些-1 的连接返回,但 IDE 中没有错误。我在这里有一个错误报告:youtrack.jetbrains.com/issue/WI-32197,其中包含一个 idea.log(不同的项目,相同的问题)。 2)试过了,没有变化。 3)这可能有效,我删除了数据库连接详细信息并从头开始重建它们,并删除了.ids 文件,这似乎已经修复了它,但是有两点:a)PhpStorm 中的数据库选项卡现在正在工作(圆圈图标)不断,b)似乎很奇怪我突然需要为每个项目这样做。
  • 如果您对数据库选项卡上的恒定后台工作指示器有任何线索(如何计算出它实际上(尝试)做什么?那就太好了。如果您可以添加您的第 3 点作为答案,我认为这是一个解决方案(以及可能从头开始重新建立数据库连接)。虽然我仍然很困惑这是如何发生的,但也许我的服务器人员做了一些更新或其他事情(我正在等待回复电子邮件来自他们)@LazyOne
  • “不断工作”是什么意思?任何屏幕截图或更好的小截屏视频?这对我来说似乎工作正常(虽然本地测试项目与本地 MySQL 连接)。我也可以建议在这里查看其他票:youtrack.jetbrains.com/issues/DBE。到目前为止,我完全不知道为什么它突然发生在你​​们所有的项目中(根据你的话)——对我来说,它必须是 IDE 范围内的一些变化(例如插件更新..或其他一些全局逻辑/环境)。您是否定期备份 IDE 范围的配置?
  • 至于“忙碌指示器”——也许是youtrack.jetbrains.com/issue/IDEA-148285。也可能是您的连接设置(例如,从我从日志中看到的它通过 SSH 连接连接到 DB .. 或错误的用户名/密码?)。一般来说(作为实验)——关闭IDE;备份该项目的 .idea 子文件夹并将其删除;打开 IDE 并指向该项目根文件夹——IDE 将从这些源创建新项目;重新配置您的项目(至少是与数据库相关的部分),看看它会如何进行。如果一切正常 - 看看它与您的备份副本有什么可能的差异。

标签: phpstorm


【解决方案1】:

请尝试重新同步您的数据库架构 - 以防万一它以某种方式损坏或无效。

如果它没有给出任何视觉效果——试试更激进的版本:

  • 关闭 IDE
  • 为此项目打开.idea子文件夹(存储此项目设置的地方)
  • 删除dataSources.ids文件
  • 在 IDE 中重新打开项目
  • 重新同步数据库结构/从头开始重新创建数据库连接。

【讨论】:

  • 重新同步架构不起作用,但删除 .ids 然后建立 new 数据源(具有相同的详细信息)确实 工作。
  • Tnx。对我来说,它也适用于 2017.1.4 - 我删除了 dataSources.ids,重新打开 - 没用。然后我复制了与 DB 的现有连接并删除了旧的连接 - 修复了它。 (请注意,删除旧连接时,您还会丢失在 sql 控制台中使用的任何本地缓存的 SQL 命令)
【解决方案2】:

以上方法都不适合我 - 最终做的是......

选择要运行的 SQL 字符串的一部分,然后右键单击并选择“执行”并选择架构。

由于某种原因允许 PHPStorm(更像是 light 细雨)来弄清楚它应该看什么。

【讨论】:

  • “执行”意味着 PHPStorm 确实可以识别它,但没有相应地格式化/显示。
  • “无法识别表 xyz”表示 PHPStorm 将字符串识别为 SQL,但无法将其与架构匹配。问题不在于它是否意识到这是一条 SQL 语句,而是为什么它无法将其与连接的模式匹配。这不是一个解决方案,这是一个 hack。为什么它一开始就不能正常工作?
猜你喜欢
  • 1970-01-01
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多