backtick无法在shell脚本中运行mysql查询
嗨,我正在尝试从shell脚本运行MySQL查询backtick无法在shell脚本中运行mysql查询,mysql,linux,shell,sh,Mysql,Linux,Shell,Sh,嗨,我正在尝试从shell脚本运行MySQL查询 mysql -u root -p'1234' -e "CREATE TABLE $DB.aa_vv_cc ( id int(10) unsigned NOT NULL AUTO_INCREMENT, city varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, lat varchar(255) DEFAULT NULL, `long` varchar(255) DEF
mysql -u root -p'1234' -e "CREATE TABLE $DB.aa_vv_cc
(
id int(10) unsigned NOT NULL AUTO_INCREMENT,
city varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
lat varchar(255) DEFAULT NULL,
`long` varchar(255) DEFAULT NULL,
status int(11) NOT NULL DEFAULT '1',
created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY ('id')
);"
我在“long”上遇到错误。back tick在shell脚本中不起作用。请提供任何帮助。backtick是shell中的
命令替换
它们在双引号字符串中求值
所以贝壳看到了
`long`
在字符串中,尝试运行命令long
,可能会失败
你需要摆脱这种逆势
\`long\`
在双引号字符串中,以防止出现这种情况(或使用不计算它们的单引号字符串)
反勾号是shell中的命令替换
它们在双引号字符串中求值
所以贝壳看到了
`long`
在字符串中,尝试运行命令long
,可能会失败
你需要摆脱这种逆势
\`long\`
在双引号字符串中,以防止出现这种情况(或使用不计算它们的单引号字符串)
你必须在这里尝试一下,我已经修改了两个东西'long'
替换为'long\'
和主键('id')
替换为主键(id)
这个查询在我的shell脚本中工作。这里测试是数据库的名称
mysql -u root -p'1234' -e "USE test;CREATE TABLE $DB.aa_vv_cc (id int(10) unsigned NOT NULL AUTO_INCREMENT,city varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,lat varchar(255) DEFAULT NULL,\`long\`varchar(255) DEFAULT NULL, status int(11) NOT NULL DEFAULT '1', created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at timestamp NOT NULL DEFAULT '0000-00-0000:00:00',PRIMARY KEY (id));"
你必须在这里尝试一下,我已经修改了两个东西'long'
替换为'long\'
和主键('id')
替换为主键(id)
这个查询在我的shell脚本中工作。这里测试是数据库的名称
mysql -u root -p'1234' -e "USE test;CREATE TABLE $DB.aa_vv_cc (id int(10) unsigned NOT NULL AUTO_INCREMENT,city varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,lat varchar(255) DEFAULT NULL,\`long\`varchar(255) DEFAULT NULL, status int(11) NOT NULL DEFAULT '1', created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at timestamp NOT NULL DEFAULT '0000-00-0000:00:00',PRIMARY KEY (id));"
只要是mysql中的保留字,就不应该将其用作列名。不知道为什么会被否决。嘿,阿伦,你找到解决方案了吗?只要是mysql中的保留字,你就不应该把它用作列名。不知道为什么它会被否决。嘿,阿伦,你找到解决办法了吗?这在我的情况下不起作用。我必须将它与数据库名称一起使用,比如createtablereporting.details作为SELECT*FROM\`Temp-17-09-19\`.details代码>。但它给了我错误com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表“Temp-17-09-19.details”不存在。所以它将整个db.tablename视为一个tablename。这在我的情况下不起作用。我必须将它与数据库名称一起使用,比如createtablereporting.details作为SELECT*FROM\`Temp-17-09-19\`.details代码>。但它给了我错误com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表“Temp-17-09-19.details”不存在。因此,它将整个db.tablename视为一个表名。