仅当通过 Bash 脚本运行时 Mysql 才会出错

标签 mysql bash

所以我对数据库非常陌生,但我做了一些研究,我认为我已经弄清楚了我需要的一切,但当我尝试运行我的脚本时遇到了错误。

这是我的脚本

  mysql -h portal-rds -u $user --password=$mysqlpw <<QUERY_INPUT
  CREATE DATABASE IF NOT EXISTS $DATABASE
  use $DATABASE
  CREATE TABLE IF NOT EXISTS backUpFiles (fileName VARCHAR(20), archiveId VARCHAR(500), checkSum VARCHAR(100), glacierVault VARCHAR(100), timeStamp date);
  INSERT INTO backUpFiles
  VALUES ('$archive_file_name', '$archiveID', '$CURRENTVAULT', '$checkSum', CURDATE());
  QUERY_INPUT

我收到的错误是

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'use glacier

CREATE TABLE IF NOT EXISTS backUpFiles (fileName VARCHAR(20), archiveId VARCHAR(500), checkSum VARCHAR(100), glacierVault VARCHAR(100), timeStamp date);
Query OK, 0 rows affected, 1 warning (0.00 sec)

然后我决定手动登录 mysql 并运行这个命令,除了这个警告之外,它们工作得很好,不应该破坏任何东西(我相信)

mysql> show warnings;
+-------+------+------------------------------------+
| Level | Code | Message                            |
+-------+------+------------------------------------+
| Note  | 1050 | Table 'backupfiles' already exists |
+-------+------+------------------------------------+
1 row in set (0.28 sec)

最佳答案

您缺少 ; 作为 CREATE DATABASE 语句后面的语句分隔符。

该语句应如下所示:

mysql -h portal-rds -u $user --password=$mysqlpw <<QUERY_INPUT
CREATE DATABASE IF NOT EXISTS $DATABASE; <---- were missing
use $DATABASE
CREATE TABLE IF NOT EXISTS backUpFiles (fileName VARCHAR(20), archiveId VARCHAR(500), checkSum VARCHAR(100), glacierVault VARCHAR(100), timeStamp date);
INSERT INTO backUpFiles
VALUES ('$archive_file_name', '$archiveID', '$CURRENTVAULT', '$checkSum', CURDATE());
QUERY_INPUT

关于仅当通过 Bash 脚本运行时 Mysql 才会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17572016/

相关文章:

linux - 如何在 bash 中评论参数列表

linux - 导出带有特殊字符的 .env

php - 使用mysql插入数据时获取ID

mysql - Mac 10.12 上的错误 : Error installing mysql2: ERROR: Failed to build gem native extension.

mysql - MySQL case 语句中的额外列条件不起作用

regex - 如何在 bash 中获取变量配置的值?

c++ - 设计模式会破坏抽象吗?

MySQL select 查询中的 PHP foreach 语句

bash - 删除输入列表的可变部分

macos - 在 OS X (10.6) bash 中使用 unix 日期导致 "illegal time format"错误