首页 > 解决方案 > “未签名”:语法错误:导入到 sqlite 时创建表查询

问题描述

我正在将我的mysql表导入sqlite,当我在那里运行创建表查询时,我发现了这个错误并且无法修复它。我想知道这个查询有什么错误。有人告诉我错误接近“未签名”:语法错误:CREATE TABLE t_malayalam( idint(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
)

标签: mysqlsqlitephpmyadmin

解决方案


这里有几个问题。一个是CHARACTER SET utf8无效的,因为SET它是 SQLite3 中的关键字。(无论如何,您可能都想摆脱COLLATE子句,因为您选择的排序规则 'utf8_bin' 无论如何都是无效的。有关详细信息,请参阅https://www.sqlite.org/datatype3.html#collat ​​ion 。)除此之外,您还需要摆脱列类型之后的无效规范,如UNSIGNEDZEROFILL。(另请注意,类似 的类型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),但也不会造成任何伤害。


推荐阅读