Ich muss den Alter-Befehl zu meinem Schema hinzufügen.Alter Schema funktioniert nicht
SET @s = (SELECT IF(
(SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'product'
AND table_schema = DATABASE()
AND column_name = 'date_madified'
) > 0,
"SELECT 1;",
"ALTER TABLE `product` CHANGE `date_madified` `date_modified`;"
));
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Das obige wird ohne Angabe eines Fehlers ausgeführt. Aber der Spaltenname wird nicht geändert. Als ich versuchte, den Fehler zu überprüfen, den ich unten fand, sind die Ursachen. 1. Die richtige Datenbank wird nicht ausgewählt. 2. 'IF' nicht erhalten gibt korrekte Ergebnisse, obwohl ich den Datenbanknamen fest codiere.
Obwohl sql im obigen Format erfolgreich für alle anderen Fälle der Änderung des Namens, Datentyp und Größe usw. ausgeführt wird, aber in diesem Fall funktioniert es nicht richtig.
Ich bin mir sicher, dass einige der Spalten verrückt geworden sein könnten, aber mysql ist glückselig unbewusst davon. Sie sollten wahrscheinlich nach "date_modified" statt – e4c5
suchen. Tatsächlich gab es einen Schreibfehler für den Spaltennamen. Dieses ALTER-Schema soll den Fehler korrigieren. –