[英]MySql table columns have different CHARSET and COLLATION even when SELECT data is from the same source table and column?
在創建一個簡單的(臨時)MySQL表時,從同一源表的同一列中獲取數據,最后得到的兩個列將具有不同的CHARACTER SET和默認的COLLATION設置:
mysql> CREATE TABLE tempDates
SELECT SUBDATE(MAX(EventDate), INTERVAL 90 DAY) AS StartDate,
MAX(EventDate) AS EndDate FROM james_bond_007
WHERE EventCategory = 'Successful_Kills';
這是顯示結果表結構的輸出:
mysql> SHOW CREATE TABLE tempDates;
CREATE TABLE `tempDates` (
`StartDate` varchar(29) CHARACTER SET utf8 DEFAULT NULL,
`EndDate` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
我運行了一個alter table命令,但沒有改變:
ALTER TABLE tempdates CHARACTER SET latin1 COLLATE latin1_swedish_ci;
從好奇心的角度來看,我想知道為什么會發生這種情況,從實際的角度來看,我如何做到這一點呢?
我想要的結果是所有列都具有服務器默認值:CHARACTER SET latin1 COLLATE latin1_swedish_ci
更好的方法是在所有列上強加服務器默認值,這樣我以后在此類型的查詢中不必鍵入過多的內容。
@Rick James這解決了我的問題,所以我想標記為已回答。
如果您有時間,也許可以解釋一下原因? (給我另一個借口支持您並接受您的回答)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.