ich springboot + Mybatis und laufen mit dem SpringJUnit4ClassRunner, verwenden Sie die Standarddatenbank h2 und die Skripte:durch com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception unbekannte Spalte verursacht
create table sql:
create TABLE IF NOT EXISTS `test_company` (
`id` bigint unsigned not null auto_increment,
`pid` bigint DEFAULT null COMMENT '',
`outer_id` bigint DEFAULT null COMMENT '',
`name` VARCHAR(256) DEFAULT NULL COMMENT '',
`parent_company_name` VARCHAR(256) DEFAULT NULL COMMENT '',
`user_id` bigint DEFAULT NULL COMMENT '用户ID',
`user_name` VARCHAR(64) DEFAULT NULL COMMENT '',
`type` INTEGER DEFAULT null COMMENT '',
`level` INTEGER DEFAULT null COMMENT '',
`status` INTEGER DEFAULT null COMMENT ''
);
das Modell Firma:
@Data
@NoArgsConstructor
public class Company implements Serializable {
private static final long serialVersionUID = -5822686079080905768L;
private Long id; private Long pid;
private Long outerId;
private String name;
private String parentCompanyName;
private Long userId;
private String userName;
private Integer type;
private Integer level;
private Integer status;
}
die resultMap von Mapper:
<resultMap id="CompanyMap" type="Company">
<id column="id" property="id"/>
<result column="pid" property="pid"/>
<result column="outer_id" property="outerId"/>
<result column="name" property="name"/>
<result column="parent_company_name" property="parentCompanyName"/>
<result column="user_id" property="userId"/>
<result column="user_name" property="userName"/>
<result column="type" property="type"/>
<result column="level" property="level"/>
<result column="status" property="status"/>
</result>
einige sqls:
<sql id="tb">
test_company
</sql>
<sql id="cols_all">
id, <include refid="cols_exclude_id" />
</sql>
<sql id="cols_exclude_id">
pid, outer_id, `name`, `parent_company_name`, user_id, user_name, `type`, `level`, status
</sql>
<sql id="vals">
#{pid}, #{outerId}, #{name}, #{parentCompanyName}, #{userId}, #{userName}, #{type}, #{level}, #{status}
</sql>
SQL erstellen:
<insert id="create" parameterType="Company" keyProperty="id" useGeneratedKeys="true">
INSERT INTO
<include refid="tb" />
(<include refid="cols_exclude_id" />)
VALUES
(<include refid="vals" />)
</insert>
es gut läuft, bevor es nicht die Spalte parent_company_name
,
aber wenn ich die Spalte parent_company_name
und die DAO erneut ausführen hinzugefügt Methode mit create es hatte diesen Fehler
org.springframework.jdbc.BadSqlGrammarException:
### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'parent_company_name' in 'field list'
### The error may involve Company.create-Inline
### The error occurred while setting parameters
meine IDE war IntelliJ IDEA, ich weiß nicht, ob es durch den Cache oder etwas anderes verursacht, ich habe nur eine neue Spalte hinzugefügt und überprüft alle SQL-Skripte war korrekt.
danke, test von h2, es wird eine tabelle in meinem lokalen server von mysql, und sollte ihre sql 'alert table ...' zu aktualisieren datenbank. –
@BenD wenn diese Antwort für Sie funktioniert. bitte als richtige Antwort markieren. – Sohlowmawn