最近在Ubuntu 16 x64盒子上安装了php7.0-fpm + Nginx + MySQL。
当将PDO安装程序发送到数据库以便添加文件时,它会执行以下操作:
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/mcdospace/install/index.php:31 Stack trace: #0 /var/www/mcdospace/install/index.php(31):
PDOStatement->execute(Array) #1 /var/www/mcdospace/install/index.php(152): try_query(Array) #2 {main}
PDOException: SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint in /var/www/mcdospace/install/index.php:31 Stack trace: #0 /var/www/mcdospace/install/index.php(31): PDOStatement->execute(Array) #1 /var/www/mcdospace/install/index.php(152): try_query(Array) #2 {main}
PDOException: SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint in /var/www/mcdospace/install/index.php:31 Stack trace: #0 /var/www/mcdospace/install/index.php(31): PDOStatement->execute(Array) #1 /var/www/mcdospace/install/index.php(152): try_query(Array) #2 {main}
PDOException: SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint in /var/www/mcdospace/install/index.php:31 Stack trace: #0 /var/www/mcdospace/install/index.php(31): PDOStatement->execute(Array) #1 /var/www/mcdospace/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/mcdospace/install/index.php:31 Stack trace: #0 /var/www/mcdospace/install/index.php(31): PDOStatement->execute(Array) #1 /var/www/mcdospace/install/index.php(152): try_query(Array) #2 {main}
我在设置中遗漏了什么吗?它在Ubuntu 14 php5系统上运行良好。
下面是一些表插入以帮助评估:
'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(),
),
答案 0 :(得分:0)
对于expiry_date
列,not null
约束没有任何默认值会导致默认设置为0,这在MySQL中不作为时间戳的默认值接受。
使用expiry_date
字段的默认时间戳。
您可以查看有关此问题的以下主题的讨论。