2013-10-23 72 views
0

我在Magento的platform.I工作的int类型方面面临值插入到特定领域的问题:我的查询运行完美,但一个特定的列不工作的任何query.I尽我所能,但没有找到原因。当我将列类型从int更改为varchar类型时,它可以工作。这是我的表结构。现场未插入或更新,在SQL

CREATE TABLE `followupemails_emaillogs` (
    `id` int(8) NOT NULL AUTO_INCREMENT, 
    `schedule_time` datetime DEFAULT NULL, 
    `sent_time` datetime DEFAULT NULL, 
    `email_status` varchar(100) DEFAULT NULL, 
    `client_name` varchar(250) DEFAULT NULL, 
    `client_email` varchar(250) DEFAULT NULL, 
    `followupemails_id` int(11) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `id` (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=latin1. 

的“followupemails_id”列中插入和更新query.This不工作是一个更新查询,其中记录有该ID(29)。 UPDATE followupemails_emaillogs SET followupemails_id=5 WHERE id =29。 这是插入查询INSERT INTO followupemails_emaillogs SET followupemails_id=4, schedule_time='2013-10-23 08:10:00', email_status='pending', client_name='ayaz ali'。这工作罚款小提琴,但不是我的sqlyog?可能是什么issue.At最后我发现,工作完美查询

.INSERT INTO followupemails_emaillogs (followupemails_id,schedule_time,email_status,client_name,client_email) VALUES (26,'2013-10-23 08:10:00','pending','ayaz ali','[email protected]'); 谁能告诉我,为什么集查询不工作,但第二个查询工作perfect.so,我可以接受他answer.Thanks所有的帮助

+0

显示您的查询。 – Cfreak

+0

@Cfreak我将简单的更新查询添加到我的问题。 –

+1

就我所见,[效果很好](http://sqlfiddle.com/#!2/4171e/1)。 –

回答

0

整个查询是确定

CREATE TABLE `followupemails_emaillogs` (
`id` int NOT NULL AUTO_INCREMENT, 
    `schedule_time` datetime DEFAULT NULL, 
    `sent_time` datetime DEFAULT NULL, 
    `email_status` varchar(100) DEFAULT NULL, 
    `client_name` varchar(250) DEFAULT NULL, 
    `client_email` varchar(250) DEFAULT NULL, 
    `followupemails_id` int DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `id` (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=latin1. 

但在最后存在点这实际上是错误,以便去除斑点和创建表

latin1. 

所以去除斑点的标志,而不是在ID申请使用空此行,默认字段为空,所以不要使用默认为空

id int (8) AUTO_INCREMENT 

CREATE TABLE `followupemails_emaillogs` (
`id` int (8) AUTO_INCREMENT, 
    `schedule_time` datetime DEFAULT NULL, 
    `sent_time` datetime DEFAULT NULL, 
    `email_status` varchar(100), 
    `client_name` varchar(250), 
    `client_email` varchar(250), 
    `followupemails_id` int, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `id` (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=latin1 
+0

亲爱的表查询没有问题。 –

+0

将更新查询复制到sql yog并在那里执行,如果记录正在更新那意味着查询中没有问题。 – user2727841

+0

检查我的问题进行编辑。 –

0

不需要(11)在INT操作SQL查询,这得到了nvarchar的长度,varchar数据类型列只不是一个int数据类型,所以更改和写入的int代替int(11)int(8)

尝试,而不是你的查询此查询

CREATE TABLE `followupemails_emaillogs` (
    `id` int NOT NULL AUTO_INCREMENT, 
    `schedule_time` datetime DEFAULT NULL, 
    `sent_time` datetime DEFAULT NULL, 
    `email_status` varchar(100) DEFAULT NULL, 
    `client_name` varchar(250) DEFAULT NULL, 
    `client_email` varchar(250) DEFAULT NULL, 
    `followupemails_id` int DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `id` (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=latin1. 
+0

我使用sql yog创建表,所以当输入表的长度时,它会在上面的结构中创建表。 –

+0

'INT(11)'在MySQL中是完全有效的语法。 –

+0

当我删除默认为int的长度为11。 –

2

尝试这样

创建,

CREATE TABLE followupemails_emaillogs (
    id int(8) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    schedule_time datetime DEFAULT NULL, 
    sent_time datetime DEFAULT NULL, 
    email_status varchar(100) DEFAULT NULL, 
    client_name varchar(250) DEFAULT NULL, 
    client_email varchar(250) DEFAULT NULL, 
    followupemails_i int(11) DEFAULT NULL, 
    UNIQUE (id) 
) 

若要插入,

INSERT INTO followupemails_emaillogs (schedule_time,sent_time,email_status,client_name,client_email,followupemails_i) 
VALUES 
('2012-05-05','2012-05-06',"sent","sagar","[email protected]",2)