2013-09-07 69 views
16

Có một lỗi trong khi tôi muốn sao lưu cơ sở dữ liệu của tôisử dụng (-) dấu gạch ngang trong tên bảng mysql

A Database Error Occurred 

Error Number: 1064 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-01-000001' at line 1 

SELECT * FROM temp_01-01-000001 

Filename: F:\xampp\htdocs\erp_zaara\system\database\DB_driver.php 

Line Number: 330 

Có cách nào để giải quyết prob này với tên bảng (temp_01-01-000001).

+7

My chung lời khuyên là: không sử dụng tên bảng có chứa các ký tự bất hợp pháp (và do đó yêu cầu trích dẫn). Họ gặp nhiều rắc rối hơn thế thì họ đáng giá. Đây chỉ là một ví dụ khác. –

+1

Dấu gạch ngang (-) không phải là ký tự không hợp lệ, nhưng phải được trích dẫn bằng dấu gạch chéo ngược ('). Xem: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html và http://bugs.mysql.com/bug.php?id=461 –

Trả lời

14

Bạn có thể chỉnh sửa dòng 132 của tập tin /system/database/drivers/mysql/mysql_utility.php

Từ:

$query = $this->db->query("SELECT * FROM $table"); 

Để:

$query = $this->db->query("SELECT * FROM `$table`"); 
+0

tbh Tôi nghĩ rằng bình luận của Jhanvi sẽ là cách để tiếp tục điều này; trình điều khiển sửa đổi theo cách thủ công có vấn đề vì nhiều lý do. – isthmuses

29

Bạn phải thêm dấu ngoặc kép vì tên bảng của bạn chứa số. Tôi nghĩ rằng truy vấn sau đây sẽ hoạt động.

SELECT * FROM `temp_01-01-000001` 
+1

không có truy vấn thủ công. dbDE codeigniter của nó để sao lưu cơ sở dữ liệu – Shawon

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