根据你提供的 SQL 语句,问题出在 `created_at` 列的默认值设置上。具体来说,`curtime()` 函数不能用作 `DATETIME` 类型的默认值。`curtime()` 返回的是当前时间(不带日期),而 `DATETIME` 类型需要一个完整的日期和时间。
### 解决方案:
1. **使用 `CURRENT_TIMESTAMP`**:如果你想要在插入新记录时自动填充当前的日期和时间,可以使用 `CURRENT_TIMESTAMP` 作为默认值。修改 `created_at` 列的定义如下:
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
2. **完整的 SQL 语句**:修改后的完整 SQL 语句如下:
CREATE TABLE IF NOT EXISTS `okokphone_backups` (
`owner` varchar(255) NOT NULL,
`avatar` mediumtext NOT NULL,
`name` varchar(255) NOT NULL,
`phone_number` varchar(10) NOT NULL,
`wallpaper` varchar(255) NOT NULL,
`ringtone` varchar(255) NOT NULL,
`notification_sound` varchar(255) NOT NULL,
`notifications` longtext NOT NULL,
`lockscreen` varchar(255) NOT NULL,
`homescreen` longtext NOT NULL,
`gallery` longtext NOT NULL,
`albums` longtext NOT NULL,
`contacts` longtext NOT NULL,
`notes` longtext NOT NULL,
`settings` longtext NOT NULL,
`flashlight_color` mediumtext NOT NULL,
`last_location` mediumtext DEFAULT NULL,
`clock` longtext DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`owner`),
KEY `phone_number` (`phone_number`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
### 总结:
- 将 `curtime()` 替换为 `CURRENT_TIMESTAMP`,以确保 `created_at` 列能够正确地存储当前的日期和时间。
- 这样修改后,SQL 语句应该能够正常执行而不会出现语法错误。如果还有其他问题,请随时告知! |