diff --git a/resources/classes/schema.php b/resources/classes/schema.php index 426148d2d9..340e1d432c 100644 --- a/resources/classes/schema.php +++ b/resources/classes/schema.php @@ -677,22 +677,37 @@ if (!class_exists('schema')) { $sql_update .= "AS uuid);\n"; } else { - if ($db_field_type = "integer" && strtolower($field_type) == "serial") { + if ($db_field_type == "integer" && strtolower($field_type) == "serial") { //field type has not changed - } elseif ($db_field_type = "timestamp without time zone" && strtolower($field_type) == "timestamp") { + } + else if ($db_field_type == "timestamp without time zone" && strtolower($field_type) == "timestamp") { //field type has not changed - } elseif ($db_field_type = "timestamp without time zone" && strtolower($field_type) == "datetime") { + } + else if ($db_field_type == "timestamp without time zone" && strtolower($field_type) == "datetime") { //field type has not changed - } elseif ($db_field_type = "timestamp with time zone" && strtolower($field_type) == "timestamptz") { + } + else if ($db_field_type == "timestamp with time zone" && strtolower($field_type) == "timestamptz") { //field type has not changed - } elseif ($db_field_type = "integer" && strtolower($field_type) == "numeric") { + } + else if ($db_field_type == "integer" && strtolower($field_type) == "numeric") { //field type has not changed - } elseif ($db_field_type = "character" && strtolower($field_type) == "char") { + } + else if ($db_field_type == "character" && strtolower($field_type) == "char") { //field type has not changed } else { - //$sql_update .= "-- $db_type, $db_name, $table_name, $field_name ".db_column_data_type ($db_type, $db_name, $table_name, $field_name)."
"; - $sql_update .= "ALTER TABLE ".$table_name." ALTER COLUMN ".$field_name." TYPE ".$field_type.";\n"; + switch ($field_type) { + case 'timestamp': + case 'datetime': + $sql_update .= "ALTER TABLE ".$table_name." ALTER COLUMN ".$field_name." TYPE ".$field_type." USING ".$field_name."::timestamp without time zone;\n"; + break; + case 'timestamptz': + $sql_update .= "ALTER TABLE ".$table_name." ALTER COLUMN ".$field_name." TYPE ".$field_type." USING ".$field_name."::timestamp with time zone;\n"; + break; + default: + //$sql_update .= "-- $db_type, $db_name, $table_name, $field_name ".db_column_data_type ($db_type, $db_name, $table_name, $field_name)."
"; + $sql_update .= "ALTER TABLE ".$table_name." ALTER COLUMN ".$field_name." TYPE ".$field_type.";\n"; + } } } } @@ -701,7 +716,7 @@ if (!class_exists('schema')) { if ($type[0] == $field_type) { //do nothing } - elseif ($field_type == "numeric" && $type[0] == "decimal") { + else if ($field_type == "numeric" && $type[0] == "decimal") { //do nothing } else {