0

私はデータベースに非常に慣れていませんが、いくつかの調査を行い、必要なものはすべて理解していると思いましたが、スクリプトを実行しようとするとエラーが発生します。

これは私のスクリプトです

  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にログインしてこのコマンドを実行することにしましたが、何も壊れてはならないこの1つの警告以外は正常に機能しました(私は信じています)

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

2 に答える 2

1

;ステートメントの後にステートメント区切り文字としてがありません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
于 2013-07-10T13:42:35.637 に答える
0

最初の 2 つの sql ステートメントで ;(セミコロン) が抜けています。

$DATABASE が存在しない場合はデータベースを作成します。$DATABASE を使用します。

于 2013-07-10T13:44:29.713 に答える