KingbaseESV8R2 ne prend en charge que la migration depuis Oracle, alors migrez d'abord MySQL vers Oracle.
Problèmes lors de la migration vers Oracle :
1. Oracle a une limite maximale de 30 chiffres pour les noms de table
2. Numéro hexadécimal non valide, hexadécimal non valide
3. Les données de la table sont vides et le rapport ne peut pas insérer NULL dans
. 4. Le nom de l'index est trop long
Il y a de nombreux problèmes lors de la migration de MySQL vers Oracle, et l'ajustement est très important et gênant ; lorsque Oracle migre vers Kingbase, parfois la migration de la table ne réussit pas, mais elle peut réussir après plusieurs tentatives.
Après avoir contacté le personnel technique de Jincang, nous avons appris qu'il existe actuellement une nouvelle version V8R3, mais qu'elle ne peut pas être utilisée dans l'environnement de production, mais peut être utilisée pour les tests et prend en charge la migration directe de MySQL vers V8R3.
Par conséquent, vous devez réinstaller une machine virtuelle. Pendant le processus d'installation, vous ne pouvez pas installer R2 et R3 en même temps et utiliser l'outil de migration R3 pour la migration des données. Veuillez sélectionner Sélectionner tout lors de la migration de la base de données source pour migrer les paramètres tels que les vues, les index, les clés étrangères et les valeurs par défaut.
Problèmes de migration vers V8R3 :
1.tinyint(1) est mappé en booléen après la migration, même s'il a été mappé dans l'outil de migration, c'est toujours le même.
Ainsi, après la migration, vous devez changer le type de champ de la table, et s'il existe une valeur par défaut, vous devez également modifier la valeur par défaut
Bien que les commentaires aient été sélectionnés lors du processus de migration, les commentaires des champs restent ne peut pas être affiché à l’aide du gestionnaire d’objets par défaut. Passez la souris sur le nom de la table pour afficher les commentaires sur la table. Pas moyen de le voir pour l'instant.
Après avoir modifié le problème tinyint(1), vous pouvez sélectionner la base de données dans le gestionnaire d'objets de R3 pour une sauvegarde logique.
Utilisez ensuite le gestionnaire d'objets de R2 pour effectuer une restauration logique.
L'auto-incrémentation MySQL est différente de l'auto-incrémentation Kingbase ;
Si nous utilisons actuellement kingbaseV8R3 pour le transfert, la migration de mysql vers r3 nous aidera à créer la séquence et à remplir les valeurs par défaut des champs pour réaliser l'auto-incrémentation.
Voici comment utiliser manuellement l'incrémentation automatique :
Créez d'abord une SÉQUENCE et nommez-la test_id_SEQ Ici, définissez la valeur de départ sur 101
CREATE SEQUENCE test_id_SEQ START 101;
Puis ajoutez
NEXTVAL('test_id_SEQ'::REGCLASS)
à la valeur par défaut du champ qui nécessite l'auto-incrémentation. -increment puis utilisez l'instruction insert. L'ID de champ de la table de test commence à augmenter à partir de 101
INSERT INTO test (name) values('1');
Avant de supprimer la séquence, vous devez supprimer la valeur par défaut dans le champ pour supprimer la séquence
DROP SEQUENCE test_id_SEQ
kingbase n'a pas de fonction uuid, et une erreur est signalée lors de l'exécution
select replace(uuid(), '-', '') as id from dual
Pour le moment, utilisez plutôt
select SYS_GUID_NAME() as id from dual;
Après tout, les règles de génération uuid de mysql et kingbase sont différentes
1. Impossible d'utiliser `mot-clé distinctif
2. La fonction IFNULL change en NVL
3.group par Tous les champs doivent être affichés dans
4.sql ne peut pas apparaître !=''
, aucune erreur ne sera signalée, mais le résultat de l'exécution est nul. Dans Kingbase, les chaînes vides et null sont équivalentes !=''
,不会报错,但是执行结果null,在Kingbase中空字符串和null等价
5.函数IF改成NVL2,Kingbase中只能判断是否为null
6.字段类型字符串但是存时间,又想格式化时间。需要先将时间转为时间戳,再格式化为字符串
SELECT to_char(to_timestamp('2020-02-20 15:35:44', 'YYYY-MM-DD HH24:MI:SS'),'MM-DD')
7.不能使用双引号""
,用单引号''
代替
8.不能使用count('')
9.时间格式化,加减
limit_time = limit_time + (now() - apply_time)
MySQL:
limit_time = date_add( limit_time, INTERVAL ( SELECT TimeStampDiff( DAY, now(), apply_time ) ) + 1 DAY )
Kingbase:麻烦在于时间和字符串的转换,先将时间戳格式化为字符串,再转回时间才能进行加减
limit_time = limit_time + (to_date(to_char(now(),'YYYY-MM-DD'),'YYYY-MM-DD') - to_date(to_char(apply_time,'YYYY-MM-DD'),'YYYY-MM-DD') + integer '1')
10.表名和系统视图可能重名,要加模式名.表名
""
ne peuvent pas être utilisés, utilisez des guillemets simples ''
. à la place🎜🎜8 .Impossible d'utiliser count('')
🎜🎜9. Formatage de l'heure, addition et soustraction🎜🎜limit_time = limit_time + (now() - apply_time)🎜🎜MySQL : 🎜rrreee🎜Kingbase : Le problème est la conversion de l'heure et de la chaîne, formatez d'abord l'horodatage en chaîne, puis reconvertissez l'heure pour ajouter et soustraire 🎜rrreee🎜10 Le nom de la table et la vue système peuvent avoir le même nom, alors ajoutez . nom du schéma.nom de la table
Distinguer 🎜🎜11. is_delete = false remplacé par is_delete = 0, la valeur du champ est 0 et ne peut pas être filtrée avec false 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!