我从另一个SQL应用程序导入了一个巨大的数据库,并将其转换为MySQL。为了加快此过程,我创建了具有任意长度的文本字段。
我想修改每个表并使字段不超过其所需的大小。基于此站点,我提出了这两个过程
DROP PROCEDURE getFieldMaxWidth;
DROP PROCEDURE modifyFieldMaxWidth;
DELIMITER $$
CREATE PROCEDURE getFieldMaxWidth(tab_name VARCHAR(40), fld_name VARCHAR(40), OUT value INT(11))
BEGIN
SET @t1:= CONCAT('SELECT MAX(LENGTH(',fld_name,')) FROM ',tab_name, ' INTO @value');
PREPARE stmt3 FROM @t1;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
END;
CREATE PROCEDURE modifyFieldMaxWidth(IN tab_name VARCHAR(40), IN fld_name VARCHAR(40))
BEGIN
SET @t1:=256;
CALL getFieldMaxWidth(tab_name, fld_name, @t1);
SET @t2:=CONCAT('ALTER TABLE ',tab_name,' CHANGE ',fld_name,' ',fld_name,' VARCHAR(',@t1,')');
PREPARE stmt4 FROM @t2;
EXECUTE stmt4;
DEALLOCATE PREPARE stmt4;
END$$
我一直回想的是此错误消息:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1
哪个州
错误地使用保留字
有人可以在这里帮助我吗?不确定mySQL认为我使用的保留字不正确?