2009-05-19 47 views
16

Có thể câu hỏi này đã được trả lời trước nhưng tôi không thể tìm thấy nó.Dấu gạch ngang trong các tên cột trong MySQL DB

Tôi đang sử dụng cơ sở dữ liệu MySQL cũ 2/3 năm có dấu gạch ngang trong tên cột của nó. Khi tôi cố gắng sử dụng các tên này từ mã Java của tôi, các tên được chia ở dấu gạch ngang (ví dụ: air_port trở thành không khí) và do đó không được tìm thấy. Tôi đã thử thay thế dấu gạch ngang để gạch dưới trong mã của tôi hy vọng rằng DB có thể đối xử với họ như nhau nhưng điều đó không hoạt động.

Làm cách nào để thoát khỏi dấu gạch ngang hoặc cách tôi có thể truy cập các cột này? Đây có phải là vấn đề của bộ ký tự đang được sử dụng không?

Trả lời

33

kèm theo tên trong ` back-ve `

0

This entry qua diễn đàn của MySQL cho thấy rằng bạn có thể có một vấn đề. Tuy nhiên, tôi nghĩ nó đề cập đến dữ liệu chứ không phải tên cột.

This nói "không làm điều đó". Không biết nó có thẩm quyền như thế nào.

4

Bạn có dấu gạch nối (-) hoặc dấu gạch dưới (_) trong tên cột của mình không?

Dấu gạch nối là một vấn đề lớn bởi vì nếu bạn kết thúc ánh xạ tên cột thành biến, hầu hết các ngôn ngữ không muốn có dấu gạch nối bên trong tên biến. Có lẽ bạn đang sử dụng một trong các thư viện Java tự động tạo các biến hoặc các đối tượng có tên dựa trên các tên cột.

Tùy thuộc vào bản chất của vấn đề của bạn, có một vài cách tiếp cận khác nhau mà bạn có thể sử dụng:

  1. Rename tất cả các cột của bạn sử dụng ALTER TABLE. Hãy ý thức rằng điều này có thể ảnh hưởng đến tính toàn vẹn tham chiếu hoặc các ứng dụng khác phụ thuộc vào cơ sở dữ liệu. Nếu bạn không biết điều đó có nghĩa là gì, đừng làm điều đó.
  2. Tạo các chế độ xem SQL để đơn giản khôi phục các bảng bạn cần nhưng với các tên cột "tốt hơn". Đây không phải là rất hiệu quả, nhưng nó sẽ cho phép bạn để có được những gì bạn muốn.
  3. Sử dụng từ khóa AS khi chạy câu lệnh SELECT để đổi tên cột trong truy vấn.

Không có giải pháp nào trong số này là giải pháp tuyệt vời, nhưng chúng sẽ giúp bạn bắt đầu. Chúc may mắn!

2

Dấu gạch nối trong tên cơ sở dữ liệu cũng không tốt. Nhưng bạn có thể sử dụng chúng với mẹo đánh lừa '

`name-with-hyphen` 
0

Tôi phải tạo một db có tên là pre-ca_db.

tôi giải quyết vấn đề với

create database `pre-ca_db`; 

Chúc may mắn!

0

Tốt hơn là không nên sử dụng dấu gạch nối trong tên cột của bạn. Tôi đã gặp phải một vấn đề lớn với các câu lệnh JOIN, nơi dấu gạch ngang gây ra rắc rối lớn - thậm chí có cả việc thoát khỏi những cái tên trong ve sau không hoạt động.

Chuyển đổi tên cột để sử dụng dấu gạch dưới - đây là cách an toàn nhất để đi.

Các vấn đề liên quan