gpt4 book ai didi

使用 NHibernate 生成 MySql 模式

转载 作者:行者123 更新时间:2023-11-29 06:24:26 25 4
gpt4 key购买 nike

我使用以下代码生成数据库创建脚本

Configuration configuration = new Configuration();
configuration.Configure();
SchemaExport schemaExport = new SchemaExport(configuration);
using(TextWriter stringWriter = new StreamWriter("create.sql"))
{
schemaExport.Execute(false, false, false, true, null, stringWriter);
}

和 sql,它生成的结果与 MS SQL 配合良好。当我不得不迁移到 MySql 时,我将 NHibernate 配置更改为:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<property name="connection.connection_string">Server=localhost;Database=db;User ID=root;Password=sa;</property>
<property name="dialect">NHibernate.Dialect.MySQLDialect</property>
</session-factory>

但是这次生成的sql由于错误而无法在MySQL查询浏览器中执行。以下是 Nhibernate 生成的 mysql 创建脚本示例:

alter table Order  drop foreign key FK_User_Order
alter table OrderItem drop foreign key FK_Order_Item
alter table Item drop foreign key FK742DC178AD99756A

drop table if exists User
drop table if exists Order
drop table if exists OrderItem
drop table if exists Item
drop table if exists Category
create table User (
Id INTEGER NOT NULL AUTO_INCREMENT,
role INTEGER not null,
is_active TINYINT(1) not null,
contact_name VARCHAR(100),
phone VARCHAR(100),
address VARCHAR(100),
email VARCHAR(100) not null,
name VARCHAR(100) not null,
password_hash LONGBLOB not null,
login VARCHAR(100) not null unique,
is_new TINYINT(1) not null,
price_type INTEGER not null,
access_id INTEGER not null,
primary key (Id)

尝试执行时出现以下错误

Script line: 2 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 'Order drop foreign key FK_User_Order

alter table OrderItem drop foreign k' at line 1

有什么想法为什么 Nhiberante 生成的 sql 不起作用?

最佳答案

schemaExport.SetDelimiter(";");如果需要分隔(即将它们作为单独的语句运行

另外,Order 是关键字吗?您能否将订单重新映射到数据库中的 Orders,以避免关键字冲突?

关于使用 NHibernate 生成 MySql 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/829049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com