获取专栏“ b&quot”找不到,运行SQL查询以在Springboot应用程序中的H2 DB中创建表格

发布于 2025-02-11 13:58:35 字数 9817 浏览 1 评论 0 原文

我正在研究Spring-Boot应用程序。在应用程序启动时,我必须运行一组SQL查询(“为MySQL DB”编写)才能创建表。这些查询在将Spring-Boot应用程序与MySQL DB连接时工作正常。

但是我想在H2-IN内存DB(用于集成测试)中创建这些表,因此我配置了与H2 DB连接的应用

列“ b”找不到

请帮助我,为什么我在每个查询中找不到“ B”专栏。

这是我的错误记录

.   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.3.5.RELEASE)

2022-06-28 06:19:45.179  INFO 18824 --- [           main] com.tools.seed.SeedMain           : Starting SeedMain v1.0.0.ez on -Latitude-3410 with PID 18824 (/home/Documents/SourceCode/server/code/seed-data/target/seed-data-1.0.0.ez.jar started by  abcd in /home/Documents/SourceCode/server/code/seed-data)
2022-06-28 06:19:45.184 DEBUG 18824 --- [           main] com.tools.seed.SeedMain           : Running with Spring Boot v1.3.5.RELEASE, Spring v4.2.6.RELEASE
2022-06-28 06:19:45.184  INFO 18824 --- [           main] com.tools.seed.SeedMain           : The following profiles are active: 
-----> INITIALIZING CONFIGURATION: Tue Jun 28 06:19:53 IST 2022 <-----
-----> Active Profiles: : <-----
2022-06-28 06:19:55.673 DEBUG 18824 --- [           main] c.e.tools.seed.loader.LoaderRegistry     : registered [2147483647] com.tools.seed.loader.DeviceFirmwareVersionLoader
2022-06-28 06:19:55.713  INFO 18824 --- [           main] c.e.p.hibernate.config.HibernateConfig   : Using Hz as Hibernate Cache
2022-06-28 06:21:09.483  INFO 18824 --- [           main] c.e.p.hibernate.config.HibernateConfig   : releaseConnectionAfterTransaction : false
2022-06-28 06:21:12.964 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : HHH000388: Unsuccessful: create table app_version (id bigint not null auto_increment, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, application_id varchar(50) not null, descriptor longtext, device_type varchar(16), file_size bigint, notes varchar(1024), org_code varchar(25) not null, pinned bit(1) default b'1', rollout_id varchar(25), severity int(2) default 1, status varchar(14) not null, version_code bigint not null, version_name varchar(14) not null, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs 
2022-06-28 06:21:12.966 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : Column "B" not found; SQL statement:
create table app_version (id bigint not null auto_increment, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, application_id varchar(50) not null, descriptor longtext, device_type varchar(16), file_size bigint, notes varchar(1024), org_code varchar(25) not null, pinned bit(1) default b'1', rollout_id varchar(25), severity int(2) default 1, status varchar(14) not null, version_code bigint not null, version_name varchar(14) not null, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs  [42122-212]
2022-06-28 06:21:12.978 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : HHH000388: Unsuccessful: create table bharatqr_provider_config (id bigint not null auto_increment, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, auto_check_status_enabled bit(1) default b'0' not null, auto_check_status_initiation_time integer, auto_check_status_interval_time integer, auto_check_status_type varchar(30), qr_type varchar(15) not null, terminal_type varchar(10) not null, expired_transaction_status varchar(20), generate_batch_number bit(1) default b'0' not null, partial_refund_enabled bit(1) default b'0' not null, processing_hop varchar(15), provider_base_url varchar(255) not null, provider_key varchar(255), provider_name varchar(255) not null, provider_password varchar(255), provider_username varchar(255), status varchar(20), timezone varchar(255), upi_check_status_enabled bit(1) default b'0' not null, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs 
2022-06-28 06:21:12.978 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : Column "B" not found; SQL statement:
create table bharatqr_provider_config (id bigint not null auto_increment, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, auto_check_status_enabled bit(1) default b'0' not null, auto_check_status_initiation_time integer, auto_check_status_interval_time integer, auto_check_status_type varchar(30), qr_type varchar(15) not null, terminal_type varchar(10) not null, expired_transaction_status varchar(20), generate_batch_number bit(1) default b'0' not null, partial_refund_enabled bit(1) default b'0' not null, processing_hop varchar(15), provider_base_url varchar(255) not null, provider_key varchar(255), provider_name varchar(255) not null, provider_password varchar(255), provider_username varchar(255), status varchar(20), timezone varchar(255), upi_check_status_enabled bit(1) default b'0' not null, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs  [42122-212]
2022-06-28 06:21:12.980 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : HHH000388: Unsuccessful: create table bin_info (bin varchar(6) not null, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, bank varchar(50), bank_code varchar(25), cash_enabled bit(1) default b'1', classification varchar(10), country2_iso varchar(3), country3_iso varchar(4), country_iso varchar(2), emi_enabled bit(1) default b'1', info varchar(100), iso_country varchar(16), loyalty_enabled bit(1) default b'0', mdr_card_category varchar(100), origin varchar(16), payment_card_brand varchar(25), payment_card_type varchar(10), phone varchar(16), verified_bin bit(1) default b'0', www varchar(255), primary key (bin)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs 
2022-06-28 06:21:12.980 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : Column "B" not found; SQL statement:
create table bin_info (bin varchar(6) not null, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, bank varchar(50), bank_code varchar(25), cash_enabled bit(1) default b'1', classification varchar(10), country2_iso varchar(3), country3_iso varchar(4), country_iso varchar(2), emi_enabled bit(1) default b'1', info varchar(100), iso_country varchar(16), loyalty_enabled bit(1) default b'0', mdr_card_category varchar(100), origin varchar(16), payment_card_brand varchar(25), payment_card_type varchar(10), phone varchar(16), verified_bin bit(1) default b'0', www varchar(255), primary key (bin)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs  [42122-212]
2022-06-28 06:21:12.996 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : HHH000388: Unsuccessful: create table communication_mapping (id bigint not null auto_increment, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, block_repetition bit(1) default b'1', communication_template_id bigint not null, communication_trigger varchar(5) not null, communication_type varchar(12) not null, config_level varchar(4) not null, csv_input json not null, csv_report json, end_date datetime not null, end_date_modified datetime, input_touch_points integer not null, mapping_name varchar(50) not null, recipient_level varchar(5), start_date datetime not null, status varchar(25), target_users_count bigint, total_target_count bigint, no_of_touch_points bigint, no_of_touch_points_modified bigint, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs 
2022-06-28 06:21:12.996 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : Column "B" not found; SQL statement:
create table communication_mapping (id bigint not null auto_increment, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, block_repetition bit(1) default b'1', communication_template_id bigint not null, communication_trigger varchar(5) not null, communication_type varchar(12) not null, config_level varchar(4) not null, csv_input json not null, csv_report json, end_date datetime not null, end_date_modified datetime, input_touch_points integer not null, mapping_name varchar(50) not null, recipient_level varchar(5), start_date datetime not null, status varchar(25), target_users_count bigint, total_target_count bigint, no_of_touch_points bigint, no_of_touch_points_modified bigint, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs  [42122-212]

我在应用程序中的DB配置。PropertiesFile

database.driver=org.h2.Driver
database.url=jdbc:h2:mem:testdb12;MODE=MySQL;IGNORECASE=TRUE
database.user=root
database.password=root123
spring.h2.console.enabled=true
database.encEnabled=false
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

注意:所有SQL查询都已验证,因此我无法对查询进行任何更改。

I am working on a spring-boot application. Where I have to run a set of SQL queries ("written for the MySQL DB") to create the tables when the application starts. These queries are working fine while connecting the spring-boot application with MySQL DB.

But I wanted to create these tables in the h2-in memory Db (for integration testing), So I configure the application to connect with h2 DB, But while running the SQL queries I am getting the error

Column "B" not found

in each query.

Please help me, why I am getting column "B" not found in each query.

Here are my error logs

.   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.3.5.RELEASE)

2022-06-28 06:19:45.179  INFO 18824 --- [           main] com.tools.seed.SeedMain           : Starting SeedMain v1.0.0.ez on -Latitude-3410 with PID 18824 (/home/Documents/SourceCode/server/code/seed-data/target/seed-data-1.0.0.ez.jar started by  abcd in /home/Documents/SourceCode/server/code/seed-data)
2022-06-28 06:19:45.184 DEBUG 18824 --- [           main] com.tools.seed.SeedMain           : Running with Spring Boot v1.3.5.RELEASE, Spring v4.2.6.RELEASE
2022-06-28 06:19:45.184  INFO 18824 --- [           main] com.tools.seed.SeedMain           : The following profiles are active: 
-----> INITIALIZING CONFIGURATION: Tue Jun 28 06:19:53 IST 2022 <-----
-----> Active Profiles: : <-----
2022-06-28 06:19:55.673 DEBUG 18824 --- [           main] c.e.tools.seed.loader.LoaderRegistry     : registered [2147483647] com.tools.seed.loader.DeviceFirmwareVersionLoader
2022-06-28 06:19:55.713  INFO 18824 --- [           main] c.e.p.hibernate.config.HibernateConfig   : Using Hz as Hibernate Cache
2022-06-28 06:21:09.483  INFO 18824 --- [           main] c.e.p.hibernate.config.HibernateConfig   : releaseConnectionAfterTransaction : false
2022-06-28 06:21:12.964 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : HHH000388: Unsuccessful: create table app_version (id bigint not null auto_increment, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, application_id varchar(50) not null, descriptor longtext, device_type varchar(16), file_size bigint, notes varchar(1024), org_code varchar(25) not null, pinned bit(1) default b'1', rollout_id varchar(25), severity int(2) default 1, status varchar(14) not null, version_code bigint not null, version_name varchar(14) not null, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs 
2022-06-28 06:21:12.966 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : Column "B" not found; SQL statement:
create table app_version (id bigint not null auto_increment, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, application_id varchar(50) not null, descriptor longtext, device_type varchar(16), file_size bigint, notes varchar(1024), org_code varchar(25) not null, pinned bit(1) default b'1', rollout_id varchar(25), severity int(2) default 1, status varchar(14) not null, version_code bigint not null, version_name varchar(14) not null, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs  [42122-212]
2022-06-28 06:21:12.978 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : HHH000388: Unsuccessful: create table bharatqr_provider_config (id bigint not null auto_increment, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, auto_check_status_enabled bit(1) default b'0' not null, auto_check_status_initiation_time integer, auto_check_status_interval_time integer, auto_check_status_type varchar(30), qr_type varchar(15) not null, terminal_type varchar(10) not null, expired_transaction_status varchar(20), generate_batch_number bit(1) default b'0' not null, partial_refund_enabled bit(1) default b'0' not null, processing_hop varchar(15), provider_base_url varchar(255) not null, provider_key varchar(255), provider_name varchar(255) not null, provider_password varchar(255), provider_username varchar(255), status varchar(20), timezone varchar(255), upi_check_status_enabled bit(1) default b'0' not null, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs 
2022-06-28 06:21:12.978 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : Column "B" not found; SQL statement:
create table bharatqr_provider_config (id bigint not null auto_increment, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, auto_check_status_enabled bit(1) default b'0' not null, auto_check_status_initiation_time integer, auto_check_status_interval_time integer, auto_check_status_type varchar(30), qr_type varchar(15) not null, terminal_type varchar(10) not null, expired_transaction_status varchar(20), generate_batch_number bit(1) default b'0' not null, partial_refund_enabled bit(1) default b'0' not null, processing_hop varchar(15), provider_base_url varchar(255) not null, provider_key varchar(255), provider_name varchar(255) not null, provider_password varchar(255), provider_username varchar(255), status varchar(20), timezone varchar(255), upi_check_status_enabled bit(1) default b'0' not null, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs  [42122-212]
2022-06-28 06:21:12.980 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : HHH000388: Unsuccessful: create table bin_info (bin varchar(6) not null, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, bank varchar(50), bank_code varchar(25), cash_enabled bit(1) default b'1', classification varchar(10), country2_iso varchar(3), country3_iso varchar(4), country_iso varchar(2), emi_enabled bit(1) default b'1', info varchar(100), iso_country varchar(16), loyalty_enabled bit(1) default b'0', mdr_card_category varchar(100), origin varchar(16), payment_card_brand varchar(25), payment_card_type varchar(10), phone varchar(16), verified_bin bit(1) default b'0', www varchar(255), primary key (bin)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs 
2022-06-28 06:21:12.980 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : Column "B" not found; SQL statement:
create table bin_info (bin varchar(6) not null, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, bank varchar(50), bank_code varchar(25), cash_enabled bit(1) default b'1', classification varchar(10), country2_iso varchar(3), country3_iso varchar(4), country_iso varchar(2), emi_enabled bit(1) default b'1', info varchar(100), iso_country varchar(16), loyalty_enabled bit(1) default b'0', mdr_card_category varchar(100), origin varchar(16), payment_card_brand varchar(25), payment_card_type varchar(10), phone varchar(16), verified_bin bit(1) default b'0', www varchar(255), primary key (bin)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs  [42122-212]
2022-06-28 06:21:12.996 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : HHH000388: Unsuccessful: create table communication_mapping (id bigint not null auto_increment, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, block_repetition bit(1) default b'1', communication_template_id bigint not null, communication_trigger varchar(5) not null, communication_type varchar(12) not null, config_level varchar(4) not null, csv_input json not null, csv_report json, end_date datetime not null, end_date_modified datetime, input_touch_points integer not null, mapping_name varchar(50) not null, recipient_level varchar(5), start_date datetime not null, status varchar(25), target_users_count bigint, total_target_count bigint, no_of_touch_points bigint, no_of_touch_points_modified bigint, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs 
2022-06-28 06:21:12.996 ERROR 18824 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : Column "B" not found; SQL statement:
create table communication_mapping (id bigint not null auto_increment, created_by varchar(20) not null, created_time datetime not null, lock_id int(11) default 0 not null, modified_by varchar(20) not null, modified_time datetime not null, block_repetition bit(1) default b'1', communication_template_id bigint not null, communication_trigger varchar(5) not null, communication_type varchar(12) not null, config_level varchar(4) not null, csv_input json not null, csv_report json, end_date datetime not null, end_date_modified datetime, input_touch_points integer not null, mapping_name varchar(50) not null, recipient_level varchar(5), start_date datetime not null, status varchar(25), target_users_count bigint, total_target_count bigint, no_of_touch_points bigint, no_of_touch_points_modified bigint, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_general_cs  [42122-212]

My db configuration in the application.properties file

database.driver=org.h2.Driver
database.url=jdbc:h2:mem:testdb12;MODE=MySQL;IGNORECASE=TRUE
database.user=root
database.password=root123
spring.h2.console.enabled=true
database.encEnabled=false
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

Note: all the SQL queries are verified so I can't make any changes to the queries.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

站稳脚跟 2025-02-18 13:58:36

BIT LITERLALS B'Something'是MySQL特定功能。

在您的特殊情况下,您需要用 b'1' true b'0' false> false , MySQL和H2都接受这些标准文字。


它与您的问题无关,但是您可能需要添加; database_to_lower = true 在您的JDBC URL中,如MySQL兼容模式的文档中所建议的:
https://h2database.com/html/features.html#compatibility

Bit literals b'something' are MySQL-specific feature.

In your particular case you need to replace b'1' with TRUE and b'0' with FALSE, both MySQL and H2 accept these standard literals.


It isn't related to you question, but you may want to add ;DATABASE_TO_LOWER=TRUE to your JDBC URL as suggested in documentation of MySQL compatibility mode:
https://h2database.com/html/features.html#compatibility

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文