我试图在RDS上运行的MySQL代码出现语法错误,但在同一版本的语法检查器中,它运行良好
因此,我有一个带有MySQL 5.6.37引擎的AWS RDS实例,我正在使用MySQL 5.6版本检查sqlfiddle.com上代码的语法 我在SQLFIDLE中输入的代码是我试图在RDS上运行的MySQL代码出现语法错误,但在同一版本的语法检查器中,它运行良好,mysql,double-quotes,ansi-sql,sql-mode,Mysql,Double Quotes,Ansi Sql,Sql Mode,因此,我有一个带有MySQL 5.6.37引擎的AWS RDS实例,我正在使用MySQL 5.6版本检查sqlfiddle.com上代码的语法 我在SQLFIDLE中输入的代码是 CREATE TABLE Teacher_Times( TEACHER_ID TEXT, BEG_TIME TIME, END_TIME TIME, DAYS VARCHAR(9) DEFAULT "MTWRF", TYPE VARCHAR(11) DEFAULT "unavailable");
CREATE TABLE Teacher_Times(
TEACHER_ID TEXT,
BEG_TIME TIME,
END_TIME TIME,
DAYS VARCHAR(9) DEFAULT "MTWRF",
TYPE VARCHAR(11) DEFAULT "unavailable");
我所拥有的连接到rds的代码使用的jdbc配置非常类似于这家伙的堆栈溢出帖子:
在我的代码中,我有
result =
"CREATE TABLE Teacher_Times(\n" +
" TEACHER_ID TEXT,\n" +
" BEG_TIME TIME,\n" +
" END_TIME TIME,\n" +
" DAYS VARCHAR(9) DEFAULT \"MTWRF\",\n" +
" TYPE VARCHAR(11) DEFAULT \"unavailable\");";
jdbc_t.execute(result);
result = "";
这种通用的查询格式在很多其他地方都适用,我不知道AWS的东西是否相关
确切的错误是com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解第5行“MTWRF”附近使用的正确语法,看起来模式已启用。我可以用计算机重现错误
SET sql_mode = 'ANSI_QUOTES';
请尝试改用单引号:
CREATE TABLE Teacher_Times(
TEACHER_ID TEXT,
BEG_TIME TIME,
END_TIME TIME,
DAYS VARCHAR(9) DEFAULT 'MTWRF',
TYPE VARCHAR(11) DEFAULT 'unavailable');
当我使用单引号时,错误不会改变。它甚至将错误表示为接近“MTWRF”,该值仍然具有双精度quotes@AviRudich你不觉得奇怪吗?试试这几天VARCHAR100默认值如果你没有在错误消息中看到这个,那么你正在执行其他我做过的事情,我看到了错误消息。我所能想到的是,jdbc.execute可能会取代mean的单引号,只是为了我尝试将sql_模式设置为kicks,但它没有改变任何东西对不起,jdbc帮不了你。禁用ANSI_引号。