好吧,我遇到了SQL创建表的问题。我在两台不同的服务器上工作,一台WAMP服务器在我的计算机上用于测试,它运行sql 5.6的东西,而我的在线主机不经常更新并运行5.5的东西。因此,我的创建表存在问题。
我的表SQL看起来像:
CREATE TABLE some_table
(
user_id INT(6) UNSIGNED AUTO_INCREMENT,
member_till DATETIME DEFAULT CURRENT_TIMESTAMP,
banned_till DATETIME DEFAULT CURRENT_TIMESTAMP,
status ENUM('inactive', 'active') DEFAULT 'inactive',
PRIMARY KEY(user_id)
) ENGINE=InnoDB
这适用于我的localhost 5.6服务器,但我的在线5.5服务器出现错误“#1067 - 'member_till'的默认值无效”,因为5.5不允许在DATETIME字段上使用默认值。
所以我尝试了这个:
CREATE TABLE some_table
(
user_id INT(6) UNSIGNED AUTO_INCREMENT,
member_till TIMESTAMP NOT NULL,
banned_till TIMESTAMP NOT NULL,
status ENUM('inactive', 'active') DEFAULT 'inactive',
PRIMARY KEY(user_id)
) ENGINE=InnoDB
这在我的在线5.5服务器上工作正常,但在我尝试插入用户时在我的本地主机5.6服务器上我收到错误“一般错误:1364字段'member_till'没有默认值”。
所以我需要一个适用于两台服务器的解决方案。老实说,在字段中放置什么时间戳并不重要,因为默认值只是一个占位符,但它必须是在注册日期之前或之前的有效日期时间格式。
P.S。使用PHP PDO脚本包运行查询,这会产生任何不同。