Örtük (otomatik) dökme yoktur textya varcharkadar integer(bir geçemez sizi yani varcharbekliyor bir işleve integerveya atamak varcharbir alanını integerkullanarak açık döküm belirtmelisiniz, böylece biri) ALTER TABLE ... ALTER COLUMN ... TYPE. .. KULLANIMI :
ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (col_name::integer);
Metin alanlarınızda boşluk olabileceğini unutmayın; bu durumda şunları kullanın:
ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (trim(col_name)::integer);
dönüştürmeden önce beyaz boşluk şerit.
Bu komut, komut çalıştırıldıysa bir hata mesajından açıkça anlaşıldı psql, ancak PgAdmin-III size tam hatayı göstermiyor olabilir. psqlPostgreSQL 9.2'de test edersem ne olur :
=> CREATE TABLE test( x varchar );
CREATE TABLE
=> insert into test(x) values ('14'), (' 42 ');
INSERT 0 2
=> ALTER TABLE test ALTER COLUMN x TYPE integer;
ERROR: column "x" cannot be cast automatically to type integer
HINT: Specify a USING expression to perform the conversion.
=> ALTER TABLE test ALTER COLUMN x TYPE integer USING (trim(x)::integer);
ALTER TABLE
USINGBağlantıyı eklediğiniz için teşekkürler muistooshort .
Ayrıca bu ilgili soruya bakın ; Rails göçleri ile ilgili, ancak bunun altında yatan neden aynı ve cevap geçerli.
Hata devam ederse, sütun değerleri ile ilgili olmayabilir, ancak bu sütun veya sütun varsayılan değerleri üzerindeki dizinler yazım hatası yapılamayabilir. Endekslerin ALTER COLUMN öncesi bırakılması ve sonra yeniden oluşturulması gerekir. Varsayılan değerler uygun şekilde değiştirilmelidir.