我正在为 ORM 运行 MySQL 5.1 服务器和 Hibernate 3.5.1 / JPA2。在我手动删除一些表之前,一切似乎都很好。从那时起,单元测试失败,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'存在?!?!?实际上,它曾经存在过……从那以后,它被丢弃了,整个db被丢弃了几次……为什么它仍然存在?
更糟:
mysql> drop table cA;
mysql> ERROR 1051 (42S02): Unknown table 'ca'
完全糊涂了……
但是,我刚刚意识到一些事情:我在休眠中的表名使用大小写(驼峰式)表示法。mysql 仅响应小写。有人会确认 mysql 在 2010 年不识别大小写吗?!?