MySQL插入不起作用,没有错误消息

时间:2013-07-29 10:46:40

标签: mysql innodb

我正在尝试将一行插入到InnoDB表中,该表之前已经运行了好几年,现在我得到了

  

查询正常,1行受影响

表中没有任何内容。我正在从命令行界面运行查询。同一数据库中的任何其他表都没有这样的问题。

这些表最近刚从MyISAM转换为InnoDB。

我还运行“show innodb status”,据我所知,没有问题。此外,一切都在数据库的本地副本上正常工作。

如何找出失败的地方以及为什么我没有收到错误消息?


show create table:

+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table               | Create Table                                                                                                                                                                                                                                                                  |
+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tablename | CREATE TABLE `tablename` (
  `field0` int(10) unsigned NOT NULL,
  `field1` char(2) NOT NULL,
  `field2` text NOT NULL,
  `field3` varchar(255) NOT NULL,
  `field4` varchar(255) NOT NULL,
  `field5` varchar(24) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)

表格结构:

mysql> describe tablename;
+------------+------------------+------+-----+---------+-------+
| Field      | Type             | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+-------+
| field0     | int(10) unsigned | NO   |     | NULL    |       |
| field1     | char(2)          | NO   |     | NULL    |       |
| field2     | text             | NO   |     | NULL    |       |
| field3     | varchar(255)     | NO   |     | NULL    |       |
| field4     | varchar(255)     | NO   |     | NULL    |       |
| field5     | varchar(24)      | NO   |     | NULL    |       |
+------------+------------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

插入声明:

  

INSERT INTO dbtablenamefield0field1field2field3field4,{{1 })VALUES('3','en','text','','','335783958');

MySQL变量:

field5

3 个答案:

答案 0 :(得分:0)

您的插入工作并插入一行,如果您看到最后插入的行,您将找到它。

但是我认为您只想更新一些空列,而您应该UPDATE而不是insert

答案 1 :(得分:0)

您正在尝试将'text'插入char(2)字段,这将生成截断数据的警告。如果您没有看到该警告,那么您的配置,架构和架构会发生一些非常奇怪的事情。显示的查询与您正在运行的查询不同

Query OK, 1 row affected, 1 warning (0.03 sec)

也就是说,查询或您发布的架构没有任何问题,我只能假设问题是由于您在解决问题时遗漏了问题。

mysql> INSERT INTO tablename (field0, field1, field2, field3, field4, field5) VALUES ('3', 'text', 'text', '', '', '335783958');
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> show warnings;
+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1265 | Data truncated for column 'field1' at row 1 |
+---------+------+---------------------------------------------+
1 row in set (0.01 sec)

mysql> select * from tablename;
+--------+--------+--------+--------+--------+-----------+
| field0 | field1 | field2 | field3 | field4 | field5    |
+--------+--------+--------+--------+--------+-----------+
|      3 | te     | text   |        |        | 335783958 |
+--------+--------+--------+--------+--------+-----------+
1 row in set (0.01 sec)

请发布真实的CREATE TABLE语法和您的实际查询,以便我们能够提供更多帮助

我很欣赏这可能没有给出完整的答案,但它的评论太长了

答案 2 :(得分:0)

我知道这是一个老问题,但是我最终还是遇到了同样的问题。

删除并创建表,没有成功。

最后,事实证明我处于交易中间。一次提交解决了我所有的问题。