Mysql 第20行出现错误1426(42000):精度太高14

Mysql 第20行出现错误1426(42000):精度太高14,mysql,database,Mysql,Database,我得到了一个sql文件,正在尝试使用MySQL命令行导入它。当我键入以下内容时 C:\Users\MyUser\Desktop\SQL>mysql -u root -p < memory.sql Enter password: ********** 因此,我在文本编辑器中打开了sql文件,将14改为6,再次尝试导入,结果如下: ERROR 1064 (42000) at line 20: You have an error in your SQL syntax; check the

我得到了一个sql文件,正在尝试使用MySQL命令行导入它。当我键入以下内容时

C:\Users\MyUser\Desktop\SQL>mysql -u root -p < memory.sql
Enter password: **********
因此,我在文本编辑器中打开了sql文件,将14改为6,再次尝试导入,结果如下:

ERROR 1064 (42000) at line 20: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line 16
下面是创建表的步骤

CREATE TABLE AccessCard (
 ID int(11) NOT NULL auto_increment,
 personID int(11) NOT NULL default '0',
 cardFormatID int(11) NOT NULL default '0',
 cardNumber char(6) binary default NULL,
 friendNumber bigint(20) default NULL,
 disabled tinyint(1) NOT NULL default '0',
 issueCode int(11) default NULL,
 lastmod timestamp(14) NOT NULL,
 lastmodPersonID int(11) default NULL,
 PRIMARY KEY  (ID),
 UNIQUE KEY Alter_Key1 (cardFormatID,cardNumber),
 KEY AI_ID (ID),
 KEY IX_cardFormatToAccessCard (cardFormatID),
 KEY IX_PersonToAccessCard (personID)
 ) TYPE=MyISAM;

我在谷歌上搜索过这个,我发现的唯一一件东西把我带到了这里,但它似乎来自某个正在创建新数据库的人。我对MySQL还比较陌生,所以请温柔一点。谢谢

这在MySQL 5.5.32中有效

CREATE TABLE AccessCard (
 ID int(11) NOT NULL auto_increment,
 personID int(11) NOT NULL default '0',
 cardFormatID int(11) NOT NULL default '0',
 cardNumber char(6) binary default NULL,
 friendNumber bigint(20) default NULL,
 disabled tinyint(1) NOT NULL default '0',
 issueCode int(11) default NULL,
 lastmod timestamp NOT NULL,
 lastmodPersonID int(11) default NULL,
 PRIMARY KEY  (ID),
 UNIQUE KEY Alter_Key1 (cardFormatID,cardNumber),
 KEY AI_ID (ID),
 KEY IX_cardFormatToAccessCard (cardFormatID),
 KEY IX_PersonToAccessCard (personID)
 ) ENGINE=MyISAM;
有两个变化

  • lastmod timestamp NOT NULL,
    行中删除“(14)”
  • type=MyISAM
    更改为
    ENGINE=MyISAM
    。(这在您的服务器上可能没有必要。我不确定这到底是语法问题还是服务器配置的差异。)

此处可能存在版本不匹配或服务器配置不匹配。我的版本不会将时间戳列转储为
timestamp(14)
。我的版本将它们转储为简单的
时间戳

这在MySQL 5.5.32中有效

CREATE TABLE AccessCard (
 ID int(11) NOT NULL auto_increment,
 personID int(11) NOT NULL default '0',
 cardFormatID int(11) NOT NULL default '0',
 cardNumber char(6) binary default NULL,
 friendNumber bigint(20) default NULL,
 disabled tinyint(1) NOT NULL default '0',
 issueCode int(11) default NULL,
 lastmod timestamp NOT NULL,
 lastmodPersonID int(11) default NULL,
 PRIMARY KEY  (ID),
 UNIQUE KEY Alter_Key1 (cardFormatID,cardNumber),
 KEY AI_ID (ID),
 KEY IX_cardFormatToAccessCard (cardFormatID),
 KEY IX_PersonToAccessCard (personID)
 ) ENGINE=MyISAM;
有两个变化

  • lastmod timestamp NOT NULL,
    行中删除“(14)”
  • type=MyISAM
    更改为
    ENGINE=MyISAM
    。(这在您的服务器上可能没有必要。我不确定这到底是语法问题还是服务器配置的差异。)


此处可能存在版本不匹配或服务器配置不匹配。我的版本不会将时间戳列转储为
timestamp(14)
。我的版本将它们转储为简单的
时间戳

,如果您实际显示了sql,这将非常有用。没有它,错误消息几乎是无用的,除了说“是的,你的sql是hosed”之外。我添加了我键入的MySQL命令,希望这就是你的意思。不。这就是执行命令的方式。我们需要查看实际的sql。你基本上已经告诉你的汽车修理工“这是我如何把钥匙放进点火开关的”,而他正在试图弄清楚为什么发动机无法启动。如果你指的是整个SQL文件本身,那么我想我是索尔,其中包含机密信息。有没有特别有用的台词?谢谢我们不需要数据,但是创建表会有所帮助。如果字段名是敏感的,那么更改它们。如果您实际显示了sql,这将很有帮助。没有它,错误消息几乎是无用的,除了说“是的,你的sql是hosed”之外。我添加了我键入的MySQL命令,希望这就是你的意思。不。这就是执行命令的方式。我们需要查看实际的sql。你基本上已经告诉你的汽车修理工“这是我如何把钥匙放进点火开关的”,而他正在试图弄清楚为什么发动机无法启动。如果你指的是整个SQL文件本身,那么我想我是索尔,其中包含机密信息。有没有特别有用的台词?谢谢我们不需要数据,但是创建表会有所帮助。如果字段名是敏感的,则更改它们。好的,Mike的回答让我克服了该错误,现在我得到另一个错误:第1438行的错误1426(42000):为列“startDTM”指定的精度14太大。最大值为6。显然,有几个表与我使用的MySQL版本冲突,这是最新版本。有没有办法找出哪些表不受支持并进行更改?谢谢你迄今为止的帮助!只是文字。如果我站在你的立场上,我会使用我的文本编辑器将SQL文件分割成几个逻辑部分,并分别按顺序运行每个部分。在转到下一个文件之前,请验证数据库对象。当您发现语法错误时,请在所有文件中修复它,然后重新开始。在你的情况下,蛮力可能是你唯一的朋友。好吧,我按照你的建议做了,而且似乎奏效了,我导入了sql文件,没有错误,但是当我在命令行中输入“use test;”,然后输入“show tables;”,我得到了“Empty set(0.00秒)”是我的sql文件吗?请阅读sql文件。寻找一个“创建数据库”的声明。谢谢你,谢谢你!!!!!!!好的,Mike的回答让我克服了那个错误,现在我得到了另一个错误:第1438行的错误1426(42000):为列“startDttm”指定的精度14太大。最大值为6。显然,有几个表与我使用的MySQL版本冲突,这是最新版本。有没有办法找出哪些表不受支持并进行更改?谢谢你迄今为止的帮助!只是文字。如果我站在你的立场上,我会使用我的文本编辑器将SQL文件分割成几个逻辑部分,并分别按顺序运行每个部分。在转到下一个文件之前,请验证数据库对象。当您发现语法错误时,请在所有文件中修复它,然后重新开始。在你的情况下,蛮力可能是你唯一的朋友。好吧,我按照你的建议做了,而且似乎奏效了,我导入了sql文件,没有错误,但是当我在命令行中输入“use test;”,然后输入“show tables;”,我得到了“Empty set(0.00秒)”是我的sql文件吗?请阅读sql文件。寻找一个“创建数据库”的声明。谢谢你,谢谢你!!!!!!!