mysql - 为什么sql不让我创建这个表?
问题描述
我正在尝试将数据库从:MySQL Distrib 5.5.60-MariaDB,for Linux (x86_64) 迁移到:MySQL 5.5.4,UNIX
我尝试将 db 作为 zip 包导入,但它开始抛出错误,所以现在我尝试在 phpMyAdmin 上一次重新创建每个表。
下面的查询抛出 #1064 语法错误,我无法找出问题所在。
MySQL 说:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP(2),
`st' at line 6
我正在查看第 6 行,试图找到任何保留字、丢失的数据、拼写错误和/或过时的命令,但没有运气。
CREATE TABLE `tblmoto_auth_policies` (
`policy_id` int(11) NOT NULL AUTO_INCREMENT,
`policy_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`policy_desc` text COLLATE utf8_unicode_ci NOT NULL,
`policy_url` text COLLATE utf8_unicode_ci NOT NULL,
`date_added` timestamp(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP,
`status` smallint(2) NOT NULL DEFAULT '1',
PRIMARY KEY (`policy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
我可以使用一些帮助。提前致谢。
解决方案
CURRENT_TIMESTAMP 不好
试试这个:
CREATE TABLE `tblmoto_auth_policies` (
`policy_id` int(11) NOT NULL AUTO_INCREMENT,
`policy_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`policy_desc` text COLLATE utf8_unicode_ci NOT NULL,
`policy_url` text COLLATE utf8_unicode_ci NOT NULL,
`date_added` timestamp(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP(2),
`status` smallint(2) NOT NULL DEFAULT '1',
PRIMARY KEY (`policy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
推荐阅读
- javascript - 按另一个相关值对 javascript 数组进行排序
- python - python pandas:用特殊字符替换另一个str列中的str值
- gcc - libtool:无法识别的选项“-g”
- python - 如何在我的电脑上安装 pygame zero?我收到错误,找不到其他方法
- javascript - bcrypt 哈希输出的长度是多少?
- c# - 为什么c# utf8-json 需要将obj序列化为utf8 byte[] 然后utf8.getstring?这样做有什么好处呢?
- javascript - 使用由 ajax 查询填充的数组填充 Select2 选择框
- reactjs - 如何在 aws lambda serverless 或 S3 中部署 React 应用程序
- python - 如何使用 xml.etree.ElementTree 漂亮地编写 .xml 文件
- json - 你能帮我解决 Alamofire 响应中的 Codable 错误吗?