Рассмотрим:
SET @PREFIX='DEV_';
SET @REFRESHDB=CONCAT(@PREFIX,'Refresh');
CREATE TABLE @REFRESHDB.`Metadata`
(
`Key` VARCHAR(30) NOT NULL,
`Value` VARCHAR(30) NOT NULL,
PRIMARY KEY (`Key`)
) ENGINE = InnoDB;
INSERT INTO @REFRESDB.`Metadata` (`Key`, `Value`) VALUES ("Version", "0");
Это не похоже на действительность: mysql возвращается с:
У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса, чтобы использовать рядом с '@REFRESHDB.`Metadata'
Насколько я могу судить, я все сделал правильно в соответствии с документацией. Тем не менее, MySQL говорит, что это запрещено. Это какое-то ограничение MySQL (не позволяющее использовать переменные в качестве идентификаторов) или что-то другое?