2

ここで何が間違っているのかわかりません:

mysql> use co_sysdev;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from system_params;
Empty set (0.01 sec)

mysql> INSERT INTO system_params (NUM_ENGINE_D_PROCESSES,MAX_NUM_BATCHES_PER_CLIENT,MAX_NUM_BATCHES_PER_LOCATION) VALUES(5,8,2);
ERROR 1054 (42S22): Unknown column 'NUM_ENGINE_D_PROCESSES' in 'field list'
mysql> 

また:

 desc system_params;
+-----------+----------------------------------------------------------------------------------------------------+------+-----+---------+-------+
| Field     | Type                                                                                               | Null | Key | Default | Extra |
+-----------+----------------------------------------------------------------------------------------------------+------+-----+---------+-------+
| attribute | enum('NUM_ENGINE_D_PROCESSES','MAX_NUM_BATCHES_PER_CLIENT','MAX_NUM_BATCHES_PER_LOCATION') | NO   | PRI | NULL    |       |
| value     | varchar(256)                                                                                       | NO   |     | NULL    |       |
+-----------+----------------------------------------------------------------------------------------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

また:

 show create table system_params;
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table         | Create Table                                                                                                                                                                                                                                                  |
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| system_params | CREATE TABLE `system_params` (
  `attribute` enum('NUM_ENGINE_D_PROCESSES','MAX_NUM_BATCHES_PER_CLIENT','MAX_NUM_BATCHES_PER_LOCATION') NOT NULL,
  `value` varchar(256) NOT NULL,
  PRIMARY KEY (`attribute`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
4

2 に答える 2

4

列挙値をフィールド名として使用することはできません。あなたの挿入は次のようなものでなければなりません

INSERT INTO system_params (attribute, value) VALUES ('NUM_ENGINE_D_PROCESSES', 'foo');

ここに挿入できる可能な値が無制限でない限り (エンドユーザーが定義できるなど)、非常に苦痛な道をたどることになります。

于 2012-11-16T19:17:32.667 に答える
1

明らかに、このエラーは、間違った列名をNUM_ENGINE_D_PROCESSESどこかで使用していて、列挙値であり、それを列として使用していることを示しています... SQL挿入クエリの構文は次のようになります

INSERT INTO your_table_Name (ID, name, ...<column names goes here>...) 
VALUES ('1', 'John', ...<values goes here>...);

あなたの場合

INSERT INTO system_params (attribute, value) VALUES ('NUM_ENGINE_BLA_BLA', 'foo');
于 2012-11-16T19:30:12.187 に答える