我正在尝试将一行插入到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
db
。tablename
(field0
,field1
,field2
,field3
,field4
,{{1 })VALUES('3','en','text','','','335783958');
MySQL变量:
field5
答案 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)
我知道这是一个老问题,但是我最终还是遇到了同样的问题。
删除并创建表,没有成功。
最后,事实证明我处于交易中间。一次提交解决了我所有的问题。