Mysql
MySQL 轉儲導入 MariaDB 語法錯誤以在 ‘*/’ 附近使用
這是 mysqldump 10.13 和 MySQL 8.0.28 伺服器的結果。
/*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` int(11) DEFAULT NULL COMMENT 'user name', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='User table'; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`admin`@`%`*/ /*!50003 TRIGGER `user_trigger` AFTER INSERT ON `user` FOR EACH ROW INSERT INTO user_language(user_id, language_id) VALUES (1,1); */;;
如果我嘗試將此片段
mysql <db> < dump.sql
導入 MariaDB 10.6.7,則會導致ERROR 1064 (42000) at line 9: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '*/' at line 1
我將不勝感激有關為什麼會發生這種情況以及如何避免這種情況的任何資訊。
8.0 和 MariaDB 之間的
mysql
和數據庫存在顯著差異。information_schema
避免嘗試向任一方向移動任何數據。(同上performance_schema
。)
轉儲格式不完全兼容。
“MariaDB 伺服器文件 » SQL 語句和結構 » SQL 語句 »註釋語法”中解釋了這個特定問題:
由於可執行部分中的分隔符,以下可執行語句將不起作用:
/*M!100100 select 1 ; */
ERROR 1064 (42000):您的 SQL 語法有錯誤;檢查與您的 MariaDB 伺服器版本相對應的手冊,以獲取在第 1 行的 ’’ 附近使用的正確語法
相反,分隔符應該放在可執行部分之外:
/*M!100100 select 1 */;
+---+ | 1 | +---+ | 1 | +---+