2016-06-12 4 views
0

Ich versuche derzeit, eine SQL-Datei zu verwenden, um eine Tabelle zu meiner Datenbank in phpMyAdmin hinzuzufügen und dann mit Daten zu füllen. Ich habe das bei vielen Gelegenheiten erfolgreich gemacht, aber ich bin auf ein ernstes Problem gestoßen, das ich auch nicht lösen kann, egal was ich versuche. Vorher habe ich 'int' als meinen primären Schlüsseltyp verwendet, aber ich muss jetzt 'char' als meinen primären Schlüsseltyp verwenden. Hier scheint das Problem zu liegen. Ich habe online gesucht und verschiedene Lösungen mit unterschiedlichen Ergebnissen versucht. Alle Ergebnisse entsprechen dem Versagen.SQL - 'char' auto_increment Probleme

Ich habe meinen ursprünglichen Code unten gezeigt, der fehlgeschlagen ist und mich auch nach Lösungen online suchen ließ, aber zu keinen Erfolg.

-- 
-- Table structure for table `practice` 
-- 

CREATE TABLE `practice` (
`practice_Id` char(2) NOT NULL auto_increment, 
`Practice_Name` varchar(20) NOT NULL, 
`Practice_Address` varchar(50) NOT NULL, 
PRIMARY KEY (`practice_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; 

-- 
-- Dumping data for table `practice` 
-- 

INSERT INTO `practice` VALUES(P1, 'Practice Head Office', '27, The Hill, Glasgow'); 
INSERT INTO `practice` VALUES(P2, 'Practice Unit 1', 'Unit 1, Houston Estate, Glasgow'); 

Wenn ich versuche, und diese Datei zu meiner Datenbank importieren ich die folgende Antwort erhalten:

#1063 - Incorrect column specifier for column 'practice_Id' 

Nun fand ich eine Lösung auf dieser Seite sehr darauf. Fügen Sie unsigned einfach zu auto_increment hinzu und es sollte funktionieren, da auto_increment mit ints und floats arbeitet. Ich fügte dieses der Datei hinzu und versuchte dann, es noch einmal zu importieren. Wieder scheiterte dies mir noch mehr Fehler geben, die unten:

#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 'unsigned auto_increment, 
`Practice_Name` varchar(20) NOT NULL, 
`Practice_Add' at line 6 

ich unsigned auto_increment allein versucht zu verlassen, aber ich habe wie oben die gleichen Ergebnisse.

Ich brauche wirklich Hilfe, da dies scheint unmöglich zu passieren. Es gibt keine Syntaxfehler, daher macht es keinen Sinn. Irgendwelche Fragen nur fragen, aber ich habe meine Versuche oben und alle Lösungen, die ich gefunden habe. Ich habe andere SQL-Dateien mit diesem Problem, also wirklich das ist eine massive Hürde für mich und meine letzte Arbeit.

+1

Sie müssen keinen Primärschlüssel haben. Sie können weiterhin normalen, numerischen, automatisch inkrementierten Primärschlüssel verwenden und eine andere Zeichenspalte verwenden, die Sie als 'eindeutig' kennzeichnen. –

Antwort

0

Es ist unmöglich zu bestehen. Autoinkrement funktioniert nur mit numerischen Feldern. Semantisch macht es keinen Sinn, eine Zeichenkette zu "inkrementieren". Ja, könnte man

'x' + 1 = 'y' 

für ein einzelnes Zeichen sagen, aber wie erhöhen Sie ein Zeichen String? Wie würden Sie bewerten

"Bob" + 3 

zum Beispiel?

+0

Ich sehe deinen Standpunkt. Was würde ich tun, um die Probleme zu überwinden, die ich habe? Hinterlasse ich einfach unsigned auto_increment oder gibt es noch etwas, das ich tun sollte? – DAN212

+0

Warum haben Sie von "int" zu "char" gewechselt? –

+0

Da die ID erforderlich ist, ist jetzt nicht nur eine Nummer. Es ist jetzt P1 ​​und nicht 01 zum Beispiel. Ich habe das nicht signierte auto_increment aus der Datei entfernt und die Datei wurde erfolgreich in die Datenbank importiert. Vielen Dank. So einfach und doch so schwer :) Zumindest hoffe ich, dass es so funktioniert. – DAN212