1

データベースを mysql から infinidb に移植しようとしていますが、移植中に上記のエラー (見出しで説明) が発生します。

`CREATE_TIMESTAMP` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

mysql では有効ですが、 infinidb では有効ではありません。エラー: エラー コード: 138。構文またはデータ型が infinidb でサポートされていません。どんな助けでも大歓迎です。

4

3 に答える 3

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 の追加は失敗します。

代わりに datetime を使用できる場合は、それが適している可能性があります。タイムスタンプは現在サポートされていないようです:(

于 2014-04-17T03:33:23.160 に答える
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 を試していますか?

ありがとう!

于 2014-02-18T14:20:28.900 に答える
0

InfiniDB で許可されていないのは NOT NULL 制約だと思います。

于 2014-09-10T09:58:30.247 に答える