2013-09-07 6 views
16

Es ist ein Fehler, während ich meine Backup-Datenbank willmit (-) dash in MySQL-Tabelle Namen

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 

Gibt es eine Möglichkeit, diese prob mit dem Tabellennamen (temp_01-01-000001) zu lösen.

+7

Meine allgemeine Der Rat lautet: Verwenden Sie keine Tabellennamen, die unzulässige Zeichen enthalten (und müssen daher zitiert werden). Sie sind viel mehr Ärger als sie es wert sind. Dies ist nur ein weiteres Beispiel. –

+1

Dash (-) Es ist kein illegales Zeichen, aber es muss mit Backticks (') zitiert werden. Siehe: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html und http://bugs.mysql.com/bug.php?id=461 –

Antwort

14

könnten Sie bearbeiten Zeile 132 der Datei /system/database/drivers/mysql/mysql_utility.php

Von:

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

An:

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

tbh Ich denke, dass Jhanvis Kommentar wäre der Weg, um dies weiter zu gehen; das manuelle Ändern von Treibern ist aus vielen Gründen problematisch. – isthmuses

29

Sie müssen Anführungszeichen hinzufügen, da Ihr Tabellenname die Nummer enthält. Ich denke, die folgende Abfrage wird funktionieren.

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

Es gibt keine manuelle Abfrage. sein Codeigniter dbutil für Datenbank-Backup – Shawon