本地和原始存储库 git 之间没有区别。但是当其他人克隆项目时,在 H2DB 中找不到该表?
Posted
技术标签:
【中文标题】本地和原始存储库 git 之间没有区别。但是当其他人克隆项目时,在 H2DB 中找不到该表?【英文标题】:No difference between local and the origin reposin git. But the table is not found in H2DB when someone else cloned the project? 【发布时间】:2016-05-13 03:46:21 【问题描述】:我正在使用带有 java 的 play framework 2.4 来开发 Web 应用程序,并且我在项目中包含了一个嵌入式 H2 DB 文件。该文件包含在一个名为“db”的单独文件夹中。我必须使用 git force add 将此文件添加到 git,因为 git 忽略了此文件夹中的内容。该代码在我的本地机器上运行良好,并且在我从源中提取后它说已经是最新的(我的本地存储库和源中的存储库之间没有区别)。但是当其他人克隆并运行这个项目时,它说在数据库中找不到表“SOMENAME”(数据库连接正常)。并且在该克隆项目和原始存储库之间也找不到任何区别。但是,当我将本地机器中的项目复制到该机器时,它可以毫无问题地运行。我真的很困惑,这个问题可能是什么原因?两台机器使用相同的播放版本和相同的操作系统。
【问题讨论】:
其他人的数据库“SOMENAME”表是否存在于他们的数据库中?请保证他的数据库和你的一致。 是的。它存在,当我检查他们的。 好奇怪,但显然不是你的代码的错,这个问题可能对你有帮助***.com/questions/5763747/… 【参考方案1】:我也有同样的经历。 play 1.4版本后,当你尝试连接h2 db时,它会自动创建一个mv db。然后它读取这个空的 mv db,而不是你的 h2 db。这就是为什么它说找不到您的表。不显示原始存储库和克隆存储库之间的任何差异的原因是 db 文件夹中的内容被 git 忽略。创建 mv db 后,git 会忽略 mv db。您可以将“IFEXISTS=TRUE
”添加到您的数据库 URL。然后 Ebean 仅在存在时才连接到数据库。通过这样做,您可以避免自动创建 mv db。
【讨论】:
以上是关于本地和原始存储库 git 之间没有区别。但是当其他人克隆项目时,在 H2DB 中找不到该表?的主要内容,如果未能解决你的问题,请参考以下文章