首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用MySQL更新MySQL

用MySQL更新MySQL
EN

Stack Overflow用户
提问于 2015-10-29 00:18:59
回答 1查看 603关注 0票数 0

我将doctrine DBAL2.5.2与MySql 5.5结合使用

我已经创建了一个timestamp类型的字段和一个ON UPDATE CURRENT_TIMESTAMP extra。

当我更改phpMyAdmin中的内容时,字段会更新并更改为当前时间戳,但是当我更新Doctrine/dbal中的内容时,什么也不会发生。我的意思是,除了on update之外,所有的东西都可以工作。

我使用$app['db']->update('mytable', $data, array('my_id' => $id);调用更新

如何从trigger /dbal代码运行on update触发器?

编辑:

我添加了这段代码来检查我是否尝试更改日期。

代码语言:javascript
运行
复制
if (isset($data['updated'])) unset($data['updated']);
EN

回答 1

Stack Overflow用户

发布于 2015-11-10 22:53:42

  1. 确保您根本不将date字段与您的$data一起发送,因为空字符串将导致零。
  2. 确保您实际上正在更改数据,否则时间戳列也不会更新。

我已经设置了一个测试项目,它工作得很好:

代码语言:javascript
运行
复制
$connectionParams = ...;
$conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
$conn->update('user', array('name' => 'X3'), array('name' => 'X2'));

表:

代码语言:javascript
运行
复制
CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `name` text NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

一些测试数据:

代码语言:javascript
运行
复制
INSERT INTO `user` (`id`, `name`, `date`) VALUES
(1, 'A', '0000-00-00 00:00:00'),
(2, 'B', '0000-00-00 00:00:00'),
(3, 'C', '0000-00-00 00:00:00'),
(4, 'F', '0000-00-00 00:00:00'),
(10, 'X2', '2015-11-10 14:47:08');

您能否重新测试并确保日期字段中的所有参数都是正确的?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33396260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档