gpt4 book ai didi

java - Hibernate 3.5.1、JPA2.0 和 MySQL - 2 个差异数据库/同一服务器内的替代行为

转载 作者:行者123 更新时间:2023-11-29 15:00:42 26 4
gpt4 key购买 nike

我正在运行 MySQL 5.1 服务器和 Hibernate 3.5.1/JPA2 for ORM。一切看起来都很好,直到我手动删除一些表。从那时起,单元测试就会失败,Hibernate 不再创建某些表。更改 jdbc url

url=jdbc:mysql://localhost:3306/dbjava?createDatabaseIfNotExist=true

url=jdbc:mysql://localhost:3306/dbjavanew?createDatabaseIfNotExist=true

解决问题...直到我执行一些表删除:-(因为我将使用 MySQL 进行生产,所以这根本不能发生。

删除 dbjava 也没有帮助。有什么建议吗?

--- 附加信息:

事情真的变得很奇怪。从 mysql 控制台:

mysql> use dbjava;
Database changed
mysql> show tables;
+---------------------+
| Tables_in_dbjava |
+---------------------+
| aa |
| ba |
| da |
| ea |
| hibernate_sequences |
| ia |
| ka |
| la |
+---------------------+
8 rows in set (0.00 sec)
mysql> create table `cA` (id integer not null, comment varchar(255), name varchar(255), id_d integer, id_f integer, primary key (id)) ENGINE=InnoDB;
ERROR 1050 (42S01): Table 'ca' already exists

呃?为什么表“ca”存在?!?!?实际上,它曾经存在过......从那以后,它被删除了,整个数据库被删除了好几次......为什么它仍然存在?

更糟糕的是:

 mysql> drop table cA;
mysql> ERROR 1051 (42S02): Unknown table 'ca'

完全困惑......

但是,我刚刚意识到一些事情:我在 hibernate 中的表名称使用小写和大写(驼峰式)表示法。 mysql 仅响应小写字母。有人能确认 mysql 在 2010 年不识别大小写吗?!?

最佳答案

您使用哪种方言?较新版本的 Hibernate(记不清确切数字)具有 InnoDB 方言修复:在创建表时,它使用 engine=InnoDb 而不是 type=InnoDb ——这是唯一的MySQL 5.1 中的合法语法。提醒一下,MySQL 5.0 接受 typeengine 关键字。

关于java - Hibernate 3.5.1、JPA2.0 和 MySQL - 2 个差异数据库/同一服务器内的替代行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3220831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com