您好我正在尝试从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) 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"。后退标记不适用于shell脚本。非常感谢。
答案 0 :(得分:1)
shell中的反引号为Command Substitution
。
它们用双引号字符串进行评估。
所以shell正在看
`long`
在您的字符串中并尝试运行命令long
,并且可能会失败。
你需要逃避反引号
\`long\`
在双引号字符串中以防止(或使用单引号字符串,不会评估它们)
'... `long` ...'
答案 1 :(得分:0)
你必须在这里尝试这个我修改了两个'long'
替换为\'long\'
而PRIMARY KEY ('id')
替换为PRIMARY KEY (id)
此查询在我的shell脚本中有效。这是test
是database
的名称。
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));"