无法解析PhpStorm中的有效表

时间:2016-07-12 16:17:45

标签: mysql phpstorm

我在包含SQL查询有效表的php文件中出现unable to resolve table错误。

enter image description here

如果我 Ctrl + Enter 超过查询,那么我在数据库控制台中获得预期结果,如果我在数据库浏览器选项卡中展开数据库,那么我可以看到表格。

它不影响代码执行,但它很烦人,因为它在编写代码时引起了我的注意,它掩盖了真正的SQL错误。

我已尝试刷新数据库连接,并且我已验证php选项卡正在连接到正确的数据库。

11 个答案:

答案 0 :(得分:21)

在2017年,我不得不去设置,语言&框架,SQL解决方案范围以及在那里添加我的项目和数据库链接以使其再次正确

答案 1 :(得分:11)

我正在获取OP正在获取的东西,问题是我的数据库服务器是MariaDB,并且我选择了MySQL作为SQL方言。

请参阅文件>设置:语言和框架> SQL方言。

答案 2 :(得分:6)

尝试从头开始重新创建数据库连接(删除现有连接并再次创建)。

考虑可能的原因......我可以想到这种情况:

  • 使用当前稳定版本的项目(目前为2016.1.x);
  • 在此项目上尝试EAP构建下一版本(此时为2016.2)并在那里进行一些与DB相关的更改(甚至是简单的同步DB);
  • 回到稳定版本(2016.1.x)..并且由于新版本对DB相关数据(缓存数据库结构等)使用较新的文件格式/版本控制,IDE可能会开始忽略此类数据的“未知/更新”格式而不是抛出适当的警告,只是“默默地”抛出“未解决的表”消息。

没有其他想法。

答案 3 :(得分:5)

在全球和项目级别将方言更改为MariaDB。

enter image description here

OR

enter image description here

答案 4 :(得分:1)

在我的案例中,在表名之前添加了数据库名称。

例如,而不是写SELECT * FROM Client put SELECT * FROM database.Client

答案 5 :(得分:1)

错误的污染污染让我感到难以忍受!

如果我开始解决SQL分辨率问题,我将检查我的分辨率范围(设置 - >语言和框架 - > SQL分辨率范围)。

一般情况下,当我的项目映射默认设置为“所有数据源”时,我遇到的问题最多。

以下步骤始终为我修复:

  • 单击“项目映射下拉列表”
  • 取消选中全局“所有数据来源”设置(需要进行其他选择)
  • 单击数据库连接的下拉箭头
  • 检查'所有架构'(或特定表格)
  • 单击“确定”关闭设置窗口

在下一个解析周期后,您的错误解决错误应该会消失。

您不仅限于将上述步骤应用于一个数据库连接,您可以为项目中的所有连接执行此操作。

有时候添加一个自定义分辨率范围也会起作用,但对我来说却很有用。

  • 点击加号(右上角)
  • 选择您正在处理的文件并点击“确定”
  • 选择“解决方案范围”列
  • 取消选择“所有数据来源”
  • 选择所需的特定数据库资源

重新连接到数据库永远不会对我有用。

指定表格效果很好......但随着项目的增长,它会变得非常麻烦。

希望这有帮助!

编辑:

我还遇到了另一种情况,即PHPStorm只能解决我的一些查询,无论我使用何种范围分辨率设置。但是,在我将控制台附加到我的文件后,他们解决得很好。 (在“帮助”|“查找操作”中搜索“附加控制台”。您也可以将其添加到“快速列表”或键盘映射中。)

答案 6 :(得分:1)

我将添加另一个答案,因为对我来说,这是一个完全不同的(令人尴尬的)原因:

我以某种方式忘记了在数据源常规设置(您还可以设置主机,用户和密码)中添加数据库名称

答案 7 :(得分:1)

就我而言,我单击了SQLScript中的右键,并将方言更改为“通用SQL”。它对我有用。

答案 8 :(得分:0)

要在没有SQL Resolution Scopes选项的2017年之前的PHPStorm版本中消除此错误:

  1. 转到文件
  2. 转到设置 ...
  3. 转到编辑器,然后检查
  4. SQL章节中,取消选中未解决的引用
  5. 点击应用,然后点击确定

答案 9 :(得分:0)

尽管这个答案是专门针对phpstorm的,但我在IntelliJ中也遇到了同样的问题,上述修复都不对我有用。我添加了我的范围,一切都很活跃。我可以在控制台窗口中查询数据库非常好,我完全被困住了。

最终,我注意到数据库面板中的一些文本以小文本表示0 of 4。看起来像这样:

Database panel showing the 0 of 4 message

单击0 of 4文本后,我发现没有向连接添加任何模式,即使最初建立连接时已设置默认数据库也是如此。转到该页面允许您添加架构。确保选择“所有架构”,“当前架构”或要用于连接的特定数据库。

答案 10 :(得分:0)

我是这样解决这个问题的:

  1. CTRL + SHIFT + F10
  2. 新的查询控制台
  3. 向数据库写入选择查询,例如:
SELECT * FROM user WHERE user_email='$email' AND user_password='$password'
  1. 输入您的代码页并点击查询中的表名
  2. ALT + ENTER
  3. 在控制台中运行查询
  4. 选择您创建的控制台