IntelliJ IDEA数据源无法查看数据库中已存在的表

26

在我的MySQL数据库中,IntelliJ IDEA数据源看不到现有的表,但Netbeans可以看到。 我已经在数据库中创建了一个表。当我在IntelliJ IDEA数据源中创建连接时,它可以看到我的模式,我在“模式和表”中选择它,但是然后我在列表中看不到它。 每个模式都可以看到,除了我的这个。当我尝试使用Netbeans或MySQL Workbench连接到它时,都可以正常连接。同样的情况也发生在几个具有root访问权限的数据库中,只有我的表不行。 可能出了什么问题呢?

我看到像这样的问题,与Visual Studio相关,但没有答案。 请给一个好的线索。


4
IDEA 不会自动更新可用表格列表 - 每次模式修改后您必须手动切换 "刷新" 操作 (Ctrl+Alt+Y)。 - ice
<img src="http://postimage.org/image/by48bh8m1/"> - WebComer
ds属性 - WebComer
请在 http://youtrack.jetbrains.net/issues/IDEA 上报告此问题的所有细节,以便我们的开发人员可以重现并修复它。到目前为止,您所描述的行为无法使用相同的MySQL和JDBC驱动程序版本进行重现。如果您附加数据库到问题中可能会有所帮助。 - CrazyCoder
我有同样的问题。这是我的hsqdb配置:<property name="hibernate.connection.url" value="jdbc:hsqldb:file:db_file/testDBInMemory;shutdown=true;hsqldb.write_delay=false;"/> JPA通过会话查看所有存储的数据。但是数据源没有看到任何新表格(我也按了“刷新”按钮)。 - Kinjeiro
显示剩余5条评论
4个回答

15

我在IntelliJ IDEA 15中遇到了同样的问题。

我通过右键单击数据源 -> 属性 -> 模式 -> 使用传统的introspector来解决了这个问题。


2
适用于Idea 15.0.3和Postgres 9.5(尽管IDE表示不建议使用旧版内省器)。 - Matias SM
我也试过了,标志位之前我无法看到我可以访问的表中的某些列。 - Alberto
4
对我也起作用了。尽管我的路径不完全相同。对于我来说:右键点击数据源 -> 选项 -> 使用JDBC元数据进行内省。Intellij 2016.2.4。 - Haimke

6
我找到了HSQLDB问题的原因:这是由于 IDEA bug 引起的(我的版本是11.0)。
使用相对路径(相对于MODULE)创建数据库,像这样:
jdbc:hsqldb:file:db_file/testDBInMemory;shutdown=true;hsqldb.write_delay=‌​false;
f:\TestModule\db_file\

当将其添加到数据源中时,IDEA会将此路径识别为< strong >$ IDEA_HOME $ / bin文件夹的相对路径。
f:\Program Files\JetBrains\IntelliJ IDEA 11.0\bin\db_file\

您有两个不同的数据库。当JPA首先进行更新时,数据源不会在其他地方看到更新。

解决方法: 在文件db url中使用绝对路径。


1
+1。这就是答案,而且在2019.1版本中仍然存在。让它难以找到的原因是IntelliJ假装已经连接到了数据库。实际上,它只是连接到了一个不存在的文件,然后告诉你数据库是空的。 - Mercious

5
对于那些仍然遇到这个问题的人,Intellij IDEA还具有以下功能,可能会像它们对我一样有所帮助:
- “强制刷新”(ctrl + shift + F5):该操作可以清除缓存中的数据源信息,并重新从头加载。 - “忘记缓存模式”,该操作可清除模式缓存。需要您设置要再次显示的模式。
右键单击数据源->诊断->“强制刷新”或“忘记缓存模式”。
来源:https://www.jetbrains.com/help/idea/cannot-find-a-database-object-in-the-database-tree-view.html

1
强制刷新对我有用。谢谢。 - run-out

0

对我来说,答案被埋在一条评论中,所以我在这里发布它。对我而言的症状是看到以下错误: 无法解析表'thetablename' 并且表名被标记为红色。

以下修复方法都是触发IntelliJ刷新数据源的方法:

  • CTRL+ALT+Y 刷新数据库内容,或者
  • CTRL+F5,或者
  • 单击右侧的数据库垂直选项卡,展开,右键单击每个DB连接并选择“刷新”

感谢@ice早先在评论中回答了这个问题。我基本上只是在详细阐述,并确保这显示为答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接