2015-10-14 42 views
-1

我想改變我的ingres數據庫中的列來擴大列的大小。不能改變squirell SQL客戶端的列

我運行查詢

ALTER TABLE test_table ALTER COLUMN address varchar(100) NOT NULL 

其中給出錯誤

Error: ALTER TABLE: invalid change of attributes on an ALTER COLUMN

SQLState: 42000 ErrorCode: 3859

任何人任何想法,爲什麼我得到這個錯誤?我檢查了更改表格的語法。

+0

嘗試:'ALTER TABLE TEST_TABLE MODIFY地址爲varchar(100)NOT NULL' – lad2025

+0

沒有運氣。 「Error:line 2,Syntax error on'MODIFY'。 – gio10245

+1

我猜你現在有一個varchar(<100)嗎?它可以爲空嗎?如果它不可爲空,你可能不得不提及空的默認值rows。 –

回答

0

也許你在數據中有NULL。首先更新表(設置爲要空字符串或值):

LiveDemo

UPDATE test_table 
SET address = ''   -- or another value indicating missing addres like 'none' 
WHERE address IS NULL; 

然後再試試:

ALTER TABLE test_table ALTER COLUMN address varchar(100) NOT NULL; 

編輯:

如果你不想強制使用NOT NULL

LiveDemo2

ALTER TABLE test_table ALTER COLUMN address varchar(100); 
+0

我剛從原始查詢中刪除了NOT NULL,它起作用了嗎? – gio10245

+0

@ gio10245問題是, NULL在數據中當你ALTER TABLE並且設置了NOT NULL時,它不能被強制執行,因爲NULL。更新表然後改變它並且它應該工作 – lad2025

+0

但是它現在通過簡單您只需從原始查詢中刪除NOT NULL,那麼爲什麼我需要這樣做呢? – gio10245