MySQL и NHibernate. Как исправить ошибку: столбец 'ReservedWord' не принадлежит таблице ReservedWords? - PullRequest
8 голосов
/ 30 июня 2009

"Я получаю странную ошибку при использовании NHibernate. И я не знаю, что вызывает эту ошибку. Я новичок во всей Visual Studio и NHibernate, но не в Hibernate. Я использовал Hibernate в прошлом в проектах Java.

Буду признателен за любую помощь, указав, где моя ошибка.

Я использую Visual Studio 2008 SP1 с Mysql 5.1.

Ниже приведен код, который я использую. «

Полный код и примеры размещены здесь: https://forum.hibernate.org/viewtopic.php?f=25&t=997701

Ответы [ 6 ]

17 голосов
/ 30 июля 2009

К вашему сведению для любых новичков NHibernate / Fluent NHibernate, таких как я, решение FCastellanos также работало для меня (я также получил ошибку в Windows), и Fluent NHibernate для добавления этой конфигурации:

Fluently.Configure()
    ...
    .ExposeConfiguration(c => c.Properties.Add("hbm2ddl.keywords", "none"))
    ...
    .BuildSessionFactory()
10 голосов
/ 23 июля 2009

Я получил ту же ошибку, но я использую MySQL + NHibernate (2.1.0GA) + Mono (2.4) под Ubuntu, и эта ссылка помогла мне, надеюсь, она работает для вас.

Ключ должен использовать это на фабрике сессий

<property name="hbm2ddl.keywords">none</property>

https://forum.hibernate.org/viewtopic.php?f=25&t=997701

вот и все:)

5 голосов
/ 26 октября 2009

Устраняет ту же ошибку при использовании ActiveRecord для NHibernate. Соответствующий бит имеет значение key = "hbm2ddl.keywords" value = "none", и это указывается в вашем файле web.config.

<activerecord isWeb="true">
    <config>
        <add key="connection.driver_class" value="NHibernate.Driver.MySqlDataDriver"/>
        <add key="dialect" value="NHibernate.Dialect.MySQLDialect"/>
        <add key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
        <add key="connection.connection_string_name" value="BrochureDb"/>
        <add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"/>
        <add key="hbm2ddl.keywords" value="none" />
    </config>
</activerecord>
3 голосов
/ 30 июня 2009

Мое первое предположение - то, что NHibernate идентифицирует имя столбца и / или таблицы как зарезервированное слово. Ваш класс с именем "hibernate" может быть вероятным виновником, но без дополнительной информации о вашей ошибке его довольно сложно отследить. Некоторые предложения:

  1. попробуйте переименовать таблицу и столбцы как в базе данных, так и в конфигурации и дать ей тест
  2. Загрузите log4net (http://logging.apache.org/log4net/download.html) и проверьте https://www.hibernate.org/364.html, чтобы сконфигурировать его для nhibernate. Установите его для отладки и поиска в файле журнала и просмотрите полную информацию о полученной трассировке / ошибке стека.
2 голосов
/ 29 сентября 2009

Если вы делаете это программно, вы должны сделать это так:

cfg.SetProperty(NHibernate.Cfg.Environment.Hbm2ddlKeyWords, "none");
0 голосов
/ 20 августа 2009

Я тоже затронул эту проблему. Я закончил тем, что сделал это:

http://orbitalcoder.wordpress.com/2009/08/18/proposed-solution-for-the-nhibernate-exception-column-reserved-word-does-not-belong-to-table-reservedwords/

это изменение кода на NHibernate, но у меня сработало.

...