কোন অন্তর্নিহিত (স্বয়ংক্রিয়) এতে কাস্ট থেকে text
বা varchar
করতে integer
(অর্থাত আপনি যদি একটি প্রেরণ করতে পারবেন না varchar
আশা একটি ফাংশন integer
বা দায়িত্ব অর্পণ varchar
একটি মাঠে integer
, এক) আপনি একটি সুনির্দিষ্ট ঢালাই ব্যবহার নির্দিষ্ট করতে হবে ALTER সারণী ... ALTER কলামটি ... প্রকার। .. ব্যবহার :
ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (col_name::integer);
মনে রাখবেন যে আপনার পাঠ্যের ক্ষেত্রে আপনার সাদা জায়গা থাকতে পারে; সেক্ষেত্রে, ব্যবহার করুন:
ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (trim(col_name)::integer);
রূপান্তর করার আগে সাদা স্থান ফেলা।
কমান্ডটি চালু থাকলে কোনও ত্রুটি বার্তা থেকে এই শব্দটি স্পষ্ট হয়ে উঠেছে psql
, তবে এটি সম্ভব PgAdmin-III আপনাকে সম্পূর্ণ ত্রুটিটি দেখাচ্ছে না। আমি psql
পোস্টগ্র্রেএসকিউএল 9.2 এ এটি পরীক্ষা করে নিলে কী হয় তা এখানে :
=> 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
USING
লিঙ্কটি যুক্ত করার জন্য @ মিমিস্টোশোর্টকে ধন্যবাদ ।
আরও দেখুন এই সংশ্লিষ্ট প্রশ্ন ; এটি রেল স্থানান্তর সম্পর্কে, তবে অন্তর্নিহিত কারণ একই এবং উত্তর প্রযোজ্য।
ত্রুটিটি এখনও যদি ঘটে থাকে তবে এটি কলাম মানগুলির সাথে সম্পর্কিত নয় তবে এই কলাম বা কলামের ডিফল্ট মানগুলির সূচকগুলি টাইপকাস্টে ব্যর্থ হতে পারে। ALTER COLUMN এর আগে সূচিগুলি বাদ দিতে হবে এবং পরে পুনরায় তৈরি করতে হবে। ডিফল্ট মানগুলি যথাযথভাবে পরিবর্তন করা উচিত।