2

このスクリプトを実行しようとすると、名前を削除または変更すると「範囲」でエラーが発生します。スクリプトを実行できますが、アプリケーションはデータを保存するためにこの列を必要とします。これをMySQLに挿入する方法はありますか?

エラー コード: 1064。SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、22 行目の「"range" CHAR(5) NOT NULL, range_max_value NUMERIC(18,3)」付近で使用する正しい構文を確認してください。

CREATE TABLE My_table (
  chart_id                INTEGER NOT NULL,
  u_range                 CHAR(5),
  l_range                 CHAR(5),
  "range"               CHAR(5) NOT NULL,
  range_max_val         NUMERIC(18,3),
  range_min_val         NUMERIC(18,3),
  PRIMARY KEY (chart_id)
);
4

3 に答える 3

9

Rangeは予約済みのキーワードであり、バッククォートでエスケープする必要があります。

CREATE TABLE My_table (
  chart_id                INTEGER NOT NULL,
  u_range                 CHAR(5),
  l_range                 CHAR(5),
  `range`               CHAR(5) NOT NULL,
  range_max_val         NUMERIC(18,3),
  range_min_val         NUMERIC(18,3),
  PRIMARY KEY (chart_id)
);
于 2012-10-04T20:35:47.187 に答える
3

予約語リストをご覧ください。範囲はそれらの単語の1つです。目盛りでエスケープする必要があります。

CREATE TABLE My_table (
  chart_id                INTEGER NOT NULL,
  u_range                 CHAR(5),
  l_range                 CHAR(5),
  `range`               CHAR(5) NOT NULL,
  range_max_val         NUMERIC(18,3),
  range_min_val         NUMERIC(18,3),
  PRIMARY KEY (chart_id)
);
于 2012-10-04T20:36:30.993 に答える
1

RANGE予約語です。 http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

于 2012-10-04T20:36:31.280 に答える