Problem background:
The structure of the exported database in the mysql server on the online linux server. Want to create a test version locally
After exporting and running on local mysql, it reports error 1067-Invalid default value for
The timestamp column needs to be used in the mysql database to store the creation time and update time of the data
For example, to create a background management menu table, only look at the two fields created_at and updated_at
DROP TABLE IF EXISTS `admin_menu`;
CREATE TABLE `admin_menu` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NOT NULL DEFAULT 0,
`order` int(11) NOT NULL DEFAULT 0,
`title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`icon` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`uri` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`permission` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` timestamp(0) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Compact;
An error was found after execution
1067-Invalid default value for’updated_at’. The default value of the updated_at field is invalid. The created_ad field type is the datetime date and time type. The default value is NULL and no error occurs.
sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
`updated_at` timestamp(0) DEFAULT '1970-01-01 08:00:00',
Method 3
Search online, add configuration parameters in the mysql configuration file
[mysqld] Add under node
Restart the mysql database for trial configuration to take effect.
After that, the above data can be executed normally
The following is a specific explanation of method three, it is only for record, and it is not necessary to know
mysql5.6.6Previously, the timestamp time type had a default behavior.
TIMESTAMP columns that did not explicitly declare the NULL attribute defaulted to NOT NULL. (And other data types that do not show a declaration of NOT NULL allow NULL values.)
insert inserts a piece of data with a TIMESTAMP column value of NULL, it will automatically store the current timestamp into this timestamp column when it is stored.
Similar Posts:
- MySQL timestamp set default value error Invalid default value reason and solution
- [Solved] cannot load from mysql.proc. the table is probably corrupted
- [Solved] mapper.xml Error: java.lang.AbstractMethodError: Method oracle/jdbc/driver/OracleResultSetImpl.getNString(Ljava/lang/String;)Ljava/lang/String; is abstract,
- ValueError: day is out of range for month [How to Solve]
- [Solved] ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
- ValueError: day is out of range for month [How to Solve]
- [Solved] MySQL query reports an error: Legal mix of settlements
- [Solved] SQLSTATE[23000]: Integrity constraint violation: 1048 Column ‘vod_content’.
- mysql: [Err] 1075 – Incorrect table definition; there can be only one auto column and it must be d…
- Uniapp IOS uses new date() to report an error