Я использовал следующий код для генерации сценария создания базы данных
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 Query Browser из-за ошибок.
Вот пример сценария создания mysql, сгенерированного Nhibernate:
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)
У меня возникла следующая ошибка при попытке выполнить ее
Строка сценария: 2 У вас есть ошибка в
ваш синтаксис SQL; проверьте руководство, которое
соответствует вашему серверу MySQL
версия для правильного использования синтаксиса
возле 'Падение внешнего ключа
FK_User_Order
изменить таблицу OrderItem drop иностранных k '
в строке 1
Есть идеи, почему сгенерированный Nhiberante sql не будет работать?