[解決済み] SQLServerExceptionを解決する方法。Invalid object name?
2022-02-10 11:06:14
質問
MS SQLサーバーを使用して、スプリングブートアプリケーションを作成しています。私は、/src/main/resources/ フォルダに置かれた data.sql ファイルを使用して user_database データベースの USERS テーブルを初期化する必要があり、残りのテーブルは @Table 注釈の助けによって springboot_db データベースに自動的に作成されなければならないという要件があります。以下は、コードスニペットです。
applicaiton.properties ファイル
spring.datasource.platform=mssql
spring.datasource.url=jdbc:sqlserver://localhost;databaseName=springboot_db
spring.datasource.username=sa
spring.datasource.password=einfochips@123
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.initialize=true
data.sql
USE master
IF EXISTS(select name from sys.databases where name='user_database')
DROP DATABASE user_database;
CREATE DATABASE user_database;
USE user_database;
CREATE TABLE tbl_users (
id INTEGER NOT NULL IDENTITY(1,1),
name VARCHAR(25),
email VARCHAR(50),
username VARCHAR(25),
password VARCHAR(225),
gender VARCHAR(1),
contact_number VARCHAR(12),
address VARCHAR(150),
country VARCHAR(20),
newsletter BIT,
framework VARCHAR(500),
skill VARCHAR(500),
role_id INTEGER,
PRIMARY KEY (id)
);
INSERT INTO tbl_users
(name, email, username, password, gender, contact_number, address, country, newsletter, framework, skill, role_id)
VALUES
('Admin User1', '[email protected]', 'admin', '$2a$10$WOf9uuaNfUgqpfXrfK1QiO.scUjxJMA.wENEu4c8GJMbPhFwbxMwu', 'f', 919979294062, 'Ahmedabad', 'India', 0, 'Spring MVC', 'Spring', 1);
AppConfiguration.java (エンティティファイルの1つ)
@Entity
@Table(name = "tbl_configuration_details")
public class AppConfiguration implements Serializable {
/**
*
*/
private static final long serialVersionUID = 6657691404940352980L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "config_id")
private Integer id;
@Column(name = "schedule_time")
private Integer scheduleTimePeriod;
// other variables and respective getter setters
}
もし私が両方のアプローチを別々に維持しながらアプリケーションを実行しているならば、問題なく動作します。両方を1つのアプリケーションに統合すると、次のエラーが表示されます。
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'tbl_configuration_details'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:232) ~[mssql-jdbc-6.1.0.jre7.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1672) ~[mssql-jdbc-6.1.0.jre7.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:460) ~[mssql-jdbc-6.1.0.jre7.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:405) ~[mssql-jdbc-6.1.0.jre7.jar:na]
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7535) ~[mssql-jdbc-6.1.0.jre7.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2438) ~[mssql-jdbc-6.1.0.jre7.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:208) ~[mssql-jdbc-6.1.0.jre7.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:183) ~[mssql-jdbc-6.1.0.jre7.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:317) ~[mssql-jdbc-6.1.0.jre7.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_144]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_144]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_144]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_144]
at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114) ~[tomcat-jdbc-8.5.23.jar:na]
at com.sun.proxy.$Proxy92.executeQuery(Unknown Source) ~[na:na]
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:70) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
... 94 common frames omitted
解決方法は?
両方のテーブルに同じデータベースを使用することで、私の問題は解決されました。しかし、なぜ2つの異なるデータベースを使用することが許されないのか、まだ混乱しています。
関連
-
[解決済み] java.sql.SQLException を取得しました。ResultSet が終了した後の操作は許可されません。
-
[解決済み】Eclipseで「パッケージエクスプローラー」ビューが見つからない
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android Studio クラス org.codehaus.groovy.runtime.InvokerHelper を初期化できませんでした。
-
[解決済み】javaで指定されたファイルが見つからない
-
[解決済み】Android Studioでタスク :app:compileDebugJavaWithJavac の実行に失敗しました。
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】非閉鎖文字リテラルエラー
-
[解決済み】Javaで無限大を実装する方法とは?
-
[解決済み】Mockitoでモックからチェックされた例外を投げる
-
[解決済み】ソースルート外のJavaファイル intelliJ
-
[解決済み】Ubuntu: OpenJDK 8 - パッケージを見つけることができません。
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。