以下适用于新的MySQL会话:
CREATE DATABASE rand27818;
USE rand27818;
CREATE TABLE sessions (id INT NOT NULL AUTO_INCREMENT, session VARCHAR(128), PRIMARY KEY(id));
DROP DATABASE rand27818;
但是,这个 -
SET @sesslen = 128;
CREATE DATABASE rand27818;
USE rand27818;
CREATE TABLE sessions (id INT NOT NULL AUTO_INCREMENT, session VARCHAR(@sesslen), PRIMARY KEY(id));
DROP DATABASE rand27818;
- 没有;它返回:
“ERROR 1064(42000):您的SQL语法有错误;请检查 手册,对应右边的MySQL服务器版本 在'@sesslen'附近使用的语法,PRIMARY KEY(id))'在第1行“
我已经尝试了几个带有额外括号的组合,删除了@符号,在使用数据库之后分配变量等没有快乐。 (不是我认为它会有任何区别。)在INSERT语句和SELECTing变量中使用变量似乎没问题,我只是遇到了尝试创建的问题。
我认为这是我的安装的好奇心(MySQL与XAMPP捆绑在一起,如果有帮助的话)或者由于我对MySQL的概念性误解而遗漏了一些东西。如果是后者,有人可以解释我缺少的东西吗?
答案 0 :(得分:0)
尝试SET @sesslen := 128;
使用:=和not =
定义mysql值答案 1 :(得分:0)
您应该使用prepared statements。
SET @sesslen = 128;
CREATE DATABASE rand27818;
USE rand27818;
SET @sql = CONCAT('CREATE TABLE sessions (id INT NOT NULL AUTO_INCREMENT, session VARCHAR(', @sesslen, '), PRIMARY KEY(id));');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
...