mysql - “未签名”:语法错误:导入到 sqlite 时创建表查询
问题描述
我正在将我的mysql表导入sqlite,当我在那里运行创建表查询时,我发现了这个错误并且无法修复它。我想知道这个查询有什么错误。有人告诉我错误接近“未签名”:语法错误:CREATE TABLE t_malayalam
(
id
int(8) UNSIGNED
这是我的查询
CREATE TABLE `t_malayalam` (
`id` int(8) UNSIGNED ZEROFILL NOT NULL,
`b` int(11) NOT NULL,
`c` int(11) NOT NULL,
`v` int(11) NOT NULL,
`t` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
)
解决方案
这里有几个问题。一个是CHARACTER SET utf8
无效的,因为SET
它是 SQLite3 中的关键字。(无论如何,您可能都想摆脱COLLATE
子句,因为您选择的排序规则 'utf8_bin' 无论如何都是无效的。有关详细信息,请参阅https://www.sqlite.org/datatype3.html#collat ion 。)除此之外,您还需要摆脱列类型之后的无效规范,如UNSIGNED
和ZEROFILL
。(另请注意,类似 的类型int(8)
虽然合法,但等效于简单integer
类型。)
由于在您的评论中您说您希望该id
字段成为行的唯一指示符,因此您应该指定它:
id integer primary key
(不需要NOT NULL
; 这将是自动的。)
所以,我想你想要这样的东西:
CREATE TABLE `t_malayalam` (
`id` INTEGER PRIMARY KEY,
`b` INTEGER NOT NULL,
`c` INTEGER NOT NULL,
`v` INTEGER NOT NULL,
`t` TEXT NOT NULL
)
请注意,反引号都是不必要的(并且是非标准 SQL),但也不会造成任何伤害。
推荐阅读
- python-2.7 - 使用 PyMC3 进行贝叶斯推理。编译错误。
- java - Java:从给定的全名字符串中删除逗号和姓氏
- ios - iOS 11 和 SSL SNI 支持
- mysql - 允许特定 mysql 用户的任何密码
- java - 为什么 b.wait() 不让主线程等待
- ruby-on-rails - 哈希斜线 (#/text) 用 /text 清除离开域的 url
- android - 添加 Google 地图支持时的 Gradle 问题
- maven - 带有依赖项的 Maven POM 打包
- python - 启动分段上传到 S3 版本 4 方法不允许 err.code 405
- ruby - Ruby Dropdown 选择基于第一个字符