MySQL & NHibernate. Как фиксируют ошибку: Столбец 'ReservedWord' не принадлежит таблице ReservedWords?

Не очень спорный AFAIK, но ... AJAX был далеко до того, как термин был придуман, и каждый должен «отпустить». Люди использовали это для всех видов вещей. Никто действительно не заботился об этом, хотя.

Тогда внезапно военнопленный! Кто-то придумал этот термин, и все вскочили на подножку AJAX. Внезапно люди стали экспертами в AJAX, как будто «экспертов» по ​​динамической загрузке данных раньше не было. Я думаю, что это один из самых значительных факторов, который ведет к жестокому разрушению Интернета. Это и «Web 2.0».

8
задан Cherian 20 March 2010 в 14:56
поделиться

6 ответов

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

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

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

Ключ в том, чтобы использовать это в session-factory

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

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

, вот и все :)

10
ответ дан 5 December 2019 в 04:58
поделиться

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

Fluently.Configure()
    ...
    .ExposeConfiguration(c => c.Properties.Add("hbm2ddl.keywords", "none"))
    ...
    .BuildSessionFactory()
17
ответ дан 5 December 2019 в 04:58
поделиться

Я тоже затронул эту проблему. В итоге я сделал следующее:

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

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

0
ответ дан 5 December 2019 в 04:58
поделиться

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

cfg.SetProperty(NHibernate.Cfg.Environment.Hbm2ddlKeyWords, "none");
2
ответ дан 5 December 2019 в 04:58
поделиться

Это устраняет ту же ошибку, когда с использованием 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>
5
ответ дан 5 December 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: