2016-06-11 39 views
0

我使用MySQL工作台5.7MySQL的错误代码:1265年数据截断列 'prod_code' 在第7行

我有以下表中创建和存储过程:

DROP TABLE MV_SALESBYMONTH; 
CREATE TABLE MV_SALESBYMONTH 
(
`time_year` int, `time_month` int, `prod_code` int,`sale_units` int, `sale_price` int); 

DELIMITER $$ 
CREATE procedure `REFRESH_MV_SALESBYMONTH`() BEGIN 

    TRUNCATE TABLE `MV_SALESBYMONTH`; 

    INSERT INTO MV_SALESBYMONTH 
    (SELECT TIME_YEAR AS 'YEAR', TIME_MONTH AS 'MONTH', PROD_CODE AS 'PRODUCT', 
    SUM(SALE_UNITS) AS 'UNITS SOLD', SUM(SALE_UNITS*SALE_PRICE) AS 'SALES TOTAL' 
    FROM TIME T, SALES S 
    WHERE S.TIME_ID = T.TIME_ID 
    GROUP BY TIME_YEAR, TIME_MONTH, PROD_CODE); 
END $$ 
DELIMITER ; 

STEP 5:使用物化视图

CALL REFRESH_MV_SALESBYMONTH(); 

SELECT * FROM MV_SALESBYMONTH; 

当我尝试运行语句:

CALL REFRESH_MV_SALESBYMONTH(); 

我得到错误1265:在第7行的列'prod_code'的数据被截断

+0

列sales.prod_code的数据类型是什么? –

+0

查看表格:MV_SALESBYMONTH:prod_code是一个整数。 CREATE TABLE MV_SALESBYMONTH ( 'time_year' int,'time_month' int,'prod_code' int,'sale_units' int,'sale_price' int); – Smokey0101

+0

'TIME T,SALES S'中的'PROD_CODE'是什么类型? (使用表别名使得查询更具可读性。) – Rudie

回答

0

在create table语句中将prod_code定义为varchar(100)。这样它可以保存源数据中可能的最大字符数。

相关问题