首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP7 MySQL“expiry_date”PDO数据库安装的默认值无效

问PHP7 MySQL“expiry_date”PDO数据库安装的默认值无效
EN

Stack Overflow用户
提问于 2016-09-13 12:20:59
回答 1查看 734关注 0票数 0

最近在Ubuntu 16 MySQL盒上安装了php7.0-fpm + Nginx + x64。

当将php安装程序用于将PDO安装到数据库以添加文件时,它会执行以下操作:

代码语言:javascript
复制
There seems to be an error. Please try again.
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'expiry_date' in /var/www//install/index.php:31 Stack trace: #0 /var/www//install/index.php(31): 
PDOStatement->execute(Array) #1 /var/www//install/index.php(152): try_query(Array) #2 {main}
PDOException: SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint in /var/www//install/index.php:31 Stack trace: #0 /var/www//install/index.php(31): PDOStatement->execute(Array) #1 /var/www//install/index.php(152): try_query(Array) #2 {main}
PDOException: SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint in /var/www//install/index.php:31 Stack trace: #0 /var/www//install/index.php(31): PDOStatement->execute(Array) #1 /var/www//install/index.php(152): try_query(Array) #2 {main}
PDOException: SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint in /var/www//install/index.php:31 Stack trace: #0 /var/www//install/index.php(31): PDOStatement->execute(Array) #1 /var/www//install/index.php(152): try_query(Array) #2 {main}
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY' in /var/www//install/index.php:31 Stack trace: #0 /var/www//install/index.php(31): PDOStatement->execute(Array) #1 /var/www//install/index.php(152): try_query(Array) #2 {main}

我是不是错过了什么?在Ubuntu14 php5系统上,一切都很好。

以下是一些表格插入,以帮助评估:

代码语言:javascript
复制
'0' => array(
                'table' => TABLE_FILES,
                'query' => 'CREATE TABLE IF NOT EXISTS `'.TABLE_FILES.'` (
                              `id` int(11) NOT NULL AUTO_INCREMENT,
                              `url` text NOT NULL,
                              `filename` text NOT NULL,
                              `description` text NOT NULL,
                              `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
                              `uploader` varchar('.MAX_USER_CHARS.') NOT NULL,
                              `expires` INT(1) NOT NULL default \'0\',
                              `expiry_date` TIMESTAMP NOT NULL,
                              `public_allow` INT(1) NOT NULL default \'0\',
                              `public_token` varchar(32) NULL,
                              PRIMARY KEY (`id`)
                            ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
                            ',
                'params' => array(),
    ),
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-13 12:39:27

对于expiry_date列,没有任何默认值的not null约束导致将默认值设置为0,这在时间戳的MySQL中不被接受为默认值。

对expiry_date字段使用默认时间戳。

您可以查看有关此问题的以下线程的讨论。

https://github.com/laravel/framework/issues/3602

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

https://stackoverflow.com/questions/39469971

复制
相关文章

相似问题

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