我正在尝试将数据库从mysql移植到infinidb.But我在移植时遇到上述错误(在标题中描述)。
`CREATE_TIMESTAMP` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
在mysql中有效,但在infinidb中无效。错误是:错误代码:138。 infinidb不支持语法或数据类型。任何帮助将不胜感激。
答案 0 :(得分:2)
这是您正在尝试的完整SQL语句吗?我能够使用:
create table test (`CREATE_TIMESTAMP` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
这是控制台输出
[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?
谢谢!
答案 1 :(得分:2)
您似乎无法在InfiniDB中使用timepstamp数据类型。我有与@mhoglan相同的版本,但似乎该查询中有一点错误:
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或其中任何一个)创建的。
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失败。
如果您可以使用日期时间,那么可能就是这样;时间戳目前似乎不受支持:(
答案 2 :(得分:0)
我猜这是InfiniDB中不允许的NOT NULL约束。