mysql - 在 my sql 第 1 行的 '' 附近使用的正确语法

标签 mysql database mariadb

我知道这个问题已经被问过很多次了,但不幸的是,我没能找到解决这个问题的方法。可能是我遗漏了一些琐碎的事情..

我已经从 mysql workbench 导出了数据库模式,并尝试在 linux 机器上从中构建数据库。但是,当我运行脚本时,它会抛出如下错误:

ERROR: 1064 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

此外,我还尝试了很多带引号和全部的组合。下面是我导出的sql文件的一部分。

CREATE DATABASE IF NOT EXISTS `abcdata` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `abcdata`;
-- MySQL dump 10.13  Distrib 5.7.17, for Win64 (x86_64)
--
-- Host: localhost    Database: abcdata
-- ------------------------------------------------------
-- Server version   8.0.3-rc-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, 
FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `databoard`
--

DROP TABLE IF EXISTS `databoard`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `databoard` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`hwunit_id` int(11) NOT NULL,
`brd_board_type` varchar(128) NOT NULL,
`brd_manufacturer` varchar(128) DEFAULT '""',
`brd_article_number` varchar(128) DEFAULT '""',
`brd_production_date` date DEFAULT NULL,
`brd_delivery_revision` varchar(128) DEFAULT '""',
`brd_present_revision` varchar(128) DEFAULT '""',
`brd_rev_date` varchar(32) DEFAULT '""',
`brd_made_the_last_rev` varchar(128) DEFAULT '""',
`brd_serial_number` varchar(128) DEFAULT '""',
`brd_slot_number` varchar(128) DEFAULT '""',
PRIMARY KEY (`id`)    ) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT 
 CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

指定的错误在第 1 行。

最佳答案

最后,我设法找到了解决方案,问题是我从使用 mysqldump.exe 的工作台 6.3 创建了这个 sql 转储,但是在目标上我安装了这个 MariaDb,它需要不同的语法。

所以我不得不进行额外的转换以适应 MariaDb 语法的 sql 转储。不同之处在于转换前后的文件如下:

之前

CREATE DATABASE IF NOT EXISTS `abcdata` /*!40100 DEFAULT CHARACTER SET utf8 
*/;
USE `abcdata`;
-- MySQL dump 10.13  Distrib 5.7.17, for Win64 (x86_64)
--
-- Host: localhost    Database: abcdata
-- ------------------------------------------------------
-- Server version   8.0.3-rc-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, 
FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `databoard`
--

DROP TABLE IF EXISTS `databoard`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `databoard` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`hwunit_id` int(11) NOT NULL,
`brd_board_type` varchar(128) NOT NULL,
`brd_manufacturer` varchar(128) DEFAULT '""',
`brd_article_number` varchar(128) DEFAULT '""',
`brd_production_date` date DEFAULT NULL,
`brd_delivery_revision` varchar(128) DEFAULT '""',
`brd_present_revision` varchar(128) DEFAULT '""',
`brd_rev_date` varchar(32) DEFAULT '""',
`brd_made_the_last_rev` varchar(128) DEFAULT '""',
`brd_serial_number` varchar(128) DEFAULT '""',
`brd_slot_number` varchar(128) DEFAULT '""',
PRIMARY KEY (`id`)    ) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT 
CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

之后

-- MySQL dump 10.13  Distrib 5.7.17, for Win64 (x86_64)
--
-- Host: 127.0.0.1    Database: abcdata
-- ------------------------------------------------------
-- Server version   8.0.3-rc-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, 
FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Current Database: `abcdata`
--
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `abcdata` /*!40100 DEFAULT 
CHARACTER SET utf8 */;
USE `abcdata`;
--
-- Table structure for table `databoard`
--
DROP TABLE IF EXISTS `databoard`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `databoard` (  `id` int(11) NOT NULL AUTO_INCREMENT,  
`hwunit_id` int(11) NOT NULL,  `brd_board_type` varchar(128) NOT NULL,  
`brd_manufacturer` varchar(128) DEFAULT '""',  `brd_article_number` 
varchar(128) DEFAULT '""',  `brd_production_date` date DEFAULT NULL,  
`brd_delivery_revision` varchar(128) DEFAULT '""',  `brd_present_revision` 
varchar(128) DEFAULT '""',  `brd_rev_date` varchar(32) DEFAULT '""',  
`brd_made_the_last_rev` varchar(128) DEFAULT '""',  `brd_serial_number` 
 varchar(128) DEFAULT '""',  `brd_slot_number` varchar(128) DEFAULT '""',  
PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

基本上所有的语句都被转换成单行而不是多行。

关于mysql - 在 my sql 第 1 行的 '' 附近使用的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48384769/

相关文章:

mysql - 将 Twig 模板存储在 MySQL 数据库中并使用 Propel 进行提取

mysql - 由于文本类型已弃用,如何在 sailsjs 模型属性中设置文本类型

php - 在没有 group_concat 的情况下连接 symfony/doctrine/mysql 中的行

mysql - TokuDB 排序时间在 ASC 和 DESC 之间不同

mysql - 轻量级 mySQL 服务器?

php - 我该如何解决这个错误?弃用 : mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead

mysql - 如何从字段中删除尾随空格

mysql - MySQL 中的 Memcache 与缓冲池

c - C 中精确和近似查找的多个键

mysql - `ERROR 2002 (HY000): Can' t 通过套接字 '/var/run/mysqld/mysqld.sock' (2 "No such file or directory") 连接到本地 MySQL 服务器`