Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Nhiều hơn một bảng được tìm thấy trong không gian tên (,) - SchemaExtractionException

Tôi đã gặp vấn đề tương tự và có thể tìm hiểu mã để tìm ra nguyên nhân, ít nhất là trong trường hợp của tôi. Tôi không biết liệu đó có phải là vấn đề tương tự đối với bạn hay không nhưng điều này có thể hữu ích.

Từ dấu vết ngăn xếp của bạn, tôi có thể thấy bạn đã đặt hibernate.hbm2ddl.auto để nâng cấp lược đồ. Là một phần của việc này, nó đang cố gắng tra cứu siêu dữ liệu cho tất cả các bảng mà chế độ ngủ đông biết về và một trong số chúng nhận được câu trả lời không rõ ràng vì truy vấn siêu dữ liệu đang trả về nhiều hơn một hàng siêu dữ liệu của bảng hoặc chế độ xem.

Trong trường hợp của tôi, điều này là do quy ước đặt tên của chúng tôi cho các bảng. Chúng tôi có một bảng được gọi là (giả sử) "AAA_BBB" mà điều này đã xảy ra. Bây giờ việc sử dụng một dấu gạch dưới trong tên bảng là hoàn toàn có thể chấp nhận được theo như tôi biết và là một thực tế khá phổ biến. Tuy nhiên, dấu gạch dưới cũng là ký tự đại diện SQL cho một ký tự duy nhất; tìm kiếm trong mã cho siêu dữ liệu cơ sở dữ liệu, tôi có thể thấy nó đang thực hiện "WHERE table_name LIKE ..." trong phương thức DatabaseMetaData.getTables (...), là phương thức hibernate đang sử dụng ở đây.

Bây giờ, trong lược đồ của tôi, tôi cũng có một bảng thứ hai được gọi là "AAA1BBB" và do đó cả hai bảng này đều khớp với tra cứu siêu dữ liệu và do đó, nó trả về một hàng siêu dữ liệu cho mỗi bảng này. Phương thức ngủ đông được viết để chỉ rơi xuống nếu tập kết quả từ tra cứu siêu dữ liệu bảng trả về nhiều hơn một hàng. Tôi đoán nó sẽ kiểm tra (các) hàng có sẵn và tìm xem có hàng nào khớp chính xác với tên bảng được chỉ định hay không.

Tôi đã thử nghiệm điều này cho cả Oracle và MySQL với cùng một kết quả.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-12516, TNS:người nghe không thể tìm thấy trình xử lý có sẵn

  2. Ngoại lệ Java SQL:Tập kết quả đã đóng:tiếp theo ngay cả khi không kết nối hoặc tập kết quả nào bị đóng

  3. Hàm ROWIDTONCHAR () trong Oracle

  4. NUMBER và NUMBER (*, 0) trong Oracle có giống nhau không?

  5. Oracle Mutating Trigger