首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Infinidb-“`CREATE_TIMESTAMP` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP”出现错误

Infinidb-“`CREATE_TIMESTAMP` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP”出现错误
EN

Stack Overflow用户
提问于 2014-02-17 20:34:48
回答 3查看 957关注 0票数 1

我正在尝试将数据库从mysql移植到infinidb.But,我在移植时遇到了上面的错误(在标题中描述)。

代码语言:javascript
复制
`CREATE_TIMESTAMP` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

在mysql中有效,但在infinidb中无效。错误为:错误代码: 138。infinidb不支持该语法或数据类型。任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2014-02-18 22:20:29

这是您正在尝试的完整SQL语句吗?我能够使用:

代码语言:javascript
复制
create table test (`CREATE_TIMESTAMP` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

以下是控制台输出

代码语言:javascript
复制
[root@centos6 bin]# idbmysql 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.1.73 Calpont InfiniDB 4.5 Alpha

Copyright (c) 2014, InfiniDB, Inc. and/or its affiliates. All rights reserved.
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

InfiniDB is a registered trademark of InfiniDB, Inc. and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use test;
Database changed
mysql> create table test (`CREATE_TIMESTAMP` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.00 sec)

mysql> describe test;
+------------------+-----------+------+-----+-------------------+-----------------------------+
| Field            | Type      | Null | Key | Default           | Extra                       |
+------------------+-----------+------+-----+-------------------+-----------------------------+
| CREATE_TIMESTAMP | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+------------------+-----------+------+-----+-------------------+-----------------------------+
1 row in set (0.00 sec)

mysql> 

如果这不起作用,或者你正在用不同的方式尝试语法,请告诉我。另外,您正在尝试的InfiniDB版本是什么?

谢谢!

票数 2
EN

Stack Overflow用户

发布于 2014-04-17 11:33:23

看起来你不能在InfiniDB中使用时间戳数据类型。我有与@mhoglan相同的版本,但似乎在该查询中有一个小错误:

代码语言:javascript
复制
mysql> create table test (`CREATE_TIMESTAMP` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.00 sec) 

末尾缺少"engine=infinidb;",这将在infinidb中创建表。相反,该表是使用MySQL的默认引擎(MyISAM或其他引擎)创建的。

代码语言:javascript
复制
mysql> create table test (`CREATE_TIMESTAMP` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) engine=infinidb;
ERROR 138 (HY000): The syntax or the data type(s) is not supported by InfiniDB. Please check the InfiniDB syntax guide for supported syntax or data types.

如您所见,添加engine=infinidb失败。

如果您可以使用datetime,这可能是可行的方法;timestamp目前似乎不受支持:(

票数 2
EN

Stack Overflow用户

发布于 2014-09-10 17:58:30

我猜是InfiniDB中不允许的NOT NULL约束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21829271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档