大家好,我在尝试运行以下查询时遇到错误 ERROR 1067 (42000): Invalid default value for 'uploadedDate'
CREATE TABLE `filenew` (
`id` int(11) NOT NULL AUTO_INCREMENT /* MYSQL_TYPE_LONG */,
`originalFilename` varchar(255) CHARACTER SET utf8 NOT NULL /* MYSQL_TYPE_VARCHAR */,
`shortUrl` varchar(255) CHARACTER SET utf8 DEFAULT NULL /* MYSQL_TYPE_VARCHAR */,
`fileType` varchar(150) CHARACTER SET utf8 DEFAULT NULL /* MYSQL_TYPE_VARCHAR */,
`extension` varchar(10) CHARACTER SET utf8 DEFAULT NULL /* MYSQL_TYPE_VARCHAR */,
`fileSize` bigint(15) DEFAULT NULL /* MYSQL_TYPE_LONGLONG */,
`localFilePath` varchar(255) CHARACTER SET utf8 DEFAULT NULL /* MYSQL_TYPE_VARCHAR */,
`userId` int(11) DEFAULT NULL /* MYSQL_TYPE_LONG */,
`uploadedUserId` int(11) DEFAULT NULL /* MYSQL_TYPE_LONG */,
`totalDownload` int(11) DEFAULT NULL /* MYSQL_TYPE_LONG */,
`uploadedIP` varchar(45) CHARACTER SET utf8 DEFAULT NULL /* MYSQL_TYPE_VARCHAR */,
`uploadedDate` timestamp DEFAULT NULL /* MYSQL_TYPE_TIMESTAMP2 */,
`statusId` int(2) DEFAULT NULL /* MYSQL_TYPE_LONG */,
`status` enum('active','trash','deleted') DEFAULT 'active' /* MYSQL_TYPE_ENUM */,
`visits` int(11) DEFAULT '0' /* MYSQL_TYPE_LONG */,
`lastAccessed` timestamp DEFAULT NULL /* MYSQL_TYPE_TIMESTAMP2 */,
`deleteHash` varchar(32) CHARACTER SET utf8 DEFAULT NULL /* MYSQL_TYPE_VARCHAR */,
`folderId` int(11) DEFAULT NULL /* MYSQL_TYPE_LONG */,
`serverId` int(11) DEFAULT '1' /* MYSQL_TYPE_LONG */,
`adminNotes` text CHARACTER SET utf8 DEFAULT NULL /* MYSQL_TYPE_BLOB */,
`accessPassword` varchar(32) CHARACTER SET utf8 DEFAULT NULL /* MYSQL_TYPE_VARCHAR */,
`fileHash` varchar(32) CHARACTER SET utf8 DEFAULT NULL /* MYSQL_TYPE_VARCHAR */,
`minUserLevel` int(3) DEFAULT NULL /* MYSQL_TYPE_LONG */,
`linkedFileId` int(11) DEFAULT NULL /* MYSQL_TYPE_LONG */,
`keywords` varchar(255) CHARACTER SET utf8 DEFAULT NULL /* MYSQL_TYPE_VARCHAR */,
`description` varchar(255) CHARACTER SET utf8 DEFAULT NULL /* MYSQL_TYPE_VARCHAR */,
`isPublic` int(1) NOT NULL DEFAULT '1' /* MYSQL_TYPE_LONG */,
`total_likes` int(11) NOT NULL DEFAULT '0' /* MYSQL_TYPE_LONG */,
`uploadSource` enum('direct','remote','ftp','torrent','leech','webdav','api','fileimport','other') CHARACTER SET utf8 NOT NULL DEFAULT 'direct' /* MYSQL_TYPE_ENUM */,
`unique_hash` varchar(64) CHARACTER SET utf8 DEFAULT NULL /* MYSQL_TYPE_VARCHAR */,
`date_updated` datetime DEFAULT NULL /* MYSQL_TYPE_DATETIME2 */,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_hash` (`unique_hash`),
KEY `shortUrl` (`shortUrl`),
KEY `originalFilename` (`originalFilename`),
KEY `fileSize` (`fileSize`),
KEY `visits` (`visits`),
KEY `lastAccessed` (`lastAccessed`),
KEY `extension` (`extension`),
KEY `userId` (`userId`),
KEY `statusId` (`statusId`),
KEY `userId_2` (`userId`),
KEY `uploadedDate` (`uploadedDate`),
KEY `folderId` (`folderId`),
KEY `serverId` (`serverId`),
KEY `fileHash` (`fileHash`),
KEY `linkedFileId` (`linkedFileId`),
KEY `statusId_2` (`statusId`),
KEY `uploadedUserId` (`uploadedUserId`),
KEY `keywords` (`keywords`),
KEY `status` (`status`),
KEY `uploadedIP` (`uploadedIP`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
我在谷歌和其他论坛上尝试了很多修复,但没有一个奏效,我尝试过的东西很少
在 my.cnf 中设置
sql_mode=NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
试试这个
SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
...还有很多。如果有人可以在这件事上帮助我,因为我在数据库方面没有经验,那么我将非常感谢您的帮助。
我在 centos 7 和 MariaDB10.3.23-MariaD
如果将 NULL 分配给使用 TIMESTAMP 数据类型的列,MariaDB(与 MySQL 不同)具有特殊行为。
如果在 INSERT 或 UPDATE 查询中为该列分配了 NULL 值(包括通过 DEFAULT 进行的隐式分配),那么 MariaDB 将使用当前日期和时间自动初始化该列的值。所以 TIMESTAMP 列的 DEFAULT NULL 是不正确的。
每次尝试将 NULL 分配给 TIMESTAMP 列(显式或隐式)时,它将被分配给 CURRENT_TIMESTAMP。在这种情况下,禁用 NO_ZERO_DATE 和 NO_ZERO_IN_DATE 无效。
因此,将列指定为:
和